CPU'nuz bu TensorFlow ikili dosyasının kullanmak için derlenmediği talimatları destekler: AVX AVX2


656

TensorFlow'da yeniyim. Son zamanlarda yükledim (Windows CPU sürümü) ve aşağıdaki mesajı aldım:

Tensorflow-1.4.0 başarıyla kuruldu tensorflow-tensorboard-0.4.0rc2

Sonra koşmaya çalıştığımda

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()

( https://github.com/tensorflow/tensorflow aracılığıyla buldum )

Aşağıdaki mesajı aldım:

2017-11-02 01: 56: 21.698935: IC: \ tf_jenkins \ home \ çalışma alanı \ rel-win \ M \ windows \ PY \ 36 \ tensorflow \ core \ platform \ cpu_feature_guard.cc: 137] CPU'nuz bunun talimatlarını destekliyor TensorFlow ikili dosyası kullanılmak üzere derlenmedi: AVX AVX2

Ama koştuğumda

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

olması gerektiği gibi çalışıyordu ve çıktı Hello, TensorFlow!, bu da kurulumun gerçekten başarılı olduğunu gösteriyor, ancak yanlış olan başka bir şey var.

Sorunun ne olduğunu ve nasıl düzeltileceğini biliyor musunuz?


33
Çalışırsa, tükürdüğü bilgiler, olabildiğince hızlı olmadığı anlamına gelir. Ondan kurtulmak için, kaynağından bkz yükleyebilirsiniz burada
Ben

Ben de başarıyla çalıştırabilirsiniz komutları ile aynı sorunla karşı karşıya. >>> 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
M. Oğuz Özcan

@Ben bu sadece bir uyarı, ama her şey iyi çalışacak mı? (en azından yeni başlayanların bakış açısından)
bvdb

1
Tensorflow'u AVX talimatları ile derlemek için şu cevaba
Sreeragh AR

2
Aynı durumda çok benzer bir mesaj aldım, mesaj Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2.
Hamid Heydarian

Yanıtlar:


818

Bu uyarı ne hakkında?

Modern CPU'lar, düşük seviyeli talimatların bir sürü sağlamak itibaren vs. gibi uzantıları, SSE2, SSE4 AVX olarak bilinen olağan aritmetik ve mantık, yanında Wikipedia :

Gelişmiş Vektör Uzantıları ( AVX ), Mart 2008'de Intel tarafından önerilen Intel ve AMD mikroişlemciler için x86 komut kümesi mimarisinin uzantılarıdır ve ilk olarak Intel tarafından 2011'in 1. çeyreğinde Sandy Bridge işlemci gönderimi ve daha sonra AMD tarafından Bulldozer işlemci gönderimi ile desteklenir AVX yeni özellikler, yeni talimatlar ve yeni bir kodlama şeması sunar.

