DE102022120341A1 - Umkonfigurierbare ausführung von maschinenlernnetzen - Google Patents

Umkonfigurierbare ausführung von maschinenlernnetzen Download PDF

Info

Publication number
DE102022120341A1
DE102022120341A1 DE102022120341.7A DE102022120341A DE102022120341A1 DE 102022120341 A1 DE102022120341 A1 DE 102022120341A1 DE 102022120341 A DE102022120341 A DE 102022120341A DE 102022120341 A1 DE102022120341 A1 DE 102022120341A1
Authority
DE
Germany
Prior art keywords
model
execution
performance criterion
execution data
performance
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102022120341.7A
Other languages
English (en)
Inventor
Tarkesh Pande
Rishabh Garg
Pramod Kumar Swami
Kumar Desappan
Aishwarya Dubey
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of DE102022120341A1 publication Critical patent/DE102022120341A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/217Validation; Performance evaluation; Active pattern learning techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Debugging And Monitoring (AREA)
  • Complex Calculations (AREA)

Abstract

Elektronische Vorrichtung, die einen oder mehrere Prozessoren umfasst, wobei der eine oder die mehreren Prozessoren ausgelegt sind zum Ausführen von Anweisungen, die den einen oder die mehreren Prozessoren veranlassen zum: Empfangen eines Maschinenlern- bzw. ML-Modells und von dem ML-Modell zugeordneten Ausführungsinformationen, wobei die Ausführungsinformationen erste Ausführungsdaten, die angeben, wie das ML-Modell auf der Basis eines ersten Leistungsfähigkeitskriteriums optimiert auszuführen ist, und zweite Ausführungsdaten, die angeben, wie das ML-Modell auf der Basis eines zweiten Leistungsfähigkeitskriteriums optimiert auszuführen ist, umfassen, wobei das zweite Leistungsfähigkeitskriterium von dem ersten Leistungsfähigkeitskriterium verschieden ist; Ausführen des ML-Modells auf der Basis der ersten Ausführungsdaten; Bestimmen, das ML-Modell auf der Basis der zweiten Ausführungsdaten auszuführen; und Ausführen des ML-Modells auf der Basis der zweiten Ausführungsdaten.

