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

Zaawansowane rozszerzenia wektorowe ( AVX, znane również jako Nowe rozszerzenia Sandy Bridge ) to rozszerzenia architektury zestawu instrukcji x86 dla mikroprocesorów Intel i AMD zaproponowane przez Intel w marcu 2008 r. I najpierw obsługiwane przez Intel z procesorem Sandy Bridge dostarczonym w pierwszym kwartale 2011 r. I później przez AMD z procesorem Bulldozer dostarczonym w trzecim kwartale 2011 roku. AVX zapewnia nowe funkcje, nowe instrukcje i nowy schemat kodowania.

Ostrzeżenie jest pokazane w cmd

Ten komunikat ostrzegawczy jest drukowany przez bibliotekę współdzieloną TensorFlow. Jak pokazuje komunikat, biblioteka współdzielona nie zawiera instrukcji, których mógłby użyć Twój procesor.

Co powoduje to ostrzeżenie?

Po TensorFlow 1.6 pliki binarne używają teraz instrukcji AVX, które mogą już nie działać na starszych procesorach. Tak więc starsze procesory nie będą mogły uruchomić AVX, podczas gdy w nowszych użytkownik musi zbudować przepływ tensorowy ze źródła dla swojego procesora. Poniżej znajdują się wszystkie informacje, które musisz wiedzieć o tym konkretnym ostrzeżeniu. Ponadto metoda pozbycia się tego ostrzeżenia do wykorzystania w przyszłości.

Co robi AVX?

W szczególności AVX wprowadził FMA (Fused multiply-add); która jest zmiennoprzecinkową operacją wielokrotnego dodawania, a ta cała operacja odbywa się w jednym kroku. Pomaga to przyspieszyć wiele operacji bez żadnego problemu. To sprawia, że ​​obliczenia algebry są szybsze i łatwiejsze w użyciu, także iloczyn iloczynu, mnożenie macierzy, splot itp. I to są najczęściej używane i podstawowe operacje dla każdego szkolenia w uczeniu maszynowym. Procesory obsługujące AVX i FMA będą znacznie szybsze niż starsze. Ale ostrzeżenie mówi, że twój procesor obsługuje AVX, więc jest to dobry punkt.

Technologia Intel AVX

Dlaczego nie jest domyślnie używany?

Jest tak, ponieważ domyślna dystrybucja TensorFlow jest budowana bez rozszerzeń procesora. Po rozszerzeniach procesora określa AVX, AVX2, FMA itp. Instrukcje wyzwalające ten problem nie są domyślnie włączone w dostępnych domyślnych kompilacjach. Przyczyny, dla których nie są włączone, to uczynienie tego bardziej kompatybilnym z jak największą liczbą procesorów. Aby porównać te rozszerzenia, są one znacznie wolniejsze w procesorze niż w GPU. Procesor jest wykorzystywany w uczeniu maszynowym na małą skalę, podczas gdy oczekuje się użycia procesora graficznego, gdy jest on wykorzystywany do szkolenia w uczeniu maszynowym na średnią lub dużą skalę.

Naprawianie ostrzeżenia!

Te ostrzeżenia to tylko proste komunikaty. Te ostrzeżenia mają na celu poinformowanie Cię o wbudowanym TensorFlow ze źródła. Kiedy budujesz TensorFlow ze źródła, może być szybszy na komputerze. Więc wszystkie te ostrzeżenia mówią ci o gromadzeniu TensorFlow ze źródła.

Jeśli masz na swoim komputerze kartę graficzną, możesz zignorować te ostrzeżenia ze wsparcia AVX. Ponieważ najdroższe zostaną wysłane na urządzenie GPU. A jeśli nie chcesz więcej widzieć tego błędu, możesz po prostu zignorować go, dodając:

zaimportuj moduł systemu operacyjnego do głównego kodu programu, a także ustaw dla niego obiekt mapowania

 # Do wyłączenia ostrzeżenia import os os.environ ['TF_CPP_MIN_LOG_LEVEL'] = '2' 

Ale jeśli używasz Uniksa, użyj polecenia eksportu w powłoce bash

 eksport TF_CPP_MIN_LOG_LEVEL = 2 

Ale jeśli nie masz procesora graficznego i chcesz maksymalnie wykorzystać procesor, powinieneś zbudować TensorFlow ze źródła zoptymalizowanego dla twojego procesora z włączonymi AVX, AVX2 i FMA.

Ciekawe Artykuły