Özellikle AVX , doğrusal cebir hesaplamasını, yani nokta çarpımı, matris çarpımı, evrişim, vb. Hızlandıran, kaynaşmış çok birikimli (FMA) operasyonlar sunar, bu nedenle hemen hemen her makine öğrenimi eğitimi bu işlemlerin büyük bir kısmını içerir. AVX ve FMA'yı destekleyen bir CPU'da daha hızlı (% 300'e kadar). Uyarı, CPU'nuzun AVX'i (yaşasın!) Desteklediğini belirtir.

Burada vurgulamak istiyorum: her şey sadece CPU ile ilgili .

O zaman neden kullanılmıyor?

Tensorflow varsayılan dağıtımı SSE4.1 , SSE4.2, AVX, AVX2, FMA vb. CPU uzantıları olmadan oluşturulduğundan, varsayılan derlemeler (bunlardan gelenler pip install tensorflow) mümkün olduğunca çok CPU ile uyumlu olacak şekilde tasarlanmıştır. Başka bir argüman, bu uzantılarla bile CPU'nun GPU'dan çok daha yavaş olduğu ve orta ve büyük ölçekli makine öğrenme eğitiminin bir GPU'da gerçekleştirilmesi bekleniyor.

Ne yapmalısın?

GPU'nuz varsa, AVX desteğini önemsememelisiniz, çünkü en pahalı operasyonlar bir GPU cihazında gönderilir (açıkça ayarlanmadığı sürece). Bu durumda, bu uyarıyı

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

... veya export TF_CPP_MIN_LOG_LEVEL=2Unix'te olup olmadığınızı ayarlayarak . Tensorflow zaten iyi çalışıyor, ancak bu can sıkıcı uyarıları görmeyeceksiniz.


Eğer bir GPU yoksa ve mümkün olduğunca CPU kullanmak isteyen, sizin için optimize kaynaktan tensorflow inşa etmeliyiz senin CPU AVX AVX2 ile ve CPU destekleri onları eğer FMA sağladı. Bu tartışılan oldu bu soruya da bu GitHub konuyla . Tensorflow, bazel adı verilen özel bir inşa sistemi kullanıyor ve bunu yapmak önemsiz değil, ama kesinlikle yapılabilir. Bundan sonra, sadece uyarı kaybolmayacak, tensorflow performansı da iyileşmelidir.


29
TensorFlow Serving'in optimize edilmemiş CPU ve optimize edilmiş CPU (AVX, SSE4.1 vb.) İçin ayrı kurulumlara sahip olduğunu belirtmek gerekir. detaylar burada: github.com/tensorflow/serving/blob/…
Chris Fregly

9
Bu soruya silinen bir cevaba göre, GPU (GTX1080Ti) ile i9-7900x (Skylake-AVX512) üzerindeki AVX512F "CIFAR10 1000 yinelemelerinde% 28 kazanç 68s-> 48s kazanıyor". GPU kullanırken uyarıyı göz ardı etmenin iyi bir tavsiye olduğundan emin misiniz? Yorum sahte değilse, en azından bazı durumlarda CPU komut setlerinden kazanılacak bir şey var gibi görünüyor.
Peter Cordes

1
@PeterCordes Öyleyse, kesinlikle cevabıma ekleyeceğim. Ancak "modelim% 30 hızlanıyor" ifadesi "C ++ programım% 30 hızlanıyor" ifadesiyle aynı geliyor. Tam olarak hangi model? Manuel CPU yerleşimi var mı? Veriler nasıl aktarılır? Örneğin, numpy'de çok fazla iş olabilir. Tabii ki, CPU'yu bir darboğaz yapmak mümkündür ve bu konuda çok fazla soru var. Genellikle bir hata olarak kabul edilir.
Maxim

2
@Maxim: Silinen yanıtın tüm metni " Testimde I9 (7900x) GPU (GTX1080Ti) üzerindeki AVX512F talimatı, CIFAR10 1000 yinelemelerinde% 28'lik bir kazanç 68s-> 48s yapar " dır . Maalesef ayrıntılar (veya noktalama işaretleri, dilbilgisi veya biçimlendirme) yok.
Peter Cordes

2
Görünüşe göre bir Mac kullanıyorsanız, GPU, stackoverflow.com/questions/46364917/…
Dent Arthur Dent

156

Bu komutu kullanarak CPU ve işletim sisteminiz için tensorflow ikili dosyasını güncelleyin

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

Whl dosyasının indirme URL'sini burada bulabilirsiniz

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


1
Windows 10 wuth url stackoverflow.com/questions/47068709/… üzerinde denedim . Zipfile.BadZipFile: Dosya bir zip dosyası değil diyerek hata alıyorum
Thusitha Thilina Dayaratne

1
İndirilen sürümü indirip kullandığımda çalıştı
Thusitha Thilina Dayaratne

1
Herkes "zipfile söylerken hata.BadZipFile: Dosya bir zip dosyası değil" cuda9.2avx2 için ham bağlantı almalısınız link github.com/fo40225/tensorflow-windows-wheel/raw/master/1.9.0/…
Yeasin Ar Rahman

5
Windows için bunu denedim. "Pip uninstall tensorflow" kullanarak mevcut tensorflow'u kaldırın, sonra "pip install <İndirilen WHL dosyasına giden yol>" kullanarak yeniden kurun. 3.6 Python ve 64-bit pencereleriniz varsa, bu WHL dosyasını bilgisayarınıza indirin - github.com/fo40225/tensorflow-windows-wheel/blob/master/1.10.0/… (eğer gördüğünüz amd'yi yoksayın). Aksi takdirde github'da bir adım geriye gidin ve doğru WHL'yi arayın. Çalışıyor
Kral

3
Benim için çalıştı. Ubuntu 16.04.4, Python 3.5.2, gcc 5.4.0 - whl indirildi ve yüklendi. Şu anda p2.xLarge aws örneği kullanılıyor. Daha hızlı R-CNN'de çalışan 230 sınıfla özel nesne algılama alıştırması için performans yineleme başına 16 saniyeden 9 saniyeye yükseltildi.
Kayısı

27

GPU ile CPU optimizasyonu

GPU'nuz olsa bile, kaynağından TensorFlow'u yükleyerek elde edebileceğiniz performans kazançları vardır ve bunu eğitim ve çıkarım için kullanabilirsiniz. Bunun nedeni, bazı TF işlemlerinin yalnızca CPU uygulaması olması ve GPU'nuzda çalışamamasıdır.

