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 hal lain yang salah.
Apakah Anda tahu apa masalahnya dan bagaimana cara memperbaikinya?
sumber
>>> sess = tf.Session() 2017-11-05 18:02:44.670825: I C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\ 35\tensorflow\core\platform\cpu_feature_guard.cc:137] Your CPU supports instruct ions that this TensorFlow binary was not compiled to use: AVX AVX2
Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
.Jawaban:
Tentang apakah peringatan ini?
CPU modern menyediakan banyak instruksi tingkat rendah, selain aritmatika dan logika yang biasa, dikenal sebagai ekstensi, misalnya SSE2, SSE4, AVX, dll. Dari Wikipedia :
Secara khusus, AVX memperkenalkan operasi penggandaan multiply-akumulasi (FMA), yang mempercepat perhitungan aljabar linier, yaitu produk-titik, perkalian matriks, konvolusi, dll. Hampir setiap pelatihan pembelajaran mesin melibatkan banyak operasi ini, karenanya akan menjadi 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 CPU saja .
Mengapa tidak digunakan saat itu?
Karena distribusi standar tensorflow dibangun tanpa ekstensi CPU , seperti SSE4.1, SSE4.2, AVX, AVX2, FMA, dll. Build default (yang berasal dari
pip install tensorflow
) dimaksudkan agar kompatibel dengan CPU sebanyak mungkin. Argumen lain adalah bahwa meskipun dengan ekstensi ini, CPU jauh lebih lambat daripada GPU, dan diharapkan pelatihan pembelajaran mesin skala menengah dan besar dilakukan pada GPU.Apa yang harus anda lakukan
Jika Anda memiliki GPU , Anda seharusnya tidak peduli dengan dukungan AVX, karena ops paling mahal akan dikirim pada perangkat GPU (kecuali secara eksplisit diatur untuk tidak melakukannya). Dalam hal ini, Anda bisa mengabaikan peringatan ini dengan
... 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 CPU Anda dengan AVX, AVX2, dan FMA diaktifkan jika CPU Anda mendukungnya. Sudah dibahas dalam pertanyaan ini dan juga masalah GitHub ini . Tensorflow menggunakan sistem ad-hoc build yang disebut bazel dan membangunnya tidak sepele, tetapi tentu bisa dilakukan. Setelah ini, tidak hanya peringatan akan hilang, kinerja tensorflow juga harus ditingkatkan.
sumber
Perbarui biner tensorflow untuk CPU & OS Anda menggunakan perintah ini
Url unduhan file whl dapat ditemukan di sini
https://github.com/lakshayg/tensorflow-build
sumber
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 yang berikut ini:
Untuk kinerja terbaik, Anda harus menulis kode Anda untuk menggunakan CPU dan GPU Anda untuk bekerja bersama-sama, dan tidak membuang semuanya pada GPU Anda jika Anda memilikinya. Memiliki biner TensorFlow Anda dioptimalkan untuk CPU Anda bisa melunasi berjam-jam waktu yang dihemat dan Anda harus melakukannya sekali.
sumber
Untuk Windows, Anda dapat memeriksa optimalisasi Intel MKL resmi untuk roda TensorFlow yang dikompilasi dengan AVX2. Solusi ini mempercepat inferensi saya ~ x3.
sumber
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:
Jika Anda menemukan kesalahan "File bukan file zip", unduh .whl ke komputer lokal Anda, dan gunakan cmd ini untuk menginstal:
sumber
Jika Anda menggunakan pip versi tensorflow, itu berarti itu sudah disusun dan Anda hanya menginstal itu. 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.
sumber
Cara termudah yang saya temukan untuk memperbaikinya adalah dengan menghapus instalan semuanya lalu menginstal versi tensorflow-gpu tertentu:
Anda dapat memeriksa apakah ini berhasil dengan menambahkan kode berikut ke dalam file python:
Jalankan file dan kemudian hasilnya akan seperti ini:
Semoga ini membantu
sumber
pip install tensorflow_hub
danpip install tensorflow_datasets
Yang berhasil bagi saya adalah perpustakaan ini
https://pypi.org/project/silence-tensorflow/
Instal perpustakaan ini dan lakukan seperti yang diperintahkan pada halaman, itu berfungsi seperti pesona!
sumber