Advanced Vector Extensions ( AVX , znany również jako Sandy Bridge New Extensions ) to rozszerzenia architektury zestawu instrukcji x86 dla mikroprocesorów Intela i AMD zaproponowanej przez firmę Intel w marcu 2008 r. I po raz pierwszy obsługiwane przez firmę Intel z procesorem Sandy Bridge, który zostanie dostarczony w pierwszym kwartale 2011 r. I później firmy AMD z procesorem Bulldozer, który zostanie dostarczony w trzecim kwartale 2011 roku. AVX zapewnia nowe funkcje, nowe instrukcje i nowy schemat kodowania.
![](http://pics.rumahbengkel.com/files/guides/1265/b61nifx18r.jpg)
Ten komunikat ostrzegawczy jest drukowany przez udostępnioną bibliotekę TensorFlow. Jak wskazuje komunikat, biblioteka współdzielona nie zawiera instrukcji, których mógłby użyć 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ą w stanie uruchomić AVX, podczas gdy w przypadku nowszych użytkownik musi zbudować tensorflow ze źródła dla swojego procesora. Poniżej znajdują się wszystkie informacje, które musisz wiedzieć o tym konkretnym ostrzeżeniu. Również 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); czyli operacja mnożenia zmiennoprzecinkowego mnożenia i cała ta operacja jest wykonywana w jednym kroku. Pomaga to przyspieszyć wiele operacji bez żadnego problemu. To sprawia, że obliczenia algebry są szybsze i łatwiejsze w użyciu, a także iloczyn skalarny, mnożenie macierzy, splot itp. Są to wszystkie najczęściej używane i podstawowe operacje w każdym treningu uczenia maszynowego. Procesory obsługujące AVX i FMA będą znacznie szybsze niż starsze. Ale ostrzeżenie stwierdza, że twój procesor obsługuje AVX, więc to dobra uwaga.
![](http://pics.rumahbengkel.com/files/guides/1265/b61nifx18r-1.jpg)
Dlaczego nie jest używany domyślnie?
Dzieje się tak, ponieważ domyślna dystrybucja TensorFlow jest zbudowana bez rozszerzeń procesora. W rozszerzeniach procesora określa AVX, AVX2, FMA itd. Instrukcje, które powodują ten problem, nie są domyślnie włączone w dostępnych domyślnych kompilacjach. Powodem, dla którego nie są włączone, jest 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 używany w uczeniu maszynowym na małą skalę, podczas gdy oczekuje się użycia procesora graficznego, gdy jest używany do szkolenia maszynowego na średnią lub dużą skalę.
Naprawianie ostrzeżenia!
Te ostrzeżenia to tylko proste komunikaty. Celem tych ostrzeżeń jest poinformowanie Cię o zbudowanym TensorFlow ze źródła. Kiedy budujesz TensorFlow ze źródła, może on działać szybciej na maszynie. Więc wszystkie te ostrzeżenia mówią o tworzeniu TensorFlow ze źródła.
Jeśli masz GPU na swoim komputerze, możesz zignorować te ostrzeżenia ze wsparcia AVX. Ponieważ najdroższe będą wysyłane na urządzeniach GPU. A jeśli nie chcesz już widzieć tego błędu, możesz go po prostu zignorować, dodając to:
zaimportuj moduł systemu operacyjnego w głównym kodzie programu, a także ustaw dla niego obiekt mapowania
# Wyłączanie importu ostrzeżeń 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 GPU i chcesz maksymalnie wykorzystać swój procesor, powinieneś zbudować TensorFlow ze źródła zoptymalizowanego dla twojego procesora z włączonymi tutaj AVX, AVX2 i FMA.