Wie funktioniert die Verwendung von ASIC zur Beschleunigung der KI?

9

Auf der Wikipedia-Seite können wir lesen, dass Google einen benutzerdefinierten ASIC-Chip für maschinelles Lernen erstellt und auf TensorFlow zugeschnitten hat, um die KI zu beschleunigen.

Da ASIC-Chips speziell für eine bestimmte Verwendung angepasst wurden, ohne dass die Schaltung geändert werden kann, muss ein fester Algorithmus aufgerufen werden.

Wie genau funktioniert die Beschleunigung der KI mit ASIC-Chips, wenn der Algorithmus nicht geändert werden kann? Welcher Teil davon beschleunigt genau?

Kenorb
quelle
1
Keine mir bekannte gängige KI-Technik erfordert eine Änderung des Algorithmus , obwohl die meisten von der Fähigkeit abhängen, Daten (Verbindungsstärken, Bevölkerungsmitglieder) usw. zu ändern .
NietzscheanAI
Der einzige dynamische Teil wie der Status des Netzwerks wird also auf einem Flash-Speicher oder Laufwerk gespeichert?
Kenorb
Laut en.wikipedia.org/wiki/Application-specific_integrated_circuit können moderne ASICs RAM haben ...
NietzscheanAI

Antworten:

4

Tensoroperationen

Die Hauptarbeit in den meisten ML-Anwendungen ist einfach eine Reihe von (sehr großen) Tensoroperationen, z. B. Matrixmultiplikation. Sie können tun , dass in einem ASIC leicht, und alle anderen Algorithmen können obendrein nur laufen.

Peter ist
quelle
1
Ein wichtiger Punkt ist, dass die TPU eine 8-Bit-Multiplikation verwendet, die viel effizienter implementiert werden kann als eine breitere Multiplikation, die von der CPU angeboten wird. Eine solch geringe Präzision ist ausreichend und ermöglicht es, viele tausend solcher Multiplikatoren auf einen einzelnen Chip zu packen.
Maaartinus
3

Ich denke, der Algorithmus hat sich nur minimal geändert, aber die erforderliche Hardware wurde auf den Punkt gebracht.

Die Anzahl der Gate-Übergänge wird reduziert (möglicherweise auch Float-Ops und Präzision), ebenso wie die Anzahl der Datenverschiebungsvorgänge, wodurch sowohl Strom als auch Laufzeit gespart werden. Google schlägt vor, dass die TPU eine 10-fache Kostenersparnis erzielt, um die gleiche Arbeit zu erledigen.

https://cloudplatform.googleblog.com/2016/05/Google-supercharges-machine-learning-tasks-with-custom-chip.html

Geil
quelle
1

ASIC - Es steht für Application Specific IC. Grundsätzlich schreiben Sie Programme, um einen Chip in HDL zu entwerfen . Ich werde anhand von Fällen, wie moderne Computer funktionieren, meinen Standpunkt erläutern:

  • CPUs - CPUs sind im Grunde genommen ein Mikroprozessor, bei dem viele Hilfs-ICs bestimmte Aufgaben ausführen. In einem Mikroprozessor gibt es nur eine einzige arithmetische Verarbeitungseinheit (zusammengesetzter Begriff) namens Akkumulator, in der ein Wert gespeichert werden muss, da nur Berechnungen durchgeführt werden und nur die im Akkumulator gespeicherten Werte. Daher muss jede Anweisung, jede Operation, jede R / W-Operation über den Akkumulator ausgeführt werden (aus diesem Grund froren ältere Computer beim Schreiben von einer Datei auf ein Gerät ein, obwohl der Prozess heutzutage verfeinert wurde und möglicherweise keinen Akkumulator erfordert dazwischen kommen speziell DMA). Jetzt müssen Sie in ML-Algorithmen Matrixmultiplikationen durchführen, die leicht parallelisiert werden können, aber wir haben nur eine einzige Verarbeitungseinheit, und so kamen die GPUs.
  • GPUs - GPUs haben Hunderte von Prozessoreinheiten, aber ihnen fehlen die Mehrzweckfunktionen einer CPU. Sie eignen sich also gut für parallelisierbare Berechnungen. Da es bei der Matrixmultiplikation keine Speicherüberlappung gibt (derselbe Teil des Speichers wird durch zwei Prozesse manipuliert), funktionieren GPUs sehr gut. Da die GPU nicht multifunktional ist, funktioniert sie nur so schnell, wie eine CPU Daten in ihren Speicher einspeist.
  • ASIC - ASIC kann eine beliebige GPU, CPU oder ein Prozessor Ihres Designs sein, mit einer beliebigen Menge an Speicher, die Sie ihm zur Verfügung stellen möchten. Angenommen, Sie möchten Ihren eigenen spezialisierten ML-Prozessor und einen Prozessor auf ASIC entwerfen. Sie möchten eine 256-Bit-FP-Nummer? Erstellen Sie einen 256-Bit-Prozessor. Sie möchten, dass Ihre Summierung schnell ist? Paralleladdierer bis zu einer höheren Anzahl von Bits als herkömmliche Prozessoren implementieren? Sie wollennAnzahl der Kerne? Kein Problem. Sie möchten den Datenfluss von verschiedenen Verarbeitungseinheiten zu verschiedenen Orten definieren? Du kannst es schaffen. Auch bei sorgfältiger Planung können Sie einen Kompromiss zwischen ASIC-Bereich und Leistung und Geschwindigkeit erzielen. Das einzige Problem ist, dass Sie für all dies Ihre eigenen Standards erstellen müssen. Im Allgemeinen werden beim Entwurf von Prozessoren einige genau definierte Standards befolgt, z. B. die Anzahl der Pins und ihre Funktionalität, der IEEE 754-Standard für die Gleitkommadarstellung usw., die nach vielen Versuchen und Fehlern erstellt wurden. Wenn Sie all dies überwinden können, können Sie ganz einfach Ihren eigenen ASIC erstellen.

Ich weiß nicht, was Google mit seinen TPUs macht, aber anscheinend haben sie eine Art Integer- und FP-Standard für ihre 8-Bit-Kerne entwickelt, abhängig von den jeweiligen Anforderungen. Sie implementieren es wahrscheinlich auf ASIC aus Gründen der Leistung, Fläche und Geschwindigkeit.

DuttaA
quelle
0

Geringe Genauigkeit ermöglicht eine hohe Parallelitätsberechnung in Convo- und FC-Schichten. Feste CPU- und GPU-Architektur, aber ASIC / FPGA kann basierend auf der neuronalen Netzwerkarchitektur entworfen werden

Mahi
quelle