Javítás: A CPU támogatja az utasításokat, amelyek szerint ezt a TensorFlow bináris fájlt nem az AVX2 használatához fordították le

A Advanced Vector Extensions ( AVX , más néven Sandy Bridge New Extensions ) az Intel és az AMD mikroprocesszorainak x86 utasításkészlet-architektúrájának kiterjesztése, amelyet az Intel 2008 márciusában javasolt, és amelyet először az Intel támogatott a Sandy Bridge processzorral 2011 első negyedévében és később az AMD a Bulldozer processzorral 2011 harmadik negyedévében szállította. Az AVX új funkciókat, új utasításokat és új kódolási sémát kínál.

Ezt a figyelmeztető üzenetet a TensorFlow megosztott könyvtár nyomtatja ki. Amint az üzenet jelzi, a megosztott könyvtár nem tartalmaz olyan utasításokat, amelyeket a CPU használhatna.

Mi okozza ezt a figyelmeztetést?

A TensorFlow 1.6 után a bináris fájlok most AVX utasításokat használnak, amelyek esetleg már nem futnak régebbi CPU-kon. Tehát a régebbi CPU-k nem lesznek képesek futtatni az AVX-t, míg az újabbakhoz a felhasználónak a forrásból ki kell építenie a processzorának a tensorflow-ját. Az alábbiakban megtalálható minden információ, amelyet tudnia kell erről a figyelmeztetésről. Ezenkívül egy módszer a figyelmeztetés későbbi felhasználásra való megszabadulására.

Mit csinál az AVX?

Különösen az AVX vezette be az FMA-t (Fused multiply-add); amely a lebegőpontos szorzás-összeadás művelet, és ez az egész művelet egyetlen lépésben történik. Ez problémamentesen segít gyorsítani számos műveletet. Gyorsabbá és egyszerűbbé teszi az algebra kiszámítását, a dot-szorzatot, a mátrixszorzást, a konvolúciót stb. És ezek mind a gépi tanulási tréningek leggyakrabban használt és alapvető műveletei. Az AVX-et és az FMA-t támogató CPU-k sokkal gyorsabbak lesznek, mint a régebbi. De a figyelmeztetés azt állítja, hogy a CPU támogatja az AVX-t, így ez egy jó pont.

Miért nem használja alapértelmezés szerint?

Ennek oka, hogy a TensorFlow alapértelmezett terjesztés a CPU kiterjesztések nélkül épül fel. CPU kiterjesztésekkel megadja az AVX, AVX2, FMA stb. Utasításokat. A problémát kiváltó utasítások alapértelmezés szerint nincsenek engedélyezve a rendelkezésre álló alapértelmezett buildeknél. Nem engedélyezésük oka az, hogy ezt minél több CPU-val kompatibilisebbé tegyék. Ezen kiterjesztések összehasonlításához sokkal lassabbak a processzorokban, mint a GPU-ban. A CPU-t a kis léptékű gépi tanuláshoz használják, míg a GPU-t akkor várják el, ha közepes vagy nagyméretű gépi tanuláshoz használják.

A figyelmeztetés kijavítása!

Ezek a figyelmeztetések csak egyszerű üzenetek. Ezeknek a figyelmeztetéseknek az a célja, hogy tájékoztassák Önt a beépített TensorFlow forrásról. Ha a TensorFlow-t a forrásból készíti, akkor gyorsabb lehet a gépen. Tehát ezek a figyelmeztetések a TensorFlow forrásból történő felépítéséről szólnak.

Ha GPU-ja van a gépén, akkor figyelmen kívül hagyhatja ezeket az figyelmeztetéseket az AVX támogatásból. Mivel a legdrágábbakat GPU-eszközre küldik. És ha már nem szeretné látni ezt a hibát, egyszerűen figyelmen kívül hagyhatja ezt a hozzáadást:

importálja az OS modult a fő programkódjába, és állítsa be hozzá a leképezési objektumot is

# A figyelmeztetés importálásának letiltásához az os.environ ['TF_CPP_MIN_LOG_LEVEL'] = '2'

De ha Unix-ot használ, akkor használja az export parancsot a bash shellben

export TF_CPP_MIN_LOG_LEVEL = 2

De ha nincs GPU-ja, és a lehető legnagyobb mértékben szeretné használni a CPU-t, akkor a TensorFlow-t a CPU-ra optimalizált forrásból kell felépítenie, itt engedélyezve az AVX, AVX2 és FMA funkciókat.