Twój procesor obsługuje instrukcje, że ten plik binarny TensorFlow nie został skompilowany do użycia: AVX AVX2

Jestem nowy w TensorFlow. Niedawno go zainstalowałem (wersja procesora Windows) i otrzymałem następujący komunikat:

Pomyślnie zainstalowany tensorflow-1.4.0 tensorflow-tensorboard-0.4.0rc2

Then when I tried to run

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

(które znalazłem przez https://github.com/tensorflow/tensorflow )

Otrzymałem następującą wiadomość:

2017-11-02 01:56:21.698935: I C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\36\tensorflow\core\platform\cpu_feature_guard.cc:137] Twój procesor obsługuje instrukcje, że ten plik binarny TensorFlow nie został skompilowany do użycia: AVX AVX2

But when I run

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

Działał tak, jak powinien i wyszedł Hello, TensorFlow!, co wskazuje, że instalacja się powiodła, ale jest jeszcze coś, co jest złe.

Wiesz na czym polega problem i jak go rozwiązać?
Author: Vertexwahn, 2017-11-02

9 answers

O czym jest to Ostrzeżenie?

Nowoczesne procesory dostarczają wiele instrukcji niskiego poziomu, oprócz zwykłej arytmetyki i logiki, znanych jako rozszerzenia, np. SSE2, SSE4, AVX, itp. Z Wikipedii :

Zaawansowane rozszerzenia wektorowe (AVX ) są rozszerzeniami instrukcji x86 zestaw architektury dla mikroprocesorów firmy Intel i AMD zaproponowany przez Intel w marcu 2008 roku i po raz pierwszy wspierany przez Intela z Sandy Bridge Processor wysyłka w I kw. 2011 a później przez AMD z Wysyłka procesora Bulldozer w III kwartale 2011 roku. AVX udostępnia nowe funkcje, nowe instrukcje i nowy schemat kodowania.

W szczególności AVX wprowadza operacjefused multiply-accumulate (FMA), które przyspieszają obliczenia algebry liniowej, a mianowicie iloczyn punktowy, mnożenie macierzy, splot itp. Prawie każde szkolenie z uczenia maszynowego obejmuje wiele z tych operacji, dzięki czemu będzie szybsze na procesorze obsługującym AVX i FMA (do 300%). Na Ostrzeżenie mówi, że Twój procesor obsługuje AVX (hurra!).

Chciałbym tutaj podkreślić: chodzi tylko o CPU only.

Dlaczego więc nie jest używany?

Ponieważ domyślna Dystrybucja tensorflow jest zbudowana bez rozszerzeń procesora , takich jak SSE4.1, SSE4.2, AVX, AVX2, FMA, itp. Domyślne Kompilacje (z pip install tensorflow) mają być kompatybilne z jak największą liczbą procesorów. Innym argumentem jest to, że nawet z tymi rozszerzeniami CPU jest dużo wolniejszy niż GPU, a to oczekuje się, że średnio - i wielkoskalowe szkolenia z uczenia maszynowego będą przeprowadzane na GPU.

Co powinieneś zrobić?

Jeśli masz GPU , nie powinieneś przejmować się obsługą AVX, ponieważ Najdroższe ops będą wysyłane na urządzeniu GPU (chyba że wyraźnie ustawiono nie na). W tym przypadku możesz po prostu zignorować to Ostrzeżenie przez

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

... lub przez ustawienie export TF_CPP_MIN_LOG_LEVEL=2, Jeśli używasz Uniksa. Tensorflow i tak działa dobrze, ale nie zobaczysz tych irytujących Ostrzeżenia.


Jeśli nie masz GPU i chcesz wykorzystać procesor w jak największym stopniu, powinieneś zbudować tensorflow ze źródła zoptymalizowanego dla twojego CPU z włączonymi AVX, AVX2 i FMA, jeśli twój procesor je obsługuje. To zostało omówione w to pytanie, a także to zagadnienie GitHub. TensorFlow wykorzystuje system budowania ad-hoc o nazwie bazel i budowanie go nie jest takie trywialne, ale z pewnością wykonalne. Po tym, nie tylko będzie Ostrzeżenie zniknie, wydajność tensorflow powinna również poprawić.

 884
Author: Maxim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-01-26 19:44:53

