Qualcomm hat mit dem neuen Snapdragon 865 SoC enorme Fortschritte bei der KI-Leistung gemacht. Wir analysieren die Änderungen, die Qualcomm vorgenommen hat, um maschinelles Lernen zu beschleunigen.
Es scheint, als könnten wir keinen Tag verbringen, ohne „künstliche Intelligenz“ in den Nachrichten zu sehen, und die vergangene Woche war nicht zuletzt dank des Snapdragon Tech Summit keine Ausnahme. Jedes Jahr stellt Qualcomm die Fülle an Verbesserungen vor, die es an seinem Hexagon DSP und der Qualcomm AI Engine mitbringt. ein Begriff, den sie für ihre gesamte heterogene Rechenplattform – CPU, GPU und DSP – verwenden, wenn es um KI geht Arbeitsbelastungen. Vor ein paar Jahren erschien es etwas seltsam, dass Qualcomm darauf bestand, die Diskussion von traditionellen Gesprächsthemen, wie etwa jährlichen Verbesserungen der CPU-Leistung, abzulenken. Doch im Jahr 2019 und mit dem Snapdragon 865 sehen wir, dass heterogenes Computing tatsächlich an der Spitze ihres mobilen Computing-Vorstoßes steht, nämlich KI und hardwarebeschleunigte Workloads scheinen sich in eine Vielzahl von Anwendungsfällen und Anwendungen einzuschleichen, von sozialen Medien bis hin zum Alltag Dienstleistungen.
Der Snapdragon 865 verfügt über die KI-Engine der 5. Generation von Qualcomm und bringt erhebliche Verbesserungen bei Leistung und Energieeffizienz mit sich – aber das ist zu erwarten. In einem Meer von Spezifikationen, Leistungszahlen, ausgefallenen technischen Begriffen und langweiligen Marketing-Schlagworten verliert man leicht den Überblick darüber, was diese Verbesserungen eigentlich bedeuten. Was beschreiben sie? Warum sind diese Upgrades so wichtig für diejenigen, die heute KI in ihren Apps implementieren, und vielleicht noch wichtiger für diejenigen, die dies in Zukunft tun möchten?
In diesem Artikel machen wir einen zugänglichen, aber gründlichen Rundgang durch die Qualcomm AI Engine, indem wir ihre Geschichte, ihre Komponenten und die Upgrades des Snapdragon 865 durchgehen und vor allem: Warum oder Wie Jeder von ihnen hat zum heutigen Smartphone-Erlebnis beigetragen, von lustigen Filtern bis hin zu digitalen Assistenten.
Der Hexagon DSP und die Qualcomm AI Engine: Wenn Branding einen Unterschied macht
Obwohl ich diese Woche nicht am Snapdragon Tech Summit teilnehmen konnte, habe ich seit 2015 trotzdem an jedem anderen teilgenommen. Wenn Sie sich erinnern, Das war das Jahr des großen Durcheinanders rund um den Snapdragon 810, und so waren die Journalisten in diesem Chelsea-Loft in New York City gespannt darauf, herauszufinden, wie der Snapdragon 820 das Unternehmen rehabilitieren würde. Und es war ein großartiger Chipsatz, in Ordnung: Er versprach erhebliche Leistungsverbesserungen (ohne Drosselung), indem er auf die damals bewährten benutzerdefinierten Kerne zurückgriff, für die Qualcomm bekannt war. Ich erinnere mich aber auch an eine sehr subtile Ankündigung, die im Nachhinein mehr Aufmerksamkeit hätte erhalten müssen: die Hexagon 680 DSP der zweiten Generation und seine Single Instruction, Multiple Data (SIMD) Hexagon Vector eXtensions, oder HVX. Hätten die Ingenieure dem Feature keinen Namen gegeben, hätte es vielleicht die Aufmerksamkeit erhalten, die es verdient.
Dieser Coprozessor ermöglicht den Hardware-Threads der Skalar-DSP-Einheit den Zugriff auf HVX-„Kontexte“ (Registerdateien) für umfassende Vektorverarbeitungsfunktionen. Es ermöglichte die Auslagerung erheblicher Rechenlasten von der stromhungrigen CPU oder GPU auf die energieeffizienter DSP, so dass Bildgebungs- und Computer-Vision-Aufgaben mit deutlich verbesserter Leistung ausgeführt werden können pro Milliwatt. Sie eignen sich perfekt für die Anwendung identischer Operationen auf zusammenhängende Vektorelemente (ursprünglich nur Ganzzahlen) und eignen sich daher gut für Computer-Vision-Workloads. Wir haben in der Vergangenheit einen ausführlichen Artikel über DSP und HVX geschrieben, wobei darauf hingewiesen wird, dass sich die HVX-Architektur gut für die Parallelisierung und natürlich auch für die Verarbeitung großer Eingabevektoren eignet. Damals bewarb Qualcomm sowohl den DSP als auch den HVX fast ausschließlich durch die Beschreibung der darin enthaltenen Verbesserungen würde Computer-Vision-Arbeitslasten wie den Harris-Eckendetektor und andere Schiebefenster mit sich bringen Methoden.
Erst mit dem Aufkommen von Deep Learning in mobilen Verbraucheranwendungen wurde der DSP, sein Vektor, entwickelt Recheneinheiten (und jetzt ein Tensorbeschleuniger) würden mit KI und neuronalen Netzen verheiratet sein besondere. Aber rückblickend macht es durchaus Sinn: Die Architektur des digitalen Signalprozessors (DSP), ursprünglich für den Umgang mit digitalisierten Daten konzipiert reale oder analoge Signaleingänge eignen sich für viele der gleichen Arbeitslasten wie viele Algorithmen für maschinelles Lernen und neuronale Netzwerke. DSPs sind beispielsweise auf Filterkerne, Faltungs- und Korrelationsoperationen, 8-Bit-Berechnungen und vieles mehr zugeschnitten lineare Algebra (Vektor- und Matrixprodukte) und Multiplikations-Akkumulations-Operationen (MAC), alle am effizientesten, wenn parallelisiert. Die Laufzeit eines neuronalen Netzwerks hängt auch stark von der Multiplikation großer Vektoren, Matrizen und/oder Tensoren ab Es ist nur natürlich, dass sich die Leistungsvorteile des DSP problemlos auf neuronale Netzwerkarchitekturen übertragen lassen Also. Wir werden dieses Thema noch einmal kurz aufgreifen!
In den folgenden Jahren betonte Qualcomm immer wieder, dass dies nicht der Fall sei Nur Chipsätze, aber mobile Plattformen, und dass sie sich nicht konzentrieren Nur auf der Verbesserung bestimmter Komponenten, aber auf der Bereitstellung „heterogener“ Rechenleistung. Im Jahr 2017 veröffentlichten sie ihr Snapdragon Neural Processing Engine SDK (zur Laufzeitbeschleunigung) im Qualcomm Developer Network und Anfang 2018 kündigte die Qualcomm Artificial Intelligence Engine an, um ihre verschiedenen KI-fähigen Hardware- (CPU, GPU, DSP) und Softwarekomponenten unter einem einzigen zu konsolidieren Name. Mit dieser nützlichen Nomenklatur konnten sie ihre KI-Leistungsverbesserungen sowohl beim Snapdragon 855 als auch beim Snapdragon 855 ordentlich bewerben Snapdragon 865, der die Anzahl der Billionen Operationen pro Sekunde (TOPS) und den Prozentsatz im Jahresvergleich bequem buchstabieren kann Verbesserungen. Nutzen Sie die generationsübergreifenden Verbesserungen bei CPU, GPU und DSP, die alle ihren eigenen KI-Schwerpunkt sehen Upgrades – das Unternehmen kann beeindruckende Benchmarks gegenüber der Konkurrenz vorweisen, die wir noch einmal durchgehen werden in Kürze. Mit den jüngsten Marketingbemühungen des Unternehmens und einer einheitlichen, konsistenten Botschaft zum Thema heterogenes Computing gewinnt sein KI-Branding endlich an Zugkraft bei Journalisten und Technikbegeisterten.
Neuronale Netze entmystifizieren: Ein alltäglicher Haufen linearer Algebra
Um den Großteil des Fachjargons, auf den wir später in diesem Artikel stoßen werden, zu entwirren, benötigen wir eine kurze Einführung Was ist ein neuronales Netzwerk? Und was Sie brauchen, um es schneller zu machen. Ich möchte ganz kurz auf einige der mathematischen Grundlagen neuronaler Netze eingehen und dabei so viel Fachjargon und Notation wie möglich vermeiden. Der Zweck dieses Abschnitts besteht lediglich darin, zu identifizieren, was ein neuronales Netzwerk im Wesentlichen tut: die arithmetischen Operationen es führt aus, und nicht die theoretische Grundlage, die diese Operationen rechtfertigt (das ist weitaus komplizierter!). Fahren Sie gerne mit dem nächsten Abschnitt fort, wenn Sie direkt zu den Qualcomm AI Engine-Upgrades springen möchten.
„Vektormathematik ist die Grundlage des Deep Learning.“ – Travis Lanier, Senior Director of Product Management bei Qualcomm beim Snapdragon Tech Summit 2017
Unten finden Sie ein sehr typisches Feedforward-Diagramm eines vollständig verbundenen neuronalen Netzwerks. In Wirklichkeit lässt das Diagramm den gesamten Prozess etwas komplizierter erscheinen, als er ist (zumindest bis man sich daran gewöhnt). Wir werden einen Vorwärtsdurchlauf berechnen, was letztendlich das ist, was ein Netzwerk tut, wenn es einen generiert Inferenz, ein Begriff, dem wir später in diesem Artikel ebenfalls begegnen werden. Im Moment befassen wir uns nur mit der Maschine und ihren Teilen und geben kurze Erläuterungen zu den einzelnen Komponenten.
Ein neuronales Netzwerk besteht aus sequentiellen Lagen, jedes bestehend aus mehreren „Neuronen“ (im Diagramm als Kreise dargestellt), die durch verbunden sind Gewichte (im Diagramm als Linien dargestellt). Im Allgemeinen gibt es drei Arten von Schichten: die Eingabeschicht, das die Roheingabe übernimmt; verborgene Schichten, die mathematische Operationen aus der vorherigen Ebene berechnen, und die Ausgabeschicht, das die endgültigen Vorhersagen liefert. In diesem Fall haben wir nur eine verborgene Ebene mit drei versteckte Einheiten. Der Eingang besteht aus einem Vektor, einem Array oder einer Liste von Zahlen einer bestimmten Dimension oder Länge. Im Beispiel haben wir beispielsweise eine zweidimensionale Eingabe [1.0, -1.0]. Hier das Ausgabe des Netzwerks besteht aus einer skalaren oder einzelnen Zahl (keine Liste). Jede versteckte Einheit ist einer Reihe von zugeordnet Gewichte und ein Bias-Begriff, neben und unter jedem Knoten angezeigt. Um die zu berechnen gewichtete Summe Bei der Ausgabe einer Einheit wird jedes Gewicht mit jeder entsprechenden Eingabe multipliziert und dann werden die Produkte addiert. Dann addieren wir einfach den Bias-Term zu dieser Summe der Produkte, was zur Ausgabe des Neurons führt. Zum Beispiel mit unserem Input von [1.0,-1.0], die erste versteckte Einheit hat eine Ausgabe von 1.0*0.3 + (-1.0) * 0.2 + 1.0 = 1.1. Ganz einfach, oder?
Der nächste Schritt im Diagramm stellt einen dar Aktivierungsfunktionund ermöglicht es uns, den Ausgabevektor jeder verborgenen Ebene zu erzeugen. In unserem Fall verwenden wir das sehr beliebte und äußerst einfache gleichgerichtete Lineareinheit oder ReLU, das eine Eingabezahl annimmt und entweder (i) Null ausgibt, wenn diese Zahl negativ ist, oder Null (ii) die Eingabezahl selbst, wenn die Zahl positiv ist. Zum Beispiel, ReLU(-0,1) = 0, Aber ReLU(0,1) = 0,1. Nach dem Vorbild unseres Inputs verbreitet sich Durch diese erste versteckte Einheit würde die von uns berechnete Ausgabe von 1.1 an die Aktivierungsfunktion übergeben und ergeben ReLU(1.1)=1.1. In diesem Beispiel funktioniert die Ausgabeschicht genau wie eine versteckte Einheit: Sie multipliziert die Ausgaben der versteckten Einheiten mit ihren Gewichten und fügt dann ihren Bias-Term hinzu 0.2. Die letzte Aktivierungsfunktion, die Stufenfunktion, wandelt positive Eingaben in 1 und negative Werte in 0 um. Da wir wissen, wie die einzelnen Operationen im Netzwerk funktionieren, können wir die vollständige Berechnung unserer Schlussfolgerung wie folgt aufschreiben:
Das ist alles, was unsere Feedforward-Berechnung für neuronale Netze ausmacht. Wie Sie sehen können, ist die Operationen bestehen fast ausschließlich aus Produkten und Zahlensummen. Unsere Aktivierungsfunktion ReLU(x) lässt sich auch sehr einfach umsetzen, zum Beispiel durch einen einfachen Anruf max (x, 0), sodass x immer dann zurückgegeben wird, wenn die Eingabe größer als 0 ist, andernfalls jedoch 0. Beachten Sie, dass Schritt (x) kann auf ähnliche Weise berechnet werden. Es gibt viele kompliziertere Aktivierungsfunktionen, wie zum Beispiel die Sigmoidalfunktion oder der hyperbolischer Tangens, erfordert unterschiedliche interne Berechnungen und ist für unterschiedliche Zwecke besser geeignet. Eine andere Sache, die Sie bereits bemerken können, ist, dass wir es auch tun kann die Berechnungen der drei versteckten Einheiten und ihre ReLU-Anwendungen parallel ausführen, da ihre Werte nicht gleichzeitig benötigt werden, bis wir ihre gewichtete Summe am Ausgabeknoten berechnen.
Aber wir müssen hier nicht aufhören. Oben sehen Sie die gleiche Berechnung, diesmal jedoch stattdessen mit Matrix- und Vektormultiplikationsoperationen. Um zu dieser Darstellung zu gelangen, „erweitern“ wir unseren Eingabevektor, indem wir ihm eine 1,0 (hellerer Farbton) hinzufügen, sodass wir bei der Eingabe unseres Wenn wir die Gewichte und unseren Bias (hellerer Farbton) in der Matrix verwenden, wie oben gezeigt, ergibt die resultierende Multiplikation dieselbe versteckte Einheit Ausgänge. Dann können wir ReLU elementweise auf den Ausgabevektor anwenden und dann die ReLU-Ausgabe „erweitern“, um sie mit den Gewichten und der Vorspannung unserer Ausgabeschicht zu multiplizieren. Diese Darstellung vereinfacht die Notation erheblich, da die Parameter (Gewichte und Bias) einer gesamten verborgenen Schicht unter einer einzigen Variablen zusammengefasst werden können. Aber das Wichtigste für uns ist, dass es das deutlich macht Die inneren Berechnungen des Netzwerks sind im Wesentlichen Matrix- und Vektormultiplikationen oder Skalarprodukte. Angesichts der Tatsache, dass die Größe dieser Vektoren und Matrizen mit der Dimensionalität unserer Eingaben und der Anzahl der Parameter in unserem Netzwerk skaliert, wird die meiste Laufzeit für diese Art von Berechnungen aufgewendet. Ein Haufen linearer Algebra!
Unser Spielzeugbeispiel ist natürlich sehr im Umfang begrenzt. In der Praxis können moderne Deep-Learning-Modelle Dutzende, wenn nicht Hunderte von verborgenen Schichten und Millionen damit verbundener Parameter aufweisen. Anstelle unseres zweidimensionalen Vektoreingabebeispiels können sie Vektoren mit Tausenden von Einträgen aufnehmen. in einer Vielzahl von Formen, wie Matrizen (wie Einkanalbilder) oder Tensoren (Dreikanal-RGB). Bilder). Es gibt auch nichts, was unsere Matrixdarstellung daran hindert, mehrere Eingabevektoren gleichzeitig aufzunehmen, indem wir Zeilen zu unserer ursprünglichen Eingabe hinzufügen. Neuronale Netze können auch anders „verdrahtet“ sein als unser Feedforward-Neuronales Netz oder andere Aktivierungsfunktionen ausführen. Es gibt einen riesigen Zoo an Netzwerkarchitekturen und -techniken, aber letztendlich sind sie es meistens zerlegen auf die gleichen parallelen arithmetischen Operationen, die wir in unserem Spielzeugbeispiel finden, nur in einem viel größeren Maßstab.
Visuelles Beispiel für Faltungsschichten, die auf einem Tensor arbeiten. (Bildnachweis: Auf dem Weg zur Datenwissenschaft)
Zum Beispiel das beliebte Faltungs-Neuronale Netze (CNNs) von denen Sie wahrscheinlich gelesen haben, sind nicht „vollständig verbunden“ wie unser Scheinnetzwerk. Die „Gewichte“ oder Parameter seines Verborgenen Faltungsschichten kann als eine Art Filter betrachtet werden, ein gleitendes Fenster, das sequentiell auf kleine Bereiche einer Eingabe angewendet wird, wie oben gezeigt – diese „Faltung“ ist eigentlich nur ein gleitendes Skalarprodukt! Dieses Verfahren führt zu dem, was oft als a bezeichnet wird Feature-Map. Pooling-Schichten reduzieren die Größe einer Eingabe oder der Ausgabe einer Faltungsschicht, indem sie den Maximal- oder Durchschnittswert kleiner Bildausschnitte berechnen. Der Rest des Netzwerks besteht normalerweise aus vollständig verbundenen Schichten, wie in unserem Beispiel, und Aktivierungsfunktionen wie ReLU. Dies wird häufig zur Merkmalsextraktion in Bildern verwendet, bei denen die Merkmalskarten früher Faltungsschichten „erkennen“ können. Muster wie Linien oder Kanten, und spätere Ebenen können kompliziertere Merkmale wie Flächen oder komplexe erkennen Formen.
Alles was gesagt wurde ist streng auf Schlussfolgerungen beschränktoder das Bewerten eines neuronalen Netzwerks, nachdem seine Parameter ermittelt wurden Ausbildung Das ist ein viel komplizierteres Verfahren. Und wieder haben wir viele Erklärungen ausgeschlossen. In Wirklichkeit ist jede Netzwerkkomponente einem bestimmten Zweck zugeordnet. Diejenigen unter Ihnen, die lineare Algebra studiert haben, können dies beispielsweise auch ohne dies leicht beobachten Durch nichtlineare Aktivierungsfunktionen vereinfacht sich unser Netzwerk zu einem linearen Modell mit sehr eingeschränkter Vorhersage Kapazität.
Eine verbesserte KI-Engine auf dem Snapdragon 865 – Eine Zusammenfassung der Verbesserungen
Mit diesem praktischen Verständnis der Komponenten eines neuronalen Netzwerks und ihrer mathematischen Operationen können wir beginnen, genau zu verstehen, warum Hardwarebeschleunigung so wichtig ist. Im letzten Abschnitt können wir beobachten, dass Parallelisierung für die Beschleunigung des gegebenen Netzwerks von entscheidender Bedeutung ist ermöglicht es uns beispielsweise, mehrere parallele Skalarprodukte zu berechnen, die jedem Neuron entsprechen Aktivierung. Jedes dieser Skalarprodukte besteht selbst aus Multiplikations- und Additionsoperationen für Zahlen, normalerweise mit 8-Bit-Präzision bei mobilen Anwendungen, die so schnell wie möglich erfolgen müssen. Die AI Engine bietet verschiedene Komponenten, um diese Aufgaben abhängig von den Leistungs- und Energieeffizienzüberlegungen des Entwicklers zu entlasten.
Ein Diagramm eines CNN für den beliebten MNIST-Datensatz, gezeigt auf der Bühne des diesjährigen Snapdragon Summit. Die Vektorverarbeitungseinheit eignet sich gut für die vollständig verbundenen Ebenen, wie in unserem Scheinbeispiel. In der Zwischenzeit verwaltet der Tensorprozessor die Faltungs- und Pooling-Schichten, die mehrere Gleitvorgänge verarbeiten Kernel werden parallel geschaltet, wie im Diagramm oben, und jede Faltungsschicht kann viele separate Funktionen ausgeben Karten.
Schauen wir uns zunächst die GPU an, über die wir normalerweise im Zusammenhang mit 3D-Spielen sprechen. Der Verbrauchermarkt für Videospiele stimuliert seit Jahrzehnten die Entwicklung von Grafikverarbeitungshardware, aber warum sind GPUs für neuronale Netze so wichtig? Zunächst einmal durchforsten sie riesige Listen mit 3D-Koordinaten von Polygoneckpunkten auf einmal, um den Überblick über den Zustand der Welt im Spiel zu behalten. Die GPU muss außerdem gigantische Matrixmultiplikationsoperationen durchführen, um diese 3D-Daten umzuwandeln (oder abzubilden). Koordinaten in zweidimensionale planare Bildschirmkoordinaten umwandeln und auch die Farbinformationen von Pixeln verarbeiten parallel. Um das Ganze abzurunden, bieten sie eine hohe Speicherbandbreite, um die riesigen Speicherpuffer für die Textur-Bitmaps zu bewältigen, die der In-Game-Geometrie überlagert sind. Seine Vorteile in Bezug auf Parallelisierung, Speicherbandbreite und daraus resultierende lineare Algebra-Fähigkeiten entsprechen den Leistungsanforderungen neuronaler Netze.
Die Adreno-GPU-Reihe spielt somit eine große Rolle in der Qualcomm AI Engine, und auf der Bühne erklärte Qualcomm, dass diese aktualisierte Komponente im Snapdragon 865 dies ermöglicht doppelt so viele Gleitkommafunktionen Und doppelt so viele TOPS im Vergleich zur Vorgängergeneration, was überraschend ist, da sie nur eine Leistungssteigerung von 25 % bei der Grafikwiedergabe verzeichneten. Dennoch rühmt sich das Unternehmen für diese Veröffentlichung mit einem 50 % Steigerung der Anzahl arithmetischer Logikeinheiten (ALUs), allerdings haben sie wie üblich ihre GPU-Frequenzen nicht bekannt gegeben. Qualcomm listete auch Mixed-Precision auf Anweisungen, was genau das ist, wonach es sich anhört: unterschiedliche numerische Präzision bei Operationen in einer einzigen Berechnungsmethode.
Beim Hexagon 698 DSP sehen wir einen großen Teil der Leistungssteigerungen, die der Snapdragon 865 bietet. In diesem Jahr hat das Unternehmen weder Verbesserungen bei den Vector eXtensions seiner DSP (deren Leistung sich im letztjährigen 855 vervierfacht hat) noch bei ihren Skalareinheiten kommuniziert. Sie stellen jedoch fest, dass sie mit dem Tensorbeschleuniger dieses Blocks etwas erreicht haben viermal die TOPs im Vergleich zu der im letzten Jahr im Hexagon 695 DSP eingeführten Version, und gleichzeitig in der Lage zu sein, zu bieten 35 % bessere Energieeffizienz. Dies ist eine große Sache, wenn man die Verbreitung von Faltungs-Neuronalen Netzwerkarchitekturen in modernen KI-Anwendungsfällen bedenkt, die von der Bildobjekterkennung bis zur automatischen Spracherkennung reichen. Wie oben erläutert, erzeugt die Faltungsoperation in diesen Netzwerken ein 2D-Array von Matrixausgängen für Jeder Filter bedeutet, dass die Ausgabe einer Faltungsschicht, wenn sie zusammengestapelt ist, ein 3D-Array oder ist Tensor.
Qualcomm bewarb auch sein „neues und einzigartiges“ Deep-Learning-Bandbreitenkomprimierung Technik, die das offenbar kann Daten verlustfrei um ca. 50 % komprimierenDadurch wird wiederum die Hälfte der Daten verschoben und Bandbreite für andere Teile des Chipsatzes freigegeben. Es sollte auch Strom sparen, indem der Datendurchsatz reduziert wird, obwohl uns keine Zahlen genannt wurden und auch die Komprimierung der Daten mit geringen Stromkosten verbunden sein sollte.
Apropos Bandbreite: Der Snapdragon 865 unterstützt LPDDR5-Speicher, was auch der KI-Leistung zugute kommt, da es die Geschwindigkeit erhöht, mit der Ressourcen und Eingabedaten übertragen werden. Über die Hardware hinaus ist Qualcomm neu KI-Modelleffizienz-Toolkit ermöglicht Entwicklern eine einfache Modellkomprimierung und daraus resultierende Einsparungen bei der Energieeffizienz. Neuronale Netze verfügen oft über eine große Anzahl „redundanter“ Parameter; Beispielsweise können sie verborgene Ebenen breiter machen, als sie sein müssen. Eine der auf der Bühne diskutierten KI-Toolkit-Funktionen lautet: Modellkomprimierung, wobei zwei der genannten Methoden die räumliche Singularwertzerlegung (SVD) und die Bayes'sche Komprimierung sind Dadurch wird das neuronale Netzwerk effektiv beschnitten, indem redundante Knoten entfernt und die Modellstruktur angepasst werden erforderlich. Die andere auf der Bühne vorgestellte Modellkomprimierungstechnik bezieht sich auf die Quantisierung und beinhaltet die Änderung der numerischen Präzision von Gewichtsparametern und Aktivierungsknotenberechnungen.
Die numerische Genauigkeit neuronaler Netzwerkgewichte bezieht sich darauf, ob die zur Berechnung verwendeten numerischen Werte als 64-, 32-, 16- (halbe Genauigkeit) oder 8-Bit-Werte gespeichert, übertragen und verarbeitet werden. Die Verwendung einer geringeren numerischen Präzision (z. B. INT8 gegenüber FP32) verringert die Gesamtspeichernutzung und die Datenübertragungsgeschwindigkeit und ermöglicht so eine höhere Bandbreite und schnellere Schlussfolgerungen. Viele der heutigen Deep-Learning-Anwendungen sind für die Inferenz auf 8-Bit-Präzisionsmodelle umgestiegen, was sich vielleicht anhört Überraschend: Würde eine höhere numerische Genauigkeit nicht „genauere“ Vorhersagen bei der Klassifizierung oder Regression ermöglichen? Aufgaben? Nicht unbedingt; Eine höhere numerische Präzision, insbesondere während der Inferenz, kann verschwendet werden, da neuronale Netze darauf trainiert werden, mit verrauschten Eingaben umzugehen Kleine Störungen während des Trainings sowieso, und der Fehler bei der Darstellung eines bestimmten (FP)-Werts im unteren Bit ist einheitlich „zufällig“. genug. In gewisser Weise wird die geringe Genauigkeit der Berechnungen vom Netzwerk als eine weitere Rauschquelle behandelt und die Vorhersagen bleiben verwendbar. Abgesehen von heuristischen Erklärungen ist es wahrscheinlich, dass Sie einen Genauigkeitsverlust erleiden, wenn Sie ein Modell schlecht quantisieren ohne Berücksichtigung einiger wichtiger Überlegungen, weshalb viel Forschung in die Sache gesteckt wird Thema
Zurück zum Qualcomm AI Toolkit: Dadurch bieten sie an datenfreie QuantisierungDadurch können Modelle ohne Feinabstimmung von Daten oder Parametern quantisiert werden, während bei verschiedenen Aufgaben dennoch eine nahezu ursprüngliche Modellleistung erzielt wird. Im Wesentlichen werden die Gewichtsparameter für die Quantisierung angepasst und der Bias-Fehler korrigiert, der beim Wechsel zu Gewichten mit geringerer Präzision entsteht. Angesichts der Vorteile der Quantisierung würde die Automatisierung des Verfahrens im Rahmen eines API-Aufrufs die Modellproduktion und -bereitstellung vereinfachen, so Qualcomm mehr als das Vierfache der Leistung pro Watt beim Ausführen des quantisierten Modells.
Aber auch das ist nicht schockierend: Quantisierungsmodelle können enorme Bandbreiten- und Speichervorteile bieten. Durch die Konvertierung eines Modells in INT8 erhalten Sie nicht nur eine Reduzierung der Bandbreite um das Vierfache, sondern profitieren auch von schnelleren Ganzzahlberechnungen (abhängig von der Hardware). Es liegt also auf der Hand, dass hardwarebeschleunigte Ansätze sowohl bei der Quantisierung als auch bei der numerischen Berechnung zu massiven Leistungssteigerungen führen würden. Auf seinem BlogBeispielsweise schrieb Pete Warden von Google, dass eine Zusammenarbeit zwischen Qualcomm- und Tensorflow-Teams die Ausführung von 8-Bit-Modellen ermöglicht siebenmal schnellerauf dem HVX DSP als auf der CPU. Das Potenzial der benutzerfreundlichen Quantisierung kann kaum hoch genug eingeschätzt werden, insbesondere angesichts der Tatsache, dass Qualcomm sich auf die INT8-Leistung konzentriert hat.
Die ARM-basierte Kryo-CPU des Snapdragon 865 ist nach wie vor ein wichtiger Bestandteil der KI-Engine. Auch wenn die in den obigen Absätzen besprochene Hardwarebeschleunigung vorzuziehen ist, ist dies manchmal der Fall Es ist nicht möglich, Anwendungen zu vermeiden, die diese Blöcke nicht ordnungsgemäß ausnutzen, was zu CPU-Auslastung führt zurückgreifen. In der Vergangenheit hatte ARM spezifische Befehlssätze eingeführt, die darauf abzielten, Matrix- und Vektor-basierte Berechnungen zu beschleunigen. Bei ARMv7-Prozessoren erlebten wir die Einführung von ARM NEON, einer SIMD-Architekturerweiterung, die DSP-ähnliche Anweisungen ermöglicht. Und mit der Mikroarchitektur ARMv8.4-A wurde eine Anweisung speziell für Skalarprodukte eingeführt.
Alle diese veröffentlichten Leistungssteigerungen beziehen sich auf viele der Arbeitslasten, die wir im vorherigen Abschnitt beschrieben haben, aber es lohnt sich auch zu bedenken, dass dies bei diesen Snapdragon 865-Upgrades der Fall ist nur das Neueste Verbesserungen der KI-Funktionen von Qualcomm. Im Jahr 2017 dokumentierten wir die Verdreifachung der KI-Fähigkeiten mit dem Hexagon 685 DSP und anderen Chipsatz-Updates. Letztes Jahr stellten sie ihren Tensorbeschleuniger vor und integrierte Unterstützung für Nichtlinearitätsfunktionen (wie das oben erwähnte ReLU!) auf Hardwareebene. Außerdem verdoppelten sie die Anzahl der Vektorbeschleuniger und verbesserten die Leistung der Skalarverarbeitungseinheit um 20 %. Kombiniert man all dies mit Verbesserungen auf der CPU-Seite, wie den schnelleren Skalarproduktoperationen dank ARM und den zusätzlichen ALUs in der GPU, hat Qualcomm letztendlich verdreifacht auch rohe KI-Fähigkeiten.
Praktische Vorteile und erweiterte Anwendungsfälle
Alle diese Upgrades haben zu einer Verfünffachung der KI-Fähigkeiten des Snapdragon 865 im Vergleich zu noch vor zwei Jahren geführt Am wichtigsten ist vielleicht, dass die Verbesserungen auch mit einer besseren Leistung pro Milliwatt einhergingen, einer kritischen Kennzahl für Mobilgeräte Geräte. Auf dem Snapdragon Summit 2019 gab uns Qualcomm einige Benchmarks, in denen er seine KI-Engine mit zwei Konkurrenten in verschiedenen Klassifizierungsnetzwerken vergleicht. Diese Zahlen scheinen mithilfe von AIMark erfasst zu werden, einer plattformübergreifenden Benchmarking-Anwendung, die Vergleiche mit den Prozessoren der A-Serie von Apple und den HiSilicon-Prozessoren von Huawei ermöglicht. Qualcomm behauptet, dass diese Ergebnisse die gesamte KI-Engine nutzen und wir auf weitere Ergebnisse warten müssen gründliches Benchmarking, um die Wirkung jeder Komponente richtig zu entschlüsseln und zu bestimmen, wie diese Tests ausgefallen sind durchgeführt. Zeigen die Ergebnisse von Unternehmen B beispielsweise einen CPU-Fallback an? Soweit mir bekannt ist, nutzt AIMark derzeit beispielsweise nicht die NPU des Kirin 990 auf unseren Mate 30 Pro-Geräten. Aber es unterstützt die Snapdragon Neural Processing Engine, sodass es sicherlich die Vorteile der Qualcomm AI Engine nutzen wird; Da es sich um interne Tests handelt, ist nicht eindeutig klar, ob der Benchmark die richtigen Bibliotheken oder das richtige SDK für seine Konkurrenten richtig nutzt.
Es muss auch gesagt werden, dass Qualcomm die KI-Verarbeitungsfähigkeiten des Snapdragon 865 effektiv mit zuvor angekündigten oder veröffentlichten Chipsätzen vergleicht. Es ist sehr wahrscheinlich, dass die Konkurrenten im nächsten Zyklus ähnlich wirkungsvolle Leistungsverbesserungen bringen werden, und wenn das so ist In diesem Fall würde Qualcomm ab dem Zeitpunkt, an dem die Snapdragon 865-Geräte auf den Markt kommen, nur etwa ein halbes Jahr lang die Krone halten. Allerdings sind diese immer noch ein Hinweis auf die Art von Unebenheiten, die wir vom Snapdragon 865 erwarten können. Qualcomm war bei der Kommunikation von Leistungsverbesserungen und Benchmark-Ergebnissen kommender Versionen im Allgemeinen sehr genau.
Alle in diesen Benchmarks vorgestellten Netzwerke klassifizieren Bilder aus Datenbanken wie ImageNet, empfangen sie als Eingaben und geben eine von Hunderten von Kategorien aus. Auch hier basieren sie auf den gleichen Arten von Operationen, die wir im zweiten Abschnitt beschrieben haben, obwohl ihre Architekturen vielfältig sind komplizierter als diese Beispiele und galten zum Zeitpunkt ihrer Veröffentlichung als hochmoderne Lösungen. Im besten Fall liefert ihr engster Konkurrent weniger als die Hälfte der Anzahl an Schlussfolgerungen pro Sekunde.
In Bezug auf den Stromverbrauch bot Qualcomm Schlussfolgerungen pro Watt an, um den Umfang der KI-Verarbeitung zu zeigen, der bei einer bestimmten Leistungsmenge möglich ist. Im besten Fall (MobileNet SSD) kann die Snapdragon AI Engine bei gleichem Leistungsbudget die doppelte Anzahl an Inferenzen bieten.
Bei mobilen Geräten ist die Stromversorgung besonders wichtig. Denken Sie zum Beispiel an einen Snapchat-Filter, der auf einem neuronalen Netzwerk basiert. Realistisch gesehen extrahiert die Computer-Vision-Pipeline Gesichtsinformationen und wendet eine Maske oder Eingabe an Die Transformation muss nur mit einer Geschwindigkeit von 30 oder 60 Abschlüssen pro Sekunde ausgeführt werden, um eine Flüssigkeit zu erreichen Erfahrung. Eine Steigerung der reinen KI-Leistung würde es Ihnen ermöglichen, Eingaben mit höherer Auflösung zu verwenden und besser aussehende Filter auszugeben, aber das könnte passieren Außerdem ist es einfach besser, sich mit der HD-Auflösung zufrieden zu geben, um schnellere Uploads zu ermöglichen und den Stromverbrauch und die thermische Drosselung zu verringern. In vielen Anwendungen ist „schneller“ nicht unbedingt „besser“ und man profitiert dann von den Vorteilen einer verbesserten Energieeffizienz.
Am zweiten Tag des Snapdragon Summit betrat Yurii Monastyrshyn, Senior Director of Engineering bei Snapchat, die Bühne, um zu zeigen, wie das geht Ihre neuesten Deep-Learning-basierten Filter werden durch Hexagon Direct NN mithilfe des Hexagon 695 DSP auf dem Snapdragon erheblich beschleunigt 865.
Darüber hinaus, da Entwickler Zugang zu einfacheren neuronalen Netzwerkimplementierungen erhalten Da immer mehr Anwendungen KI-Techniken einsetzen, werden Parallelitätsanwendungsfälle stärker in den Vordergrund rücken, da das Smartphone mehrere Anwendungen bewältigen muss parallele KI-Pipelines gleichzeitig (entweder für eine einzelne Anwendung, die Eingangssignale aus verschiedenen Quellen verarbeitet, oder für die Ausführung beliebig vieler Anwendungen separat). auf dem Gerät). Während wir bei der Rechenleistung von DSP, GPU und CPU beachtliche Steigerungen der Energieeffizienz verzeichnen, verarbeitet der Qualcomm Sensing Hub ständig aktive Anwendungsfälle, um bei sehr geringem Stromverbrauch auf Triggerwörter zu warten. Es ermöglicht die Überwachung von Audio-, Video- und Sensor-Feeds bei einer Stromstärke von weniger als 1 mA, sodass das Gerät zusätzlich zu den bekannten Schlüsselwörtern des digitalen Assistenten bestimmte akustische Hinweise erkennen kann (z. B. ein weinendes Baby). In diesem Sinne ermöglicht der Snapdragon 865 nicht nur die Erkennung des Schlüsselworts, sondern auch der Person, die es spricht, um einen autorisierten Benutzer zu identifizieren und entsprechend zu handeln.
Mehr KI auf Edge-Geräten
Diese Verbesserungen können letztendlich zu greifbaren Vorteilen für Ihr Benutzererlebnis führen. Dienste, die Übersetzung, Objekterkennung und -kennzeichnung, Nutzungsvorhersagen oder Artikelempfehlungen umfassen, Das Verstehen natürlicher Sprache, das Parsen von Sprache usw. werden den Vorteil haben, schneller zu arbeiten und weniger zu verbrauchen Leistung. Ein höheres Rechenbudget ermöglicht auch die Erstellung neuer Anwendungsfälle und Erfahrungen sowie die Verlagerung von Prozessen, die früher in der Cloud stattfanden, auf Ihr Gerät. Während der Begriff „KI“ in der Vergangenheit (sogar von OEMs) auf zweifelhafte, irreführende und sogar fehlerhafte Weise verwendet wurde, Viele Ihrer Dienste, die Sie heute nutzen, basieren letztendlich in irgendeiner Form auf Algorithmen für maschinelles Lernen ein anderer.
Aber über Qualcomm hinaus haben auch andere Chipsatzhersteller an dieser Front schnell Iterationen durchgeführt und Verbesserungen vorgenommen. Beispielsweise verfügte der 990 5G über ein 2+1-NPU-Kerndesign, was zu einer bis zu 2,5-fachen Leistung des Kirin 980 und dem Doppelten der Leistung des Apple A12 führte. Als der Prozessor angekündigt wurde, wurde gezeigt, dass er bis zu doppelt so viele Bilder (Inferenzen) pro Sekunde liefern kann des Snapdragon 855 bei INT8 MobileNet, was schwer mit den von Qualcomm bereitgestellten Ergebnissen in Einklang zu bringen ist. Der Apple A13 Bionic hingegen bot Berichten zufolge eine sechsmal schnellere Matrixmultiplikation als sein Vorgänger und verbesserte das Design seiner neuronalen Engine mit acht Kernen. Wir müssen warten, bis wir den Snapdragon 865 auf kommerziellen Geräten ordnungsgemäß im Vergleich zu seinen aktuellen und zukünftigen Konkurrenten testen können, aber das ist der Fall Es ist klar, dass der Wettbewerb in diesem Bereich niemals stillsteht, da die drei Unternehmen eine Menge Ressourcen in die Verbesserung ihrer KI gesteckt haben Leistung.