Description

  • HINTERGRUND
  • ML (Maschinenlernen) wird zu einem immer wichtigeren Teil der Datenverarbeitungslandschaft. Maschinenlernen ist ein Zweig der AI (künstlichen Intelligenz), und ML hilft dabei, es einem Softwaresystem zu ermöglichen, zu lernen, Muster aus Daten zu erkennen, ohne direkt dafür programmiert zu werden. NN (neuronale Netze) sind eine Art von ML, die eine Menge von verknüpften und geschichteten Funktionen (z. B. Knoten, Neuronen usw.) benutzen, die gewichtet werden, um Eingangsdaten auszuwerten. In einigen NN, die manchmal als CNN (Faltungs-NN) bezeichnet werden, werden Faltungsoperationen in NN-Schichten auf der Basis von empfangenen Eingaben und Gewichten ausgeführt, statt der in traditionellen NN verwendeten Matrixmultiplikation. Schichten in CNN können viele Arten von Funktionen ausführen, darunter, aber ohne Beschränkung darauf, Faltung, Entfaltung, Pooling, Aufwärtsabtastung usw. CNN werden oft in vielfältigen Anwendungen verwendet, typischerweise zur Erkennung und Klassifikation, wie etwa Bilderkennung und -klassifikation, Vorhersage- und Empfehlungssysteme, Sprach- und Sprachenerkennung und -übersetzung usw.
  • Mit zunehmend nützlich werdendem ML gibt es einen Wunsch, komplexe ML-Techniken, wie etwa NN und CNN, in Vorrichtungen mit relativ begrenzten Rechen- und Speicherressourcen, wie etwa eingebetteten oder anderen energiesparenden Vorrichtungen, effizient auszuführen. Um dabei zu helfen, ein gegebenes ML-Modell effizient laufen zu lassen, kann das ML-Modell analysiert und optimiert werden, um zurechtzuschneiden, wie das ML-Modell auf einer zu verwendenden Ziel-Hardwareressource laufen zu lassen ist.
  • KURZFASSUNG
  • Die vorliegende Offenbarung betrifft eine elektronische Vorrichtung, die einen oder mehrere Prozessoren umfasst. Der eine oder die mehreren Prozessoren sind ausgelegt zum Ausführen von Anweisungen, die den einen oder die mehreren Prozessoren veranlassen zum Empfangen eines Maschinenlern- bzw. ML-Modells und von dem ML-Modell zugeordneten Ausführungsinformationen, wobei die Ausführungsinformationen erste Ausführungsdaten, die angeben, wie das MI,-Modell auf der Basis eines ersten Leistungsfähigkeitskriteriums optimiert auszuführen ist, und zweite Ausführungsdaten, die angeben, wie das ML-Modell auf der Basis eines zweiten Leistungsfähigkeitskriteriums optimiert auszuführen ist, umfassen, wobei das zweite Leistungsfähigkeitskriterium von dem ersten Leistungsfähigkeitskriterium verschieden ist. Die Prozessoren sind ferner ausgelegt zum Ausführen von Anweisungen, die den einen oder die mehreren Prozessoren veranlassen zum Ausführen des ML-Modells auf der Basis der ersten Ausführungsdaten. Die Prozessoren sind ferner ausgelegt zum Ausführen von Anweisungen, die den einen oder die mehreren Prozessoren veranlassen zum Bestimmen, das MI,-Modell auf der Basis der zweiten Ausführungsdaten auszuführen; und Ausführen des ML-Modells auf der Basis der zweiten Ausführungsdaten.
  • Ein anderer Aspekt der vorliegenden Offenbarung betrifft ein Verfahren. Das Verfahren umfasst Empfangen eines Maschinenlern- bzw. ML-Modells und von dem ML-Modell zugeordneten Ausführungsinformationen, wobei die Ausführungsinformationen erste Ausführungsdaten, die angeben, wie das ML-Modell auf der Basis eines ersten Leistungsfähigkeitskriteriums optimiert auszuführen ist, und zweite Ausführungsdaten, die angeben, wie das MI,-Modell auf der Basis eines zweiten Leistungsfähigkeitskriteriums optimiert auszuführen ist, umfassen, wobei das zweite Leistungsfähigkeitskriterium von dem ersten Leistungsfähigkeitskriterium verschieden ist. Das Verfahren umfasst ferner Ausführen des ML-Modells auf der Basis der ersten Ausführungsdaten. Das Verfahren umfasst ferner Bestimmen, das MI,-Modell auf der Basis der zweiten Ausführungsdaten auszuführen. Das Verfahren umfasst ferner Ausführen des ML-Modells auf der Basis der zweiten Ausführungsdaten.
  • Ein anderer Aspekt der vorliegenden Offenbarung betrifft eine nichtflüchtige Programmspeicherungsvorrichtung mit darauf gespeicherten Anweisungen, um einen oder mehrere Prozessoren zum Empfangen eines Maschinenlern- bzw. ML-Modells zu veranlassen. Die Anweisungen veranlassen ferner den einen oder die mehreren Prozessoren zum Erzeugen von ersten Ausführungsdaten zur Ausführung des ML-Modells auf Zielhardware, wobei die ersten Ausführungsdaten angeben, wie das ML-Modell auf der Basis eines ersten Leistungsfähigkeitskriteriums optimiert auf der Zielhardware auszuführen ist; Erzeugen von zweiten Ausführungsdaten zur Ausführung des ML-Modells auf Zielhardware, wobei die zweiten Ausführungsdaten angeben, wie das ML-Modell auf der Basis eines zweiten Leistungsfähigkeitskriteriums optimiert auf der Zielhardware auszuführen ist, wobei das zweite Leistungsfähigkeitskriterium von dem ersten Leistungsfähigkeitskriterium verschieden ist; und Ausgeben der ersten Ausführungsdaten und zweiten Ausführungsdaten zur Ausführung des ML-Modells.
  • Figurenliste
  • Für eine ausführliche Beschreibung verschiedener Beispiele wird nun auf die beigefügten Zeichnungen Bezug genommen. Es zeigen:
    • 1 ein beispielhaftes NN-MI,-Modell gemäß Aspekten der vorliegenden Offenbarung.
    • 2 eine Blockdarstellung einer Vorrichtung mit Hardware zum Ausführen von ML-Modellen gemäß Aspekten der vorliegenden Offenbarung.
    • 3 ein Konzeptdiagramm einer beispielhaften Optimierung für ein ML-Modell gemäß Aspekten der vorliegenden Offenbarung.
    • 4 eine Blockdarstellungs-Übersicht eines Prozesses zum Zusammenstellen und Optimieren von ML-Modellen für Zielhardware gemäß Aspekten der vorliegenden Offenbarung.
    • 5 ein Diagramm von Optimierungslösungen auf der Basis von Faktoren gemäß Aspekten der vorliegenden Offenbarung.
    • 6 ein Flussdiagramm der Umkonfigurierung der ML-Modell-Ausführung gemäß Aspekten der vorliegenden Offenbarung.
    • 7 ein Flussdiagramm einer Technik zur Anpassung der Ausführung eines ML-Modells gemäß Aspekten der vorliegenden Offenbarung.
    • 8 ein Flussdiagramm einer Technik zur Bestimmung von Anpassungen zur Ausführung eines ML-Modells gemäß Aspekten der vorliegenden Offenbarung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Da ML weiter verbreitet und leistungsstark geworden ist, wurde Hardware eingeführt, wie etwa eingebettete Vorrichtungen, dafür ausgelegt, ML-Modelle auszuführen. Im vorliegenden Gebrauch kann sich ein ML-Modell auf eine Implementierung eines oder mehrerer ML-Algorithmen beziehen, die ein Verhalten modellieren, wie etwa Objekterkennung, Verhalten einer Schaltung, Verhalten eines Neurons usw. Falls eine Zielhardware zur Ausführung von ML-Modellen bekannt ist, können die ML-Modelle für die Ziel-Hardwarekonfigurationen optimiert werden, um dabei zu helfen, die Leistungsfähigkeit zu steigern. Zum Beispiel können ML-Modelle für Objekterkennung, Verbesserungen bei schlechtem Licht und Gesichtserkennung dafür optimiert werden, auf insbesondere einer mobilen Vorrichtung ausgeführt zu werden, wie etwa einem Smartphone, die mit einem bestimmten ML-Prozessor ausgelegt ist. Als ein weiteres Beispiel können ML-Modelle für Objekterkennung, Bewegungsvorhersage und Verhaltensvorhersage dafür optimiert werden, auf spezifische Hardware (z. B. Zielhardware) ausgeführt zu werden, die in einigen teilweise oder vollständig selbstfahrenden Automobilen anzutreffen ist. In einigen Fällen kann ein ML-Modell mehrmals für mehrere verschiedene Aspekte für die Zielhardware optimiert werden. Während der Ausführung des ML-Modells auf der Zielhardware kann die Ausführung des ML-Modells auf der Basis der verschiedenen Optimierungen justiert werden.
  • Beispielhaftes ML Modell
  • 1 zeigt ein beispielhaftes NN-MI,-Modell 100 gemäß Aspekten der vorliegenden Offenbarung. Zum Beispiel ist das NN-MI,-Modell 100 ein vereinfachtes Beispiel, das gegeben wird, dabei zu helfen, zu verstehen, wie ein NN-ML-Modell 100, wie etwa ein CNN, strukturiert und trainiert wird. Beispiele für NN-ML-Modelle wären LeNet, Alex Net, Mobilnet usw. Es versteht sich, dass jede Implementierung eines ML-Modells auf einem oder mehreren MI,-Algorithmen ausgeführt werden kann und das ML-Modell abhängig von vielfältigen Faktoren, darunter, aber ohne Beschränkung darauf, eine Art von verwendetem ML-Modell, Parametern, die für das ML-Modell verwendet werden, Beziehungen unter den Parametern, gewünschte Trainingsgeschwindigkeit usw. auf verschiedene Weise trainiert oder abgestimmt werden kann. In diesem vereinfachten Beispiel sind die Parameterwerte P1, P2 und P3 Parametereingaben 102, 104 und 114, die in das ML-Modell 100 geleitet werden. Jede Schicht (z. B. eine erste Schicht 106, eine zweite Schicht 108 und eine dritte Schicht 110) umfasst mehrere Knoten (z. B. Neuronen) und repräsentiert im Allgemeinen eine Menge von an den Parametern ausgeführten Operationen, wie etwa eine Menge von Matrixmultiplikationen, Faltungen, Entfaltungen usw. Zum Beispiel kann jeder Knoten eine mathematische Funktion repräsentieren, die als Eingabe (neben dem Knoten der ersten Schicht 106) die Ausgabe einer vorherigen Schicht und an Gewichten nimmt. Die ML-Modellausgaben 112 werden von der letzten Schicht (z. B. der dritten Schicht 110) ausgegeben. Das Gewicht wird typischerweise während des ML-Modelltrainings justiert und nach dem ML-Modelltraining fixiert. Die spezifische mathematische Funktion des Knotens kann abhängig von der ML-Modellimplementierung unterschiedlich sein. Während das aktuelle Beispiel drei Schichten behandelt, kann in einigen Fällen das ML-Modell eine beliebige Anzahl von Schichten umfassen. im Allgemeinen transformiert jede Schicht eine Anzahl M von Eingangsparametern in eine Anzahl N von Ausgangsparametern. Die Parametereingaben für die erste Schicht 106 werden mit einer Menge von Verbindungen als Eingaben für die zweite Schicht 108 ausgegeben. Da jeder Knoten einer Schicht (wie etwa der ersten Schicht 106) an jeden Knoten in einer nachfolgenden Schicht (wie etwa der zweiten Schicht 108) ausgibt, ist das ML-Modell 100 ein voll verbundenes NN. Andere Ausführungsformen können ein teilweise verbundenes NN oder einen anderen NN-Entwurf benutzen, der nicht jeden Knoten einer Schicht mit jedem Knoten einer nachfolgenden Schicht verbinden kann, wobei einige Knotenverbindungen Schichten überspringen können, wobei keine Rückkopplung von Ausgang zu Eingängen bereitgestellt wird (z. B. Vorwärtskopplungs-CNN) usw.
  • In diesem Beispiel repräsentiert die erste Schicht 106 eine Funktion auf der Basis einer Menge von Gewichten, die auf die Eingangsparameter (z. B. die Eingangsparameter 102 und 104) angewandt werden, um eine Ausgabe von der ersten Schicht 106 zu erzeugen, die in die zweite Schicht 108 eingegeben wird. Es können verschiedene Gewichte für die von jedem Knoten der vorherigen Schicht empfangene Eingabe durch die nachfolgende Schicht angewandt werden. Zum Beispiel wendet für einen Knoten der zweiten Schicht 108 der Knoten Gewichte auf Eingaben an, die von Knoten der ersten Schicht 106 empfangen werden, und der Knoten kann auf von jedem Knoten der ersten Schicht 106 empfangene Eingaben ein verschiedenes Gewicht anwenden. Knoten berechnen eine oder mehrere Funktionen auf der Basis der empfangenen Eingaben und entsprechenden Gewichte und geben eine Zahl aus. In einigen Fällen können Eingaben und Ausgaben einer MI,-Modellschicht als Eingangs- oder Ausgangsmerkmale der ML-Modellschicht bezeichnet werden. Zum Beispiel kann der Knoten eine Funktion linearer Kombination verwenden, die Eingangswerte von einem Knoten der vorherigen Schicht mit einem entsprechenden Gewicht multipliziert und über die Ergebnisse der Multiplikation summiert, gekoppelt mit einer nichtlinearen Aktivierungsfunktion, die als Grundwert für die resultierende Zahl zur Ausgabe wirkt. Es versteht sich, dass jede bekannte gewichtete Funktion durch den Knoten innerhalb des Schutzumfangs der vorliegenden Offenbarung angewandt werden kann. Diese ausgegebene Zahl kann in nachfolgende Schichten eingegeben werden, oder wenn die Schicht eine letzte Schicht ist, wie etwa die dritte Schicht 110 in diesem Beispiel, kann die Zahl als ein Ergebnis (z. B. Ausgangsparameter oder ML-Modellausgaben 112) ausgegeben werden.
  • In einigen Fällen können sich die durch Knoten einer Schicht angewandten Funktionen zwischen Schichten unterscheiden. In einigen Fällen kann jede Schicht verschiedene Ressourcenanforderungen aufweisen. Wenn zum Beispiel die Funktionen mehrerer Knoten durch einen Prozessor ausgeführt werden, können die verschiedenen Funktionen verschiedene Lasten an dem Prozessor aufweisen. Außerdem können einige Funktionen verschiedener Eingangs- oder Ausgangsparameter aufweisen und somit mehr oder weniger Speicherplatz und Bandbreite verbrauchen. Diese unterschiedlichen Prozessor- und Speicherlasten können auch eine Menge an Energie zur Versorgung des Prozessors und Speichers sowie eine Menge an erzeugter Wärme beeinflussen.
  • Nachdem ein ML-Modell wie etwa das NN-ML-Modell 100, mit Bezug auf Knoten, Schichten usw. definiert ist, kann das ML-Modell trainiert werden. In einigen Fällen kann das ML-Modell 100 unter Verwendung einer gekennzeichneten Datenmenge entsprechend in das ML-Modell 100 einzugebenden Daten trainiert werden. Zum Beispiel kann eine Objekterkennung an Bildern von Objekten trainiert werden. Diese Bilder können Metadaten umfassen, die das Objekt bzw. die Objekte im Bild kennzeichnen. Das MI,-Modell 100 kann mit anfänglichen Gewichten initiiert werden, und die Bilder können in das ML-Modell 100 eingegeben werden, um Vorhersagen zu erzeugen. Die Gewichte der Knoten können abhängig davon justiert werden, wie genau die Vorhersage verglichen mit den Kennzeichnungen ist. Die durch einen Knoten angewandten Gewichte können während des Trainings justiert werden auf der Basis einer Verlustfunktion, die eine Funktion ist, die beschreibt, wie genau die Vorhersagen des NN verglichen mit den erwarteten Ergebnissen sind; eines Optimierungsalgorithmus, der dabei hilft, Gewichtseinstellungsjustierungen auf der Basis der Verlustfunktion zu bestimmen; und/oder eines Rückpropagation-von-Fehler-Algorithmus, der die Gewichtsjustierungen durch die Schichten des NN zurück anwendet. Jeder Optimierungsalgorithmus (z. B. Gradientenabstieg, Mini-Batch-Gradientenabstieg, stochastischer Gradientenabstieg, adaptive Optimierer, Impuls usw.), Verlustfunktion (z. B. mittlerer quadratischer Fehler, Kreuzentropie, Maximum Likelihood usw.) und Rückpropagation von-Fehler-Algorithmus (z. B. statische oder rekurrente Rückpropagation) kann innerhalb des Schutzumfangs der vorliegenden Offenbarung verwendet werden.
  • In einigen Fällen wird das Training des ML-Modells 100 während der Entwicklung des ML-Modells 100 durchgeführt und kann durch ein System oder eine Vorrichtung durchgeführt werden, das bzw. die von dem System oder der Vorrichtung, die das trainierte ML-Modell laufen lässt, getrennt ist.
  • Beispiel-Hardware für die Ausführung von ML-Modellen
  • 2 ist eine Blockdarstellung 200 einer Vorrichtung mit Hardware zur Ausführung von ML-Modellen gemäß Aspekten der vorliegenden Offenbarung. Die Vorrichtung kann ein SoC (System auf einem Chip) sein, das mehrere Komponenten umfasst, die dafür ausgelegt sind, verschiedene Aufgaben auszuführen. Die Vorrichtung umfasst wie gezeigt einen oder mehrere Zentralverarbeitungseinheit- bzw. CPU-Kerne 202, die einen oder mehrere interne Cache-Speicher 204 umfassen können. Die CPU-Kerne 202 können für allgemeine Datenverarbeitungsaufgaben ausgelegt sein.
  • Die CPU-Kerne 202 können mit einer Kreuzschiene (z. B. Interconnect) 206 gekoppelt sein, die verschiedene Komponenten der Vorrichtung miteinander verbindet und Daten zwischen ihren routet. In einigen Fällen kann die Kreuzschiene 206 ein Speichercontroller oder eine beliebige andere Schaltung sein, der bzw. die ein Interconnect zwischen Peripheriegeräten bereitstellen kann. Peripheriegeräte können Master-Peripheriegeräte (z. B. Komponenten, die auf Speicher zugreifen, wie etwa verschiedene Prozessoren, Prozessorkapselungen, Direktspeicherzugriffs- bzw. DMA-/Eingangs-Ausgangs-Komponenten usw.) und Slave-Peripheriegeräte (z. B. Speicherkomponenten, wie etwa Doppeldatenraten- bzw. DDR-Direktzugriffsspeicher, andere Arten von Direktzugriffsspeicher, DMA-/Eingangs-Ausgangs-Komponenten usw.) umfassen. In einigen Fällen können die Verarbeitungskerne, wie etwa die CPU-Kerne 202, der ML-Beschleuniger 208 und andere Verarbeitungskerne 210 und die Kreuzschiene 206 auf einem einzigen Chip, wie etwa einem SoC 222, mit einem getrennten externen Speicher integriert sein. In diesem Beispiel koppelt die Kreuzschiene 206 die CPU-Kerne 202 mit anderen Peripheriegeräten, wie etwa einem ML-Beschleuniger 208 und anderen Verarbeitungskernen 210, wie etwa einer Grafikverarbeitungseinheit, Funkbasisbändern, Coprozessoren, Mikrocontrollern usw. Und dem externen Speicher 214, wie etwa DDR-Speicher, DRAM (dynamischer Direktzugriffsspeicher), Flash-Speicher usw., der sich auf einem von dem SoC getrennten Chip befinden kann. Die Kreuzschiene 206 kann einen oder mehrere interne Speicher, die eine beliebige Art von Speicher umfassen können, wie etwa SRAM (statischen Direktzugriffsspeicher), Flash-Speicher usw., umfassen oder Zugriff auf diese bereitstellen. Der ML-Beschleuniger 208 kann einen oder mehrere ML-Kerne 216 umfassen. Die ML- Kerne 216 können Prozessorkerne sein, die dafür ausgelegt sind, Maschinenlernmodelle zu beschleunigen, und die MI,-Kerne 216 können einen oder mehrere (nicht gezeigte) interne Caches umfassen.
  • In einigen Fällen kann die Vorrichtung eine eingebettete Vorrichtung sein, die in eine andere Vorrichtung eingebaut ist, und kann eine spezifische Funktion für die andere Vorrichtung ausführen. Eingebettete Vorrichtungen sind oft ressourcenbeschränkt, mit einer relativ begrenzten Menge von Rechen- und Speicherressourcen. Um dabei zu helfen, die Leistungsfähigkeit eines ML-Modells auf Zielhardware, wie etwa für die eingebettete Vorrichtung, zu verbessern, kann die Ausführung des ML-Modells für die Zielhardware optimiert werden. Es können verschiedene spezifische Optimierungen angewandt werden.
  • 3 ist ein Konzeptdiagramm 300 einer beispielhaften Optimierung für ein ML-Modell gemäß Aspekten der vorliegenden Offenbarung. Bei dieser beispielhaften Optimierungstechnik können, wie in der Darstellung 300 gezeigt, Schichten eines MI,-Netzes in mehrere Gruppen aufgeteilt werden. Wie gezeigt, können die Gruppen jeweils eine verschiedene Anzahl von Schichten umfassen. Zum Beispiel kann Gruppe 1 302 9 Schichten umfassen, während Gruppe 2 304 6 Schichten umfassen kann. Jede Gruppe von Schichten kann auf einmal durch die Zielhardware verarbeitet werden. Bei dieser beispielhaften Optimierungstechnik kann das ML-Modell für Zielhardware optimiert werden, indem bestimmt wird, welche Schichten zur Ausführung miteinander gruppiert werden können. Zusätzliche Beispiele für Optimierungstechniken, die verschiedene Gruppen von Schichten eines ML-Modells benutzen, werden in der US-Patentanmeldung Nr. U.S. 17/327,869 and und der US-Patentanmeldung Nr. 16/797,871 besprochen, die hiermit durch Bezugnahme beide aufgenommen werden.
  • Wie oben besprochen, führt, wenn ein ML-Modell auf einem Prozessor ausgeführt wird, der Prozessor typischerweise eine Menge von Berechnungen auf der Basis von Parameterwerten durch, die zusammen mit Gewichten, Funktionen usw. die dem ML-Modell zugeordnet sind, in das ML-Modell eingegeben werden. Jeder Knoten einer Schicht des MI,-Modells kann einer anderen Menge von Gewichten, Kombinationsfunktionen, Aktivierungsfunktion usw. zugeordnet werden, die aus einem Speicher für die auszuführenden Berechnungen Prozessor geladen werden können. Je näher ein Speicher dem Prozessor ist, desto schneller kann der Prozessor im Allgemeinen Informationen aus dem Speicher abrufen. Je schneller der Prozessor die Informationen aus dem Speicher abrufen kann, desto schneller kann der Prozessor im Allgemeinen die Berechnung ausführen. In vielen Fällen ist Cache-Speicher, wie etwa der interne Cache-Speicher 204, dem Prozessor näher als ein externer Speicher, wie etwa der externe Speicher 214, und Ausführung des ML-Modells aus dem internen Cache-Speicher 204 (z. B. Abruf von Informationen aus dem internen Cache-Speicher für den Prozessor) ist schneller als Ausführung aus dem externen Speicher 214. Eine Größe des Cache-Speichers ist jedoch verglichen mit der Größe des externen Speichers mehr begrenzt.
  • Herkömmlicherweise können Knoten einer Schicht zugeordnete Informationen zum Beispiel aus dem externen Speicher in Cache-Speicher geladen und dann aus dem Cache-Speicher ausgeführt werden. Ausgaben der Berechnungen der Schicht können auch in externem Speicher gespeichert und zur Ausführung der nächsten Schicht in den Cache-Speicher neu geladen werden. Um dabei zu helfen, das Laden jeder Schicht aus externem Speicher zu vermeiden, können Gruppen von Schichten oder Teile von Schichten für das Laden in Cache-Speicher und Ausführen aus diesem definiert werden. Außerdem hilft das Speichern der Ausgabeergebnisse der Berechnungen für eine Schicht in dem Cache-Speicher dabei, die Leistungsfähigkeit verglichen mit dem Speichern der Ausgabeergebnisse in dem externen Speicher zu verbessern, da die Ausgabeergebnisse für eine Schicht oft als Eingabe für die nächste Schicht verwendet werden. Techniken zum Gruppieren mehrerer Teile von Schichten zusammen mit Ausgabeergebnissen dieser Gruppen werden zum Beispiel in der US-Patentanmeldung Nr. 17/327,869 und der US-Patentanmeldung Nr. 16/797,871 besprochen.
  • 4 ist eine Blockdarstellungs-Übersicht 400 eines Prozesses zum Zusammenstellen und Optimieren von ML-Modellen für Zielhardware gemäß Aspekten der vorliegenden Offenbarung. Ein Maschinenlernmodell 402 wird während einer Trainingsphase der Entwicklung des jeweiligen ML-Modells 402 trainiert. Trainieren eines ML-Modells 402 lehrt das MI,-Modell, eine Aufgabe auszuführen. Zum Beispiel kann ein ML-Modell 402 für Objekterkennung trainiert werden, indem dem ML-Modell 402 gekennzeichnete Bilder präsentiert werden, die ein Objekt umfassen, wobei man das ML-Modell 402 versuchen lässt, das Objekt in dem Bild zu identifizieren, und dann Parameter des ML-Modells 402, wie etwa Gewichte für Schichten des ML-Modells 402, abhängig davon justiert werden, wie gut das ML-Modell 402 das Objekt erkannt hat.
  • Sobald ein ML-Modell trainiert ist, kann das MI,-Modell 402 für eine Zielhardware durch einen ML-Modell-Compiler 404 zusammengestellt und/oder vorbereitet werden. Es versteht sich, dass der Compilierungsprozess mehrere Prozesse, Schritte, Operationen, usw. umfassen kann, die getrennt und/oder auf automatisierte Weise ausgeführt werden können. In diesem Beispiel ist die Zielhardware 406 als eine vereinfachte Version der in 2 gezeigten Vorrichtung gezeigt, und die Zielhardware 406 umfasst ein SoC 408 mit einem oder mehreren Kernen 410. Das SoC 408 ist auch mit externem Speicher 412 gekoppelt. Der ML-Modell-Compiler 404 hilft dabei, das MI,-Modell 402 für Ausführung durch die Zielhardware 406 vorzubereiten, indem das ML-Modell 402 in einen Laufzeitcode und Ausführungsinformationen 416 übersetzt wird, die mit der Zielhardware 406 kompatibel sind.
  • Es versteht sich, dass der Compilierungsprozess mehrere Teilprozesse umfassen kann. In einigen Fällen kann zusätzlich zu der Übersetzung des ML-Modells 402 in Laufzeitcode der Compilierungsprozess auch einen oder mehrere Teilprozesse umfassen, die die Ausführung des ML-Modells 402 analysieren und/oder die Ausführung des ML-Modells 402 auf der Zielhardware 406 optimieren. In einigen Fällen können Simulationen durchgeführt werden, nachdem das ML-Modell trainiert ist, und als Teil des Vorbereitens des trainierten ML-Modells 402 für die Ausführung auf der Zielhardware 406. Zum Beispiel kann als Teil des Compilierungs- und/oder Übersetzungsprozesses MI,-Modell-Ausführung auf der Zielhardware 406 simuliert werden. In einigen Fällen kann die Simulation der ML-Modell-Ausführung als ein von dem Compilierungs-/Übersetzungsprozess getrennter Prozess ausgeführt werden. Diese Simulationen können als Teil eines Optimierungsprozesses durchgeführt werden. Zum Beispiel kann die Ausführung des ML-Modells unter Verwendung verschiedener Gruppierungen der Schichten des ML-Modells simuliert werden, um dabei zu helfen, Gruppierungen von Schichten des ML-Modells zu identifizieren, die dabei helfen, die Leistungsfähigkeit des ML-Modells, das auf der Zielhardware 406 ausgeführt wird, zu verbessern. In einigen Fällen können alle möglichen Gruppierungen der Schichten des ML-Modells simuliert werden, um die Gruppierung zu identifizieren, die die Leistungsfähigkeit des ML-Modells auf der Zielhardware 406 optimiert.
  • Die Optimierung für Leistungsfähigkeit auf der Zielhardware 406 wird oft durch Ausführungszeiten definiert. Das heißt, der Optimierungsprozess sucht oft die niedrigste Ausführungszeit für das ML-Modell für die Zielhardware 406. Insbesondere kann die niedrigste Ausführungszeit durch vielfältige Metriken beschrieben werden, wie etwa analysierte Rahmen pro Sekunde, mindestmenge von zum Laufenlassen des ML-Modells erforderlichen Datenverarbeitungszyklen gegenüber einer Anzahl von Eingaben usw.
  • In einigen Fällen kann der Optimierungsprozess mehrere Optimierungslösungen, wie etwa eine bestimmte Gruppierung von Schichten, auf der Basis von zwei oder mehr Faktoren identifizieren. Oft wird angenommen, dass Optimierung für niedrigste Ausführungszeit Optimierung für bestimmte andere Faktoren umfasst, wie etwa Benutzung von Bandbreite des externen Speichers. Zum Beispiel wird oft angenommen, dass Optimierung für die niedrigste Ausführungszeit automatisch zu der niedrigsten Menge an Benutzung von Bandbreite des externen Speichers führt. Für einige ML-Modelle minimiert die Optimierung für die niedrigste Ausführungszeit die Menge an notwendiger Bandbreite des externen Speichers. Für einige ML-Modelle kann es eine einzigartige Lösung geben, die die Ausführungszeit minimiert, und eine andere Lösung, die die Menge an notwendiger Bandbreite externen Speichers minimiert. Außerdem können andere Lösungen verschiedene Kompromisse zwischen Ausführungszeit und der Menge an notwendiger Bandbreite externen Speichers bieten. Diese Lösungen können als eine pareto-optimale Grenze von Lösungen betrachtet werden. In einigen Fällen kann es nützlich sein, entlang der pareto-optimalen Grenze von Lösungen verschiedene Lösungen anzubieten, um zum Beispiel eine genauere Abstimmung der Ausführung des ML-Modells zu erlauben.
  • Es versteht sich, dass dieser hier beschriebene beispielhafte Optimierungsprozess für Klarheits- und Einfachheitszwecke gewählt wurde, und es versteht sich, dass eine beliebige andere Optimierungstechnik auf die hier beschriebenen Konzepte angewandt werden kann.
  • Beispielsweise kann grafisches Auftragen der Lösungen, die erhalten werden können, während eines Optimierungsprozesses durch Simulieren des ML-Modells dabei helfen, zu veranschaulichen, wie verschieden Lösungen entlang der pareto-optimalen Grenze von Lösungen ausgewählt werden können. 5 ist ein Diagramm 500 von Optimierungslösungen auf der Basis von Faktoren gemäß Aspekten der vorliegenden Offenbarung. Wie gezeigt, umfasst das Diagramm 500 eine Menge von mit Bezug auf zwei auf zwei Achsen angeordneten Faktoren aufgetragene Lösungen 502. In diesem Beispiel können die gezeigten Optimierungslösungen verschiedene Gruppierungen von Schichten des ML-Modells repräsentieren. Um bei der Klarheit und dem Verständnis zu helfen, kann angenommen werden, dass die in 5 gezeigten Punkte alle möglichen Optimierungslösungen (z. B. alle möglichen Gruppierungen von Schichten des ML-Modells) repräsentieren. Es versteht sich, dass es eine beliebige Anzahl von Optimierungslösungen geben kann. In einigen Fällen können die möglichen Optimierungslösungen erschöpfend simuliert werden, während in anderen Fällen die möglichen Optimierungslösungen simuliert werden können, bis ein vordefinierter -stoppunkt erreicht ist.
  • Jede Lösung kann zum Beispiel als Teil der Simulation auf der Basis einer Menge von Faktoren ausgewertet werden. In diesem Beispiel umfassen die Faktoren eine Anzahl von pro Rahmen 504 zur Ausführung des ML-Modells auf der Zielhardware verwendeten Prozessorzyklen, aufgetragen auf der X-Achse, und eine Menge an pro Rahmen benutzter Bandbreite externen Speichers 506, aufgetragen auf der Y-Achse. Für einige ML-Modelle kann eine am besten funktionierende Lösung mit Bezug auf einen Faktor nicht die am besten funktionierende Lösung mit Bezug auf einen anderen Faktor sein. Hier kann eine erste Lösung 508 (z. B. Gruppierung der ML-Schichten) weniger Datenverarbeitungszyklen benutzten als andere Lösungen der Menge von Lösungen 502. Die erste Lösung 508 kann durch Bestimmen der Lösung einer Menge von Lösungen mit der niedrigsten Anzahl von pro Rahmen benutzten Prozessorzyklen identifiziert werden. In diesem Beispiel kann die erste Lösung 508 auch mehr Bandbreite externen Speichers pro Rahmen 506 verwenden als eine zweite Lösung 510. In diesem Beispiel repräsentiert die erste Lösung 508 die Optimierte Lösung für den ersten Faktor (z. B. niedrigste Ausführungszeit/minimale Prozessorzyklen) auf der Zielhardware, und die zweite Lösung 510 repräsentiert die optimierte Lösung für den zweiten Faktor (z. B. Bandbreite externen Speichers) auf der Zielhardware. Die zweite Lösung 510 kann durch Bestimmung der Lösung einer Menge von Lösungen mit der niedrigsten Benutzung von Bandbreite externen Speichers identifiziert werden. Beim Optimieren auf der Basis des ersten und zweiten Faktors kann der Optimierungsprozess somit diese beiden optimierten Lösungen identifizieren.
  • In einigen Fällen können bestimmte Lösungen der Menge von Lösungen 502 eine pareto-Grenze 512 bilden, so dass kein einzelner Faktor verbessert werden kann, ohne dass ein anderer Faktor schlechter wird. In diesem Beispiel führen für Lösungen auf der pareto-Grenze 512 jegliche Reduktionen einer Anzahl von pro Rahmen verwendeten Prozessorzyklen 504 zu einer Zunahme einer Menge an pro Rahmen benutzter Bandbreite externen Speichers 506. In einigen Fällen können Lösungen auf einer pareto-optimalen Grenze 512 bestimmt werden. Lösungen auf der pareto-optimalen Grenze 512 können durch Vergleichen einer ausgewerteten Lösung mit den anderen Lösungen bestimmt werden, um zu bestimmen ob irgendeine andere Lösung bezüglich der ausgewerteten Lösung in jeder Dimension (z. B. Faktoren) eine Verbesserung darstellt. Zum Beispiel liegen sowohl die erste Lösung 508 als auch die zweite Lösung 510 auf der pareto-optimalen Grenze 512, da keine andere Lösung eine niedrigere Anzahl von benutzten Prozessorzyklen für die erste Lösung 508 aufweist und keine andere Lösung eine niedrigere Menge an Benutzung von Bandbreite externen Speichers für die zweite Lösung 510 aufweist. Als ein anderes Beispiel können, wenn die ausgewertete Lösung 514 und 516 ausgewertet wird, diese ausgewerteten Lösungen 514 und 516 mit anderen Lösungen darunter die Lösung 518, verglichen werden. Die Lösung 518 hat sowohl eine niedrigere Anzahl verwendeter Prozessorzyklen als auch eine niedrigere Menge an Benutzung von Bandbreite externen Speichers als beide ausgewertete Lösung 514 und 516. Die Lösung 518 dominiert somit strikt beide evaluierte Lösung 514 und 516, und die evaluierte Lösung 514 und 516 sind nicht Lösungen auf der pareto-optimalen Grenze 512. Im Gegensatz dazu wird die Lösung 518 nicht strikt durch irgendeine andere Lösung dominiert. Während die zweite Lösung 510 verglichen mit der Lösung 518 eine niedrigere Menge an benutzter Bandbreite externen Speichers aufweisen kann, benutzt die zweite Lösung 510 eine höhere Anzahl von Prozessorzyklen. Ähnlich kann die erste Lösung 508 verglichen mit der Lösung 518 eine niedrigere Anzahl benutzter Prozessorzyklen pro Rahmen aufweisen, und die erste Lösung 508 benutzt eine größere Menge an Bandbreiten externen Speichers.
  • Außerdem können auch eine oder mehrere Kompromisslösungen durch den Optimierungsprozess identifiziert werden. Diese Kompromisslösungen können Lösungen repräsentieren, die einen Kompromiss zwischen zwei oder mehr Faktoren darstellen. Zum Beispiel können einige Lösungen der Menge von Lösungen 502 relativ mehr Datenverarbeitungszyklen benutzen, aber weniger Bandbreite externen Speichers als die ersten Lösung 508 und weniger Datenverarbeitungszyklen, aber mehr Bandbreite externen Speichers als die zweite Lösung 510. In einigen Fällen können diese Kompromisslösungen zwischen die Lösungen fallen, die am meisten für einen bestimmten Faktor optimiert sind (z. B. die erste Lösung 508 und die zweite Lösung 510).
  • Aus Lösungen aus der pareto-Grenze 512 können eine oder mehrere Kompromisslösungen ausgewählt werden. In einigen Fällen können diese Kompromisslösungen aus Lösungen auf der pareto-Grenze 512 ausgewählt werden, die die Distanz zwischen der Lösung, aufgetragen als Funktion der Faktoren, und einer hypothetischen perfekten Lösung (z. B. 1 Prozessorzyklus, keine benutzte Bandbreite externen Speichers) minimieren. Bei der Optimierung auf der Basis des ersten und zweiten Faktors kann der Optimierungsprozess zusätzlich zu den zwei optimierten Lösungen eine oder mehrere der ausgewählten Kompromisslösungen identifizieren.
  • In einigen Fällen können Kompromisslösungen auf der Basis eines Bereichs identifiziert werden. Bereiche können auf der Basis der für die Faktoren am besten funktionierenden Lösungen definiert werden. Als ein Beispiel kann ein erster Bereich aus der Lösung 508 definiert werden, und es kann auch ein zweiter Bereich aus der zweiten Lösung 510 definiert werden. Der erste Bereich und der zweite Bereich können vordefiniert oder zur Laufzeit definiert werden, wie etwa durch einen Benutzer. Der erste Bereich und der zweite Bereich können gleich oder verschieden sein. Beispielsweise kann der erste Bereich ein Wertebereich, wie etwa innerhalb von 10%, für den Faktor sein, für den die erste Lösung 508 die am besten funktionierende Lösung ist. Pareto-Grenzen-Lösungen mit mehreren benutzten Prozessorzyklen pro Rahmen innerhalb von 10% der Anzahl benutzter Prozessorzyklen pro Rahmen der ersten Lösung 508 können somit als eine erste Menge von Infrage kommenden Kompromisslösungen ausgewählt werden. Von dieser ersten Menge von Infrage kommenden Kompromisslösungen kann die Lösung mit der besten Leistungsfähigkeit mit Bezug auf den anderen Faktor (hier die kleinste Menge benutzter Bandbreite externen Speichers pro Rahmen) als eine Kompromisslösung 518A ausgewählt werden. Ähnlich kann der zweite Bereich ein Wertebereich, wie etwa 10%, für den Faktor sein, für den die zweite Lösung 510 die am besten funktionierende Lösung ist. Pareto-Grenzen-Lösungen mit einer Benutzung von Bandbreite externen Speichers pro Rahmen innerhalb von 10% der Benutzung von Bandbreite externen Speichers pro Rahmen der zweiten Lösung 510 können somit als eine zweite Menge von Infrage kommenden Kompromisslösungen ausgewählt werden. Von dieser zweiten Menge von Infrage kommenden Kompromisslösungen kann die Lösung mit der besten Leistungsfähigkeit mit Bezug auf den anderen Faktor (hier die kleinste Anzahl von benutzten Prozessorzyklen pro Rahmen) als eine Kompromisslösung 518B ausgewählt werden.
  • Sobald die optimierten/Kompromisslösungen identifiziert sind, können die Lösungen der Zielhardware beim Ausführen des ML-Modells zum Beispiel als Teil der Ausführungsinformationen bereitgestellt werden. Wieder mit Bezug auf das oben besprochene Beispiel können die Ausführungsinformationen eine Angabe mehrerer Gruppierungen der Schichten und eine Angabe eines der Gruppierung zugeordneten Faktors umfassen. Diese Angabe eines Faktors kann implizit oder explizit sein. Zum Beispiel kann die Angabe des Faktors implizit auf der Basis einer Anordnung der Gruppierungen der Schichten sein, wobei die erste Schichtgruppierung eine für einen ersten Faktor optimierte Schichtgruppierung sein kann, eine zweite Schichtgruppierung in der Anordnung eine für den zweiten Faktor optimierende Schichtgruppierung sein kann usw. In einigen Fällen kann implizierte Angabe eines Faktors vordefiniert werden. Als Beispiel für explizite Angabe eines Faktors können die Ausführungsinformationen Metadaten und/oder ein Tag umfassen, wodurch angegeben wird, welche Gruppierung welchem Faktor zugeordnet ist oder wann eine bestimmte Gruppierung zu verwenden ist. Die Ausführungsinformationen können der Zielhardware zusammen mit dem ML-Modell zugeordnetem Laufzeitcode bereitgestellt werden.
  • 6 ist ein Flussdiagramm 600 der Umkonfigurierung der ML-Modell-Ausführung gemäß Aspekten der vorliegenden Offenbarung. In einigen Fällen kann die Zielhardware die Ausführung des ML-Modells auf der Basis der Ausführungsinformationen und eines oder mehrerer Laufzeitfaktoren justieren. Beispielsweise kann ein ML-Modell für Objektdetektion verwendet werden und an Einzelbildern eines von einer Kamera empfangenen Videostroms operieren und viele Male pro Sekunde ausgeführt werden, zum Beispiel 60 Mal pro Sekunde, während die Zielhardware arbeitet.
  • Wie gezeigt, kann das ML-Modell Ausführungsinformationen zugeordnet sein, die zwei ML-Modell-Optimierungs-Konfigurationen angeben. In diesem Beispiel kann eine erste ML-Modell-Konfiguration für eine niedrigere Anzahl von Prozessorzyklen (oder niedrigerer Ausführungszeit) verglichen mit einer zweiten ML-Modell-Konfiguration optimiert werden, die für eine niedrigere Benutzung von Bandbreite externen Speichers optimiert sein kann. Die Zielhardware kann dafür ausgelegt werden, zu bestimmen, ob vor einer nächsten Ausführung des ML-Modells eine bestimmte Laufzeitbedingung erfüllt wurde 602. Zum Beispiel kann die Zielhardware dafür ausgelegt werden, zu bestimmen, ob ein bestimmter Prozentsatz oder eine bestimmte Menge von Bandbreite externen Speichers bereits in Gebrauch ist, ob Zugriffsblockierungen externen Speichers auftreten, Speicherbustemperaturen außerhalb eines bestimmten Bereichs liegen usw. Andere Laufzeitbedingungen wären eine Temperatur eines oder mehrerer Teile der Zielhardware, eine Menge an Energie, die von der Zielhardware benutzt wird (oder dieser zur Benutzung verfügbar ist), eine Menge an benutzten (oder für Benutzung verfügbaren) Prozessorrechenzyklen usw., wenn es eine solche Laufzeitbedingung gibt, kann die Zielhardware das MI,-Modell, zum Beispiel während der nächsten Ausführung des ML-Modells, auf der Basis der zweiten ML-Modell-Konfiguration ausführen 604. Wenn zum Beispiel der bestimmte Prozentsatz externen Speichers bereits in Gebrauch ist, kann die Zielhardware das ML-Modell unter Verwendung der zweiten ML-Modell-Konfiguration ausführen, indem ein Flag-Parameter gesetzt wird, die ML-Modell-Konfigurationsinformationen, die der zweiten ML-Modell-Konfiguration zugeordnet sind, weitergeleitet werden usw. Als spezifischeres Beispiel kann Bandbreite externen Speichers der Zielvorrichtung begrenzt werden, und wenn ein anderer Prozess bereits genug Bandbreite externen Speichers benutzt, so dass die Ausführung des ML-Modells unter Verwendung der ersten ML-Modell-Konfiguration durch die verfügbare Bandbreite externen Speichers beeinträchtigt würde, kann die Zielhardware das ML-Modell unter Verwendung der zweiten ML-Modell-Konfiguration ausführen. In einigen Fällen können mehrere Laufzeitbedingungen definiert werden. Wenn zum Beispiel ein bestimmter Prozentsatz externen Speichers bereits in Gebrauch ist oder wenn es Zugriffsblockierungen externen Speichers gibt, kann die Zielhardware das ML-Modell auf der Basis der zweiten ML-Modell-Konfiguration ausführen 604.
  • Wenn eine solche Laufzeitbedingung nicht existiert, kann die Zielhardware das ML-Modell auf Basis der ersten ML-Modell-Konfiguration ausführen 604. Wenn zum Beispiel der bestimmte Prozentsatz des externen Speichers nicht bereits in Gebrauch ist, kann die Zielhardware das ML-Modell unter Verwendung der ersten ML-Modell-Konfiguration ausführen. In einigen Fällen kann das ML-Modell als Vorgabe die erste ML-Modell-Konfiguration nehmen, wenn nicht eine Angabe empfangen wird, dass das ML-Modell unter Verwendung der zweiten ML-Modell-Konfiguration ausgeführt werden soll.
  • In einigen Fällen können die Ausführungsinformationen Informationen zum Konfigurieren der Zielhardware zum Justieren der Ausführung des ML-Modells auf der Basis der Ausführungsinformationen umfassen. Zum Beispiel können die Ausführungsinformationen Anweisungen (z. B. Software) zur Ausführung auf der Zielhardware zum Konfigurieren der Zielhardware dafür umfassen, zu bestimmen, ob eine bestimmte Laufzeitbedingung erfüllt wurde, und/oder Anweisungen dafür, wie was MI,-Modell unter Verwendung verschiedenen ML-Modell-Konfiguration auszuführen ist.
  • 7 ist ein Flussdiagramm 700 einer Technik zur Anpassung der Ausführung eines ML-Modells gemäß Aspekten der vorliegenden Offenbarung. In Block 702 wird ein Maschinenlern- bzw. ML-Modell und dem ML-Modell zugeordnete Ausführungsinformationen empfangen. Die Ausführungsinformationen umfassen erste Ausführungsdaten, die angeben, wie das ML-Modell auf der Basis eines ersten Leistungsfähigkeitskriteriums optimiert auszuführen ist, und zweite Ausführungsdaten, die angeben, wie das ML-Modell auf der Basis eines zweiten Leistungsfähigkeitskriteriums optimiert auszuführen ist, wobei das zweite Leistungsfähigkeitskriterium von dem ersten Leistungsfähigkeitskriterium verschieden ist. Zum Beispiel kann Zielhardware ein ML-Modell zur Ausführung aus der Zielhardware zusammen mit dem ML-Modell zugeordneten Ausführungsinformationen empfangen. Die Ausführungsinformationen können Informationen umfassen, die angeben, wie das ML-Modell auszuführen ist. Diese Ausführungsinformationen können das ML-Modell für Ausführung auf die Zielhardware optimieren. Zum Beispiel können die Ausführungsinformationen Informationen zum Gruppieren der Schichten des ML-Modells für Ausführung umfassen. Diese Gruppierung kann vorbestimmt werden, zum Beispiel während eines ML-Modell-Compilierungsprozesses für die Zielhardware. Die Ausführungsinformationen können die Ausführung des ML-Modells für mehrere Leistungsfähigkeitskriterien optimieren, wie etwa Ausführungszeit, benutzte Speicherbandbreite usw. Zum Beispiel kann eine bestimmte Gruppierung der ML-Schichten das ML-Modell dafür auslegen, in einer geringsten Anzahl von Prozessorzyklen ausgeführt zu werden. Eine andere Gruppierung der ML-Schichten kann das ML-Modell dafür auslegen, unter Verwendung einer kleinsten Menge an Speicherbandbreite ausgeführt zu werden.
  • In Block 704 wird das ML-Modell auf der Basis der ersten Ausführungsdaten ausgeführt. Zum Beispiel kann das ML-Modell unter Verwendung einer bestimmten Menge von Ausführungsinformationen ausgeführt werden. Als spezifischeres Beispiel kann das ML-Modell unter Verwendung von Ausführungsinformationen ausgeführt werden, die das ML-Modell zur Ausführung in der kleinsten Anzahl von Prozessorzyklen optimieren. In einigen Fällen kann eine bestimmte Menge von Ausführungsinformationen eines Vorgabekonfiguration sein. In Block 706 erfolgt eine Bestimmung, das ML-Modell auf der Basis der zweiten Ausführungsdaten auszuführen. Zum Beispiel kann die Zielhardware eine oder mehrere Laufzeitbedingungen überwachen. Wenn eine oder mehrere dieser Laufzeitbedingungen erfüllt sind, kann die Zielhardware bestimmen, das ML-Modell auf der Basis der zweiten Ausführungsdaten auszuführen. Wenn zum Beispiel die Zielhardware bestimmt, dass eine bestimmte Menge Speicherbandbreite in Gebrauch ist, kann die Zielhardware bestimmen, zu ändern, wie das ML-Modell ausgeführt wird, um dabei zu helfen, die Menge an durch das ML-Modell benutzter Speicherbandbreite zu reduzieren. Als ausführlicheres Beispiel kann die Zielhardware bestimmen, das ML-Modell unter Verwendung einer Gruppierung der ML-Modellschichten auszuführen, die unter Verwendung einer geringsten Menge Speicherbandbreite ausgeführt wird. In Block 708 wird das ML-Modell auf der Basis der zweiten Ausführungsdaten ausgeführt. Zum Beispiel kann die Zielhardware dann das ML-Modell nochmals unter Verwendung der Gruppierung der ML-Modellschichten ausführen, die unter Verwendung einer geringsten Menge an Speicherbandbreite ausgeführt wird.
  • 8 ist ein Flussdiagramm 800 einer Technik zur Bestimmung von Anpassungen zur Ausführung eines ML-Modells gemäß Aspekten der vorliegenden Offenbarung. In Block 802 wird ein Maschinenlern- bzw. ML-Modell empfangen. Ein ML-Modell kann zum Beispiel zur Compilierung für Zielhardware empfangen werden. In einigen Fällen kann das ML-Modell für die Zielhardware durch eine Datenverarbeitungsvorrichtung, wie etwa einen Personal Computer, einen Server, ein Netzwerk von Datenverarbeitungsvorrichtungen usw., die von der Zielhardware getrennt ist, compiliert werden. In Block 804 werden erste Ausführungsdaten zur Ausführung des ML-Modells auf Zielhardware erzeugt, wobei die erste Ausführungsdaten angeben, wie das ML-Modell auf der Zielhardware auf der Basis eines ersten Leistungsfähigkeitskriteriums optimiert auszuführen ist. Zum Beispiel kann der Compilierungsprozess einen Optimierungsprozess umfassen, der das ML-Modell für Ausführung auf der Zielhardware auf der Basis eines bestimmten Leistungsfähigkeitskriteriums optimiert, wie etwa Ausführungszeit, benutzte Speicherbandbreite usw. In einigen Fällen kann der Optimierungsprozess Simulieren der Ausführung des ML-Modells auf der Zielhardware unter Verwendung verschiedener Konfigurationen umfassen, um dabei zu helfen, zu bestimmen, wie gut die jeweilige Konfiguration gegenüber dem Leistungsfähigkeitskriterium funktioniert. In Block 806 werden zweite Ausführungsdaten zur Ausführung des ML-Modells auf Zielhardware erzeugt, wobei die zweiten Ausführungsdaten angeben, wie das ML-Modell auf der Zielhardware auf der Basis eines zweiten Leistungsfähigkeitskriteriums optimiert auszuführen ist, wobei das zweite Leistungsfähigkeitskriterium von dem ersten Leistungsfähigkeitskriterium verschieden ist. Zum Beispiel kann der Optimierungsprozess das MI,-Modell auf der Basis mehrerer Leistungsfähigkeitskriterien optimieren. In Block 808 werden die ersten Ausführungsdaten und zweiten Ausführungsdaten zur Ausführung des ML-Modells ausgegeben.
  • In der vorliegenden Beschreibung kann der Ausdruck „Koppeln“ Verbindungen, Übermittlungen oder Signalpfade abdecken, die eine funktionale Beziehung vereinbar mit der vorliegenden Beschreibung ermöglichen. Wenn zum Beispiel Vorrichtung A ein Signal zur Steuerung von Vorrichtung B zur Ausführung einer Aktion erzeugt: (a) ist in einem ersten Beispiel Vorrichtung A durch Direktverbindung mit Vorrichtung B gekoppelt; oder (b) ist in einem zweiten Beispiel Vorrichtung A mittels einer dazwischentretenden Komponente C mit Vorrichtung B gekoppelt, wenn die dazwischentretende Komponente C die funktionale Beziehung zwischen Vorrichtung A und Vorrichtung B nicht ändert, so dass Vorrichtung B über das durch Vorrichtung A erzeugte Steuersignal durch Vorrichtung A gesteuert wird.
  • Innerhalb des Schutzumfangs der Ansprüche sind Modifikationen der beschriebenen Ausführungsformen und andere Ausführungsformen möglich.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 16797871 [0016]
    • US 17/327869 [0018]
    • US 16/797871 [0018]

