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

Lesezeit: 10 Minuten

Benutzer-Avatar
csg

Ich habe kürzlich Tensorflow (Windows-CPU-Version) installiert und folgende Meldung erhalten:

tensorflow-1.4.0 tensorflow-tensorboard-0.4.0rc2 wurde erfolgreich installiert

Dann, als ich 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 gefunden habe https://github.com/tensorflow/tensorflow)

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 Anweisungen, die diese Die TensorFlow-Binärdatei wurde nicht für die 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 aus Hello, TensorFlow!was darauf hinweist, dass die Installation tatsächlich erfolgreich war, aber etwas anderes nicht stimmt.

Wissen Sie, was das Problem ist und wie Sie es beheben können?

  • tf funktioniert, die Informationen, die es ausspuckt, bedeuten nur, dass es nicht so schnell ist, wie es sein könnte. Um es loszuwerden, können Sie es aus der Quelle installieren, siehe hier

    – Ben

    2. November 2017 um 16:29 Uhr

  • Ich habe auch das gleiche Problem mit den Befehlen, die Sie erfolgreich ausführen konnten. >>> 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. Oguz Özcan

    5. November 2017 um 15:03 Uhr


  • @Ben also ist es nur eine Warnung, aber alles wird gut funktionieren? (zumindest aus Anfängersicht)

    – bvdb

    15. Januar 2018 um 21:55 Uhr

  • Informationen zum Kompilieren von Tensorflow mit AVX-Anweisungen finden Sie in dieser Antwort

    – Sreeragh AR

    4. April 2018 um 7:14 Uhr

  • Ich habe eine sehr ähnliche Nachricht in der gleichen Situation erhalten, die Nachricht ist Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2.

    – Hamid Heydarian

    20. April 2018 um 1:51 Uhr


Benutzer-Avatar
Maxime

Worum geht es in dieser Warnung?

Moderne CPUs bieten neben der üblichen Arithmetik und Logik viele Low-Level-Anweisungen, die als Erweiterungen bekannt sind, z. B. SSE2, SSE4, AVX usw. Von der Wikipedia:

Erweiterte Vektorerweiterungen (AVX) sind Erweiterungen der x86-Befehlssatzarchitektur für Mikroprozessoren von Intel und AMD, die von Intel im März 2008 vorgeschlagen und erstmals von Intel mit dem im ersten Quartal 2011 ausgelieferten Sandy-Bridge-Prozessor und später von AMD mit dem im dritten Quartal 2011 ausgelieferten Bulldozer-Prozessor unterstützt wurden. AVX bietet neue Funktionen, neue Anweisungen und ein neues Codierungsschema.

Insbesondere stellt AVX vor verschmolzen mehrfach-akkumulieren (FMA)-Operationen, die die Berechnung der linearen Algebra beschleunigen, nämlich Skalarprodukt, Matrixmultiplikation, Faltung usw. Fast jedes Machine-Learning-Training beinhaltet viele dieser Operationen und ist daher auf einer CPU, die AVX und FMA unterstützt, schneller (bis zu 300 %). Die Warnung besagt, dass Ihre CPU AVX unterstützt (Hurra!).

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

Warum wird es dann nicht verwendet?

Weil die Tensorflow-Standardverteilung erstellt wird ohne CPU-Erweiterungenwie SSE4.1, SSE4.2, AVX, AVX2, FMA usw. Die Standard-Builds (von pip install tensorflow) sollen 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 mittlere und große maschinelle Lerntrainings auf einer GPU durchgeführt werden.

Was tun?

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

# Just disables the warning, doesn't take advantage of AVX/FMA to run faster
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

… oder per Einstellung export TF_CPP_MIN_LOG_LEVEL=2 wenn Sie auf Unix sind. Tensorflow funktioniert sowieso gut, aber Sie werden diese lästigen Warnungen nicht sehen.


