Intel fügt der CPU Deep Learning-Anweisungen hinzu


Einige der neuesten Intel-Prozessoren unterstützen die AVX-512- Familie von Vektoranweisungen . Sie werden in Blöcken von 512 Bit (64 Bytes) ausgeführt. Der Vorteil der Hardwareunterstützung für solch große Befehle besteht darin, dass der Prozessor mehr Daten in einem einzigen Taktzyklus verarbeitet.

Wenn der Code mit 64-Bit-Wörtern (8 Byte) geladen ist, können Sie theoretisch, wenn Sie andere Faktoren nicht berücksichtigen, seine Ausführung um das Achtfache beschleunigen, wenn Sie die AVX-512-Anweisungen verwenden.

Die AVX-512-Erweiterung für das x86-Befehlssystem unterstützt 8 Maskenregister, gepackte 512-Bit-Formate für ganzzahlige und gebrochene Zahlen und Operationen mit ihnen, die Feinabstimmung der Rundungsmodi (mit denen Sie globale Einstellungen überschreiben können), Broadcast-Operationen, die Unterdrückung von Fehlern bei Operationen mit gebrochenen Zahlen. Sammel- / Streuoperationen, schnelle mathematische Operationen, kompakte Codierung großer Offsets.

Der AVX-512-Anfangssatz enthält acht Gruppen von Anweisungen:

  • AVX-512 Anweisungen zur Konflikterkennung (CDI)
  • Exponentielle und wechselseitige Anweisungen für AVX-512 (ERI)
  • AVX-512 Prefetch-Anweisungen (PFI)
  • AVX-512 Vector Length Extensions (VL)
  • AVX-512 Byte- und Word-Anweisungen (BW)
  • AVX-512 Doppelwort- und Vierwortanweisungen (DQ)
  • AVX-512 Integer Fused Multiply Add (IFMA)
  • AVX-512 Anweisungen zur Manipulation von Vektorbytes (VBMI)

Die AVX-512-Familie wird vom Knights Landing-Coprozessor Intel Xeon Phi (ehemals Intel MIC), einigen Skylake Xeon-Prozessoren (SKX) sowie zukünftigen Cannonlake-Prozessoren unterstützt, die 2017 verfügbar sein werden. Die aufgeführten Prozessoren unterstützen nicht alle Anweisungen. Beispielsweise unterstützt Knights Landing Xeon Phi nur CD, ER und PF. Der Skylake Xeon-Prozessor (SKX) unterstützt CD, VL, BW und DQ. Cannonlake-Prozessor - CD, VL, BW, DQ, IFMA.

Natürlich kann nicht jeder Code in Vektoranweisungen konvertiert werden, aber Sie müssen dies nicht mit dem gesamten Code tun, schreibtauf seinem Blog Daniel Lemire, Professor für Informatik an der Universität von Quebec. Ihm zufolge ist es wichtig, den "Hot Code" zu optimieren, der die meisten Prozessorressourcen verbraucht. In vielen Systemen wird „Hot Code“ aus einer Reihe von Schleifen erstellt, die milliardenfach scrollen. Das ist es, was optimiert werden sollte, das ist der Hauptvorteil.

Wenn beispielsweise ein solcher Python-Code mithilfe von MKL Numpy aus Standard-64-Bit-Anweisungen in AVX-512 neu kompiliert wird , wird die Ausführungszeit auf demselben Prozessor von 6-7 Sekunden auf 1 Sekunde reduziert.

import numpy as np
np.random.seed(1234)
xx = np.random.rand(1000000).reshape(1000, 1000)
%timeit np.linalg.eig(xx)

Deep Learning Hardware-Unterstützung


Neuronale Netze und tiefes Lernen sind einer der hellsten Trends der letzten Zeit. Google, Facebook und andere große Unternehmen versuchen, wo immer möglich, neuronale Netze zu verwenden: in Empfehlungssystemen, Gesichtserkennung, Textübersetzung, Spracherkennung, Fotoklassifizierung und sogar in Brettspielen wie go (dies dient jedoch mehr der Werbung als dem kommerziellen Gewinn). Einige versuchen, eine eingehende Schulung in nicht standardmäßigen Bereichen wie der Autopilotenausbildung durchzuführen .

Unter Risikokapitalinvestoren besteht mittlerweile das Verständnis, dass das effektivste Programm, um schnell reich zu werden, darin besteht, ein Startup im Bereich Deep Learning zu starten, das das Unternehmen der Big Five (Facebook, Google, Apple, Microsoft, Amazon) sofort kaufen wird. Diese Unternehmen haben in jüngster Zeit einen harten Wettbewerb auf dem Gebiet des Talentkaufs bestritten, sodass ein Startup sofort und zu einem günstigen Preis von mindestens 10 Millionen US-Dollar pro Mitarbeiter das Unternehmen verlässt. Ein solcher Geschäftsplan ist jetzt noch einfacher geworden, da Unternehmen Open Source-Entwicklungstools veröffentlichen, wie es Google mit TensorFlow getan hat .

Unglücklicherweise für Intel bleibt dieses Unternehmen zurück und nimmt fast nicht am Spiel teil. Professor Lemir räumt ein, dass Nvidia-GPUs heute als Industriestandard gelten. Auf ihnen führen sie den Code von Programmen für maschinelles Lernen aus.

Es ist nicht so, dass Intel-Ingenieure den Trend verschlafen haben. Es ist nur so, dass die GPUs selbst ohne spezielle Anweisungen besser für Deep-Learning-Berechnungen geeignet sind.

Trotzdem bereitet Intel einen Gegenangriff vor, wodurch sich die Situation auf den Kopf stellen könnte. Im September veröffentlichte das Unternehmen eine neue Programmierreferenz für Intel Architecture Instruction Set ExtensionsAngabe aller Anweisungen, die in zukünftigen Prozessoren unterstützt werden. Wenn Sie sich dieses Dokument ansehen, warten wir auf eine angenehme Überraschung. Es stellt sich heraus, dass die AVX-512-Anweisungsfamilie in mehrere Gruppen unterteilt und erweitert wurde.

Insbesondere sind zwei Gruppen von Anweisungen speziell für eingehende Schulungen konzipiert: AVX512_4VNNIW und AVX512_4FMAPS. Nach der Beschreibung zu urteilen, können diese Anweisungen nicht nur beim tiefen Lernen, sondern auch bei vielen anderen Aufgaben nützlich sein.

  • AVX512_4VNNIW: Vektoranweisungen für tiefes Lernen verbessern die Genauigkeit von Wortvariablen
  • AVX512_4FMAPS: Vektoranweisungen für das einfache Lernen von Gleitkomma-Einzelgenauigkeit



Das sind sehr gute Nachrichten.

Wenn eine solche Unterstützung in Standard-Intel-Prozessoren auftritt, können sie die tiefgreifende Lerngrafikleistung von Nvidia verbessern oder sogar übertreffen. Natürlich vorbehaltlich entsprechender Optimierungsprogramme. Wer weiß, die gleiche Geschichte wird sich plötzlich wiederholen wie bei der Videokodierung, als Intel-Prozessoren mit integrierter Grafik nach dem Hinzufügen von H.264- und H.265-Hardwareunterstützung zur CPU begannen, Videos schneller als separate Nvidia- und AMD-Grafikkarten zu kodieren und zu dekodieren.

Source: https://habr.com/ru/post/de398405/


All Articles