Claims (20)

  1. Elektronische Vorrichtung, umfassend: einen oder mehrere Prozessoren, wobei der eine oder die mehreren Prozessoren ausgelegt sind zum Ausführen von Anweisungen, die den einen oder die mehreren Prozessoren veranlassen zum: Empfangen eines Maschinenlern- bzw. ML-Modells und von dem ML-Modell zugeordneten Ausführungsinformationen, wobei die Ausführungsinformationen erste Ausführungsdaten, die angeben, wie das ML-Modell auf der Basis eines ersten Leistungsfähigkeitskriteriums optimiert auszuführen ist, und zweite Ausführungsdaten, die angeben, wie das ML-Modell auf der Basis eines zweiten Leistungsfähigkeitskriteriums optimiert auszuführen ist, umfassen, wobei das zweite Leistungsfähigkeitskriterium von dem ersten Leistungsfähigkeitskriterium verschieden ist; Ausführen des ML-Modells auf der Basis der ersten Ausführungsdaten; Bestimmen, das ML-Modell auf der Basis der zweiten Ausführungsdaten auszuführen; und Ausführen des ML-Modells auf der Basis der zweiten Ausführungsdaten.
  2. Elektronische Vorrichtung nach Anspruch 1, wobei das erste Leistungsfähigkeitskriterium eine Ausführungszeit des ML-Modells auf der Zielhardware umfasst und wobei das zweite Leistungsfähigkeitskriterium eine Speicherzugriffsbandbreite umfasst.
  3. Elektronische Vorrichtung nach Anspruch 1, wobei die Angabe, das ML-Modell auf der Basis der zweiten Ausführungsdaten auszuführen, die zweiten Ausführungsdaten umfasst.
  4. Elektronische Vorrichtung nach Anspruch 1, wobei die Anweisungen den einen oder die mehreren Prozessoren ferner auslegen zum Überwachen einer Laufzeitbedingung, wobei die Bestimmung, das ML-Modell auszuführen, auf der überwachten Laufzeitbedingung basiert.
  5. Elektronische Vorrichtung nach Anspruch 4, wobei die Laufzeitbedingung eine Speicherbandbreitenauslastung, Temperatur, Strommenge oder Menge an verfügbaren Prozessorrechenzyklen umfasst.
  6. Elektronische Vorrichtung nach Anspruch 1, wobei die ersten Ausführungsdaten eine erste Gruppierung von Schichten des ML-Modells umfassen und wobei die zweiten Ausführungsdaten eine zweite Gruppierung von Schichten des ML-Modells umfassen.
  7. Elektronische Vorrichtung nach Anspruch 1, wobei die Ausführungsinformationen dritte Ausführungsdaten umfassen, die angeben, wie das ML-Modell auf der Basis des ersten Leistungsfähigkeitskriteriums und des zweiten Leistungsfähigkeitskriteriums optimiert auszuführen ist, und wobei die Anweisungen den einen oder die mehreren Prozessoren ferner auslegen zum Bestimmen, das ML-Modell auf der Basis des ersten Leistungsfähigkeitskriteriums und des zweiten Leistungsfähigkeitskriteriums auszuführen; und Ausführen des ML-Modells auf der Basis der dritten Ausführungsdaten.
  8. Verfahren, umfassend: Empfangen eines Maschinenlern- bzw. ML-Modells und von dem ML-Modell zugeordneten Ausführungsinformationen, wobei die Ausführungsinformationen erste Ausführungsdaten, die angeben, wie das ML-Modell auf der Basis eines ersten Leistungsfähigkeitskriteriums optimiert auszuführen ist, und zweite Ausführungsdaten, die angeben, wie das ML-Modell auf der Basis eines zweiten Leistungsfähigkeitskriteriums optimiert auszuführen ist, umfassen, wobei das zweite Leistungsfähigkeitskriterium von dem ersten Leistungsfähigkeitskriterium verschieden ist; Ausführen des ML-Modells auf der Basis der ersten Ausführungsdaten; Bestimmen, das ML-Modell auf der Basis der zweiten Ausführungsdaten auszuführen; und Ausführen des ML-Modells auf der Basis der zweiten Ausführungsdaten.
  9. Verfahren nach Anspruch 8, wobei das erste Leistungsfähigkeitskriterium eine Ausführungszeit des ML-Modells auf der Zielhardware umfasst und wobei das zweite Leistungsfähigkeitskriterium eine Speicherzugriffsbandbreite umfasst.
  10. Verfahren nach Anspruch 8, wobei die Angabe, das ML-Modell auf der Basis der zweiten Ausführungsdaten auszuführen, die zweiten Ausführungsdaten umfasst.
  11. Verfahren nach Anspruch 8, wobei die Anweisungen den einen oder die mehreren Prozessoren ferner auslegen zum Überwachen einer Laufzeitbedingung, wobei die Bestimmung, das ML-Modell auszuführen, auf der überwachten Laufzeitbedingung basiert.
  12. Verfahren nach Anspruch 11, wobei die Laufzeitbedingung eine Speicherbandbreitenauslastung, Temperatur, Strommenge oder Menge an verfügbaren Prozessorrechenzyklen umfasst.
  13. Verfahren nach Anspruch 8, wobei die ersten Ausführungsdaten eine erste Gruppierung von Schichten des ML-Modells umfassen und wobei die zweiten Ausführungsdaten eine zweite Gruppierung von Schichten des ML-Modells umfassen.
  14. Verfahren nach Anspruch 8, wobei die Ausführungsinformationen dritte Ausführungsdaten umfassen, die angeben, wie das ML-Modell auf der Basis des ersten Leistungsfähigkeitskriteriums und des zweiten Leistungsfähigkeitskriteriums optimiert auszuführen ist, und wobei die Anweisungen den einen oder die mehreren Prozessoren ferner auslegen zum Bestimmen, das ML-Modell auf der Basis des ersten Leistungsfähigkeitskriteriums und des zweiten Leistungsfähigkeitskriteriums auszuführen; und Ausführen des ML-Modells auf der Basis der dritten Ausführungsdaten.
  15. Nichtflüchtige Programmspeicherungsvorrichtung mit darauf gespeicherten Anweisungen, um einen oder mehrere Prozessoren zu folgendem zu veranlassen: Empfangen eines Maschinenlern- bzw. ML-Modells; Erzeugen von ersten Ausführungsdaten zur Ausführung des ML-Modells auf Zielhardware, wobei die ersten Ausführungsdaten angeben, wie das ML-Modell auf der Basis eines ersten Leistungsfähigkeitskriteriums optimiert auf der Zielhardware auszuführen ist; Erzeugen von zweiten Ausführungsdaten zur Ausführung des ML-Modells auf Zielhardware, wobei die zweiten Ausführungsdaten angeben, wie das ML-Modell auf der Basis eines zweiten Leistungsfähigkeitskriteriums optimiert auf der Zielhardware auszuführen ist, wobei das zweite Leistungsfähigkeitskriterium von dem ersten Leistungsfähigkeitskriterium verschieden ist; und Ausgeben der ersten Ausführungsdaten und zweiten Ausführungsdaten zur Ausführung des ML-Modells.
  16. Nichtflüchtige Programmspeicherungsvorrichtung nach Anspruch 15, wobei das erste Leistungsfähigkeitskriterium eine Ausführungszeit des ML-Modells auf der Zielhardware umfasst und wobei das zweite Leistungsfähigkeitskriterium eine Speicherzugriffsbandbreite umfasst.
  17. Nichtflüchtige Programmspeicherungsvorrichtung nach Anspruch 15, wobei die ersten Ausführungsdaten eine erste Gruppierung von Schichten des ML-Modells umfassen und wobei die zweiten Ausführungsdaten eine zweite Gruppierung von Schichten des ML-Modells umfassen.
  18. Nichtflüchtige Programmspeicherungsvorrichtung nach Anspruch 15, ferner umfassend: Vorbereiten des ML für die Zielhardware durch Verpacken der ersten Ausführungsdaten und der zweiten Ausführungsdaten als Teil von dem ML-Modell zugeordneten Ausführungsinformationen.
  19. Nichtflüchtige Programmspeicherungsvorrichtung nach Anspruch 15, wobei die ersten Ausführungsdaten und zweiten Ausführungsdaten auf der Basis von Simulationen des auf der Zielhardware ausgeführten ML-Modells erzeugt werden.
  20. Nichtflüchtige Programmspeicherungsvorrichtung nach Anspruch 19, wobei die ersten Ausführungsdaten durch Anwendung des ersten Leistungsfähigkeitskriteriums auf die Simulationen des ML-Modells erzeugt werden und die zweiten Ausführungsdaten durch Anwendung des zweiten Leistungsfähigkeitskriteriums auf die Simulationen des ML-Modells erzeugt werden.
