DE112022001375T5 - Leistungs-hotspots von neuronalen netzwerken ermitteln - Google Patents

Leistungs-hotspots von neuronalen netzwerken ermitteln Download PDF

Info

Publication number
DE112022001375T5
DE112022001375T5 DE112022001375.3T DE112022001375T DE112022001375T5 DE 112022001375 T5 DE112022001375 T5 DE 112022001375T5 DE 112022001375 T DE112022001375 T DE 112022001375T DE 112022001375 T5 DE112022001375 T5 DE 112022001375T5
Authority
DE
Germany
Prior art keywords
neural network
network model
computer
performance
hotspots
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
DE112022001375.3T
Other languages
English (en)
Inventor
Qinyue Chen
Li Cao
Feifei Li
Han SU
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112022001375T5 publication Critical patent/DE112022001375T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3428Benchmarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3447Performance evaluation by modeling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Abstract

Eine Umsetzung zum Ermitteln von Leistungs-Hotspots umfasst ein Sammeln von Beispieldaten mit Anweisungsadressen, wobei die Beispieldaten für ein neuronales Netzwerkmodell sind, und ein Bestimmen von Anweisungen in den Anweisungsadressen, die Leistungs-Hotspots sind. Eine Listendatei wird verwendet, um die Anweisungen der Beispieldaten, die Leistungs-Hotspots sind, Speicherplätzen in einer Zwischendarstellung auf untergeordneter Ebene zuzuordnen. Eine Zuordnungsdatei wird verwendet, um die Speicherplätze der Zwischendarstellung auf untergeordneter Ebene, die Leistungs-Hotspots sind, Operationen in einer oder mehreren Darstellungen auf übergeordneter Ebene zuzuordnen, wobei eine oder mehrere der Operationen den Leistungs-Hotspots entspricht bzw. entsprechen, wobei die Zuordnungsdatei aus einem Kompilieren des neuronalen Netzwerkmodells generiert wird.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung betrifft allgemein Computersysteme und insbesondere durch einen Computer umgesetzte Verfahren, Computersysteme und Computerprogrammprodukte, die zum Ermitteln von Leistungs-Hotspots von neuronalen Netzwerken konfiguriert und angeordnet sind.
  • Künstliche neuronale Netzwerke, die für gewöhnlich als neuronale Netzwerke bezeichnet werden, sind Datenverarbeitungssysteme, die durch die biologischen neuronalen Netzwerke inspiriert sind, die das Gehirn von Tieren bilden. Ein künstliches neuronales Netzwerk beruht auf einer Sammlung von verbundenen Einheiten oder Knoten, die als künstliche Neuronen bezeichnet werden, die die Neuronen in einem biologischen Gehirn grob modellieren. Jede Verbindung, wie die Synapsen in einem biologischen Gehirn, kann ein Signal an andere Neuronen übertragen. Ein künstliches Neuron, das ein Signal empfängt, verarbeitet es anschließend und kann Neuronen signalisieren, die damit verbunden sind. Das „Signal“ an einer Verbindung ist eine reale Zahl, und die Ausgabe jedes Neurons wird durch eine nicht lineare Funktion der Summe ihrer Eingaben berechnet. Diese Verbindungen werden Kanten genannt. Neuronen und Kanten haben in der Regel eine Gewichtung, die sich mit fortschreitendem Lernen anpasst. Die Gewichtung erhöht oder reduziert die Stärke des Signals an einer Verbindung. Neuronen können einen Schwellenwert haben, sodass ein Signal nur gesendet wird, wenn das aggregierte Signal diesen Schwellenwert überschreitet. In der Regel werden Neuronen in Schichten aggregiert. Verschiedene Schichten können verschiedene Transformationen auf ihren Eingaben durchführen. Signale bewegen sich von der ersten Schicht (der Eingabeschicht) durch eine oder mehrere verborgene Schichten zu der letzten Schicht (der Ausgabeschicht), gegebenenfalls nach einem mehrmaligen Durchqueren der Schichten.
  • Ein neuronales Netzwerk kann sehr komplex aus zahlreichen Anweisungen zusammengesetzt sein, die kompiliert sind. Manchmal kann für eine oder mehrere Anweisungen ein Leistungs-Hotspot vorhanden sein. Ein Leistungs-Hotspot in der Informatik wird am häufigsten als ein Bereich eines Computerprogramms definiert, in dem ein hoher Anteil von ausgeführten Anweisungen auftritt und/oder von dem die meiste Zeit während der Ausführung des Programms in Anspruch genommen wird. Wenn ein Programm willkürlich unterbrochen wird, wird häufig festgestellt, dass der Programmzähler (der Zeiger auf die nächste Anweisung, die ausgeführt werden soll) die Adresse einer Anweisung in einem bestimmten Bereich enthält, die gegebenenfalls einen Code angibt, der eine Optimierung benötigt. Es kann jedoch schwierig sein, einen in neuronalen Netzwerkmodellen optimierungsbedürftigen Leistungs-Hotspot zu bestimmen und/oder zu ermitteln, insbesondere denjenigen, die mit modernen Compilern kompiliert wurden, und somit werden Verbesserungen benötigt.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Ausführungsformen der vorliegenden Erfindung betreffen durch einen Computer umgesetzte Verfahren zum Ermitteln von Leistungs-Hotspots von neuronal Netzwerken für eine Optimierung. Ein nicht einschränkendes Beispiel für durch einen Computer umgesetztes Verfahren umfasst ein Sammeln von Beispieldaten mit Anweisungsadressen, wobei die Arbeitsspeicher-Beispieldaten für ein neuronales Netzwerkmodell sind. Das Verfahren umfasst ein Bestimmen von Anweisungen in den Anweisungsadressen, die Leistungs-Hotspots sind, und ein Verwenden einer Listendatei zum Zuordnen der Anweisungen der Beispieldaten, die Leistungs-Hotspots sind, zu Speicherorten in einer Zwischendarstellung auf untergeordneter Ebene. Das Verfahren umfasst außerdem ein Verwenden von Zuordnungsdateien, um die Speicherplätze der Zwischendarstellung auf untergeordneter Ebene, die Leistungs-Hotspots sind, Operationen in einer oder mehreren Darstellungen auf übergeordneter Ebene zuzuordnen, wobei eine oder mehrere der Operationen den Leistungs-Hotspots entsprechen, wobei die Zuordnungsdatei aus einem Kompilieren des neuronalen Netzwerkmodells generiert wird.
  • Dies kann gegenüber bekannten Verfahren für Leistungs-Hotspots eine Verbesserung bereitstellen, indem Leistungs-Hotspots in Zwischendarstellungen auf übergeordneter Ebene in Bezug auf neuronale Netzwerkmodelle effizient bestimmt und ermittelt werden. Die Darstellungen auf übergeordneter Ebene sind durch einen menschlichen Benutzer einfacher zu lesen, zu verstehen und zu modifizieren, sodass Optimierungen an Leistungs-Hotspots vorgenommen werden können, die sich auf das neuronale Netzwerkmodell auswirken, wodurch die Ausführung des neuronalen Netzwerkmodells verbessert wird. Des Weiteren können Verbesserungen in einer oder mehreren Ausführungsformen genutzt werden, um Leistungs-Hotspots auf jeder geeigneten Ebene zu ermitteln. Eine oder mehrere Ausführungsformen können den größten Hotspot suchen, sodass ein minimaler Aufwand zum Optimieren von Hotspot-Leistung genutzt werden kann.
  • Zusätzlich zu einem oder mehreren der oben oder im Folgenden beschriebenen Merkmale oder als eine Alternative kann das Verfahren in weiteren Ausführungsformen der Erfindung ein Verwenden der Zuordnungsdatei umfassen, um die Operationen in der einen oder den mehreren Darstellungen auf übergeordneter Ebene Knoten in dem neuronalen Netzwerk zuzuordnen. Somit identifizieren Verbesserungen vorteilhafterweise, welche Knoten in dem neuronalen Netzwerkmodell Leistungs-Hotspots sind.
  • Zusätzlich zu einem oder mehreren der oben oder im Folgenden beschriebenen Merkmale oder als eine Alternative kann das Verfahren in weiteren Ausführungsformen der Erfindung ein Bestimmen umfassen, welche Knoten in dem neuronalen Netzwerkmodell die Leistungs-Hotspots auf Grundlage eines Zuordnens aus der einen oder den mehreren Darstellungen auf übergeordneter Ebene darstellen, die aus der Zwischendarstellung auf untergeordneter Ebene zugeordnet wurden, die aus den Beispieldaten zugeordnet wurde. Somit verfolgen Verbesserungen vorteilhafterweise Leistungs-Hotspots von einem schwierigeren durch eine Maschine lesbaren Code, wie beispielsweise Binärcode, zu Operationen auf einer Ebene, die durch einen menschlichen Benutzer leichter zu lesen, zu verstehen und zu modifizieren sind. Obwohl es sich bei einer Kompilierung um einen Top-Down-Prozess handelt, stellt eine bzw. stellen mehrere Ausführungsformen einen Bottom-Up-Zuordnungsprozess bereit, der die Zuordnungsdatei verwendet, um Beziehungen von unteren Ebenen nach oben zuzuordnen.
  • Zusätzlich zu einem oder mehreren der oben oder im Folgenden beschriebenen Merkmale oder als eine Alternative in weiteren Ausführungsformen der Erfindung kann das Verfahren ein Verwenden der Zuordnungsdatei umfassen, um die Leistungs-Hotspots in verschiedenen Ebenen eines Kompilierens des neuronalen Netzwerkmodells zu kategorisieren, wobei die verschiedenen Ebenen die Zwischendarstellung auf untergeordneter Ebene durch die eine oder die mehreren Darstellungen auf übergeordneter Ebene aufweisen. Somit stellen Verbesserungen vorteilhafterweise Optionen auf verschiedenen Ebenen zum Optimieren von Leistungs-Hotspots in dem neuronalen Netzwerk bereit.
  • Zusätzlich zu einem oder mehreren der oben oder im Folgenden beschriebenen Merkmale oder als eine Alternative in weiteren Ausführungsformen der Erfindung umfassen die Beispieldaten ferner Informationen von einem oder mehreren Zählern.
  • Zusätzlich zu einem oder mehreren der oben oder im Folgenden beschriebenen Merkmale oder als eine Alternative in weiteren Ausführungsformen der Erfindung umfassen Leistungs-Hotspots ferner eine oder mehrere Kennzahlen, die einen oder mehrere Schwellenwerte erfüllen oder diese überschreiten.
  • Zusätzlich zu einem oder mehreren der oben oder im Folgenden beschriebenen Merkmale oder als eine Alternative in weiteren Ausführungsformen der Erfindung umfasst das Verfahren ein Bestimmen von einer oder mehreren der Operationen in der einen oder den mehreren Darstellungen auf übergeordneter Ebene, die optimiert werden sollen, um dadurch die Leistungs-Hotspots anzusprechen.
  • Andere Ausführungsformen der vorliegenden Erfindung setzen Merkmale des oben beschriebenen Verfahrens in Computersystemen und Computerprogrammprodukten um.
  • Weitere technische Merkmale und Vorteile werden durch die Techniken der vorliegenden Erfindung verwirklicht. Ausführungsformen und Aspekte der Erfindung werden hierin ausführlich beschrieben und werden als Bestandteil des beanspruchten Erfindungsgegenstands betrachtet. Zum besseren Verständnis wird auf die ausführliche Beschreibung und auf die Zeichnungen verwiesen.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die hierin beschriebenen Details der ausschließlichen Rechte werden insbesondere in den Ansprüchen am Ende der Patentschrift dargelegt und eindeutig beansprucht. Die vorgenannten und andere Merkmale und Vorteile der Ausführungsformen der Erfindung werden aus der folgenden ausführlichen Beschreibung in Verbindung mit den begleitenden Zeichnungen offenkundig, in denen:
    • 1 ein Blockschaubild eines beispielhaften Computersystems zum Verwenden in Verbindung mit einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
    • 2 ein Blockschaubild eines beispielhaften neuronalen Netzwerkmodells/einer beispielhaften neuronalen Netzwerkarchitektur gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
    • 3 ein Blockschaubild eines Systems zum Ermitteln und Optimieren von Leistungs-Hotspots in einem neuronalen Netzwerkmodell gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
    • 4 ein Blockschaubild einer beispielhaften Architektur eines Compilers beim Kompilieren eines neuronalen Netzwerkmodells gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
    • 5 ein Ablaufplan eines durch einen Computer umgesetzten Prozesses zum Ermitteln von Leistungs-Hotspots in einem neuronalen Netzwerkmodell gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung ist;
    • 6 ein Blockschaubild einer beispielhaften Leistungsmatrix darstellt, die korrelierte Leistungs-Hotspots auf verschiedenen Kompilierungsebenen gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung zeigt;
    • 7 ein Blockschaubild eines durch einen Computer umgesetzten Steuerungsablaufs zum Ermitteln von Leistungs-Hotspots in einem neuronalen Netzwerkmodell zur Optimierung gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
    • 8 ein Ablaufplan eines durch einen Computer umgesetzten Verfahrens zum Ermitteln von Leistungs-Hotspots in einem neuronalen Netzwerkmodell und zum Optimieren von einem oder mehreren Leistungs-Hotspots gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung ist;
    • 9 eine Cloud-Computing-Umgebung gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt; und
    • 10 Abstraktionsmodellschichten gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Eine oder mehrere Ausführungsformen der vorliegenden Erfindung stellen durch einen Computer umgesetzte Verfahren, Computersysteme und Computerprogrammprodukte bereit, die zum Ermitteln und Optimieren von Leistungs-Hotspots in neuronalen Netzwerken angeordnet und konfiguriert sind. Eine oder mehrere Ausführungsformen sind konfiguriert, um Anweisungsadress- (IA) Zuordnungsdateien von Mehrebenen-Zwischendarstellungen (MLlR) für ein neuronales Netzwerkmodell zu verwenden, um das Problem eines Ermittelns von Leistungs-Hotspots in neuronalen Netzwerkknoten zu lösen, einschließlich eines Ermittelns von Leistungs-Hotspots auf verschiedenen Kompilierungsebenen, um die Leistung des neuronalen Netzwerks zu optimieren. Gemäß einer oder mehreren Ausführungsformen werden MLIR-IA-Zuordnungsdateien genutzt, um Anweisungsadressbeispiele zu Namens-/Speicherort-Elementen in der MLlR-Kompilierung zuzuordnen, die MLIR-Operationen von Dialekten und MLlR-Durchläufe sowie neuronale Netzwerkknoten umfassen können. Die MLIR-IA-Zuordnungsdateien und MLIR-Dialekte werden genutzt, um ein Datenflussdiagramm und MLIR-Elemente mit Index-Informationen von Leistungs-Hotspots zu kommentieren. Ferner suchen und finden mehrere Ausführungsformen die wichtigsten neuronalen Netzwerkoperationen, die wichtigsten Operationen auf jeder Compiler-Ebene und auch die wichtigsten Bereiche von Leistungsanweisungen.
  • In der Leistungsanalyse treten übergreifende praktische Fragen auf, wie zum Beispiel welche Teile des Programms die meiste Ausführungszeit in Anspruch nehmen, die für ein tatsächliches Leistungsproblem indikativ ist, das behoben werden muss, und wie das Leistungsproblem behoben werden kann. Die Codebereiche, die die meiste Ausführungszeit in Anspruch nehmen, die auch als die Zentralverarbeitungseinheits- (CPU) Zeit bezeichnet wird, werden als Leistungs-Hotspots bezeichnet. Leistungs-Hotspots können auch als Abschnitte von Code bezeichnet werden, die die meiste CPU-Nutzung erfordern, zum Beispiel einen CPU-Prozentsatz für Anweisungen über einen bestimmten Zeitraum im Vergleich mit anderen Code-Abschnitten. Die Leistungs-Hotspots sind die besten Stellen zum Abstimmen und Optimieren, da ein geringer Aufwand dafür, einen Leistungs-Hotspot schneller zu machen, in dem neuronalen Netzwerkmodus eine große Leistungsverbesserung haben kann. Es kann schwierig sein, einen Leistungs-Hotspot in einem neuronalen Netzwerkmodell zu finden. Ein einzelnes Modul ohne Funktionsebenen-Symbole kann in einem neuronalen Netzwerkmodul vorhanden sein, und darin können wichtige Anweisungen (d.h. die den Leistungs-Hotspot verursachen) in zehntausend Anweisungen oder mehr sein. Selbst wenn es möglich wäre, die wichtigsten grundlegenden Blockmuster zu finden, wäre es schwierig zu erkennen, welcher Teil optimiert werden soll.
  • Als technische Lösungen und Vorteile zum Verbessern des Bestimmens und der Ermittlung von Leistungs-Hotspots für neuronale Netzwerkmodelle sind eine oder mehrere Ausführungsformen konfiguriert, um zu ermitteln, welche neuronalen Netzwerkknoten in dem Diagramm die Leistungs-Hotspots sind und/oder welche Operationen in der MLlR Leistungs-Hotspots sind, wodurch Leistungs-Hotspots des neuronalen Netzwerks ermittelt werden. Eine oder mehrere Ausführungsformen stellen die Möglichkeit bereit, Leistungs-Hotspots auf verschiedenen Ebenen zu optimieren (d.h. zu verbessern), einschließlich verschiedener Kompilierungsebenen des neuronalen Netzwerkmodells, wie beispielsweise MLIP-Kompilierungsebenen. Es sollte klar sein, dass Leistungs-Hotspot, Hotspot, Hotspot-Informationen, wichtige Indexinformationen, wichtig usw. austauschbar genutzt werden können, um auf eine oder mehrere Anweisungen und/oder Operationen zu verweisen, die mehr Ausführungszeit (d.h. CPU-Zeit) in Anspruch nehmen und/oder mehr Nutzung/prozentualen Anteil der CPU verglichen mit anderen Anweisungen/Operationen und/oder verglichen mit einem vorbestimmten Schwellenwert erfordern. Durch Bestimmen von Leistungs-Hotspots in einer der Zwischendarstellungen auf untergeordneter Ebene und/oder übergeordneter Ebene können Optimierungen auf jeder Ebene vorgenommen werden, um die Ausführung des neuronalen Netzwerkmodells zu verbessern, wodurch die Funktionsweise des Computersystems (selbst) verbessert wird, das das neuronale Netzwerkmodell ausführt. Ein Bestimmen von Leistungs-Hotspots zum Optimieren für ein neuronales Netzwerkmodell kann die Ausführungszeit verringern (d.h. die Laufzeit verringern), die CPU-Nutzung reduzieren, die Arbeitsspeichernutzung reduzieren, die Bandbreite reduzieren usw.
  • Unter folgender Bezugnahme auf 1 wird allgemein ein Computersystem 100 gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung gezeigt. Das Computersystem 100 kann ein elektronisches Computer-Framework sein, das unter Einsatz von verschiedenen Datenübertragungstechnologien eine beliebige Anzahl und Kombination von Datenverarbeitungseinheiten und Netzwerken aufweist und/oder verwendet, wie hierin beschrieben. Das Computersystem 100 ist problemlos skalierbar, erweiterbar und modular mit der Fähigkeit, zu verschiedenen Diensten zu wechseln oder einige Funktionen unabhängig von anderen neu zu konfigurieren. Das Computersystem 100 kann zum Beispiel ein Server, Desktop-Computer, Laptop-Computer, Tablet-Computer oder Smartphone sein. In einigen Beispielen kann das Computersystem 100 ein Cloud-Computing-Knoten sein. Das Computersystem 100 kann in dem allgemeinen Kontext von Anweisungen beschrieben werden, die durch ein Computersystem ausführbar sind, wie beispielsweise Programmmodule, die von einem Computersystem ausgeführt werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. enthalten, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen umsetzen. Das Computersystem 100 kann in verteilten Cloud-Computing-Umgebungen betrieben werden, wobei Aufgaben von entfernt angeordneten Verarbeitungseinheiten ausgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können Programmmodule sich sowohl in lokalen als auch entfernt angeordneten Computersystem-Speichermedien befinden, die Arbeitsspeicher-Speichereinheiten enthalten.
  • Wie in 1 gezeigt, hat das Computersystem 100 eine oder mehrere Zentralverarbeitungseinheiten (CPUs) 101a, 101b, 101c usw. (auf die insgesamt oder allgemein als Prozessor(en) 101 verwiesen wird). Die Prozessoren 101 können ein Einkernprozessor, ein Mehrkernprozessor, ein Datenverarbeitungs-Cluster oder jede Anzahl von anderen Konfigurationen sein. Die Prozessoren 101, die auch als Verarbeitungsschaltungen bezeichnet werden, sind über einen Systembus 102 mit einem Systemarbeitsspeicher 103 und verschiedenen anderen Komponenten verbunden. Der Systemarbeitsspeicher 103 kann einen Nur-Lese-Speicher (ROM) 104 und einen Direktzugriffspeicher (RAM) 105 umfassen. Der ROM 104 ist mit dem Systembus 102 verbunden und kann ein grundlegendes Eingabe/Ausgabe-System (BIOS) oder seine Nachfolger wie Unified Extensible Firmware Interface (UEFI) umfassen, die bestimmte grundlegende Funktionen des Computersystems 100 steuern. Der RAM ist ein Lese-Schreib-Arbeitsspeicher, der mit dem Systembus 102 zur Verwendung durch die Prozessoren 101 verbunden ist. Der Systemarbeitsspeicher 103 stellt einen temporären Arbeitsspeicherbereich für Operationen der Anweisungen während der Operation bereit. Der Systemarbeitsspeicher 103 kann einen Direktzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen Flash-Speicher oder beliebige andere geeignete Arbeitsspeichersysteme umfassen.
  • Das Computersystem 100 weist einen Eingabe/Ausgabe- (E/A) Adapter 106 und einen Datenübertragungsadapter 107 auf, die mit dem Systembus 102 verbunden sind. Der E/A-Adapter 106 kann ein Small-Computer-System-Interface- (SCSI) Adapter sein, der mit einer Festplatte 108 und/oder irgendeiner anderen ähnlichen Komponente Daten austauscht. Der E/A-Adapter 106 und die Festplatte 108 werden hierin gemeinsam als ein Massenspeicher 110 bezeichnet.
  • Eine Software 111 zur Ausführung auf dem Computersystem 100 kann in dem Massenspeicher 110 gespeichert werden. Der Massenspeicher 110 ist ein Beispiel für ein konkretes Speichermedium, das durch die Prozessoren 101 lesbar ist, wobei die Software 111 als Anweisungen zur Ausführung durch die Prozessoren 101 gespeichert ist, um das Computersystem 100 zu veranlassen zu arbeiten, wie hierin im Folgenden unter Bezugnahme auf die verschiedenen Figuren beschrieben. Beispiele für ein Computerprogrammprodukt und die Ausführung einer derartigen Anweisung wird hierin ausführlicher erörtert. Der Datenübertragungsadapter 107 verbindet den Systembus 102 mit einem Netzwerk 112, das ein externes Netzwerk sein kann, das ermöglicht, dass das Computersystem 100 mit anderen derartigen Systemen Daten austauschen kann. In einer Ausführungsform speichern ein Abschnitt des Systemarbeitsspeichers 103 und der Massenspeicher 110 zusammen ein Betriebssystem, das jedes geeignete Betriebssystem sein kann, um die Funktionen der verschiedenen in 1 gezeigten Komponenten zu koordinieren.
  • Zusätzliche Eingabe/Ausgabe-Einheiten werden als mit dem Systembus 102 über einen Anzeigeadapter 115 und einen Schnittstellenadapter 116 verbunden gezeigt. In einer Ausführungsform können die Adapter 106, 107, 115 und 116 mit einem oder mehreren E/A-Bussen verbunden sein, die mit dem Systembus 102 über eine dazwischenliegende Busbrücke (nicht gezeigt) verbunden sind. Eine Anzeige 119 (z.B. ein Bildschirm oder ein Anzeigemonitor) ist mit dem Systembus 102 durch den Anzeigeadapter 115 verbunden, der einen Grafik-Controller zum Verbessern der Leistung von grafikintensiven Anwendungen und einen Video-Controller umfassen kann. Eine Tastatur 121, eine Maus 122, ein Lautsprecher 123 usw. können mit dem Systembus 102 über den Schnittstellenadapter 116 verbunden werden, der zum Beispiel einen Super-E/A Chip umfassen kann, der mehrere Einheitenadapter in eine einzelne integrierte Schaltung integriert. Geeignete E/A-Busse zum Verbinden von Peripherie-Einheiten, wie beispielweise Festplatten-Controller, Netzwerkadapter und Grafikadapter umfassen in der Regel gemeinsame Protokolle wie zum Beispiel das Peripheral Component Interconnect (PCI) und Peripheral-Component-Interconnect-Express (PCIe). Somit, wie in 1 konfiguriert, umfasst das Computersystem 100 eine Verarbeitungsfähigkeit in der Form der Prozessoren 101, und eine Speicherfähigkeit, die den Systemarbeitsspeicher 103 und den Massenspeicher 110, Eingabemittel wie beispielsweise die Tastatur 121 und die Maus 122 umfasst, und eine Ausgabefähigkeit, die den Lautsprecher 123 und die Anzeige 119 umfasst.
  • In einigen Ausführungsformen kann der Datenübertragungsadapter 107 Daten durch Verwenden jeder geeigneten Schnittstelle oder jedes geeigneten Protokolls übertragen, wie zum Beispiel unter anderem das Internet-Small-Computer-System-Interface. Das Netzwerk 112 kann unter anderem ein zellulares Netzwerk, ein Funknetzwerk, ein Weitverkehrsnetzwerk (WAN), ein lokales Netzwerk (LAN) oder das Internet sein. Eine externe Datenverarbeitungseinheit kann mit dem Computersystem 100 über das Netzwerk 112 verbunden sein. In einigen Beispielen kann eine externe Datenverarbeitungseinheit ein externer Web-Server oder ein Cloud-Computing-Knoten sein
  • Es sollte klar sein, dass das Blockschaubild von 1 nicht angeben soll, dass das Computersystem 100 alle in 1 gezeigten Komponenten umfassen muss. Das Computersystem 100 kann stattdessen weniger oder mehr geeignete Komponenten umfassen, die in 1 nicht veranschaulicht sind (z.B. zusätzliche Arbeitsspeicherkomponenten, eingebettete Controller, Module, zusätzliche Netzwerkschnittstellen usw.). Ferner können die hierin beschriebenen Ausführungsformen in Bezug auf das Computersystem 100 mit jeder geeigneten Logik umgesetzt werden, wobei die Logik, wie hierin angegeben, jede geeignete Hardware umfassen kann (z.B. unter anderem einen Prozessor, einen eingebetteten Controller oder eine anwendungsspezifische integrierte Schaltung, Software (z.B. unter anderem eine Anwendung), Firmware oder jede geeignete Kombination von Hardware, Software und Firmware in verschiedenen Ausführungsformen.
  • Unter folgender Bezugnahme auf 2 wird ein beispielhaftes neuronales Netzwerkmodell/eine beispielhafte neuronale Netzwerkarchitektur 200 gemäß einer oder mehreren Ausführungsform gezeigt. Das neuronale Netzwerkmodell/die neuronale Netzwerkarchitektur 200 kann durch Verwenden von einer oder mehreren Software-Anwendungen 111 auf dem Computersystem 100 umgesetzt werden. In einer oder mehreren Ausführungsformen kann das Computersystem 100 ein oder mehrere Elemente von spezialisierter Hardware umfassen, wie beispielsweise Beschleuniger zur Verwendung mit dem neuronalen Netzwerkmodell/der neuronalen Netzwerkarchitektur. Ein Betrieb eines beispielhaften neuronalen Netzwerkmodells 200 wird im Folgenden erörtert. Während einer Feed-Forward-Operation sendet jedes von einem Satz von Eingangsneuronen 202 eine entsprechende Eingangsspannung parallel zu einer jeweiligen Zeile von Gewichtungen 204. Jede der Gewichtungen 204 hat einen einstellbaren Widerstandswert, sodass eine Stromausgabe von der Gewichtung 204 zu einem jeweiligen verborgenen Neuron 206 fließt, um den gewichteten Eingang darzustellen. Die Stromausgabe durch eine bestimmte Gewichtung wird als I = V/r bestimmt, wobei V die Eingangsspannung von dem Eingangsneuron 202 ist, und r der eingestellte Widerstand der Gewichtung 204 ist. Der Strom von jeder Gewichtung wird spaltenweise hinzugefügt und fließt zu einem verborgenen Neuron 206. Ein Satz von Referenzgewichtungen 207 hat einen festen Widerstand und kombiniert ihre Ausgaben zu einem Referenzstrom, der für jedes der verborgenen Neuronen 206 bereitgestellt wird. Da Leitfähigkeitswerte nur positive Werte sein können, wird eine Referenzleitfähigkeit benötigt, um sowohl positive als auch negative Werte in der Matrix zu encodieren. Die durch die Gewichtungen 204 erzeugten Ströme werden kontinuierlich bewertet und sind positiv, und daher werden die Referenzgewichtungen 207 verwendet, um einen Referenzstrom bereitzustellen, oberhalb dessen Ströme als mit positiven Werten anzusehen sind, und unterhalb dessen Ströme als mit negativen Werten anzusehen sind. In einigen Ausführungsformen kann jede Anordnung von Gewichtungen eine oder mehrere Referenzgewichtungen mit einem statischen Widerstand umfassen.
  • Als eine Alternative zum Verwenden von Referenzgewichtungen 207 kann eine bzw. können mehrere Ausführungsformen separate Anordnungen von Gewichtungen 204 verwenden, um negative Werte zu erfassen. Jeder Ansatz hat Vorteile und Nachteile. In einigen Ausführungsformen ist ein Verwenden der Referenzgewichtungen 207 im Chip-Bereich effizienter, aber Referenzwerte müssen eng aufeinander abgestimmt werden. In einer oder mehreren Ausführungsformen umfasst die Verwendung einer separaten Anordnung für negative Werte kein enges Abstimmen, da jeder Wert ein Paar von Gewichtungen hat, mit denen verglichen wird. Der Ansatz einer negativen Gewichtungsmatrix verwendet jedoch ungefähr den doppelten Chip-Bereich verglichen mit der einzelnen Referenzgewichtungsspalte. Außerdem generiert die Referenzgewichtungsspalte einen Strom, der zum Vergleich auf jedes Neuron kopiert werden muss, wogegen eine negative Matrixanordnung einen Referenzwert direkt für jedes Neuron bereitstellt. In der Ausführungsform mit negativer Anordnung werden die Gewichtungen 204 sowohl von positiven als auch negativen Anordnungen aktualisiert, aber dies erhöht auch ein Signal-Rausch-Verhältnis, da jeder Gewichtungswert eine Differenz von zwei Leitfähigkeitswerten ist. Die beiden Ausführungsformen stellen eine identische Funktionalität beim Encodieren eines negativen Werts bereit, und ein Fachmann wird in der Lage sein, eine geeignete Ausführungsform für die zur Verfügung stehende Anwendung auszuwählen.
  • Die verborgenen Neuronen 206 verwenden die Ströme aus der Anordnung von Gewichtungen 204 und die Referenzgewichtungen 207, um eine Berechnung durchzuführen. Die verborgenen Neuronen 206 geben dann eine eigene Spannung an eine weitere Anordnung von Gewichtungen 207 aus. Diese Anordnung arbeitet auf dieselbe Weise, wobei eine Spalte von Gewichtungen 204 eine Spannung von ihren jeweiligen verborgenen Neuronen 206 empfängt, um eine gewichtete Stromausgabe zu erzeugen, die zeilenweise hinzugefügt wird und für das Ausgangsneuron 208 bereitgestellt wird.
  • Es sollte klar sein, dass jede Anzahl dieser Stufen umgesetzt werden kann, indem zusätzliche Schichten von Anordnungen und verborgenen Neuronen 206 dazwischengeschaltet werden. Es sollte auch angemerkt werden, dass einige Neuronen konstante Neuronen 209 sein können, die für die Anordnung eine konstante Spannung bereitstellen. Die konstanten Neuronen 209 können unter den Eingangsneuronen 202 und/oder den verborgenen Neuronen 206 vorhanden sein und werden nur während einer Feed-Forward-Operation verwendet.
  • In einer oder mehreren Ausführungsformen stellen die Ausgangsneuronen 208 während einer Rückpropagierung eine Spannung zurück über die Anordnung von Gewichtungen 204 bereit. Die Ausgangsschicht vergleicht die generierte Netzwerkantwort auf Schulungsdaten und berechnet einen Fehler. Der Fehler wird auf die Anordnung als ein Spannungsimpuls angewendet, wobei die Höhe und/oder Dauer des Impulses proportional zu dem Fehlerwert moduliert wird. In diesem Beispiel empfängt eine Zeile von Gewichtungen 204 parallel eine Spannung von einem jeweiligen Ausgangsneuron 208 und wandelt diese Spannung in einen Strom um, der spaltenweise hinzugefügt wird, um einen Eingang zu verborgenen Neuronen 206 bereitzustellen. Die verborgenen Neuronen 206 stellen kombiniert das gewichtete Rückmeldesignal mit einer Ableitung seiner Feed-Forward-Berechnung bereit und speichern einen Fehlerwert vor einem Ausgeben einer Rückmeldesignalspannung an seine jeweilige Spalte von Gewichtungen 204. Die Rückpropagierung verläuft durch das gesamte neuronale Netzwerkmodell 200, bis alle verborgenen Neuronen 206 und die Eingangsneuronen 202 einen Fehlerwert gespeichert haben.
  • In einer oder mehreren Ausführungsformen wenden die Eingangsneuronen 202 und die verborgenen Neuronen 206 während Gewichtungsaktualisierungen eine erste Gewichtungsaktualisierungsspannung in Vorwärtsrichtung an, und die Ausgangsneuronen 208 und die verborgenen Neuronen 206 wenden eine zweite Gewichtungsaktualisierungsspannung in Rückwärtsrichtung durch das neuronale Netzwerkmodell 200 an. Die Kombinationen dieser Spannungen erstellen eine Zustandsänderung in jeder Gewichtung 204, die veranlasst, dass die Gewichtung 204 einen neuen Widerstandswert annimmt. Auf diese Weise können die Gewichtungen 204 geschult werden, das neuronale Netzwerkmodell 200 während seiner Verarbeitung an Fehler anzupassen. Es ist anzumerken, dass die drei Betriebsmodi Vorwärtskopplung, Rückpropagierung und Gewichtungsaktualisierung, sich nicht überlappen.
  • 3 ist ein Blockschaubild eines Systems 300 zum Ermitteln und Optimieren von Leistungs-Hotspots in einem neuronalen Netzwerkmodell gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung. 3 stellt ein oder mehrere mit einem Computersystem 320 verbundene Computersysteme 302 dar, die in Datenaustausch stehen, um Informationen auszutauschen, wie hierin erörtert. Das Computersystem 320 kann mit den Computersystemen 302 über ein drahtgebundenes und/oder ein drahtloses Netzwerk in Datenaustausch stehen. Elemente des Computersystems 100 können in dem Computersystem 302 und dem Computersystem 320 verwendet und/oder in diese integriert werden. Software-Anwendungen 304 können als die Software 111 umgesetzt werden, die auf einem oder mehreren Prozessoren 101 ausgeführt wird, wie in 1 erörtert. Desgleichen können ein Compiler 322, Diagnosewerkzeuge 306 und das neuronale Netzwerkmodell 200 durch Verwenden der Software 111 umgesetzt werden, die konfiguriert ist, um auf einem oder mehreren Prozessoren 101 ausgeführt zu werden.
  • Ein Compiler 322 wird genutzt, um ein neuronales Netzwerkmodell zu kompilieren, wie zum Beispiel das neuronale Netzwerkmodell 200 oder jedes andere neuronale Netzwerkmodell. Der Compiler 322 und das neuronale Netzwerkmodell 200 können im Computersystem 320, im Computersystem 302 und/oder beiden ausgeführt werden. Der Compiler 322 ist ein zwischengeschalteter Mehrebenen- (MLlR) Compiler und/oder verwendet ein MLIR-Compiler-Framework. MLIR ist eine moderne Compiler-Infrastruktur, die wiederverwendbar und erweiterbar ist. Der MLIR-Compiler kann Dialekte und Optimierungsdurchläufe definieren. Ein Dialekt dient als eine Abstraktionsebene oder Zwischendarstellung, und ein Optimierungsdurchlauf dient zum Ermöglichen einer Optimierung auf einer Abstraktionsebene oder einer Transformation zwischen Abstraktionsebenen. Es gibt Dialekte in MLIR, die einsatzbereit sind, z.B. Ilvm, std, scf und affine. Der Ilvm-Dialekt ist ein Dialekt auf untergeordneter Ebene. Der Ilvm-Dialekt hüllt die LLVM-Zwischendarstellungs- (IR) Typen und Anweisungen in MLlR-Typen und -Operationen. Der scf-Dialekt umfasst Standardoperationen wie zum Beispiel load, store, addi, addf, absf und call. Der scf-Dialekt definiert Steuerungsablaufoperationen wie beispielsweise for und if. Der affine-Dialekt stellt eine Abstraktion für affine-Operationen und Analysen bereit. Ein Fachmann versteht einen Mehrebenen-Zwischencompiler.
  • Ferner kann der Compiler 322 zusätzlich durch Verwenden des Open Neural Network Exchange (ONNX) als ein Format umgesetzt werden, um das Eingabemodell (z.B. das neuronale Netzwerkmodell 200) für den Compiler 322 in Kombination mit MLIR darzustellen. ONNX ist ein maschinenunabhängiges Open-Source-Format und wird weitverbreitet zum Austauschen von neuronalen Netzwerkmodellen verwendet, wie ein Fachmann verstehen wird. Der Compiler 322 kann durch Verwenden von MLIR, die eine moderne Open-Source-Compiler-Infrastruktur für Mehrebenen-Zwischendarstellungen ist, und durch Verwenden des LLVM Project geschrieben werden. Das LLVM Project ist eine Compiler-Infrastruktur, die eine Sammlung von modularen und wiederverwendbaren Compiler- und Werkzeugketten-Technologien ist. Der Compiler 322 kann austauschbar als ONNX-MLIR-Compiler, MLIR-Compiler und/oder einfach Compiler bezeichnet werden.
  • Das neuronale Netzwerkmodell 200 kann in ONNX oder dem ONNX-Format geschrieben und/oder generiert werden. Das neuronale Netzwerkmodell 200 kann ein neuronales ONNX-Netzwerkmodell 200 sein, das als das ONNX-Modell bezeichnet werden kann. Das neuronale Netzwerkmodell kann auch als das künstliche Intelligenz- (KI) Modell bezeichnet werden. Das neuronale Netzwerkmodell 200 kann ausgeführt werden, was ein (erstes) Kompilieren der Anweisungen des neuronalen Netzwerkmodells 200 durch Verwenden des Compilers 322 in ein ausführbares Format (wie zum Beispiel eine ausführbare Datei 334) zur Ausführung durch das Computersystem 302 und/oder das Computersystem 320 während der Laufzeit umfasst. In einer oder mehreren Ausführungsformen können die Software-Anwendungen 304 genutzt werden, um die Kompilierung des neuronalen Netzwerkmodells 200 und (anschließend) die Ausführung des ausführbaren/kompilierten neuronalen Netzwerkmodells 200 zu veranlassen und/oder zu initiieren.
  • 4 ist ein Blockschaubild einer beispielhaften Architektur eines ONNX-MLIR-Compilers beim Kompilieren eines ONNX-Modells (z.B. des Netzwerkmodells 200) gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung. In 4 werden Namen mit vorangestelltem ‚--‘ als Durchläufe bezeichnet. In 4 ist die Eingabe ein ONNX-Modell (z.B. das neuronale Netzwerkmodell 200) und die Ausgabe ist eine Bibliothek, die den kompilierten Code enthält (z.B. die ausführbare Datei 334). Die Ausgabebibliothek kann eine Eintragsfunktion mit der Bezeichnung „_dyn_entry_point_main_graph“ enthalten, deren Eingaben und Ausgaben jeweils denen der Eingaben und Ausgaben des ONNX-Modells ähnlich sind. Zum Ausführen einer Schlussfolgerung mit der Ausgabebibliothek schreiben Benutzer ihr Programm, um die Eintragsfunktion aufzurufen, indem Eingaben an die Funktion übergeben und Ergebnisse erhalten werden. Obwohl weniger oder mehr Dialekte vorhanden sein können, gibt es in onnx-mlir fünf Hauptdialekte, und diese Dialekte sind onnx, krnl, affine, std und Ilvm, die in vier Abstraktionsebenen organisiert sind. Die erste Abstraktionsebene ist eine Darstellung auf übergeordneter Ebene von ONNX-Operationen. Die erste Abstraktionsebene besteht aus Operationen in den Dialekten onnx und std, wobei der onnx-Dialekt automatisch über eine Importfunktion generiert wird, die zum Beispiel ein Python®-Skript oder ein anderes Skript ist. Die zweite Abstraktionsebene umfasst die Dialekte krnl, affine und std. Der krnl-Dialekt stellt eine Darstellung bereit, die für Schleifenoptimierungen geeignet ist, die fähig ist, affine-Transformationen wie beispielsweise Kachel, Versatz und Permutierung problemlos auszuführen. Der krnl-Dialekt dient als ein Zwischendialekt zum effizienten Herabsetzen des onnx-Dialekts auf Dialekte auf untergeordneter Ebene (z.B. affine, std und Ilvm). Die dritte Abstraktionsebene umfasst die Dialekte affine und std, wobei vorhandene Optimierungsdurchläufe in MLIR frei angewendet werden können. Die vierte Abstraktionsebene umfasst nur den Dialekt Ilvm, der zum Generieren von Bitcode (d.h. Binärcode) (d.h. die ausführbare Datei 334) bereit ist.
  • Es gibt MLIR-Durchläufe zum Umwandeln eines Dialekts in einen anderen und zum Ausführen von Optimierungen an einem spezifischen Dialekt. Ein Mehrdurchlauf-Compiler ist ein Typ von Compiler, der den Quellcode oder abstrakten Syntaxbaum eines Programms mehrmals verarbeitet. Dies steht im Gegensatz zu einem Einmaldurchlauf-Compiler, der das Programm nur einmal durchläuft. Jeder Durchlauf nimmt das Ergebnis des vorherigen Durchlaufs als die Eingabe auf und erstellt eine Zwischenausgabe. Auf diese Weise wird der (Zwischen-) Code Durchlauf für Durchlauf verbessert, bis der letzte Durchlauf den endgültigen Code erzeugt. Der onnx-Dialekt wird über einen Durchlauf --convert-onnxto-krnl in den krnl-Dialekt umgewandelt. Anschließend wird der krnl-Dialekt (ausgenommen einige seiner Operationen) über einen Durchlauf --convert-krnl-to-affine in die affine- und std-Dialekte umgewandelt. Die verbleibenden Operationen in krnl-Dialekt und Operationen in affine- und std-Dialekten werden über den Durchlauf --convert-krnl-to-Ilvm direkt in Anweisungen in Ilvm umgewandelt. Die rechte Seite von 4 zeigt Optimierungsdurchläufe in einem schattierten Muster, die auf jeder Abstraktionsebene ausgeführt werden können. Es sollte klar sein, dass die Liste von Optimierungsdurchläufen nicht erschöpfend ist. Wie hierin angemerkt, stellt MLIR ein erweiterbares Framework für Transformationen an Operationen bereit, die bekannte Konzepte von Compiler-Durchläufen verwenden. Ein Ermöglichen eines willkürlichen Satzes von Durchläufen an einem willkürlichen Satz von Operationen führt zu einer signifikanten Skalierungs-Herausforderung, da jede Transformation potenziell die Semantiken jeder Operation berücksichtigen muss. MLIR befasst sich mit dieser Komplexität jedoch dadurch, dass Operationssemantiken zugelassen werden, die durch Verwenden von Eigenarten und Schnittstellen abstrakt beschrieben werden sollen, wodurch Transformationen in die Lage versetzt werden, allgemeiner an Operationen zu arbeiten. Eigenarten beschreiben oft Überprüfungseinschränkungen auf einer gültigen IR, wodurch ermöglicht wird, komplexe Invarianten zu erfassen und zu prüfen.
  • Der Compiler 322 ist konfiguriert, um Zuordnungsdateien 330 auf jeder Stufe des Kompilierungs-/Umwandlungsprozesses zu generieren, wie in 7 dargestellt. Zum Beispiel umfassen Zuordnungsdateien 330 in 3: eine onnx-Zwischendarstellungs- (IR) Zuordnungsdatei, die zum Umwandeln des ONNX-Modells (z.B. das neuronale Netzwerkmodell 200 und/oder der künstliche Intelligenz-Modus) in die onnx-IR (Code) verwendet wird; eine krnl-IR-Zuordnungsdatei, die zum Umwandeln der onnx-IR (Code) in die krnl-IR (Code) verwendet wird; eine affine-IR-Zuordnungsdatei, die zum Umwandeln der krnl-IR (Code) in affine-IR (Code) verwendet wird; und eine LLVM-IR-Zuordnungsdatei, die zum Umwandeln der affine-IR (Code) in Ilvm-IR (Code) verwendet wird. Der Compiler 322 generiert eine Listendatei 332, die zum Umwandeln der Ilvm-IR (Code) in eine ausführbare Datei 334 verwendet wird, die auch als eine ausführbare Bibliothek, Binärcode, Assemblersprache usw. bezeichnet wird, die fähig ist, durch die Hardware/Software des Computersystems 302 und/oder des Computersystems 320, wie in 7 beschrieben, gelesen und betrieben zu werden. Dementsprechend wird die ausführbare Datei 334 durch das Computersystem 302 (und/oder das Computersystem 320) betrieben/ausgeführt, was einem Betreiben/Ausführen des neuronalen Netzwerkmodells 200 zum Durchführen einer Schlussfolgerung entspricht, wie ebenfalls in 7 dargestellt wird. Zum Beispiel kann das neuronale Netzwerkmodell 200 so ausgelegt sein, dass es eingehende Daten empfängt und die Daten als Ausgabe klassifiziert. Während der Laufzeit generiert das Computersystem 302 eine Datendatei 340, die verschiedene Informationen enthält, darunter Anweisungen, Anweisungsadressen, Leistungskennzahlendaten usw., die verfügbar sind, um Verbesserungen an dem neuronalen Netzwerkmodell 200 zu unterstützen, wie im Folgenden hierin erörtert wird.
  • 5 ist ein Ablaufplan eines durch einen Computer umgesetzten Prozesses 500 zum Ermitteln von Leistungs-Hotspots in einem neuronalen Netzwerkmodell gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung. Der durch einen Computer umgesetzte Prozess 500 kann durch Verwenden des Computersystems 302 in 2 durchgeführt werden. Der durch einen Computer umgesetzte Prozess 500 in 5 wird unter Bezugnahme auf 2 beschrieben.
  • An einem Block 502, nach einer Laufzeit, die die Datendatei 340 generiert hat, wird die Software-Anwendung 304 konfiguriert, um Beispieldaten 352 aus der Datendatei 340 zu sammeln. Die Beispieldaten 352 können ein Abschnitt der Datendatei 340 sein. In einer oder mehreren Ausführungsformen können die Beispieldaten 352 die gesamte Datendatei 304 umfassen. Die Datendatei 340 wird als Ergebnis eines Ausführens des neuronalen Netzwerkmodells 200 generiert, das vorher kompiliert wurde. Die Datendatei 340 umfasst Anweisungen, Anweisungsadressen der Anweisungen, Leistungskennzahlen für jede Anweisung und/oder Anweisungsadresse usw. Leistungskennzahlen umfassen Cache-Fehlertreffer, Informationen von Hardware-Zählern, Informationen von Software-Zählern, CPU-Nutzung, Arbeitsspeichernutzung usw. Die Beispieldatei 352 umfasst sämtliche der Informationstypen, die in der Datendatei 340 enthalten sind, zusammen mit der Anzahl von Beispielvorkommen. Verschiedene Computerarchitekturen können verschiedene Zählernummern haben. Eine Architektur kann zum Beispiel eine Zähleranzahl von 10 bis 1000 haben. In einer oder mehreren Ausführungsformen kann die Datendatei 340 eine ETB-Datei sein, wie in dem Steuerungsablauf von 7 dargestellt.
  • An einem Block 504 wird die Software-Anwendung 304 konfiguriert, um Leistungs-Hotspots und entsprechende wichtige Anweisungen in den Beispieldaten 352 zu bestimmen und zu identifizieren. Zum Identifizieren von Leistungs-Hotspots kann die Software-Anwendung 304 ein oder mehrere Diagnosewerkzeuge 306 umfassen und/oder aufrufen, um Anweisungen zu identifizieren, die einen vorab bestimmten Schwellenwert für eine Kennzahl und/oder eine Kombination von Kennzahlen erfüllen und/oder überschreiten. Ein Leistungs-Hotspot ist eine Anweisung, eine Operation und/oder ein Code, die bzw. der das Computersystem 302 (und/oder das Computersystem 320) veranlasst, einen vorab bestimmten Schwellenwert für eine bzw. mehrere Kennzahlen zu erfüllen und/oder zu überschreiten. Zum Beispiel können Leistungs-Hotspots sich auf ein Bestimmen beziehen, dass eine oder mehrere Anweisungen, Operationen und/oder Teile von Code einen Schwellenwert oder eine Kombination von vorab bestimmten Schwellenwerten erfüllen und/oder überschreiten, die sich auf die CPU-Nutzung (z.B. eine Prozessornutzung wie zum Beispiel ein Prozentsatz), Ausführungszeit (z.B. Augenblicke, Takte usw.), Cache-Fehlertreffer, Arbeitsspeichernutzung usw. beziehen. In einigen Fällen, selbst wenn die Anweisung, die Operation und/oder der Code keinen vorab bestimmten Schwellenwert erfüllen und/oder überschreiten, könnte ein Leistungs-Hotspot eine durchschnittliche Leistungskennzahl verglichen mit anderen Anweisungen in den Beispieldaten 352 überschreiten. Zum Beispiel könnte ein Leistungs-Hotspot außerhalb des statistischen Durchschnitts für eine Leistungskennzahl und/oder eine Kombination von Leistungskennzahlen liegen. Die Software-Anwendung 304 und/oder die Diagnosewerkzeuge 306 können Beispieldaten 352 analysieren, um Leistungskennzahlen zusammen mit den zugehörigen Anweisungen zu bestimmen, die einen Schwellenwert oder eine Kombination von vorab bestimmten Schwellenwerten erfüllen und/oder überschreiten. Die Leistungs-Hotspot-Analyse kann manuell, automatisch und/oder halbautomatisch erfolgen. In einer oder mehreren Ausführungsformen verwenden erfahrende Leistungsanalysten und Entwickler Analysewerkzeuge zum Durchlaufen der Leistungs-Hotspots auf verschiedenen Ebenen und um die wertvollsten Teile zu finden, die optimiert werden sollen. Die Software-Anwendung 304 und/oder die Diagnosewerkzeuge 306 können bekannte Verfahren und Techniken für Diagnosen und die Leistung von Software nutzen, wie von einem Fachmann verstanden wird.
  • An einem Block 506 wird die Software-Anwendung 304 konfiguriert, um die Listendatei 332 zum Zuordnen von LLVM-IR-Speicherorten zu den Anweisungen in den Beispieldaten 352 zu verwenden, wobei die Anweisungen sich an Anweisungsadressen befinden, zum Beispiel im Arbeitsspeicher 308. Die Anweisungen sind lauffähiger Code wie die ausführbare Datei 334, die in 4 erörtert wurde. Die lauffähigen Anweisungen werden aus der LLVM-IR kompiliert, wie in 4 angemerkt und in 7 veranschaulicht. Somit besteht eine Zuordnungsbeziehung zwischen LLVM-IR und Anweisungsadressen. Die Beziehung wird durch eine Datei dargestellt, die als Listendatei 332 bezeichnet wird. Die Listendatei 332 wird generiert, wenn die LLVM-IR in die ausführbare Datei 334 kompiliert wird, und die ausführbare Datei 334 ist der lauffähige Code, Binärcode, Maschinen-Code usw., der im Arbeitsspeicher 308 gespeichert werden kann. Die LLVM-IR ist der Code der untersten Ebene, der nicht der Binärcode ist. Die Listendatei kann die folgenden Beispielspalten von Tabelle 1 umfassen. *** Tabelle 1 ***
    Anweisungsadresse Symbolname Quelldatei Zeile #
    0x1000 add() math.c 13
  • An einem Block 508 wird die Software-Anwendung 304 konfiguriert, um die Zuordnungsdateien 330 zum Zuordnen der LLVM-IR-Speicherorte und -Informationen zu ihren korrelierten Speicherorten in dem ursprünglichen neuronalen Netzwerkmodell 200 zuzuordnen. Das neuronale Netzwerkmodell 200 (z.B. das ursprüngliche KI-Modell) nimmt mehrere Transformierungsstufen in Anspruch, um das neuronale Netzwerkmodell 200 in den endgültigen lauffähigen Code (z.B. die ausführbare Datei 334) umzuwandeln. Jede Transformierungsstufe hat eine Zuordnungsdatei, und die Kombination dieser Zuordnungsdateien kann genutzt werden, um die LLVM-IR in das neuronale Netzwerkmodell 200 zurück umzuwandeln (z.B. das ursprüngliche KI-Modell). Jede Zuordnungsdatei 330 enthält Beziehungen und Transformationen von der aktuellen Zwischendarstellung zurück auf die vorherige Zwischendarstellung auf übergeordneter Ebene, und von der Zwischendarstellung auf höchster Ebene zurück auf das neuronale Netzwerkmodell 200, wie in 7 dargestellt. Somit kann die Software-Anwendung 304 die Speicherorte der LLVM-IR in dem ursprünglichen Kl-Modell zum Beispiel durch Zuordnen des eingegebenen Codes zu dem ausgegebenen Code ermitteln. Zum Beispiel wird die Software-Anwendung 304 konfiguriert, um die LLVM-IR-Zuordnungsdatei der Zuordnungsdateien 330 zu verwenden, um die LLVM-IR-Speicherorte und -Informationen korrelierten affine-IR-Speicherorten in der affine-IR (Code) zuzuordnen. Desgleichen wird die Software-Anwendung 304 konfiguriert, um die affine-IR-Zuordnungsdatei der Zuordnungsdateien 330 zu verwenden, um die affine-IR-Speicherorte und -Informationen den korrelierten krnl-IR-Speicherorten in der krnl-IR (Code) zuzuordnen. Desgleichen wird die Software-Anwendung 304 konfiguriert, um die krnl-IR-Zuordnungsdatei der Zuordnungsdateien 330 zu verwenden, um krnl-IR-Speicherorte und -Informationen zu korrelierten onnx-IR-Speicherorten in der onnx-IR (Code) zuzuordnen. Die Software-Anwendung 304 wird konfiguriert, um die onnx-IR-Zuordnungsdatei der Zuordnungsdateien 330 zu verwenden, um die onnx-IR-Speicherorte und -Informationen zu dem ONNX-Modell zurück zuzuordnen, das das neuronale Netzwerkmodell 200 ist (d.h. Kl-Modus). Wie ersichtlich ist, werden die Anweisungen in umgekehrter Reihenfolge durch die MLIR-Kompilierstufen verfolgt (z.B. in der umgekehrten Reihenfolge von 4 und der umgekehrten Reihenfolge der Umwandlungen in 7). Die Zuordnungsbeziehungen in jeder einzelnen Zuordnungsdatei (wie beispielsweise die LLVM-IR-Zuordnungsdatei, die affine-IR-Zuordnungsdatei, die krnl-IR-Zuordnungsdatei und die onnx-IR-Zuordnungsdatei) werden verwendet, um jede Anweisungsadresse und/oder Operation durch die MLIR-Kompilierstufen zurück zu verfolgen.
  • An einem Block 510 wird die Software-Anwendung 304 konfiguriert, um eine MLIR-Leistungsmatrix Ebene für Ebene für die wichtigen Anweisungen zu generieren und anzuzeigen, die den verschiedenen Zwischenanweisungen zugeordnet worden sind. 6 ist ein Blockschaubild einer beispielhaften MLIR-Leistungsmatrix, die korrelierte Leistungs-Hotspots auf verschiedenen Kompilierungsebenen gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung zeigt. Die MLIR-Leistungsmatrix kann auf einer Anzeige wie der Anzeige 119 angezeigt werden, wodurch dem Benutzer ermöglicht wird, schnell zu veranschaulichen, welche Operationen optimiert werden können, um einen oder mehrere Hotspots zu korrigieren. Die Software-Anwendung 304 generiert die MLIR-Leistungsmatrix durch Verwenden der Anweisungsadressen der Beispieldaten 352 in Kombination mit den Zuordnungsdateien 330, die Anweisungsadressen umfassen können. Die Leistungsmatrix veranschaulicht die Leistungs-Hotspots, wie auf verschiedenen Ebenen durch Verwenden eines gepunkteten Musters angezeigt wird, sodass der Benutzer die beste Ebene (sowie Operation) zur Optimierung wählen und/oder die Software-Anwendung 304 sie auswählen kann. Zum Beispiel kann die Software-Anwendung 304 auswählen, die LLVM-IR, die affine-IR, die krnl-IR und/oder die ONNX-IR zu optimieren. In der LLVM-IR, der affine-IR, der krnl-IR und/oder der ONNX-IR können die ausgewählten Optimierungen Dialektoperationen und/oder Durchläufe umfassen. Die LLVM-IR ist den Anweisungen der Beispieldaten 352 am nächsten, und die Leistungsmatrix fährt weiter bis hinauf zu der ONNX-IR fort. Das neuronale Netzwerkmodell 200 ist in der Leistungsmatrix nicht veranschaulicht, es sollte aber erkannt werden, dass eine höhere Ebene angezeigt werden kann, die Knoten des neuronalen Netzwerkmodells 200 umfasst; einige dieser Knoten sind Leistungs-Hotspots. In einer oder mehreren Ausführungsformen kann die Software-Anwendung 304 konfiguriert werden, um ein Optimierungswerkzeug (nicht gezeigt) zu optimieren und/oder aufzurufen, um Leistungs-Hotspots in irgendeiner Ebene oder mehreren Ebene zu optimieren, die in der Leistungsmatrix von 6 dargestellt sind. Die Software-Anwendung 304 kann einen Benutzer anweisen, die Optimierung auf einer oder mehreren Ebenen durchzuführen. Einige Benutzer können mit einem Ausführen von Modifizierungen auf einer bestimmten Ebene vertrauter oder sich sicherer sein. Außerdem können einige Ebenen spezifischer für ein Festlegen des Leistungs-Hotspots und/oder eines Aspekts des Leistungs-Hotspots sein, ohne potenziell ein unvorhersehbares Problem zu verursachen. Zum Beispiel kann ein Optimieren und/oder Festlegen einer kleineren Operation oder weniger komplexen Operation auf einer Zwischenebene (während zum Beispiel auf derselben Ebene andere Leistungs-Hotspots nicht optimiert werden) die Leistung verbessern, wobei unvorhersehbare Problemen verursacht werden. Ein Optimieren eines Knotens auf dem neuronalen Netzwerkmodell könnte jedoch zu potenziellen Problemen führen, wenn das neuronale Netzwerkmodell kompiliert ist. Zum Beispiel gibt es nach einer MLIR-Kompilierung Tausende von wichtigen Anweisungen und wichtigen Basisblöcken, die in Millionen von Anweisungen verteilt sind. Wenn diese Anweisungen in einer höheren Ebene aggregiert werden, können nur ein paar wichtige Operationen wie beispielsweise „std.add“ und „matrix bias add“ vorhanden sein. Daher muss der Benutzer diese wichtigen Operationen durch Software-Abstimmung oder Hardware-Beschleunigung nur optimieren, um die maximale Leistungsverbesserung mit minimalem Optimierungsaufwand zu erhalten.
  • In 6 können die Werte von Operationen auf den verschiedenen Kompilierungsebenen CPU-Nutzung, Ausführungszeit, Cache-Fehlertreffer usw. sein, wobei höhere Werte schlechter sind. In diesem Beispiel könnte der Schwellenwert für die Leistungskennzahl zum Beispiel 20 % betragen, sodass jede Operation mit einem Wert von 20 % oder mehr ein Leistungs-Hotspot ist. Durch Anzeigen der Werte mit den Namen der Operation in jeder Ebene (z.B. LLVM-IR, affine-IR, krnl-IR und/oder ONNX-IR) kann der Benutzer einfach und schnell veranschaulichen, wo Verbesserungen und Optimierungen vorgenommen werden können. Zum Beispiel auf Grundlage der Anweisungsadresse zum Benennen von Zuordnungsbeziehungen, die durch die Zuordnungsdateien 330 bereitgestellt wurden, gehören diskrete Anweisungsadressen, die von 0 x 10f bis 0 x 120, 0 x 204 bis x 228 reichen, zu einem Knoten „llvm.add“ in 6. Anschließend werden die Beispiele in einer Adresse 0 × 112, 0 × 120, 0 × 204, 0 × 208 usw. zu einem Ilvm.add-Knoten aggregiert. Die Anzahl von aggregierten Beispielen von Ilvm.add beträgt 40 % der gesamten Beispielanzahl. Auf Grundlage eines Verwendens der Zuordnungsdatei 330 zum Zuordnen von Knoten in einem affine-Durchlauf mit Ilvm-Knoten wird der Ilvm.add-Knoten in den std.addf-Knoten transformiert. Dementsprechend werden alle Ilvm.add-Beispielanzahlen zu einem std.addf-Knoten aggregiert. Der std.addf-Knoten ist der wichtigste Knoten in einem affine-Durchlauf, wie in 6 zu sehen.
  • 7 ist ein Blockschaubild eines durch einen Computer umgesetzten Steuerungsablaufs zum Ermitteln von Leistungs-Hotspots in einem neuronalen Netzwerkmodell für eine Optimierung gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung. In einer oder mehreren Ausführungsformen kann der durch den Computer umgesetzte Steuerungsablauf durch das Computersystem 302 durchgeführt werden. In einer oder mehreren Ausführungsformen kann ein Teil des durch einen Computer umgesetzten Steuerungsablaufs durch das Computersystem 320, wie beispielsweise Kompilierung und Ausführung des neuronalen Netzwerkmodells 200, und ein Teil durch das Computersystem 302 durchgeführt werden, wie beispielsweise Bestimmen und Ermitteln von Leistungs-Hotspots. In dem Kompilierungsprozess wird die Zuordnungs-IA-Datei (z.B. als die Zuordnungsdateien 330) und die Listendatei (z.B. die Listendatei 332) generiert. In dem Ausführungsprozess verwendet das Computersystem 302 ein Entnahme-Werkzeug, das eine Datendatei sammelt (z.B. die Datendatei 340). Nachdem dies durch das Computersystem 302 durchgeführt wurde, verwendet das Computersystem 302 eine Zuordnungs-IA-Datei, Listendatei und Datendatei zum Ermitteln von Leistungs-Hotspots.
  • 8 ist ein Ablaufplan eines durch einen Computer umgesetzten Prozesses 800 zum Ermitteln von Leistungs-Hotspots in einem neuronalen Netzwerkmodell und zum Optimieren von einem oder mehreren Leistungs-Hotspots gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung. Der durch einen Computer umgesetzte Prozess 800 in 8 kann durch das System 300 in 3 durchgeführt werden und wird unter Bezugnahme auf 3 beschrieben.
  • An einem Block 802 wird die Software-Anwendung 304 auf dem Computersystem 302 konfiguriert, um Beispieldaten (z.B. die Beispieldaten 352) mit Anweisungsadressen (IA) zu sammeln, wobei die Beispieldaten für ein neuronales Netzwerkmodell 200 sind. Die Beispieldaten 352 können aus der Datendatei 340 stammen, die während der Ausführung des neuronalen Netzwerkmodells 200 generiert wurde, insbesondere der Ausführung des kompilierten neuronalen Netzwerkmodells 200.
  • An einem Block 804 wird die Software-Anwendung 304 auf dem Computersystem 302 konfiguriert, um Anweisungen in den Anweisungsadressen zu bestimmen, die Leistungs-Hotspots sind. Zum Beispiel kann die Software-Anwendung 304 die Funktionalität und/oder ein Aufrufen/Anweisen von einem oder mehreren bekannten Diagnosewerkzeugen 306 umfassen, die konfiguriert sind, um Leistungs-Hotspots auf Grundlage von Leistungskennzahlen zu bestimmen.
  • An einem Block 806 wird die Software-Anwendung 304 auf dem Computersystem 302 konfiguriert, um eine Listendatei 332 zu verwenden, um die Anweisungen der Beispieldaten 352, die Leistungs-Hotspots sind, Speicherorten in einer Zwischendarstellung auf untergeordneter Ebene zuzuordnen. Die Zwischendarstellung auf untergeordneter Ebene kann eine LLVM-IR (Code) sein.
  • An einem Block 808 wird die Software-Anwendung 304 auf dem Computersystem 302 konfiguriert, um eine Zuordnungsdatei zu verwenden (z.B. die Zuordnungsdateien 330), um die Speicherorte der Zwischendarstellung auf untergeordneter Ebene, die Leistungs-Hotspots sind, Operationen in einer oder mehreren Darstellungen auf übergeordneter Ebene zuzuordnen (z.B. in affine-IR, in krnl IR, in ONNX IS usw.), wobei eine oder mehrere der Operationen den Leistungs-Hotspots entspricht bzw. entsprechen, wobei die Zuordnungsdatei 330 aus einem Kompilieren des neuronalen Netzwerkmodells 200 generiert wird.
  • Die Software-Anwendung 304 auf dem Computersystem 302 ist konfiguriert, um die Zuordnungsdatei 330 zum Zuordnen der Operationen in der einen oder den mehreren Darstellungen auf übergeordneter Ebene zu Knoten in dem neuronalen Netzwerkmodell 200 zu verwenden. Die Software-Anwendung 304 auf dem Computersystem 302 ist konfiguriert, um zu bestimmen, welche Knoten in dem neuronalen Netzwerkmodell 200 die Leistungs-Hotspots auf Grundlage eines Zuordnens aus der einen oder den mehreren (Zwischen-) Darstellungen auf übergeordneter Ebene darstellen, die aus der Zwischendarstellung auf untergeordneter Ebene zugeordnet wurden, die aus den Beispieldaten 352 zugeordnet wurde.
  • Die Software-Anwendung 304 auf dem Computersystem 302 ist konfiguriert, um die Zuordnungsdatei 330 zu verwenden, um die Leistungs-Hotspots in verschiedenen Ebenen eines Kompilierens des neuronalen Netzwerkmodells 200 zu kategorisieren, wobei die verschiedenen Ebenen die Zwischendarstellung auf untergeordneter Ebene bis zu der einen oder den mehreren Darstellungen auf übergeordneter Ebene aufweisen. Die verschiedenen Ebenen können LLVM-IR, affine-IR, krnl-IR und/oder ONNX-IR umfassen. Die Beispieldaten (z.B. die Beispieldaten 352) umfassen ferner Informationen von einem oder mehreren Zählern. Informationen in Bezug auf die Ausführung des neuronalen Netzwerkmodells 200 aus Hardware- und/oder Software-Zählern können in der Datendatei 340 gespeichert werden, für die Beispieldaten gesammelt worden sind. Die Leistungs-Hotspots umfassen eine oder mehrere (Leistungs-) Kennzahlen, die einen oder mehrere Schwellenwerte erfüllen und/oder überschreiten (z.B. Schwellenwerte von Leistungskennzahlen). Die Software-Anwendung 304 auf dem Computersystem 302 ist konfiguriert, um eine oder mehrere Operationen in der einen oder den mehreren Darstellungen auf übergeordneter Ebene, die optimiert werden sollen, zu bestimmen, um die Leistungs-Hotspots anzusprechen.
  • Obwohl diese Offenbarung eine ausführliche Beschreibung von Cloud Computing enthält, sollte klar sein, dass die Umsetzung der hierin angeführten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist. Stattdessen können Ausführungsformen der vorliegenden Erfindung gemeinsam mit jedem beliebigen Typ von jetzt bekannter oder später entwickelter Datenverarbeitungsumgebung umgesetzt werden.
  • Cloud Computing ist ein Dienstbereitstellungsmodell zum Ermöglichen eines problemlosen bedarfsgesteuerten Netzwerkzugriffs auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Arbeitsspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Dienstes schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften, mindestens drei Dienstmodelle und mindestens vier Nutzungsmodelle umfassen.
  • Die Eigenschaften sind wie folgt:
    • On-Demand Self-Service: Ein Cloud-Nutzer kann einseitig automatisch nach Bedarf für Datenverarbeitungsfunktionen wie Serverzeit und Netzwerkspeicher sorgen, ohne dass eine menschliche Interaktion mit dem Anbieter des Dienstes erforderlich ist.
  • Broad Network Access: Es sind Funktionen über ein Netzwerk verfügbar, auf die durch Standardmechanismen zugegriffen wird, welche die Verwendung durch heterogene Thin- oder Thick-Client-Plattformen (z.B. Mobiltelefone, Laptops und PDAs) unterstützen.
  • Resource Pooling: Die Datenverarbeitungsressourcen des Anbieters werden zusammengeschlossen, um mehreren Nutzern unter Verwendung eines Multi-Tenant-Modells zu dienen, wobei verschiedene physische und virtuelle Ressourcen dynamisch nach Bedarf zugewiesen und neu zugewiesen werden. Es gibt eine gefühlte Standortunabhängigkeit, da der Nutzer allgemein keine Kontrolle bzw. Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, einen Standort auf einer höheren Abstraktionsebene festzulegen (z.B. Land, Staat oder Rechenzentrum).
  • Rapid Elasticity: Funktionen können für eine schnelle horizontale Skalierung (scale out) schnell und elastisch bereitgestellt werden, in einigen Fällen auch automatisch, und für ein schnelles Scale-in schnell freigegeben werden. Für den Nutzer erscheinen die für das Bereitstellen verfügbaren Funktionen häufig unbegrenzt, und sie können jederzeit in jeder beliebigen Menge gekauft werden.
  • Measured Service: Cloud-Systeme steuern und optimieren die Verwendung von Ressourcen automatisch, indem sie eine Messfunktion auf einer gewissen Abstraktionsebene nutzen, die für die Art von Dienst geeignet ist (z.B. Speicher, Verarbeitung, Bandbreite sowie aktive Benutzerkonten). Der Ressourcen-Verbrauch kann überwacht, gesteuert und gemeldet werden, wodurch sowohl für den Anbieter als auch für den Nutzer des verwendeten Dienstes Transparenz geschaffen wird.
  • Die Dienstmodelle sind wie folgt:
    • Software as a Service (SaaS): Die für den Nutzer bereitgestellte Funktion besteht darin, die in einer Cloud-Infrastruktur ausgeführten Anwendungen des Anbieters zu verwenden. Die Anwendungen sind über eine Thin-Client-Schnittstelle wie einen Web-Browser (z.B. eine auf dem Web beruhende eMail) von verschiedenen Client-Einheiten her zugänglich. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter das Netzwerk, Server, Betriebssysteme, Speicher bzw. sogar einzelne Anwendungsfunktionen, mit der möglichen Ausnahme von eingeschränkten benutzerspezifischen Anwendungskonfigurationseinstellungen.
  • Platform as a Service (PaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, durch einen Nutzer erstellte bzw. erhaltene Anwendungen, die unter Verwendung von durch den Anbieter unterstützten Programmiersprachen und Tools erstellt wurden, in der Cloud-Infrastruktur einzusetzen. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter Netzwerke, Server, Betriebssysteme bzw. Speicher, hat aber die Kontrolle über die eingesetzten Anwendungen und möglicherweise über Konfigurationen des Application Hosting Environment.
  • Infrastructure as a Service (laaS): Die dem Nutzer bereitgestellte Funktion besteht darin, Verarbeitung, Speicher, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Nutzer in der Lage ist, beliebige Software einzusetzen und auszuführen, zu der Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicher, eingesetzte Anwendungen und möglicherweise eingeschränkte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
  • Die Nutzungsmodelle sind wie folgt:
    • Private Cloud: Die Cloud-Infrastruktur wird ausschließlich für eine Organisation betrieben. Sie kann von der Organisation oder einer Drittpartei verwaltet werden und kann innerhalb oder außerhalb von Geschäftsräumen vorhanden sein.
  • Community Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine bestimmte Community, die gemeinsame Problemstellungen hat (z.B. Berücksichtigung von Zielsetzung, Sicherheitsanforderungen, Richtlinien und Konformität). Sie kann von den Organisationen oder einer Drittpartei verwaltet werden und kann innerhalb oder außerhalb der Geschäftsräume vorhanden sein.
  • Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Industriegruppe zur Verfügung gestellt und gehört einer Organisation, die Cloud-Dienste verkauft.
  • Hybrid Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung aus zwei oder mehreren Clouds (privat, Benutzergemeinschaft oder öffentlich), die zwar einzelne Einheiten bleiben, aber durch eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die eine Daten- und Anwendungsportierbarkeit ermöglicht (z.B. Cloud-Zielgruppenverteilung für den Lastausgleich zwischen Clouds).
  • Eine Cloud-Computing-Umgebung ist dienstorientiert, wobei der Schwerpunkt auf Statusunabhängigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität liegt. Im Mittelpunkt von Cloud Computing steht eine Infrastruktur, die ein Netzwerk von miteinander verbundenen Knoten enthält.
  • Unter folgender Bezugnahme auf 9 wird eine veranschaulichende Cloud-Computing-Umgebung 50 dargestellt. Wie gezeigt, enthält die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 10, mit denen lokale Datenverarbeitungseinheiten, die von Nutzern der Cloud verwendet werden, wie beispielsweise Personal Digital Assistant (PDA) oder Mobiltelefon 54A, Desktop-Computer 54B, Laptop-Computer 54C und/oder Fahrzeug-Computersystem 54N, Daten austauschen können. Die Knoten 10 können untereinander Daten austauschen. Sie können physisch oder virtuell in einem oder mehreren Netzwerken gruppiert werden (nicht gezeigt), wie beispielsweise Private, Community, Public oder Hybrid Cloud, wie hierin oben beschrieben, oder in einer Kombination davon. Damit hat die Cloud-Computing-Umgebung 50 die Möglichkeit, eine Infrastruktur, Plattformen und/oder Software als Dienste anzubieten, für die ein Cloud-Nutzer keinerlei Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es sollte klar sein, dass die Typen von Datenverarbeitungseinheiten 54A bis N, die in 9 gezeigt sind, nur zur Veranschaulichung dienen sollen, und dass die Cloud-Computing-Knoten 10 und die Cloud-Computing-Umgebung 50 mit jedem Typ einer computerisierten Einheit über jeden Typ von Netzwerk und/oder eine über ein Netzwerk adressierbare Verbindung (z.B. unter Verwendung eines Web-Browsers) Daten austauschen können.
  • Unter folgender Bezugnahme auf 10 wird eine Gruppe von funktionalen Abstraktionsschichten gezeigt, die durch die Cloud-Computing-Umgebung 50 (9) bereitgestellt werden. Dabei sollte von Anfang an klar sein, dass die in 10 gezeigten Komponenten, Schichten und Funktionen lediglich zur Veranschaulichung dienen sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie dargestellt, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
  • Eine Hardware- und Software-Schicht 60 enthält Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten zählen: Mainframes 61; Server auf Grundlage einer RISC- (Reduced Instruction Set Computer) Architektur 62; Server 63; Blade-Server 64; Speichereinheiten 65; und Netzwerke und vernetzte Komponenten 66. In einigen Ausführungsformen enthalten Software-Komponenten Software für Netzwerkanwendungsserver 67 und Datenbank-Software 68.
  • Eine Virtualisierungsschicht 70 stellt eine Abstraktionsschicht bereit, von der aus die folgenden beispielhaften virtuellen Entitäten bereitgestellt werden können: virtuelle Server 71; virtueller Speicher 72; virtuelle Netzwerke 73, einschließlich virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme 74; und virtuelle Clients 75.
  • In einem Beispiel kann eine Verwaltungsschicht 80 die im Folgenden beschriebenen Funktionen bereitstellen. Eine Ressourcenbereitstellung 81 sorgt für eine dynamische Beschaffung von Datenverarbeitungsressourcen und weiteren Ressourcen, die zum Ausführen von Aufgaben innerhalb der Cloud-Computing-Umgebung eingesetzt werden. Messung und Preisbestimmung 82 ermöglichen beim Einsatz von Ressourcen innerhalb der Cloud-Computing-Umgebung eine Kostenverfolgung und eine Abrechnung oder Rechnungsstellung für die Inanspruchnahme dieser Ressourcen. In einem Beispiel können diese Ressourcen Lizenzen für Anwendungssoftware umfassen. Eine Sicherheitsfunktion stellt eine Identitätsprüfung für Cloud-Nutzer und -Aufgaben sowie einen Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 83 stellt den Zugang zur Cloud-Computing-Umgebung für Nutzer und Systemadministratoren bereit. Eine Service-Level- (Dienstgüte) Verwaltung 84 sorgt für Zuweisung und Verwaltung von Cloud-Computing-Ressourcen, sodass erforderliche Service-Levels eingehalten werden. Planung und Vertragserfüllung des Service Level Agreement (SLA) (Dienstgütevereinbarung) 85 stellen eine Vorab-Vereinbarung für und Beschaffung von Cloud-Computing-Ressourcen bereit, für die gemäß eines SLA eine zukünftige Anforderung erwartet wird.
  • Eine Arbeitslastenschicht 90 stellt Beispiele für eine Funktionalität bereit, für welche die Cloud-Computing-Umgebung genutzt werden kann. Zu Beispielen von Arbeitslasten und Funktionen, die von dieser Schicht aus bereitgestellt werden können, zählen: Zuordnung und Navigation 91; Software-Entwicklung und Lifecycle-Management 92; Bereitstellung von virtuellen Schulungen 93; Datenanalyseverarbeitung 94; Transaktionsverarbeitung 95; und Software-Anwendungen (z.B. Software-Anwendungen 304, Compiler 322, neuronales Netzwerkmodell 200, usw.), die in Arbeitslasten und Funktionen 96 umgesetzt sind. Die Software-Anwendungen können auch mit der Ressourcenbereitstellung 81 funktionieren und/oder in diese integriert werden.
  • Verschiedene Ausführungsformen der Erfindung werden hierin unter Bezugnahme auf die zugehörigen Zeichnungen beschrieben. Alternative Ausführungsformen der Erfindung sind denkbar, ohne von dem Schutzumfang dieser Erfindung abzuweichen. Verschiedene Verbindungen und positionsbezogene Beziehungen (z.B. über, unter, neben usw.) zwischen Elementen werden in der folgenden Beschreibung und in den Zeichnungen dargelegt. Diese Verbindungen und/oder positionsbezogenen Beziehungen können, sofern nicht anders spezifiziert, direkt oder indirekt sein, und die vorliegende Erfindung ist in dieser Hinsicht keinesfalls als einschränkend zu verstehen. Dementsprechend kann eine Verbindung von Entitäten entweder auf eine direkte oder eine indirekte Verbindung verweisen, und eine positionsbezogene Beziehung zwischen Entitäten kann eine direkte oder indirekte positionsbezogene Beziehung sein. Des Weiteren können die hierin beschriebenen verschiedenen Aufgaben und Prozessschritte in eine umfassendere Prozedur oder einen umfassenderen Prozess mit zusätzlichen Schritten oder einer zusätzlichen Funktionalität integriert werden, die hierin nicht im Detail beschrieben werden.
  • Ein oder mehrere der hierin beschriebenen Verfahren können mit jeder oder einer Kombination der folgenden Technologien umgesetzt werden, die im Stand der Technik wohlbekannt sind: eine oder mehrere diskrete Logikschaltungen mit Logikgattern zum Umsetzen von Logikfunktionen aus Datensignalen, eine anwendungsspezifische integrierte Schaltung (ASIC) mit entsprechenden Verknüpfungs-Logikgattern, eine bzw. mehrere programmierbare Array-Anordnungen (PGA), eine feldprogrammierbare Array-Anordnung (FPGA) usw.
  • Der Kürze halber werden herkömmliche Techniken in Bezug auf ein Erstellen und Verwenden von Aspekten der Erfindung hierin möglicherweise nicht ausführlich beschrieben. Insbesondere sind verschiedene Aspekte von Datenverarbeitungssystemen und bestimmten Computerprogrammen zum Umsetzen der hierin beschriebenen verschiedenen technischen Merkmale wohlbekannt. Dementsprechend werden der Kürze halber viele herkömmliche Umsetzungsdetails hierin nur kurz erwähnt oder vollständig weggelassen, ohne das wohlbekannte System und/oder Prozessdetails bereitzustellen.
  • In einigen Ausführungsformen können verschiedene Funktionen oder Handlungen an einer bestimmten Position und/oder in Verbindung mit dem Betrieb von einer oder mehreren Vorrichtungen oder Systemen stattfinden. In einigen Ausführungsformen kann ein Abschnitt einer bestimmten Funktion oder Handlung an einer ersten Einheit oder Position durchgeführt werden, und der Rest der Funktion oder Handlung kann an einer oder mehreren zusätzlichen Einheiten oder Positionen durchgeführt werden.
  • Die hierin verwendete Terminologie dient nur zum Zweck der Beschreibung von bestimmten Ausführungsformen und soll keinesfalls einschränkend sein. Die hierin verwendeten Singularformen „ein“, „eine“ und „der/die/das“ sollen auch die Pluralformen mit einschließen, es sei denn, der Kontext gibt eindeutig anderes vor. Es versteht sich des Weiteren, dass die Begriffe „weist auf“ und/oder „aufweisend“ bei Verwendung in dieser Patentschrift das Vorhandensein ausgewiesener Merkmale, Ganzzahlen, Schritte, Vorgänge, Elemente und/oder Komponenten angeben, das Vorhandensein oder die Hinzufügung von einem oder mehreren anderen Merkmalen, Ganzzahlen, Schritten, Vorgängen, Elementkomponenten und/oder Gruppen davon aber nicht ausschließen.
  • Die entsprechenden Strukturen, Materialien, und Entsprechungen aller Mittel oder Schritt-plus-Funktion-Elemente in den nachstehenden Ansprüchen sollen alle Strukturen, Materialien oder Handlungen zum Ausführen der Funktion in Kombination mit anderen beanspruchten Elementen enthalten, wie speziell beansprucht. Die vorliegende Offenbarung wurde zum Zweck der Veranschaulichung und Beschreibung erstellt, sie soll aber keineswegs erschöpfend oder auf die offenbarte Form eingeschränkt sein. Für Fachleute sind viele Modifizierungen und Variationen offenkundig, die nicht von dem Schutzumfang der Offenbarung abweichen. Die Ausführungsformen wurden ausgewählt und beschrieben, um die Grundgedanken der Offenbarung und die praktische Anwendung am besten zu erklären und es anderen Fachleuten zu ermöglichen, die Offenbarung für verschiedene Ausführungsformen mit verschiedenen Modifizierungen zu verstehen, die für die vorgesehene bestimmte Verwendung geeignet sind.
  • Die hierin dargestellten Abbildungen dienen zur Veranschaulichung. Viele Variationen der Darstellung oder der hierin beschriebenen Schritte (oder Operationen) sind möglich, ohne von der Offenbarung abzuweichen. Die Aktionen können zum Beispiel in einer anderen Reihenfolge ausgeführt werden, oder Aktionen können hinzugefügt, gelöscht oder modifiziert werden. Der Begriff „verbunden“ beschreibt zudem einen Signalpfad zwischen zwei Elementen und impliziert keine direkte Verbindung zwischen den Elementen ohne zwischen diesen liegende Elemente/Verbindungen. Alle dieser Variationen werden als Teil der vorliegenden Offenbarung betrachtet.
  • Die folgenden Definitionen und Abkürzungen sind für die Auslegung der Ansprüche und der Patentschrift zu verwenden. Wie hierin verwendet, sollen die Begriffe „weist auf“, „aufweisend“, „umfasst“, „umfassend“, „besitzt“, „besitzend“, „enthält“ oder „enthaltend“ oder irgendeine Variation davon eine nicht ausschließende Einbeziehung abdecken. Zum Beispiel ist eine Zusammensetzung, ein Gemisch, ein Prozess, ein Verfahren, ein Artikel oder eine Vorrichtung, die eine Liste von Elementen umfasst, nicht notwendigerweise auf nur diese Elemente beschränkt, sondern kann andere Elemente umfassen, die nicht ausdrücklich aufgelistet oder derartigen Zusammensetzungen, Gemischen, Prozessen, Verfahren, Artikeln oder Vorrichtungen eigen sind.
  • Außerdem bedeutet der hierin verwendete Begriff „beispielhaft“, dass „etwas als Beispiel, Variante oder zur Veranschaulichung dient“. Jede hierin als „beispielhaft“ beschriebene Ausführungsform oder Auslegung muss nicht notwendigerweise als gegenüber anderen Ausführungsformen oder Auslegungen bevorzugt oder vorteilhaft aufgefasst werden. Der Begriff „mindestens ein/eine“ und „ein/e oder mehrere“ ist als jede ganzzahlige Anzahl größer oder gleich eins zu verstehen, d.h. eins, zwei, drei, vier usw. Der Begriff „eine Mehrzahl“ ist als ganzzahlige Anzahl größer oder gleich zwei zu verstehen, d.h. zwei, drei, vier, fünf usw. Der Begriff „Verbindung“ kann sowohl eine indirekte „Verbindung“ als auch eine direkte „Verbindung“ umfassen.
  • Die Begriffe „über“, „im Wesentlichen“, „ungefähr“ und Variationen davon sollen das Fehlermaß umfassen, das einer Messung der bestimmten Menge auf Grundlage der zum Zeitpunkt der Anmeldungseinreichung verfügbaren Ausrüstung zugehörig ist. Zum Beispiel kann „über“ einen Bereich von ±8 % oder 5 % oder 2 % eines bestimmten Werts umfassen.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jeder möglichen technischen Detailintegrationsebene handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) mit durch einen Computer lesbaren Programmanweisungen enthalten, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zum Ausführen von Anweisungen beibehalten und speichern kann. Das durch einen Computer lesbare Speichermedium kann zum Beispiel eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu einer nicht erschöpfenden Liste von spezifischeren Beispielen des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer CD-ROM, eine DVD, ein Arbeitsspeicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination des Vorgenannten. Ein durch einen Computer lesbares Speichermedium soll, wie hierin verwendet, nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder andere Übertragungsmedien ausbreiten (z.B. durch ein Lichtwellenleiterkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für integrierte Schaltungen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben sind, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch jeden Typ von Netzwerk verbunden werden, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, feldprogrammierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die computerlesbaren Programmanweisung ausführen, indem sie Zustandsinformationen der computerlesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es sollte klar sein, dass jeder Block der Ablaufplanveranschaulichungen und/oder der Blockschaubilder und Kombinationen von Blöcken in den Ablaufplanveranschaulichungen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programmanweisungen umgesetzt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. eine andere programmierbare Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, die Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Arbeitsschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder den Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zum Umsetzen der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt auftreten. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufplandarstellungen sowie Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplandarstellung durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die angegebenen Funktionen oder Handlungen durchführen oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden zum Zweck einer Veranschaulichung erstellt, sie sollen aber keineswegs erschöpfend oder auf die offenbarten Ausführungsformen eingeschränkt sein. Für Fachleute sind viele Modifizierungen und Variationen offenkundig, die nicht von dem Schutzumfang der beschriebenen Ausführungsformen abweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, der praktischen Anwendung oder technischen Verbesserung gegenüber auf dem Markt gefundenen Technologien bestmöglich zu erklären oder anderen Fachleuten das Verständnis der hierin beschriebenen Ausführungsformen zu ermöglichen.

Claims (20)

  1. Durch einen Computer umgesetztes Verfahren, das aufweist: Sammeln von Beispieldaten mit Anweisungsadressen, wobei die Beispieldaten für ein neuronales Netzwerkmodell sind; Bestimmen von Anweisungen in den Anweisungsadressen, die Leistungs-Hotspots sind; Verwenden einer Listendatei, um die Anweisungen der Beispieldaten, die Leistungs-Hotspots sind, Speicherplätzen in einer Zwischendarstellung auf untergeordneter Ebene zuzuordnen; und Verwenden einer Zuordnungsdatei, um die Speicherplätze der Zwischendarstellung auf untergeordneter Ebene, die Leistungs-Hotspots sind, Operationen in einer oder mehreren Darstellungen auf übergeordneter Ebene zuzuordnen, wobei eine oder mehrere der Operationen den Leistungs-Hotspots entsprechen, wobei die Zuordnungsdatei aus einem Kompilieren des neuronalen Netzwerkmodells generiert wird.
  2. Durch einen Computer umgesetztes Verfahren nach Anspruch 1, das ferner ein Verwenden der Zuordnungsdatei zum Zuordnen der Operationen in der einen oder den mehreren Darstellungen auf übergeordneter Ebene zu Knoten in dem neuronalen Netzwerkmodell aufweist.
  3. Durch einen Computer umgesetztes Verfahren nach Anspruch 1, das ferner ein Bestimmen aufweist, welche Knoten in dem neuronalen Netzwerkmodell die Leistungs-Hotspots auf Grundlage eines Zuordnens aus der einen oder den mehreren Darstellungen auf übergeordneter Ebene darstellen, die aus der Zwischendarstellung auf untergeordneter Ebene zugeordnet wurden, die aus den Beispieldaten zugeordnet wurde.
  4. Durch einen Computer umgesetztes Verfahren nach Anspruch 1, das ferner ein Verwenden der Zuordnungsdatei aufweist, um die Leistungs-Hotspots in verschiedenen Ebenen eines Kompilierens des neuronalen Netzwerkmodells zu kategorisieren, wobei die verschiedenen Ebenen die Zwischendarstellung auf untergeordneter Ebene durch die eine oder die mehreren Darstellungen auf übergeordneter Ebene aufweisen.
  5. Durch einen Computer umgesetztes Verfahren nach Anspruch 1, wobei die Beispieldaten ferner Informationen von einem oder mehreren Zählern aufweisen.
  6. Durch einen Computer umgesetztes Verfahren nach Anspruch 1, wobei die Leistungs-Hotspots eine oder mehrere Kennzahlen aufweisen, die einem oder mehreren Schwellenwerten entsprechen oder diese überschreiten.
  7. Durch einen Computer umgesetztes Verfahren nach Anspruch 1, das ferner ein Bestimmen von einer oder mehreren der Operationen in der einen oder den mehreren zu optimierenden Darstellungen auf übergeordneter Ebene aufweisen, um somit die Leistungs-Hotspots anzusprechen.
  8. System, das aufweist: einen Arbeitsspeicher mit durch einen Computer lesbaren Anweisungen; und einen oder mehrere Prozessoren zum Ausführen der durch den Computer lesbaren Anweisungen, wobei die durch den Computer lesbaren Anweisungen den einen oder die mehreren Prozessoren steuern, um Prozesse durchzuführen, die aufweisen: Sammeln von Beispieldaten mit Anweisungsadressen, wobei die Beispieldaten für ein neuronales Netzwerkmodell sind; Bestimmen von Anweisungen in den Anweisungsadressen, die Leistungs-Hotspots sind; Verwenden einer Listendatei, um die Anweisungen der Beispieldaten, die Leistungs-Hotspots sind, Speicherplätzen in einer Zwischendarstellung auf untergeordneter Ebene zuzuordnen; und Verwenden einer Zuordnungsdatei, um die Speicherplätze der Zwischendarstellung auf untergeordneter Ebene Operationen in einer oder mehreren Darstellungen auf übergeordneter Ebene zuzuordnen, wobei die Zuordnungsdatei aus einem Kompilieren des neuronalen Netzwerkmodells generiert wird.
  9. System nach Anspruch 8, das ferner ein Verwenden der Zuordnungsdatei zum Zuordnen der Operationen in der einen oder den mehreren Darstellungen auf übergeordneter Ebene zu Knoten in dem neuronalen Netzwerkmodell aufweist.
  10. System nach Anspruch 8, das ferner ein Bestimmen aufweist, welche Knoten in dem neuronalen Netzwerkmodell die Leistungs-Hotspots auf Grundlage eines Zuordnens von der einen oder den mehreren Darstellungen auf übergeordneter Ebene darstellen, die aus der Zwischendarstellung auf untergeordneter Ebene zugeordnet wurden, die aus den Beispieldaten zugeordnet wurde.
  11. System nach Anspruch 8, das ferner ein Verwenden der Zuordnungsdatei aufweist, um die Leistungs-Hotspots in verschiedenen Ebenen eines Kompilierens des neuronalen Netzwerkmodells zu kategorisieren, wobei die verschiedenen Ebenen die Zwischendarstellung auf untergeordneter Ebene durch die eine oder die mehreren Darstellungen auf übergeordneter Ebene aufweisen.
  12. System nach Anspruch 8, wobei die Beispieldaten ferner Informationen von einem oder mehreren Zählern aufweisen.
  13. System nach Anspruch 8, wobei die Leistungs-Hotspots eine oder mehrere Kennzahlen aufweisen, die einen oder mehrere Schwellenwerte erfüllen oder diese überschreiten.
  14. System nach Anspruch 8, das ferner ein Bestimmen von einer oder mehreren der Operationen in der einen oder den mehreren zu optimierenden Darstellungen auf übergeordneter Ebene aufweist, um dadurch die Leistungs-Hotspots anzusprechen.
  15. Computerprogrammprodukt, das ein durch einen Computer lesbares Speichermedium mit darauf verkörperten Programmanweisungen aufweist, wobei die Programmanweisungen durch einen oder mehrere Prozessoren ausführbar sind, um den einen oder die mehreren Prozessor zum Durchführen von Prozessen zu veranlassen, die aufweisen: Sammeln von Beispieldaten mit Anweisungsadressen, wobei die Beispieldaten für ein neuronales Netzwerkmodell sind; Bestimmen von Anweisungen in den Anweisungsadressen, die Leistungs-Hotspots sind; Verwenden einer Listendatei, um die Anweisungen der Beispieldaten, die Leistungs-Hotspots sind, Speicherplätzen in einer Zwischendarstellung auf untergeordneter Ebene zuzuordnen; und Verwenden einer Zuordnungsdatei, um die Speicherplätze der Zwischendarstellung auf untergeordneter Ebene Operationen in einer oder mehreren Darstellungen auf übergeordneter Ebene zuzuordnen, wobei die Zuordnungsdatei aus einem Kompilieren des neuronalen Netzwerkmodells generiert wird.
  16. Computerprogrammprodukt nach Anspruch 15, das ferner ein Verwenden der Zuordnungsdatei zum Zuordnen der Operationen in der einen oder den mehreren Darstellungen auf übergeordneter Ebene zu Knoten in dem neuronalen Netzwerkmodell aufweist.
  17. Computerprogrammprodukt nach Anspruch 15, das ferner ein Bestimmen aufweist, welche Knoten in dem neuronalen Netzwerkmodell die Leistungs-Hotspots auf Grundlage eines Zuordnens aus der einen oder den mehreren Darstellungen auf übergeordneter Ebene darstellen, die aus der Zwischendarstellung auf untergeordneter Ebene zugeordnet wurden, die aus den Beispieldaten zugeordnet wurde.
  18. Computerprogrammprodukt nach Anspruch 15, das ferner ein Verwenden der Zuordnungsdatei aufweist, um die Leistungs-Hotspots in verschiedenen Ebenen eines Kompilierens des neuronalen Netzwerkmodells zu kategorisieren, wobei die verschiedenen Ebenen die Zwischendarstellung auf untergeordneter Ebene durch die eine oder die mehreren Darstellungen auf übergeordneter Ebene aufweisen.
  19. Computerprogrammprodukt nach Anspruch 15, wobei die Beispieldaten ferner Informationen von einem oder mehreren Zählern aufweisen.
  20. Computerprogrammprodukt nach Anspruch 15, wobei die Leistungs-Hotspots eine oder mehrere Kennzahlen aufweisen, die einen oder mehrere Schwellenwerte erfüllen oder diese überschreiten.
DE112022001375.3T 2021-04-30 2022-03-08 Leistungs-hotspots von neuronalen netzwerken ermitteln Pending DE112022001375T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/245,042 US11775317B2 (en) 2021-04-30 2021-04-30 Locate neural network performance hot spots
US17/245,042 2021-04-30
PCT/CN2022/079778 WO2022227869A1 (en) 2021-04-30 2022-03-08 Locate neural network performance hot spots

Publications (1)

Publication Number Publication Date
DE112022001375T5 true DE112022001375T5 (de) 2024-03-14

Family

ID=83808529

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112022001375.3T Pending DE112022001375T5 (de) 2021-04-30 2022-03-08 Leistungs-hotspots von neuronalen netzwerken ermitteln

Country Status (6)

Country Link
US (1) US11775317B2 (de)
JP (1) JP2024515023A (de)
CN (1) CN117242457A (de)
DE (1) DE112022001375T5 (de)
GB (1) GB2622153A (de)
WO (1) WO2022227869A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11775317B2 (en) * 2021-04-30 2023-10-03 International Business Machines Corporation Locate neural network performance hot spots

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6681387B1 (en) * 1999-12-01 2004-01-20 Board Of Trustees Of The University Of Illinois Method and apparatus for instruction execution hot spot detection and monitoring in a data processing unit
CA2672337C (en) 2009-07-15 2017-01-03 Ibm Canada Limited - Ibm Canada Limitee Compiler instrumentation infrastructure to facilitate multiple pass and multiple purpose dynamic analysis
US8539463B2 (en) 2011-07-28 2013-09-17 Qualcomm Innovation Center, Inc. Apparatus and method for improving the performance of compilers and interpreters of high level programming languages
FR3018932B1 (fr) * 2014-03-20 2016-12-09 Commissariat Energie Atomique Procede et dispositif d'aide a l'optimisation et la parallelisation de code
US10209764B2 (en) * 2016-12-20 2019-02-19 Intel Corporation Apparatus and method for improving power-performance using a software analysis routine
US20190286973A1 (en) * 2018-03-14 2019-09-19 Microsoft Technology Licensing, Llc Hardware accelerated neural network subgraphs
CN110308909B (zh) 2018-03-27 2023-08-01 上海寒武纪信息科技有限公司 针对神经网络处理器的可执行程序生成装置和方法
US20190042395A1 (en) * 2018-09-28 2019-02-07 Intel Corporation Source code profiling through enhanced mapping
CN109857459B (zh) 2018-12-27 2022-03-08 中国海洋大学 一种e级超算海洋模式自动移植优化方法及系统
US10515306B1 (en) * 2019-02-28 2019-12-24 DeepCube LTD. Partial activation of multiple pathways in neural networks
US11645533B2 (en) * 2019-04-09 2023-05-09 Nvidia Corp. IR drop prediction with maximum convolutional neural network
US20190392296A1 (en) * 2019-06-28 2019-12-26 John Brady Hardware agnostic deep neural network compiler
CN110378468B (zh) * 2019-07-08 2020-11-20 浙江大学 一种基于结构化剪枝和低比特量化的神经网络加速器
CN111666071B (zh) 2020-04-17 2021-12-17 中国海洋大学 一种基于目标众核的对抗网络移植与优化的方法及系统
US11055617B1 (en) * 2020-06-30 2021-07-06 DeepCube LTD. Partial-activation of neural network based on heat-map of neural network activity
US20220067481A1 (en) * 2020-08-27 2022-03-03 Nvidia Corporation Determining ir drop
CN112529175B (zh) 2020-11-05 2022-03-18 上海交通大学 神经网络的编译方法、系统、计算机存储介质及编译设备
CN112465108B (zh) 2020-11-11 2022-07-22 上海交通大学 一种面向存算一体平台的神经网络编译方法
US20220303176A1 (en) * 2021-03-12 2022-09-22 Cypress Semiconductor Corporation Efficient optimization for neural network deployment and execution
US11775317B2 (en) * 2021-04-30 2023-10-03 International Business Machines Corporation Locate neural network performance hot spots
US20220012579A1 (en) * 2021-09-24 2022-01-13 Masayoshi Asama Neural network accelerator system for improving semantic image segmentation

Also Published As

Publication number Publication date
CN117242457A (zh) 2023-12-15
WO2022227869A1 (en) 2022-11-03
US11775317B2 (en) 2023-10-03
US20220350619A1 (en) 2022-11-03
GB2622153A (en) 2024-03-06
JP2024515023A (ja) 2024-04-04

Similar Documents

Publication Publication Date Title
DE112018002984T5 (de) Konformitätsbewusste Laufzeiterzeugung auf Grundlage von Anwendungsmustern und Risikobeurteilung
DE112020000526T5 (de) System und verfahren zum inkrementellen lernen für eine objekterkennung
DE112018005227T5 (de) Merkmalsextraktion mithilfe von multi-task-lernen
DE112019004076T5 (de) Dezentralisiertes verteiltes deep learning
DE112018005167T5 (de) Aktualisieren von trainingsdaten
DE112020005095T5 (de) Automatische trennung und extraktion von tabellendaten unter verwendung von maschinellem lernen
DE112020002110T5 (de) Ressourcenarme entitätsauflösung mit transfer learning
DE112020002042T5 (de) Erzeugen eines absichtserkennungsmodells auf grundlage von randomisierten absichtsvektornäherungen
DE112021002572T5 (de) Multikriterielles optimieren von anwendungen
DE112021001566T5 (de) Ermitteln von abhängigkeiten multivariater zeitreihendaten
DE112018004660T5 (de) Verwenden von kommentaren zum bereitstellen von optimierungen
DE112017008151T5 (de) Schaltungen geringer tiefe als quantenklassifikatoren
DE112020001774T5 (de) Datensatzabhängiges niedrigrang-zerlegen von neuronalen netzwerken
DE112020004031T5 (de) Systembezogene selektive quantisierung für in der leistungsfähigkeit optimiertes verteiltes deep learning
DE112021003908T5 (de) Föderales maschinenlernen durch verwenden von ortsabhängigem hashing
DE112020000545T5 (de) Deep-forest-modell-entwicklung und -training
DE112021005782T5 (de) Korrigieren von Antwortpannen
DE112021000627T5 (de) Dynamische erkennung und korrektur von datenqualitätsproblemen
DE112020002917T5 (de) Erzeugen von steuereinstellungen für einen chemischen reaktor
DE112019002680B4 (de) Gerät zur Orchestrierung der verteilten Anwendungsbereitstellung mit End-to-End-Leistungsgarantie
DE112021005313T5 (de) Topologiegesteuerte vervollständigung chemischer daten
DE112022001375T5 (de) Leistungs-hotspots von neuronalen netzwerken ermitteln
DE112021005927T5 (de) Patchen von arbeitsabläufen
DE112021003680T5 (de) Deterministisch lernende videoszenenerkennung
DE112021003761T5 (de) Prädiktive modelle mit zerlegbaren hierarchischen ebenen, die konfiguriert werden, um interpretierbare resultate zu erzeugen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R084 Declaration of willingness to licence