Zaktualizuj plik binarny tensorflow dla procesora i systemu operacyjnego za pomocą tego polecenia

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

Adres URL pliku whl do pobrania znajduje się tutaj

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

 162
Author: HimalayanCoder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-02 17:55:18

Optymalizacja PROCESORA z GPU

Istnieją korzyści wydajności, które można uzyskać instalując TensorFlow ze źródła, nawet jeśli masz GPU i używasz go do treningu i wnioskowania. Powodem jest to, że niektóre operacje TF mają tylko implementację CPU i nie mogą być uruchamiane na Twoim GPU.

Istnieją również wskazówki dotyczące poprawy wydajności, które dobrze wykorzystują procesor. TensorFlow ' s performance guide zaleca:

Umieszczanie operacji w rurociągu wejściowym na procesorze może znacznie poprawić wydajność. Wykorzystanie procesora dla potoku wejściowego pozwala GPU skupić się na treningu.

Aby uzyskać najlepszą wydajność, powinieneś napisać swój kod, aby wykorzystać procesor i GPU do pracy w tandemie, a nie zrzucić go na swój GPU, jeśli go masz. Zoptymalizowanie plików binarnych TensorFlow pod kątem PROCESORA może opłacić wiele godzin zaoszczędzonego czasu pracy i trzeba to zrobić raz.

 30
Author: Sam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-22 00:05:49

Dla Windows, można sprawdzić Oficjalna Optymalizacja Intel MKL dla kół TensorFlow , które są skompilowane z AVX2. To rozwiązanie przyspiesza moje wnioskowanie ~x3.

conda install tensorflow-mkl
 18
Author: Flayn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-07 11:52:47

Dla Windows (dzięki właścicielowi f040225), przejdź do Tutaj: https://github.com/fo40225/tensorflow-windows-wheel Aby pobrać adres url dla Twojego środowiska na podstawie kombinacji "TF + python + cpu_instruction_extension". Następnie użyj tego cmd do instalacji:

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

Jeśli napotkasz błąd" plik nie jest plikiem zip", pobierz plik .whl na komputerze lokalnym i użyj tego cmd do instalacji:

pip install --ignore-installed --upgrade /path/target.whl
 14
Author: Z.Wei,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-05 04:18:19

Jeśli używasz pip w wersji tensorflow, oznacza to, że jest już skompilowana i dopiero ją instalujesz. Zasadniczo instalujesz TensorFlow-gpu, ale kiedy pobierasz go z repozytorium i próbujesz zbudować, powinieneś zbudować go z obsługą CPU AVX. Jeśli go zignorujesz, otrzymasz ostrzeżenie za każdym razem, gdy uruchomisz procesor.

 9
Author: Hazarapet Tunanyan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-28 15:51:59

Najprostszym sposobem, jaki znalazłem, aby to naprawić, jest odinstalowanie wszystkiego, a następnie zainstalowanie określonej wersji TensorFlow-gpu:

  1. Odinstaluj tensorflow:
    pip uninstall tensorflow
  1. Odinstaluj TensorFlow-gpu: (upewnij się, że uruchomisz to, nawet jeśli nie jesteś pewien, czy go zainstalowałeś)
    pip uninstall tensorflow-gpu
  1. zainstaluj określoną wersję TensorFlow-gpu:
    pip install tensorflow-gpu==2.0.0
    pip install tensorflow_hub
    pip install tensorflow_datasets

Możesz sprawdzić, czy to zadziałało, dodając następujący kod do pliku Pythona:

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

Uruchom plik i następnie wyjście powinno być mniej więcej takie:

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

Hope this helps

 8
Author: James Brett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-29 21:26:05

To co dla mnie zadziałało to ta biblioteka https://pypi.org/project/silence-tensorflow/

Zainstaluj tę bibliotekę i postępuj zgodnie z instrukcjami na stronie, działa jak urok!

 2
Author: shivam13juna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-11 14:26:56

Spróbuj użyć anakondy. Miałem ten sam błąd. Jedyną opcją było zbudowanie tensorflow ze źródła, co zajęło dużo czasu. Próbowałem użyć condy i zadziałało.

  1. Stwórz Nowe środowisko w Anakondzie.
  2. conda -c conda-forge tensorflow
Wtedy zadziałało.
 0
Author: Arun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-01-26 07:02:44