DE102022120341.7A 2021-08-31 2022-08-11 Umkonfigurierbare ausführung von maschinenlernnetzen Pending DE102022120341A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/463,341 US20230064481A1 (en) 2021-08-31 2021-08-31 Reconfigurable execution of machine learning networks
US17/463,341 2021-08-31

Publications (1)

Publication Number Publication Date
DE102022120341A1 true DE102022120341A1 (de) 2023-03-02

Family

ID=85175361

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022120341.7A Pending DE102022120341A1 (de) 2021-08-31 2022-08-11 Umkonfigurierbare ausführung von maschinenlernnetzen

Country Status (2)

Country Link
US (1) US20230064481A1 (de)
DE (1) DE102022120341A1 (de)

Also Published As

Publication number Publication date
US20230064481A1 (en) 2023-03-02

Similar Documents

Publication Publication Date Title
US10810491B1 (en) Real-time visualization of machine learning models
DE102019106669A1 (de) Verfahren und anordnungen zum verwalten von speicher in kaskadierten neuronalen netzen
DE112016002292T5 (de) Stapel-verarbeitung in einem neuronalen netzwerkprozessor
DE112016002298T5 (de) Vorabruf von gewichten zur verwendung in einem neuronalen netzwerkprozessor
DE102018001535A1 (de) Laufzeit-prozessoroptimierung
CN112529146B (zh) 神经网络模型训练的方法和装置
DE102017109239A1 (de) Computerimplementiertes verfahren, computerlesbares medium und heterogenes rechnersystem
DE102022119386A1 (de) Verfahren und einrichtung zum durchführen einer dichten vorhersage unter verwendung von transformatorblöcken
DE102020108374A1 (de) Verfahren und vorrichtung zur laufzeitmehrfachplanung von software, die in einem heterogenen system ausgeführt wird
DE112020002693T5 (de) Verringerung der berechnung in neuralen netzwerken mit selbstmodifizierendem code
DE112013001735T5 (de) Optimieren des Verbindens von Anweisungen
DE112019000676T5 (de) Zentraler scheduler und anweisungszuteiler für einen neuronalen inferenzprozessor
DE112021002239T5 (de) Deep learning-beschleuniger und direktzugriffsspeicher mit einer kameraschnittstelle
DE112020005789T5 (de) Hierarchische partitionierung von operatoren
DE112020002684T5 (de) Ein Mehrfachverfahrenssystem für optimale Vorhersagemodellauswahl
DE102021107510A1 (de) Training eines neuronalen netzwerks unter speicherbeschränkung
DE112020003055T5 (de) Neuanordnen der operationen eines neuronalen netzwerks für parallele ausführung
DE102021127244A1 (de) Künstliche Intelligenz Optimierungsplattform
WO2019057489A1 (de) Verfahren und trainingsdatengenerator zum konfigurieren eines technischen systems sowie steuereinrichtung zum steuern des technischen systems
EP3502974A1 (de) Verfahren zur realisierung eines neuronalen netzes
DE102019126788A1 (de) Beschleunigter zugriff auf aus in speichervorrichtungen gespeicherten daten erzeugte rechenergebnisse
Zhang Clcnet: Improving the efficiency of convolutional neural network using channel local convolutions
DE112021001767T5 (de) Rationalisieren von datenverarbeitungsoptimierungen für arbeitslasten mit maschinellem lernen
DE10324594A1 (de) Verfahren zum Bereitstellen einer verbesserten Simulationsfähigkeit eines dynamischen Systems außerhalb der ursprünglichen Modellierungsumgebung
DE102022120341A1 (de) Umkonfigurierbare ausführung von maschinenlernnetzen

Legal Events

Date Code Title Description
R012 Request for examination validly filed