pengembangan-web-mp-pd.com

CPU Anda mendukung instruksi yang biner TensorFlow ini tidak dikompilasi untuk digunakan: AVX AVX2

Saya baru mengenal TensorFlow. Saya baru saja menginstalnya (versi Windows CPU) dan menerima pesan berikut:

Berhasil memasang tensorflow-1.4.0 tensorflow-tensorboard-0.4.0rc2

Lalu ketika saya mencoba lari

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
sess.run(hello)
'Hello, TensorFlow!'
a = tf.constant(10)
b = tf.constant(32)
sess.run(a + b)
42
sess.close()

(yang saya temukan melalui https://github.com/tensorflow/tensorflow )

Saya menerima pesan berikut:

2017-11-02 01: 56: 21.698935: IC:\tf_jenkins\home\workspace\rel-win\M\windows\PY\36\tensorflow\core\platform\cpu_feature_guard.cc: 137] CPU Anda mendukung instruksi bahwa ini Biner TensorFlow tidak dikompilasi untuk digunakan: AVX AVX2

Tetapi ketika saya berlari

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

itu berjalan sebagaimana mestinya dan output Hello, TensorFlow!, yang menunjukkan bahwa instalasi memang berhasil tetapi ada sesuatu yang salah.

Apakah Anda tahu apa masalahnya dan bagaimana cara memperbaikinya? Terima kasih.

459
csg

Tentang apakah peringatan ini?

CPU modern menyediakan banyak instruksi tingkat rendah, selain aritmatika dan logika yang biasa, dikenal sebagai ekstensi, mis. SSE2, SSE4, AVX, dll. Dari Wikipedia :

Ekstensi Vektor Lanjutan (AVX) adalah ekstensi untuk arsitektur set instruksi x86 untuk mikroprosesor dari Intel dan AMD yang diusulkan oleh Intel pada Maret 2008 dan pertama kali didukung oleh Intel dengan prosesor Sandy Bridge pengiriman pada Q1 2011 dan kemudian oleh AMD dengan pengiriman prosesor Bulldozer pada Q3 2011. AVX menyediakan fitur-fitur baru, instruksi baru dan skema pengkodean baru.

Khususnya, AVX memperkenalkan operasi fusi multi-akumulatif (FMA), yang mempercepat perhitungan aljabar linier, yaitu produk-titik, perkalian matriks, konvolusi, dll. Hampir setiap pelatihan pembelajaran mesin melibatkan banyak operasi ini , maka akan lebih cepat pada CPU yang mendukung AVX dan FMA (hingga 300%). Peringatan tersebut menyatakan bahwa CPU Anda mendukung AVX (hore!).

Saya ingin menekankan di sini: ini semua tentang Hanya CPU .

Mengapa tidak digunakan saat itu?

Karena distribusi standar tensorflow dibangun tanpa ekstensi CPU , seperti SSE4.1, SSE4.2, AVX, AVX2, FMA, dll. Pembuatan bawaan (yang dari pip install tensorflow) dimaksudkan agar kompatibel dengan CPU sebanyak mungkin. Argumen lain adalah bahwa walaupun dengan ekstensi ini, CPU jauh lebih lambat daripada GPU, dan diharapkan pelatihan pembelajaran mesin skala menengah dan besar dilakukan pada GPU.

Apa yang harus kamu lakukan

Jika Anda memiliki GPU , Anda tidak perlu peduli dengan dukungan AVX, karena ops paling mahal akan dikirim pada perangkat GPU (kecuali secara eksplisit diatur untuk tidak). Dalam hal ini, Anda bisa mengabaikan peringatan ini dengan

# Just disables the warning, doesn't enable AVX/FMA
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

... atau dengan mengatur export TF_CPP_MIN_LOG_LEVEL=2 jika Anda menggunakan Unix. Tensorflow berfungsi dengan baik, tetapi Anda tidak akan melihat peringatan yang mengganggu ini.


Jika Anda tidak memiliki GPU dan ingin memanfaatkan CPU sebanyak mungkin, Anda harus membuat tensorflow dari sumber yang dioptimalkan untuk Anda CPU dengan AVX, AVX2, dan FMA diaktifkan jika CPU Anda mendukungnya. Sudah dibahas dalam pertanyaan ini dan juga masalah GitHub ini . Tensorflow menggunakan sistem build ad-hoc yang disebut bazel dan membangunnya tidaklah sepele, tetapi tentu bisa dilakukan. Setelah ini, tidak hanya peringatan akan hilang, kinerja tensorflow juga harus ditingkatkan.

616
Maxim

Perbarui biner tensorflow untuk CPU & OS Anda menggunakan perintah ini

pip install --ignore-installed --upgrade "Download URL"

Url unduhan file whl dapat ditemukan di sini

https://github.com/lakshayg/tensorflow-build

121
HimalayanCoder

Optimasi CPU dengan GPU

Ada keuntungan kinerja yang bisa Anda dapatkan dengan menginstal TensorFlow dari sumbernya bahkan jika Anda memiliki GPU dan menggunakannya untuk pelatihan dan inferensi. Alasannya adalah beberapa operasi TF hanya memiliki implementasi CPU dan tidak dapat berjalan pada GPU Anda.

Juga, ada beberapa tips peningkatan kinerja yang memanfaatkan CPU Anda. Panduan kinerja TensorFlow merekomendasikan berikut ini:

Menempatkan operasi pipa input pada CPU dapat secara signifikan meningkatkan kinerja. Memanfaatkan CPU untuk jalur input membebaskan GPU untuk fokus pada pelatihan.

Untuk kinerja terbaik, Anda harus menulis kode Anda untuk menggunakan CPU dan GPU untuk bekerja bersama-sama, dan tidak membuang semuanya pada GPU Anda jika Anda memilikinya. Memiliki biner TensorFlow Anda dioptimalkan untuk CPU Anda dapat membayar berjam-jam waktu yang dihemat dan Anda harus melakukannya sekali.

20
Wesam

Untuk Windows, Anda dapat memeriksa optimalisasi Intel MKL resmi untuk TensorFlow roda yang dikompilasi dengan AVX2. Solusi ini mempercepat inferensi saya ~ x3.

conda install tensorflow-mkl
6
Flayn

Untuk Windows (Terima kasih kepada pemilik f040225), buka di sini: https://github.com/fo40225/tensorflow-windows-wheel untuk mengambil url untuk lingkungan Anda berdasarkan kombinasi "tf + python + cpu_instruction_extension ". Kemudian gunakan cmd ini untuk menginstal:

pip install --ignore-installed --upgrade "URL"

Jika Anda menemukan kesalahan "File bukan file Zip", unduh .whl ke komputer lokal Anda, dan gunakan cmd ini untuk menginstal:

pip install --ignore-installed --upgrade /path/target.whl
4
Z.Wei

Jika Anda menggunakan pip versi tensorflow, itu berarti sudah dikompilasi dan Anda baru saja menginstalnya. Pada dasarnya Anda menginstal tensorflow-gpu, tetapi ketika Anda mengunduhnya dari repositori dan mencoba membangun, Anda harus membangunnya dengan dukungan CPU AVX. Jika Anda mengabaikannya, Anda akan mendapatkan peringatan setiap kali Anda menjalankan cpu.

0