Ayrıca, CPU'nuzu iyi kullanan bazı performans geliştirme ipuçları da vardır. TensorFlow'un performans kılavuzu aşağıdakileri önerir:

Giriş boru hattı işlemlerini CPU'ya yerleştirmek performansı önemli ölçüde artırabilir. CPU'yu giriş hattı için kullanmak, GPU'yu eğitime odaklanmak için serbest bırakır.

En iyi performans için, CPU'nuzu ve GPU'nuzu birlikte çalışmak üzere kullanmak için kodunuzu yazmalı ve varsa GPU'nuza dökmemelisiniz. TensorFlow ikili dosyalarınızın CPU'nuz için optimize edilmesini sağlamak saatlerce kaydedilmiş çalışma süresini ödeyebilir ve bunu bir kez yapmanız gerekir.



12

Windows için (f040225 sahibine teşekkürler), buraya gidin: "tf + python + cpu_instruction_extension" kombinasyonuna dayalı olarak ortamınız için URL'yi getirmek üzere https://github.com/fo40225/tensorflow-windows-wheel . Sonra yüklemek için bu cmd'yi kullanın:

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

"Dosya bir zip dosyası değil" hatasıyla karşılaşırsanız, .whl dosyasını yerel bilgisayarınıza indirin ve yüklemek için bu cmd'yi kullanın:

pip install --ignore-installed --upgrade /path/target.whl

GPU'lar parçalara ayrılır ve .7z dosyaları olarak etiketlenir. Onları nasıl bir araya getirebiliriz?
user3496060

@ user3496060 Split dosyaları açmak için winrar kullandım
Alan Dursun

8

Eğer tensorflow'un pip versiyonunu kullanırsanız, zaten derlenmiş demektir ve sadece kuruyorsunuz demektir. Temel olarak tensorflow-gpu yüklersiniz, ancak depodan indirip oluşturmaya çalıştığınızda, CPU AVX desteğiyle oluşturmalısınız. Eğer görmezden gelirseniz, cpu üzerinde her çalıştığınızda uyarı alırsınız.


bu hatayı nasıl önleyebilirim, takip etmem gereken şeyler nelerdir?
jitsm555

2
bu bir hata değil. Thensorflow'un cpu için AVX'i desteklemediğine dair bir uyarı. Görmek istemiyorsanız, os.environ ['TF_CPP_MIN_LOG_LEVEL'] = '2'
ayarlayarak kapatmanız yeterlidir

5

Bunu düzeltmek için bulduğum en kolay yol, her şeyi kaldırmak ve ardından tensorflow-gpu'nun belirli bir sürümünü kurmaktır:

  1. tensorflow'u kaldır:
    pip uninstall tensorflow
  1. tensorflow-gpu yazılımını kaldırın: (yüklediğinizden emin olmasanız bile bunu çalıştırdığınızdan emin olun)
    pip uninstall tensorflow-gpu
  1. Belirli bir tensorflow-gpu sürümünü yükleyin:
    pip install tensorflow-gpu==2.0.0
    pip install tensorflow_hub
    pip install tensorflow_datasets

Python dosyasına aşağıdaki kodu ekleyerek bunun işe yarayıp yaramadığını kontrol edebilirsiniz:

from __future__ import absolute_import, division, print_function, unicode_literals

import numpy as np

import tensorflow as tf
import tensorflow_hub as hub
import tensorflow_datasets as tfds

print("Version: ", tf.__version__)
print("Eager mode: ", tf.executing_eagerly())
print("Hub Version: ", hub.__version__)
print("GPU is", "available" if tf.config.experimental.list_physical_devices("GPU") else "NOT AVAILABLE")

Dosyayı çalıştırın ve çıktı şu şekilde olmalıdır:

Version:  2.0.0
Eager mode:  True
Hub Version:  0.7.0
GPU is available

Bu yardımcı olur umarım


ModuleNotFoundError: 'tensorflow_hub' adında bir modül yok
D Adams

ModuleNotFoundError: 'tensorflow_datasets' adlı modül yok
D Adams

Modülleri ayrı ayrı kurmaya çalışın: pip install tensorflow_hubvepip install tensorflow_datasets
James Brett

yup -> sadece cevabınızın bütünlüğünde yardımcı olmaya çalışıyor.
D Adams

Oh, bunları ayrı olarak kurmak zorunda olduğumu hatırlamıyorum. Teşekkürler!
James Brett
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.