Wenn Sie keine GPU haben und die CPU so weit wie möglich nutzen möchten, Sie sollten Tensorflow aus der optimierten Quelle erstellen dein Zentralprozessor mit aktiviertem AVX, AVX2 und FMA, wenn Ihre CPU sie unterstützt. Es wurde in dieser Frage und auch diskutiert dieses GitHub-Problem. Tensorflow verwendet ein Ad-hoc-Build-System namens Bazel und es zu bauen ist nicht so trivial, aber durchaus machbar. Danach verschwindet nicht nur die Warnung, die Tensorflow-Leistung sollte sich auch verbessern.

  • Es ist erwähnenswert, dass TensorFlow Serving separate Installationen für nicht optimierte CPU und optimierte CPU (AVX, SSE4.1 usw.) hat. die details sind hier: github.com/tensorflow/serving/blob/…

    – Chris Fregly

    13. Dezember 2017 um 21:08 Uhr


  • Laut einer gelöschten Antwort auf diese Frage macht AVX512F auf einem i9-7900x (Skylake-AVX512) mit GPU (GTX1080Ti) „eine 28%ige Steigerung von 68 s -> 48 s bei CIFAR10 1000 Iterationen“. Sind Sie sicher, dass es ein guter Rat ist, die Warnung zu ignorieren, wenn Sie eine GPU verwenden? Sofern dieser Kommentar nicht falsch ist, scheint es, dass es zumindest in einigen Fällen etwas zu gewinnen gibt von CPU-Befehlssätzen.

    – Peter Cordes

    3. Januar 2018 um 22:15 Uhr

  • @PeterCordes Wenn dem so ist, werde ich es auf jeden Fall in meine Antwort aufnehmen. Aber die Aussage „mein Modell beschleunigt um 30 %“ klingt genauso wie „mein C++-Programm beschleunigt um 30 %“. Welches Modell genau? Gibt es eine manuelle CPU-Platzierung? Wie werden Daten übertragen? Beispielsweise könnte in numpy viel Arbeit stecken. Natürlich ist es möglich, die CPU zu einem Engpass zu machen, und es gibt viele Fragen dazu auf SO. Es wird normalerweise als Fehler angesehen.

    – Maxim

    4. Januar 2018 um 10:16 Uhr

  • @Maxim: Der gesamte Text der gelöschten Antwort lautet “In meinem Test macht die Anweisung AVX512F auf I9 (7900x) GPU (GTX1080Ti) einen Gewinn von 28% 68s->48s auf CIFAR10 1000 Iterationen“. Also leider gibt es keine Details (oder Zeichensetzung, Grammatik oder Formatierung).

    – Peter Cordes

    4. Januar 2018 um 10:32 Uhr


  • Wenn Sie sich auf einem Mac befinden, verwendet dieser anscheinend keine GPU, stackoverflow.com/questions/46364917/…

    – Dent Arthur Dent

    29. Januar 2018 um 15:00 Uhr

Benutzer-Avatar
HimalayanCoder

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

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

Die Download-URL der whl-Datei finden Sie hier

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

  • Ich habe es unter Windows 10 mit der URL stackoverflow.com/questions/47068709/… versucht. Ich erhalte die Fehlermeldung zipfile.BadZipFile: File is not a zip file

    – Thusitha Thilina Dayaratne

    4. Juli 2018 um 1:07 Uhr

  • Es hat funktioniert, als ich die heruntergeladene Version heruntergeladen und verwendet habe

    – Thusitha Thilina Dayaratne

    4. Juli 2018 um 1:10 Uhr

  • Jeder, der “Fehlermeldung zipfile.BadZipFile: Datei ist keine Zip-Datei” erhält, sollte den Rohlink erhalten, wie für cuda9.2avx2 der Link ist github.com/fo40225/tensorflow-windows-wheel/raw/master/1.9.0/…

    – Yeasin Ar Rahman

    21. August 2018 um 13:03 Uhr

  • Für Windows habe ich dies versucht. Deinstallieren Sie vorhandenen Tensorflow mit „pip uninstall tensorflow“ und installieren Sie ihn dann mit „pip install “ neu. Laden Sie diese WHL-Datei auf Ihren Computer herunter – github.com/fo40225/tensorflow-windows-wheel/blob/master/1.10.0/… , wenn Sie ein 3.6 Python und ein 64-Bit-Windows haben (ignorieren Sie das AMD, das Sie sehen). Navigieren Sie andernfalls in Github einen Schritt zurück und suchen Sie nach der richtigen WHL. Es klappt

    – König

    15. September 2018 um 12:48 Uhr


  • Hat für mich funktioniert. Ubuntu 16.04.4, Python 3.5.2, gcc 5.4.0 – whl heruntergeladen und installiert. Derzeit wird eine p2.xLarge-AWS-Instanz verwendet. Die Leistung verbesserte sich von 16 Sekunden pro Iteration auf 9 Sekunden für eine benutzerdefinierte Objekterkennungsübung mit 230 Klassen, die auf Faster R-CNN ausgeführt wurden.

    – Aprikose

    16. Oktober 2018 um 3:59 Uhr

