de-vraag
  • Pytania
  • Tagi
  • Użytkownicy
Powiadomienia
Nagrody
Rejestracja
Po zarejestrowaniu się, będziesz otrzymywać powiadomienia o odpowiedziach i komentarzach do swoich pytań.
Zaloguj się
Brak tłumaczeń pasujących do Twojego wyszukiwania Jeśli masz już konto, zaloguj się, aby sprawdzić nowe powiadomienia.
Za dodane pytania, odpowiedzi i komentarze przewidziane są nagrody.
Więcej
Źródło
Edytuj
 csg
csg
Question

Twój procesor obsługuje instrukcje, które nie zostały skompilowane do użycia przez tę binarną wersję TensorFlow: AVX AVX2

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

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

Następnie, gdy próbowałem uruchomić

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óry 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\windows\36\tensorflow\core\platform\cpu_feature_guard.cc:137] Twój procesor obsługuje instrukcje, których ta wersja binarna TensorFlow nie została skompilowana do użycia: AVX AVX2

Ale kiedy uruchomiłem

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

uruchomił się tak jak powinien i wyprowadził Hello, TensorFlow!, co wskazuje, że instalacja rzeczywiście się powiodła, ale jest coś innego, co jest nie tak.

Czy wiesz, na czym polega problem i jak go naprawić?

581 2017-11-02T06:10:46+00:00 3
 Vertexwahn
Vertexwahn
Edytowane pytanie 7. listopada 2019 в 11:03
Programowanie
cpu
tensorflow
avx
Popular videos
How to Determine Your CPU Supports AVX Instructions | Check CPU Support AVX2
How to Determine Your CPU Supports AVX Instructions | Check CPU Support AVX2
6 miesięcy temu
European Environment for Scientific Software Installations (EESSI)
European Environment for Scientific Software Installations (EESSI)
1 rok temu
Bridges-2 Early User Program Training Session
Bridges-2 Early User Program Training Session
1 rok temu
« Poprzedni
Następny »
To pytanie ma 1 odpowiedź w języku angielskim, aby je przeczytać zaloguj się na swoje konto.
Solution / Answer
 Maxim
Maxim
10. listopada 2017 в 5:07
2017-11-10T17:07:34+00:00
Więcej
Źródło
Edytuj
#34750147

O czym jest to ostrzeżenie?

Nowoczesne procesory udostępniają wiele instrukcji niskiego poziomu, oprócz zwykłych arytmetycznych i logicznych, znanych jako rozszerzenia, np. SSE2, SSE4, AVX, itp. Z Wikipedii:

Advanced Vector Extensions (AVX) to rozszerzenia instrukcji x86. zestawu instrukcji architektury dla mikroprocesorów firm Intel i AMD zaproponowane przez Intel w marcu 2008 roku i po raz pierwszy obsługiwane przez Intel z Sandy Bridge procesor wysyłki w Q1 2011, a później przez AMD z > Bulldozer Bulldozer procesor wysyłki w Q3 2011. AVX zapewnia nowe funkcje, nowe instrukcje i nowy schemat kodowania.

W szczególności AVX wprowadza fused multiply-accumulate (FMA) operacje, które przyspieszają obliczenia algebry liniowej, a mianowicie dot-product, multiply matrix, convolution, itp. Prawie każdy trening uczenia maszynowego wymaga dużej ilości takich operacji, dlatego będzie szybszy na procesorze, który obsługuje AVX i FMA (do 300%). Ostrzeżenie mówi, że Twój procesor obsługuje AVX (hurra!).

Chciałbym podkreślić, że chodzi tu o tylko i wyłącznie o procesor.

Dlaczego więc nie jest on używany?

Ponieważ domyślna dystrybucja tensorflow jest zbudowana bez rozszerzeń CPU, takich jak SSE4.1, SSE4.2, AVX, AVX2, FMA, itd. Domyślne kompilacje (te z pip install tensorflow) są przeznaczone do bycia kompatybilnymi z tak wieloma procesorami jak to tylko możliwe. Innym argumentem jest to, że nawet z tymi rozszerzeniami CPU jest dużo wolniejszy niż GPU, a oczekuje się, że średnio- i wielkoskalowe szkolenia z uczenia maszynowego będą przeprowadzane na GPU.

