it-swarm.com.de

Ihre CPU unterstützt Anweisungen, für die diese TensorFlow-Binärdatei nicht kompiliert wurde: AVX AVX2

Ich bin neu bei TensorFlow. Ich habe es kürzlich installiert (Windows-CPU-Version) und die folgende Meldung erhalten:

Tensorflow-1.4.0 tensorflow-tensorboard-0.4.0rc2 erfolgreich installiert

Als ich dann versuchte zu rennen

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

(was ich durch https://github.com/tensorflow/tensorflow gefunden habe)

Ich habe folgende Nachricht erhalten:

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] Ihre CPU unterstützt die folgenden Anweisungen TensorFlow-Binärdatei wurde nicht zur Verwendung kompiliert: AVX AVX2

Aber als ich rannte

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

es lief wie es sollte und gab Hello, TensorFlow! aus, was darauf hinweist, dass die Installation tatsächlich erfolgreich war, aber es gibt noch etwas, das falsch ist.

Wissen Sie, wo das Problem liegt und wie es behoben werden kann? Vielen Dank.

533
csg

Worum geht es in dieser Warnung?

Moderne CPUs stellen neben der üblichen Arithmetik und Logik, die als Erweiterungen bekannt sind, z. SSE2, SSE4, AVX usw. Aus der Wikipedia :

Erweiterte Vektorerweiterungen (AVX) sind Erweiterungen des x86-Befehls Festlegen der Architektur für Mikroprozessoren von Intel und AMD, die von Intel im März 2008 vorgeschlagen und zuerst von Intel mit dem Sandy Bridge-Prozessor im ersten Quartal 2011 und später von AMD mit dem Bulldozer-Prozessor im dritten Quartal 2011 unterstützt wurden ein neues Kodierungsschema.

Insbesondere führt AVX Fused Multiply-Accumulate (FMA) -Operationen ein, die die lineare Algebra-Berechnung beschleunigen, nämlich Punktprodukt, Matrixmultiplikation, Faltung usw. Fast jedes maschinelle Lerntraining ist mit viel Aufwand verbunden Bei einer CPU, die AVX und FMA unterstützt (bis zu 300%), sind diese Vorgänge daher schneller. Die Warnung besagt, dass Ihre CPU AVX unterstützt (Hurra!).

Ich möchte hier betonen: Es geht nur um CPU .

Warum wird es dann nicht verwendet?

Da die Tensorflow-Standardverteilung erstellt wird ohne CPU-Erweiterungen , wie z. B. SSE4.1, SSE4.2, AVX, AVX2, FMA usw. Die Standarderstellungen (diejenigen von pip install tensorflow) sind dafür vorgesehen mit möglichst vielen CPUs kompatibel sein. Ein weiteres Argument ist, dass die CPU selbst mit diesen Erweiterungen viel langsamer ist als eine GPU, und dass erwartet wird, dass maschinelles Lernen in mittlerem und großem Umfang auf einer GPU durchgeführt wird.

Was sollte man tun?

Wenn Sie eine GPU haben , sollten Sie sich nicht um die AVX-Unterstützung kümmern, da die meisten teuren Operationen auf einem GPU-Gerät ausgeführt werden (es sei denn, dies ist ausdrücklich nicht festgelegt) ). In diesem Fall können Sie diese Warnung einfach ignorieren

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

... oder indem Sie export TF_CPP_MIN_LOG_LEVEL=2 einstellen, wenn Sie unter Unix arbeiten. Tensorflow funktioniert ohnehin einwandfrei, aber Sie werden diese nervigen Warnungen nicht sehen.


Wenn Sie keine GPU haben und die CPU so gut wie möglich nutzen möchten, sollten Sie Tensorflow aufbauen Die für Ihre CPU optimierte Quelle mit aktiviertem AVX, AVX2 und FMA, sofern Ihre CPU diese unterstützt. Es wurde in diese Frage und auch diese GitHub-Ausgabe besprochen. Tensorflow verwendet ein Ad-hoc-Build-System mit dem Namen bazel und das Erstellen ist nicht so trivial, aber durchaus machbar. Danach verschwindet die Warnung nicht nur, sondern die Tensorflow-Leistung sollte sich ebenfalls verbessern.

679
Maxim

Aktualisieren Sie mit diesem Befehl die Tensorflow-Binärdatei für Ihre CPU und Ihr Betriebssystem

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

Die Download-URL der Whl-Datei finden Sie hier

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

135
HimalayanCoder

CPU-Optimierung mit GPU

Es gibt Leistungsverbesserungen, die Sie erzielen können, wenn Sie TensorFlow von der Quelle installieren, selbst wenn Sie über eine GPU verfügen und diese für Schulungen und Schlussfolgerungen verwenden. Der Grund dafür ist, dass einige TF-Vorgänge nur über eine CPU-Implementierung verfügen und nicht auf Ihrer GPU ausgeführt werden können.

Außerdem gibt es einige Tipps zur Leistungssteigerung, mit denen Sie Ihre CPU optimal nutzen können. TensorFlow's Performance Guide empfiehlt Folgendes:

Das Platzieren von Eingabe-Pipeline-Operationen auf der CPU kann die Leistung erheblich verbessern. Durch die Verwendung der CPU für die Eingabe-Pipeline kann sich die GPU auf das Training konzentrieren.

Um eine optimale Leistung zu erzielen, sollten Sie Ihren Code so schreiben, dass CPU und GPU zusammenarbeiten, und nicht alles auf Ihrer GPU ablegen, wenn Sie eine haben. Wenn Sie Ihre TensorFlow-Binärdateien für Ihre CPU optimieren, können sich Stunden an eingesparter Laufzeit auszahlen, und Sie müssen dies einmal tun.

22
Wesam

Unter Windows können Sie die offizielle Intel MKL-Optimierung für TensorFlow -Räder überprüfen, die mit AVX2 kompiliert wurden. Diese Lösung beschleunigt meine Folgerung ~ x3.

conda install tensorflow-mkl
10
Flayn

Gehen Sie für Windows (danke an den Eigentümer f040225) zu: https://github.com/fo40225/tensorflow-windows-wheel , um die URL für Ihre Umgebung basierend auf der Kombination von "tf" abzurufen + python + cpu_instruction_extension ". Dann benutze diesen Befehl um zu installieren:

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

Wenn der Fehler "Datei ist keine Zip-Datei" auftritt, laden Sie die .whl-Datei auf Ihren lokalen Computer herunter und installieren Sie sie mithilfe der folgenden Anweisung:

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

Wenn Sie pip Version von Tensorflow verwenden, bedeutet dies, dass es bereits kompiliert ist und Sie es nur installieren. Grundsätzlich installieren Sie tensorflow-gpu, aber wenn Sie es aus dem Repository herunterladen und versuchen, es zu erstellen, sollten Sie es mit CPU AVX-Unterstützung erstellen. Wenn Sie es ignorieren, erhalten Sie jedes Mal eine Warnung, wenn Sie auf einer CPU laufen.

2