Als Premium-Partner von Google konnten wir bei ML6 frühzeitig Zugang zum neuesten Spielzeug für maschinelles Lernen erhalten: dem Edge TPU! Die Edge TPU ist im Grunde der Raspberry Pi des maschinellen Lernens. Es ist ein Gerät, das mit seiner TPU Inferenzen am Rand durchführt.
Wie bitte?! Dieser letzte Satz enthielt eine Menge vager und sehr technischer Wörter. Keine Sorge, all diese Wörter werden im Laufe dieses Blogposts klar werden.
Die Edge TPU läuft natürlich auf dem Edge, aber was ist der Edge und warum sollten wir nicht alles in der Cloud laufen lassen wollen?
Die Ausführung von Code in der Cloud bedeutet, dass Sie CPUs, GPUs und TPUs eines Unternehmens nutzen, das Ihnen diese über Ihren Browser zur Verfügung stellt. Der Hauptvorteil der Ausführung von Code in der Cloud besteht darin, dass Sie die erforderliche Rechenleistung für diesen speziellen Code zuweisen können (das Training großer Modelle kann sehr rechenintensiv sein).
Der Edge ist das Gegenteil der Cloud. Es bedeutet, dass Sie Ihren Code vor Ort ausführen (was im Grunde bedeutet, dass Sie das Gerät, auf dem der Code ausgeführt wird, physisch berühren können). Der Hauptvorteil der Edge-Ausführung von Code besteht darin, dass es keine Netzwerklatenz gibt. Da IoT-Geräte in der Regel häufig Daten generieren, ist die Ausführung von Code am Rande des Netzwerks perfekt für IoT-basierte Lösungen.
Eine TPU (Tensor Processing Unit) ist eine andere Art von Verarbeitungseinheit wie eine CPU oder eine GPU. Es gibt jedoch einige große Unterschiede zwischen ihnen. Der größte Unterschied ist, dass eine TPU ein ASIC (Application-Specific Integrated Circuit) ist. Ein ASIC ist für die Ausführung einer bestimmten Art von Anwendung optimiert. Bei einer TPU besteht diese spezifische Aufgabe in der Durchführung von Multiplikations- und Additionsoperationen, die typischerweise in neuronalen Netzen verwendet werden. Wie Sie wahrscheinlich wissen, sind CPUs und GPUs nicht für eine bestimmte Art von Anwendung optimiert, weshalb sie keine ASICs sind.
Da wir CPUs, GPUs und TPUs vergleichen, wollen wir uns kurz ansehen, wie sie jeweils Multiplikations- und Additionsoperationen mit ihrer Architektur durchführen:
Eine CPU führt die Multiplikations-Additions-Operation durch, indem sie jede Eingabe und jedes Gewicht aus dem Speicher liest, sie mit ihrer ALU (dem Rechner in der Abbildung oben) multipliziert, sie zurück in den Speicher schreibt und schließlich alle multiplizierten Werte addiert.
Moderne CPUs werden durch einen massiven Cache, eine Verzweigungsvorhersage und eine hohe Taktrate auf jedem ihrer Kerne gestärkt. All dies trägt zu einer geringeren Latenzzeit der CPU
Ein Grafikprozessor tut dasselbe, hat aber Tausende von ALUs, um seine Berechnungen durchzuführen. Eine Berechnung kann über alle ALUs parallelisiert werden. Dies nennt man eine SIMD und ein perfektes Beispiel dafür ist die Multiplikationsoperation in neuronalen Netzen.
Ein Grafikprozessor nutzt jedoch nicht die ausgefallenen Funktionen, die die Latenzzeit verringern (siehe oben). Sie muss auch ihre Tausende von ALUs orchestrieren, was die Latenz weiter verringert.
Kurz gesagt, ein Grafikprozessor erhöht drastisch seine Durchsatz durch Parallelisierung der Berechnungen im Gegenzug für eine Erhöhung der Latenzzeit. Oder mit anderen Worten:
Eine CPU ist ein spartanischer Krieger, der stark und gut trainiert ist, während die GPU wie eine riesige Armee von Bauern ist, die den Spartaner besiegen kann, weil sie mit diesem Ma
Eine TPU hingegen arbeitet ganz anders. Ihre ALUs sind direkt miteinander verbunden , ohne den Speicher zu nutzen. Sie können Informationen direkt weitergeben, was die Latenzzeit drastisch verringert.
In der obigen Abbildung können Sie sehen, dass alle Gewichte des neuronalen Netzes in die ALUs geladen werden. Sobald dies geschehen ist, wird die Eingabe des neuronalen Netzes in diese ALUs geladen, um die Multiplikations- und Additionsoperationen durchzuführen. Dieser Vorgang ist in der folgenden Abbildung zu sehen.
Wie in der obigen Abbildung zu sehen ist, wird die gesamte Eingabe für das neuronale Netz nicht gleichzeitig in die ALUs eingefügt, sondern schrittweise von links nach rechts. Dies geschieht, um Speicherzugriffe zu vermeiden, da die Ausgabe der ALUs an die nächsten ALUs weitergegeben wird. Dies alles geschieht mit der Methodik eines systolischen Arrays, das in der nachstehenden Abbildung grafisch dargestellt ist.
Jede graue Zelle in der obigen Abbildung steht für eine ALU in der TPU (die eine Gewichtung enthält). In ALUs wird eine Multiplikations-Addier-Operation durchgeführt, indem die Eingabe, die eine ALU von oben erhält, mit ihrer Gewichtung multipliziert und dann mit dem Wert addiert wird, den sie von links erhält. Das Ergebnis wird nach rechts weitergegeben, um die Multiplikations-Additions-Operation abzuschließen. Die Eingabe, die die ALU von oben erhalten hat, wird nach unten weitergeleitet, um die Multiplikations-Additions-Operation für das nächste Neuron in der neuronalen Netzwerkschicht durchzuführen.
Am Ende jeder Zeile kann das Ergebnis der Multiplikations-Additions-Operation für jedes Neuron in der Schicht gefunden werden, ohne dass zwischen den Operationen Speicher benötigt wird.
Die Verwendung dieser systolischen Anordnung erhöht die Leistung der Edge TPU erheblich. Wenn Sie wissen wollen, wie viel genau, können Sie sich unseren Benchmark-Blogpost ansehen.
Ein letzter wichtiger Hinweis zu TPUs ist die Quantisierung. Da die Edge TPU von Google 8-Bit-Gewichte für ihre Berechnungen verwendet, während normalerweise 32-Bit-Gewichte verwendet werden, sollten wir in der Lage sein, die Gewichte von 32 Bit in 8 Bit zu konvertieren. Dieser Vorgang wird Quantisierung genannt.
Bei der Quantisierung wird die genauere 32-Bit-Zahl auf die nächstliegende 8-Bit-Zahl gerundet. Dieser Vorgang wird in der nachstehenden Abbildung visuell dargestellt.
Durch das Runden von Zahlen sinkt die Genauigkeit. Neuronale Netze sind jedoch sehr gut in der Verallgemeinerung (z. B. Dropout) und nehmen daher keinen großen Schaden, wenn die Quantisierung angewendet wird, wie in der Abbildung unten gezeigt.
Die Vorteile der Quantisierung sind beträchtlich. Sie reduziert den Rechen- und Speicherbedarf, was zu einer energieeffizienteren Berechnung führt.
Die Edge TPU führt Inferenzen schneller durch als jede andere Architektur von Verarbeitungseinheiten. Sie ist nicht nur schneller, sondern auch umweltfreundlicher, da sie die Quantisierung nutzt und weniger Speicheroperationen benötigt.
Wir von ML6 sind Fans!