Co powinieneś zrobić?

Jeśli posiadasz układ GPU, nie powinieneś przejmować się obsługą AVX, ponieważ większość kosztownych operacji będzie wysyłana na urządzenie GPU (chyba że zostanie to wyraźnie wyłączone). W tym przypadku, możesz po prostu zignorować to ostrzeżenie poprzez

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

... lub ustawiając export TF_CPP_MIN_LOG_LEVEL=2, jeśli używasz systemu Unix. Tensorflow i tak działa dobrze, ale nie zobaczysz tych irytujących ostrzeżeń.


Jeśli nie masz GPU i chcesz wykorzystać CPU tak bardzo, jak to tylko możliwe, powinieneś zbudować tensorflow ze źródła zoptymalizowanego dla twojego CPU** z AVX, AVX2 i FMA włączonymi, jeśli twój CPU je obsługuje. Zostało to omówione w to pytanie, a także ten problem GitHub. Tensorflow używa systemu budowania ad-hoc o nazwie bazel i budowanie go nie jest takie trywialne, ale z pewnością jest do zrobienia. Po tym, nie tylko ostrzeżenie zniknie, ale również wydajność tensorflow powinna się poprawić.

Peter Cordes
Peter Cordes
Edytowana odpowiedź 15. grudnia 2017 в 8:27
736
0
 HimalayanCoder
HimalayanCoder
28. kwietnia 2018 в 5:38
2018-04-28T05:38:15+00:00
Więcej
Źródło
Edytuj
#34750149

Zaktualizuj binaria tensorflow dla swojego CPU & OS używając tej komendy

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

Adres url do pobrania pliku whl można znaleźć tutaj

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

 HimalayanCoder
HimalayanCoder
Edytowana odpowiedź 2. maja 2018 в 5:55
140
0
 Wesam
Wesam
22. maja 2018 в 12:05
2018-05-22T00:05:49+00:00
Więcej
Źródło
Edytuj
#34750150

optymalizacja dla CPU przy użyciu GPU

Istnieją zyski wydajności, które można uzyskać instalując TensorFlow ze źródła, nawet jeśli posiadasz GPU i używasz go do szkolenia i wnioskowania. Powodem jest to, że niektóre operacje TF są implementowane tylko na CPU i nie mogą być uruchamiane na GPU.

Istnieją również pewne wskazówki dotyczące zwiększenia wydajności, które dobrze wykorzystują twój procesor. TensorFlow's performance guide zaleca następujące czynności:

Umieszczenie operacji potoku wejściowego na CPU może znacząco poprawić wydajność. Wykorzystanie CPU do potoku wejściowego uwalnia GPU od konieczności skupienia się na treningu.

Aby uzyskać najlepszą wydajność, powinieneś napisać swój kod tak, aby wykorzystać CPU i GPU do pracy w tandemie, a nie zrzucać wszystko na GPU, jeśli go posiadasz. Posiadanie binarek TensorFlow zoptymalizowanych dla CPU może zaprocentować godzinami zaoszczędzonego czasu pracy, a wystarczy zrobić to raz.

23
0
Dodaj pytanie
Kategorie
Wszystkie
Technologia
Kultura / Rekreacja
Życie / Sztuka
Nauka
Profesjonalny
Biznes
Użytkownicy
Wszystkie
Nowy
Popularny
1
365
Zarejestrowany 1 dzień temu
2
True Image
Zarejestrowany 1 dzień temu
3
archana agarwal
Zarejestrowany 3 dni temu
4
Maxim Zhilyaev
Zarejestrowany 6 dni temu
5
adambotsfford adambotsfford
Zarejestrowany 1 tydzień temu
DE
EL
ES
FR
ID
IT
JA
KO
LV
NL
PL
PT
RU
ZH
© de-vraag 2022
Źródło
stackoverflow.com
na podstawie licencji cc by-sa 3.0 z przypisaniem