CPU-Optimierung mit GPU

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

Außerdem gibt es einige Tipps zur Leistungssteigerung, die Ihre CPU optimal nutzen. Leistungsleitfaden von TensorFlow empfiehlt folgendes:

Das Platzieren von Eingabepipelinevorgängen auf der CPU kann die Leistung erheblich verbessern. Durch die Nutzung der CPU für die Eingabepipeline kann sich die GPU auf das Training konzentrieren.

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

Benutzer-Avatar
flaviussn

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

conda install tensorflow-mkl

Für Windows (Dank an den Besitzer f040225) gehen Sie hier: https://github.com/fo40225/tensorflow-windows-wheel um die URL für Ihre Umgebung basierend auf der Kombination von “tf + python + cpu_instruction_extension” abzurufen. Verwenden Sie dann dieses cmd zum 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 mit diesem Befehl:

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

  • Die GPU-Dateien sind in Teile aufgeteilt und als .7z-Dateien gekennzeichnet. Wie setzt man sie zusammen?

    – Benutzer3496060

    8. März 2020 um 5:49 Uhr

  • @ user3496060 Ich habe winrar verwendet, um die geteilten Dateien zu dekomprimieren

    – Alan Dursun

    18. März 2020 um 1:56 Uhr

Wenn Sie die verwenden Pip Version von TensorFlow, bedeutet dies, dass sie bereits kompiliert ist und Sie sie gerade 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 der CPU laufen. Die kannst du dir auch anschauen.

Richtiger Weg zum Kompilieren von Tensorflow mit SSE4.2 und AVX

Was ist die AVX-CPU-Unterstützung in Tensorflow?

  • Die GPU-Dateien sind in Teile aufgeteilt und als .7z-Dateien gekennzeichnet. Wie setzt man sie zusammen?

    – Benutzer3496060

    8. März 2020 um 5:49 Uhr

  • @ user3496060 Ich habe winrar verwendet, um die geteilten Dateien zu dekomprimieren

    – Alan Dursun

    18. März 2020 um 1:56 Uhr

Der einfachste Weg, den ich gefunden habe, um dies zu beheben, besteht darin, alles zu deinstallieren und dann eine bestimmte Version von tensorflow-gpu zu installieren:

  1. Tensorflow deinstallieren:
    pip uninstall tensorflow
  1. deinstallieren Sie tensorflow-gpu: (stellen Sie sicher, dass Sie dies ausführen, auch wenn Sie nicht sicher sind, ob Sie es installiert haben)
    pip uninstall tensorflow-gpu
  1. Installieren Sie eine bestimmte Tensorflow-GPU-Version:
    pip install tensorflow-gpu==2.0.0
    pip install tensorflow_hub
    pip install tensorflow_datasets

Sie können überprüfen, ob dies funktioniert hat, indem Sie den folgenden Code in eine Python-Datei einfügen:

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

Führen Sie die Datei aus und die Ausgabe sollte ungefähr so ​​​​aussehen:

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

Hoffe das hilft

  • ModuleNotFoundError: Kein Modul namens „tensorflow_hub“

    – D. Adams

    28. April 2020 um 4:13 Uhr

  • ModuleNotFoundError: Kein Modul namens „tensorflow_datasets“

    – D. Adams

    28. April 2020 um 4:14 Uhr

  • Versuchen Sie, die Module separat zu installieren: pip install tensorflow_hub und pip install tensorflow_datasets

    – James Brett

    29. April 2020 um 13:05 Uhr

  • yup -> Ich versuche nur, bei der Vollständigkeit Ihrer Antwort hilfreich zu sein.

    – D. Adams

    29. April 2020 um 18:13 Uhr

  • Oh, ich kann mich nicht erinnern, diese separat installieren zu müssen. Vielen Dank!

    – James Brett

    29. April 2020 um 21:23 Uhr

1136620cookie-checkIhre CPU unterstützt Anweisungen, für deren Verwendung diese TensorFlow-Binärdatei nicht kompiliert wurde: AVX AVX2

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy