DE102020132591A1 - Auswählen von rechenkernvarianten unter verwendung neuronaler netzwerke - Google Patents

Auswählen von rechenkernvarianten unter verwendung neuronaler netzwerke Download PDF

Info

Publication number
DE102020132591A1
DE102020132591A1 DE102020132591.6A DE102020132591A DE102020132591A1 DE 102020132591 A1 DE102020132591 A1 DE 102020132591A1 DE 102020132591 A DE102020132591 A DE 102020132591A DE 102020132591 A1 DE102020132591 A1 DE 102020132591A1
Authority
DE
Germany
Prior art keywords
matrix
kernel
neural network
training
data
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
DE102020132591.6A
Other languages
English (en)
Inventor
Jon Barker
Chris Cheng
Paul Springer
Wojciech Jablonski
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.)
Nvidia Corp
Original Assignee
Nvidia 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 Nvidia Corp filed Critical Nvidia Corp
Publication of DE102020132591A1 publication Critical patent/DE102020132591A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • 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
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • G06N3/105Shells for specifying net layout

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Neurology (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Vorrichtungen, Systeme und Techniken zur Optimierung der Kernelauswahl für die Durchführung einer Berechnung. In zumindest einer Ausführungsform wird ein neuronales Netzwerk trainiert und verwendet, um eine Liste von Kerneln zu erzeugen, so dass ein (z.B. optimaler) Kernel identifiziert werden kann. Das neuronale Netzwerk empfängt Merkmale der Eingangsmatrizen und bestimmt Relevanzwerte für eine Liste möglicher Kernel. Basierend auf einer geordneten Auflistung der Kernel nach Relevanzbewertung wird ein Kernel aus der Liste ausgewählt und verwendet, um die Berechnung durchzuführen und das Ergebnis zu liefern.

Description

  • GEBIET
  • Die vorliegende Anmeldung bezieht sich allgemein auf ein Auswählen eines optimalen Kernels zur Durchführung von Berechnungen an einem oder mehreren Sätzen von mathematischen Inputs, wie beispielsweise einer oder mehreren Matrizen. Für eine gegebene Berechnung können mehrere Verfahren verwendet werden, um die Operation durchzuführen. Oft hängt die Leistung eines Verfahren von einer Reihe von Faktoren ab, die die Laufzeit des Verfahrens beeinflussen. Daher kann die Auswahl eines Kernels für einen bestimmten Satz von Einschränkungen die Leistung der Anwendung, die die Operation anfordert, stark beeinflussen.
  • HINTERGRUND
  • Wenn eine Berechnung an einer Matrix oder einem Satz von Matrizen durchgeführt wird, kann eine Reihe von Faktoren die Zeit beeinflussen, die benötigt wird, um die Berechnung abzuschließen. Weil es mehrere Kernel für die Durchführung der Operation geben kann, ist es oft schwierig zu beurteilen, welcher der Kernel für die Durchführung der Operation verwendet werden soll. Durch Auswählen eines ineffizienten Kernels zur Durchführung einer Berechnung kann die Leistung weniger als optimal sein. Daher ist die Auswahl eines optimalen Kernels wichtig für die Maximierung der Berechnungsleistung. Die Zeit- und Ressourcen kosten für das Auswählen eines Kernels müssen jedoch minimiert werden, um zu verhindern, dass der Auswahlprozess mehr Zeit in Anspruch nimmt als durch die Verwendung eines möglicherweise suboptimalen Kernels eingespart wird.
  • Figurenliste
    • 1 veranschaulicht eine beispielhafte Umgebung, in welcher die hierin beschriebenen Ausführungsformen implementiert werden können;
    • 2 veranschaulicht einen beispielhaften Datenfluss gemäß den hierin beschriebenen Ausführungsformen;
    • 3 veranschaulicht eine beispielhafte Umgebung, in der die hierin beschriebenen Ausführungsformen implementiert werden können;
    • 4 veranschaulicht ein Ablaufdiagramm für eine oder mehrere Ausführu ngsformen;
    • 5 veranschaulicht ein Ablaufdiagramm für eine oder mehrere Ausführungsformen;
    • 6 veranschaulicht ein System zum Trainieren eines Bildsynthese-Netzwerks, das verwendet werden kann, gemäß zumindest einer Ausführungsform;
    • 7 veranschaulicht die Schichten eines statistischen Modells, das verwendet werden kann, gemäß zumindest einer Ausführungsform;
    • 8 veranschaulicht die Inferenz- und/oder Trainingslogik gemäß zumindest einer Ausführungsform;
    • 9 veranschaulicht die Inferenz- und/oder Trainingslogik gemäß zumindest einer Ausführungsform.
  • Detaillierte Beschreibung
  • Wenn eine Matrixberechnung angefordert wird, kennen die Anwendungen möglicherweise nicht die verschiedenen Systemkerne bzw. Kernel, die zur Durchführung der Berechnung verwendet werden können. Wie hierin verwendet bezieht sich der Begriff „Kernel“ auf eine beliebige Low-Level-Routine, die eine mathematische Berechnung mit Input- bzw. Eingabedaten durchführt. Für eine bestimmte Operation können mehrere Kernel existieren, um die Operation durchzuführen, und jeder kann so geschrieben sein, dass er die Leistung für bestimmte Eingabedaten optimiert. Zum Beispiel kann eine Anwendung eine allgemeine Matrixmultiplikation (GeMM) benötigen, ohne dass es von Interesse ist, wie die Operation ausgeführt wird. Stattdessen hat die Anwendung nur Interesse daran, dass die Operation so schnell wie möglich ausgeführt wird. Weil es für viele Operationen mehrere Kernel geben kann, die für die Ausführung der Operation verwendet werden können, kann die Auswahl des optimalen Kernels - mit dem geringsten Zeitaufwand für die Auswahl des optimalen Kernels - die Laufzeit für die angeforderten Berechnungen erheblich reduzieren.
  • Weil die Leistung vieler Kernel von verschiedenen Faktoren beeinflusst werden kann, kann ein tiefes neuronales Netzwerk bzw. ein „deep neural network“ (DNN) dazu trainiert werden, eine Reihe von Kerneln auf der Grundlage von Input- bzw. Eingabefaktoren einzustufen. Die Eingabefaktoren können Eigenschaften der Eingabe- bzw. Eingangsmatrizen und/oder der Hardware sein, die den Kernel ausführt. Das DNN kann dann eine Liste von Kerneln bereitstellen, die basierend auf der Wahrscheinlichkeit, ein optimaler Kernel für die Berechnung zu sein, eingestuft sind, und die Berechnung kann mit einem der Kernel ausgeführt werden, der basierend auf der Einstufungsliste bzw. Rangliste ausgewählt wurde.
  • Obwohl DNNs die Zeit verbessern können, die für die Auswahl eines optimalen Kernels zur Durchführung einer Operation benötigt wird, ist jedoch ein signifikantes Training des DNNs erforderlich, um Kernel-Relevanzen genau vorherzusagen. Da das Training ein zeit- und ressourcenintensiver Prozess ist, sollten die Trainingsdaten, die dem DNN zur Verfügung gestellt werden, auf diejenigen Trainingssätze beschränkt werden, die für das Training des DNN am wichtigsten sind. Daher ergeben sich beim Training des DNN eigene Probleme in Bezug auf die Auswahl der richtigen zu erzeugenden Trainingsdaten. Weil die Eingaben bzw. Inputs beliebig groß sein können (bis zu den oberen Grenzen der Hardware), stellt die Generalisierung eines aussagekräftigen Trainingssatzes ein schwieriges Problem dar.
  • Daher ist ein DNN, das bei der Vorhersage eines optimalen Kernels genau ist und gleichzeitig effizient bei der Auswahl ist, sehr vorteilhaft. Ferner muss die Trainingseingabe bzw. der Trainingsinput für das DNN so ausgewählt werden, dass das Training effizient durchgeführt wird, aber dennoch eine genaue Vorhersage durch das DNN im Betrieb gewährleistet wird. Daher können zusätzlich zu einem anfänglichen Trainingssatz von Eingabedaten die von dem DNN gemachten Vorhersagen verwendet werden, um einen oder mehrere Sätze von Inputs zu identifizieren, die bei der Vorhersage eines Berechnungskernels von besonderer Schwierigkeit sind. Das DNN kann dann mit generierten Trainingsdaten, die diesen Problembereichen entsprechen, weiter trainiert werden.
  • 1 ist eine Darstellung einer beispielhaften Umgebung, in der hierin beschriebene Ausführungsformen implementiert werden können. Die Umgebung beinhaltet ein Kernel-Auswahlsystem 100, ein Trainingssystem für neuronale Netzwerke 120, eine Client-Anwendung 130 und eine Anwendungsprogrammierschnittstelle (API) 140. Die API kann von der Anwendung 130 verwendet werden, um mit dem Kernel-Auswahlsystem 100 über ein Netzwerk, wie beispielsweise das Internet, ein lokales Netzwerk (LAN) und/oder andere Netzwerke, zu kommunizieren. Die API 140 ermöglicht es der Anwendung 130, mit dem Kernel-Auswahlsystem 100 zu kommunizieren, ohne dass die Anwendung 130 Kenntnisse über die Funktionsweise des Kernel-Auswahlsystems 100 haben muss. So kann die Anwendung 130 eine Anforderung für eine Berechnung zusammen mit einem oder mehreren Parametern, wie beispielsweise Eingabedaten für einen Kernel, übermitteln und ein Ergebnis als Antwort erhalten.
  • Die Datenbank 102 beinhaltet eine Vielzahl von Kerneln, die dazu verwendet werden können, um eine oder mehrere Operationen durchzuführen, die von einer Anwendung 130 über die API 140 angefordert werden. Jeder Kernel kann einer bestimmten Berechnung zugeordnet sein und kann mit bereitgestellten Eingabedaten verwendet werden, um ein Ergebnis zu erzeugen. Zum Beispiel kann ein in einer Datenbank 105 gespeicherter Kernel einer allgemeinen Matrixmultiplikation (GeMM) zugeordnet sein. Der GeMM-Kernel kann dann von einer Ausführungskomponente, wie beispielsweise dem Kernel-Prozessor 104, verwendet werden, der die Berechnung unter Verwendung des GeMM-Kernels durchführen kann. In einigen Ausführungsformen kann die Datenbank 102 eine Vielzahl von Kerneln für eine bestimmte Berechnung beinhalten. Beispielsweise kann die Datenbank 102 die Kernel K1....Kn zur Durchführung einer GeMM-Berechnung beinhalten, wobei jeder ein anderes Verfahren zur Erzeugung desselben Ergebnisses verwendet.
  • Der Kernel-Prozessor 104 ist eine Komponente, die einen Kernel ausführt, um ein Berechnungsergebnis für einen gegebenen Satz von Eingaben zu berechnen. In einigen Ausführungsformen kann der Kernel-Prozessor 104 derselbe Prozessor sein, der die Kernel-Auswahl-Engine 100 ausführt. In einigen Ausführungsformen können sowohl der Kernel-Prozessor 104 als auch der Prozessor, der die Kernel-Auswahl-Engine 100 ausführt, separate Prozessoren und/oder Prozessoren sein, die in dasselbe System integriert sind. Beispielsweise kann der Kernel-Prozessor 104 eine Grafikverarbeitungseinheit (GPU) sein, die auf demselben System arbeitet wie ein oder mehrere separate Prozessoren, die die Kernel-Auswahl-Engine 100 ausführen.
  • Der Kandidaten-Kernel-Generator 106 bestimmt einen oder mehrere Kandidaten-Kernel, die von dem Kernel-Prozessor 104 verwendet werden können, um eine Ergebnisberechnung zu ermitteln. Der Kandidaten-Kernel-Generator 106 identifiziert die Kernel in der Datenbank 102, die für die Ausführung der in einer Anforderung empfangenen Operation zur Verfügung stehen, sowie die Eigenschaften der Eingabedaten. Beispielsweise können ein oder mehrere Kernel in der Größe der Matrizen eingeschränkt sein, die als Eingabe zur Berechnung eines Ergebnisses verwendet werden können, und/oder können ein oder mehrere der Kernel spezifisch für eine bestimmte Berechnung sein. Auf diese Weise kann der Kandidaten-Kernel-Generator 106 eine Liste der in der Datenbank 102 gespeicherten Kernel bestimmen, die verwendet werden können, um der Anwendung 130 ein Ergebnis zu liefern.
  • Ein Filter 108 entfernt alle Kernel aus der Liste der Kandidaten-Kernel, die angesichts bestimmter Einschränkungen des Systems nicht praktikabel und/oder unmöglich auszuführen sind. So kann Filter 108 beispielsweise die Hardwarebeschränkungen des Kernel-Prozessors 104 identifizieren und bestimmen, dass der Kernel-Prozessor 104 für einen bestimmten Kernel nicht über die Ressourcen verfügt (oder wahrscheinlich nicht verfügen wird), um die gegebenen Inputs mit diesem Kernel zu verarbeiten. Daher kann der Filter 108 den Kernel aus der Kandidaten-Kernelliste entfernen, sodass das neuronale Netzwerk diesen Kernel nicht als potenziell optimalen Kernel verarbeitet.
  • Sobald eine Kandidatenliste von Kerneln bestimmt wurde, wird dem neuronalen Netzwerk 110 die Liste zusammen mit den Eingabedaten bereitgestellt. Das neuronale Netzwerk wird trainiert, um auf der Grundlage der Liste der Kandidaten-Kernel einen Relevanzwert für jeden der Kernel zu bestimmen, der vorhersagt, wie ein bestimmter Kernel eine Berechnung mit den Eingabedaten durchführen wird. Das neuronale Netzwerk kann von einem Trainingssystem 120 trainiert werden, wie hierin weiter beschrieben wird.
  • Ein Sortierer 112 sortiert die Kandidaten-Kernel nach Relevanz, basierend auf der Ausgabe des neuronalen Netzwerks. Zum Beispiel kann der Sortierer 112 für eine gegebene Liste von Kerneln mit Relevanzwerten die Liste so sortieren, dass der erste Kernel in der Liste der relevanteste Kernel für die Durchführung einer Berechnung mit den Eingabedaten ist. Die Auswahl-Engine 114 wählt dann einen Kernel aus der sortierten Liste aus, wie beispielsweise den Kernel mit der höchsten Relevanzbewertung. Der ausgewählte Kernel wird dann dem Kernel-Prozessor 104 zur Verfügung gestellt, der die Berechnung unter Verwendung des ausgewählten Kernels und den Eingabedaten ausführen kann. Die Ergebnisse des Kernel-Prozessors 104 können dann der Anwendung 130 über die API 140 zur Verfügung gestellt werden.
  • Bezug auf 2 nehmend ist ein Ablaufdiagramm bereitgestellt, das die Verarbeitung von Eingabedaten zu einer Rangliste von Kerneln zur Durchführung einer Berechnung veranschaulicht. Die Anwendung stellt der API 202 zunächst Eingabedaten zur Verfügung. Diese Eingabedaten können Matrizen, Matrixgrößen und/oder anderen Input beinhalten, der die Eingangsmatrizen oder die auszuführende Berechnung beschreibt. In einigen Ausführungsformen ist die Berechnung bereits durchgeführt worden. Daher kann ein Sitzungscache 204 gepflegt werden, der Ergebnisberechnungen für Matrizen beinhaltet, die bereits innerhalb der Sitzung bereitgestellt wurden. Durch die Unterhaltung eines Caches können Ergebnisse sofort für die Anwendung bereitgestellt werden, ohne dass zusätzliche Berechnungen und/oder die Verwendung des neuronalen Netzwerks erforderlich sind. In einigen Ausführungsformen kann die Eingabe einem Cache mit hoher Priorität bereitgestellt werden, wenn ein genaues Ergebnis erforderlich ist. In Übereinstimmung mit solchen Ausführungsformen verwendet der Cache mit hoher Priorität nicht das neuronale Netzwerk bei der Auswahl eines Kernels, sondern liefert stattdessen direkt eine geordnete Liste bzw. Rangliste von Kerneln an die Auswahlkomponente 114 zur Verarbeitung durch den Kernel-Prozessor 104. Weil die Anzahl der möglichen Kernel sehr groß ist, beinhaltet der Cache mit hoher Priorität möglicherweise nicht alle möglichen Kernel und kann mehr Ressourcen zur Ausführung benötigen als die Verwendung des neuronalen Netzwerks. Daher kann der Cache mit hoher Priorität in begrenzten Fällen verwendet werden, in denen das neuronale Netzwerk nicht die erforderliche Leistung erbringt.
  • Falls keiner der Caches zur Erzeugung einer Rangliste von Kerneln verwendet wird, wird eine Liste von Kerneln erzeugt. Die Erstellung der Liste von Kandidaten-Kerneln kann von einer Komponente durchgeführt werden, die eine oder mehrere Eigenschaften mit dem Kandidaten-Kernel-Generator 106 teilt. Sobald die Kandidaten-Kernel generiert sind, wird die Liste einem Filter 210 zur Verfügung gestellt, der alle Kernel entfernen kann, deren Ausführung angesichts einer oder mehrerer Einschränkungen, wie beispielsweise Hardware-Einschränkungen des ausführenden Prozessors, unmöglich oder nicht praktikabel ist. Die gefilterte Liste von Kerneln wird dann dem neuronalen Netzwerk 212 zur Verfügung gestellt. In einigen Ausführungsformen kann die gefilterte Liste von Kerneln dem neuronalen Netzwerk zusammen mit zusätzlichen Informationen, wie beispielsweise abgeleiteten Merkmalen, die die Kernel und/oder den Input, die angeforderte Berechnung und/oder spezifische Hardwarespezifikationen für die Zielausführungshardware charakterisieren, bereitgestellt werden. Das neuronale Netzwerk generiert eine vorhergesagte Rangfolge, oder Relevanzbewertung, für jeden der Kernel. Die resultierende Liste von Kerneln wird dann sortiert 214, und eine Rangliste von Kernein 216 wird erstellt. Die Rangliste von Kernein 216 kann dann von einer Auswahlkomponente, z.B. der Auswahlkomponente 114, verwendet werden, um eine Berechnung auszuführen und der Anwendung ein Ergebnis zu liefern.
  • Obwohl die Verwendung eines neuronalen Netzwerks zur Auswahl eines Kernels für die Durchführung einer Berechnung zu einer schnelleren und effizienteren Leistung führen kann, muss das Training des neuronalen Netzwerks angesichts der begrenzten Ressourcen und Zeit, die für das erfolgreiche Training des Netzwerks erforderlich sind, ebenfalls effizient sein. Ferner muss das trainierte neuronale Netzwerk derart trainiert werden, dass die Ergebnisse insgesamt genau sind und zu einer korrekten Verallgemeinerung von potenziellen Input- bzw. Eingabedatensätzen führen. Zum Beispiel kann der Inputraum für Berechnungen unendlich groß sein, da Matrizen beliebiger Größe als Input bereitgestellt werden können. Es ist also unmöglich, das neuronale Netzwerk auf alle möglichen Inputs zu trainieren. Daher kann das Auswählen der besten Trainingsdaten oder das Identifizieren von Trainingsdaten, die den größten Einfluss auf das Training des neuronalen Netzwerks haben, die Kosten für das Training des neuronalen Netzwerks senken und dennoch zu einem neuronalen Netzwerk führen, das effektiv Kerne bewerten kann, wie hierin beschrieben wird.
  • 3 ist eine beispielhafte Umgebung, die zum Trainieren eines neuronalen Netzwerks verwendet werden kann, um Kernel zu bewerten, um eine Berechnung durchzuführen. Das Trainingssystem 300 kann das gleiche System sein wie das in 1 als Trainingssystem 120 dargestellte. Das Trainingssystem beinhaltet einen Kernel-Prozessor 302, der derselbe sein kann oder die gleichen Eigenschaften aufweisen kann wie der Kernel-Prozessor 104 von 1. In einigen Ausführungsformen können mehrere Kernel-Prozessoren mit jeweils unterschiedlichen HardwareSpezifikationen in dem Trainingssystem 300 enthalten sein. Beispielsweise kann ein Kernel auf verschiedenen Prozessoren mit jeweils unterschiedlichen Verhaltenscharakteristika ausgeführt werden, und können die Charakteristika des Prozessors dem neuronalen Netzwerk 304 zusammen mit Eingabedaten, Informationen über Berechnungsergebnisse und/oder anderen Eingaben des neuronalen Netzwerks als Trainingsdaten zur Verfügung gestellt werden. Das neuronale Netzwerk 304 kann das gleiche sein und/oder ähnliche Eigenschaften aufweisen wie das neuronale Netzwerk 110 von 1.
  • Ein Eingabe- bzw. Inputgenerator 306 erzeugt Matrixeigenschaften, die als Trainingsinput für das neuronale Netzwerk 304 verwendet werden. Der Trainingsinput kann Eigenschaften von einer oder mehreren Matrizen beinhalten, die in einer Anforderung zur Durchführung einer mathematischen Operation bereitgestellt werden können. Beispielsweise können Eigenschaften von zwei Matrizen erzeugt werden, auf welchen eine allgemeine Matrixmultiplikation (GeMM) durchgeführt werden könnte. In einigen Ausführungsformen kann der Inputgenerator 306 zufällige Matrixeigenschaften erzeugen. Wie jedoch vorstehend erwähnt wurde, ist der Inputraum unendlich groß. Daher kann der Inputgenerator 306 in einigen Ausführungsformen Inputs bzw. Eingaben von einer oder mehreren anderen Komponenten erhalten, um besser sicherzustellen, dass der erzeugte Input für das Training des neuronalen Netzwerks 304 von Bedeutung ist.
  • Die Kernel-Datenbank 308 beinhaltet eine Vielzahl von Kerneln, von denen jeder eine Berechnung mit einem Satz von Eingangsmatrizen durchführen kann. Für jeden Trainingsinput kann jeder der mehreren in der Kernel-Datenbank 308 gespeicherten Kernel dem Kernel-Prozessor 302 bereitgestellt werden, um eine Berechnung durchzuführen. Zum Beispiel kann die Kernel-Datenbank Kernel K1...Kn beinhalten, von denen jeder dem Kernel-Prozessor 302 (oder einer Vielzahl von Kernel-Prozessoren) zur Verfügung gestellt werden kann, um eines Ergebnissatz zu erzeugen. Der Ergebnissatz kann Informationen bezüglich der Ausführung des Trainingsinputs auf dem Kernel-Prozessor 302 beinhalten. Der Ergebnissatz kann z.B. für jeden auf einem Prozessor ausgeführten Kernel Prozessorinformationen, die Laufzeit für den Kernel und/oder eine Klasse für den Trainingsinput beinhalten.
  • Die Inputklasse kann Eigenschaften einer Matrix beinhalten, die die Matrix als Teil eines bestimmten Unterraums innerhalb des Raums möglicher Inputs identifiziert. Beispielsweise können einige Matrizen schwer zu modellieren sein, welches eine Klasse von Matrizen bilden kann. In einigen Ausführungsformen kann eine Klasse von Matrizen ein Unterraum von Matrizen sein, wodurch kleine Änderungen in den Matrizen zu signifikanten Änderungen in dem optimalen Kernel zur Durchführung der Berechnung führen.
  • Ein Relevanzrechner 310 bestimmt einen Relevanzwert für jeden der Kernel in dem Ergebnissatz, basierend auf der Laufzeit des Kernels während der Ausführung der Matrixberechnung. Die Relevanzbewertung kann z.B. ein numerischer Wert zwischen 0 und 1 sein, wobei 1 bedeutet, dass der Kernel vollkommen relevant war, und 0 bedeutet, dass der Kernel unmöglich war. So kann ein Kernel mit einer Relevanzbewertung von 0,25 schlechter geleistet haben (z.B. eine längere Laufzeit benötigt haben) als ein Kernel, dem eine Relevanzbewertung von 0,75 zugeordnet ist. Der Ergebnissatz kann dann in Übereinstimmung mit Relevanzwerten für die weitere Verarbeitung rangmäßig geordnet werden.
  • Der Ergebnissatz und der Trainingsinput können dem neuronalen Netzwerk als Trainingsdaten zur Verfügung gestellt werden. Das neuronale Netzwerk kann dann den Input verarbeiten, um eine vorhergesagte Relevanzbewertung für jeden der Kernel zu bestimmen, welche dann in eine vorhergesagte Rangfolge der Kernel eingeordnet werden kann. In einigen Ausführungsformen können Hardware-Verhaltensinformationen, die den zur Durchführung der Berechnungen verwendeten Prozessor angeben, zusammen mit dem Trainingsinput und dem geordneten Ergebnissatz bereitgestellt werden. Wenn also eine Berechnung von dem neuronalen Netzwerk 304 angefordert wird, kann die Hardware-Spezifikation mit Input derart versorgt werden, dass das neuronale Netzwerk Hardware-Unterschiede beim Erzeugen einer vorhergesagten Liste von Kerneln berücksichtigen kann.
  • In einigen Ausführungsformen können zusätzliche Trainingsinputs basierend auf der Ausgabe des neuronalen Netzwerks 304 während des Trainings erzeugt werden. Die zusätzliche Eingabe kann vom Inputgenerator 306 auf der Grundlage von Informationen in Bezug auf eine Klasse der Eingabedaten erzeugt werden. Beispielsweise kann der Trainingsinput dem neuronalen Netzwerk zum Training zur Verfügung gestellt werden und die vorhergesagte Rangfolge der Kerne kann mit der tatsächlichen Rangfolge der Kerne verglichen werden. Wenn sich die Listen unterscheiden oder sich um mehr als eine Schwellendifferenz unterscheiden, kann eine Klasse für den Trainingsinput bestimmt werden, und ein Signal kann dem Inputgenerator 306 bereitgestellt werden, um zusätzlichen Trainingsinput zu erzeugen, die sich auf diese Klasse bezieht. Auf diese Weise kann das neuronale Netzwerk 304 mit zusätzlichen Trainingsinputs versorgt werden, um das neuronale Netzwerk 304 dabei zu unterstützen, die Differenz zwischen einer tatsächlichen Rangliste und der vorhergesagten Rangliste zu verringern. Auf diese Weise kann der nachfolgende Trainingsinput besser auf die Fälle zugeschnitten werden, in denen der Trainingsinput die falsche (oder suboptimale) Ausgabe am meisten beeinflusst.
  • In einigen Implementierungen kann die Differenz zwischen der vorhergesagten Liste und der tatsächlichen Ergebnisliste unter Verwendung einer listenbasierten Verlustfunktion bestimmt werden. Zum Beispiel kann eine Jensen-Shannon-Divergenz und/oder eine symmetrisierte Kullback-Liebler-Divergenz verwendet werden, um einen Verlust zwischen den tatsächlichen und den vorhergesagten Ergebnissen zu bestimmen. In Fällen, in denen der Verlust für eine Klasse von Matrizen signifikant ist (z.B. wenn das neuronale Netzwerk bei einem Satz von Matrizen schlecht abschneidet), kann der zusätzliche Trainingsinput für das neuronale Netzwerk mehr Trainingsinputs für diese Klasse von Matrizen beinhalten, wenn das oberste vorhergesagte Ergebnis nicht mit dem tatsächlichen obersten Ergebnis-Kernel übereinstimmt (oder z.B. der tatsächliche optimale Kernel nicht innerhalb eines Schwellenwerts von der Spitze der vorhergesagten Ergebnisse liegt). Dies kann das Aktualisieren des Gewichtungsfaktors für eine oder mehrere Klassen von Matrizen beinhalten, so dass das neuronale Netzwerk mehr Trainingsinputs dieser Klasse erhält als andere Klassen, die einen niedrigeren Gewichtungsfaktor in den Trainingsdaten haben.
  • In einigen Ausführungsformen werden zwei oder mehr Trainingsinputs identifiziert, die zur gleichen Klasse gehören. Jede der Trainingsinputs kann wie hier beschrieben verarbeitet werden, und die Genauigkeit jedes der vorhergesagten Ergebnisse kann bestimmt werden. Wenn der Unterschied zwischen der Genauigkeit der vorhergesagten Ergebnisse eines Trainingsinputs und der Genauigkeit der vorhergesagten Ergebnisse einer oder mehrerer anderer vorhergesagter Ergebnisse mathematisch signifikant ist, kann ein zusätzlicher Trainingsinput derselben Klasse erzeugt und dem neuronalen Netzwerk als Trainingsinput bereitgestellt werden.
  • In einigen Ausführungsformen kann der Trainingsinput so generiert werden, dass die Trainingsdaten einen erheblichen Teil des Trainingsinputraums überspannen. Beispielsweise kann die Matrixgröße aufgrund der Hardwarebeschränkungen des Prozessors, der die Kernel ausführt, auf eine bestimmte maximale Größe begrenzt sein. Daher sollte der Trainingsinput für das neuronale Netzwerk Matrixgrößen beinhalten, die der möglichen Eingabe entsprechen, die zur Verarbeitung durch das neuronale Netzwerk empfangen werden kann.
  • In 4 ist ein Ablaufdiagramm dargestellt, das ein Beispiel für eine hier beschriebene Ausführungsform zeigt. Einige Ausführungsformen können mehr oder weniger Schritte aufweisen und/oder einen oder mehrere Schritte in einer anderen Reihenfolge durchführen. Das in 4 dargestellte Verfahren kann von einer Umgebung ausgeführt werden, die eine oder mehrere Eigenschaften mit der in 1 bis 3 dargestellten Umgebung teilt, wie hier beschrieben.
  • In Schritt 405 wird eine Anforderung für eine Matrixberechnung empfangen. Die Anforderung kann über eine Anwendungsprogrammierschnittstelle (API) empfangen werden, wie beispielsweise API 140 von 1. Die Anforderung kann eine oder mehrere Matrizen, einen Typ der durchzuführenden Berechnung und/oder andere Merkmale von Eingangsmatrizen beinhalten. In einigen Ausführungsformen kann eine Anwendung die Berechnung aus einer Bibliothek von API-Funktionen anfordern.
  • In Schritt 410 werden Merkmale der einen oder mehreren Matrizen einem trainierten neuronalen Netzwerk zur Verfügung gestellt. Zu den Merkmalen können z.B. die Dimensionen der Eingangsmatrizen, eine Charakterisierung der Matrizen und/oder andere Merkmale gehören, die die Eingaben beschreiben. Das neuronale Netzwerk wird trainiert, um eine Rangliste von Kandidaten-Kerneln zu erzeugen, die zur Durchführung einer Matrixberechnung verwendet werden können. In einigen Ausführungsformen kann das neuronale Netzwerk unter Verwendung einer oder mehrerer hierin beschriebener Ausführungsformen trainiert werden. Zum Beispiel kann das neuronale Netzwerk mit einem Trainingssystem 300 trainiert werden, wie in 3 dargestellt.
  • In Schritt 415 erzeugt das neuronale Netzwerk eine Rangliste von Kerneln, um die angeforderte Berechnung durchzuführen. Das neuronale Netzwerk kann z.B. einen Relevanzwert für jeden der Kernel in einer Liste von Kerneln bestimmen. Ein Relevanzwert kann angeben, wie wahrscheinlich es ist, dass ein Kernel ein optimaler Kernel für die Durchführung der Berechnung ist. In Schritt 420 wird der optimale Kernel ausgewählt. Der optimale Kernel kann z.B. der Kernel sein, dem das neuronale Netzwerk die höchste Relevanzbewertung zugewiesen hat.
  • In Schritt 425 wird der optimale Kernel verwendet, um ein Ergebnis zu erzeugen. Das Ergebnis kann von einem Prozessor erzeugt werden, der für die Durchführung von Matrixberechnungen konfiguriert ist. Beispielsweise kann das Ergebnis von einem Prozessor erzeugt werden, der eine oder mehrere Eigenschaften mit dem Kernel-Prozessor 104 teilt. In Schritt 430 wird das Ergebnis als Reaktion auf den Empfang der Anforderung bereitgestellt. Das Ergebnis kann über eine API bereitgestellt werden, wie beispielsweise API 140 in 1.
  • In 5 ist ein Ablaufdiagramm dargestellt, das ein Beispiel für eine hier beschriebene Ausführungsform zeigt. Einige Ausführungsformen können mehr oder weniger Schritte aufweisen und/oder einen oder mehrere Schritte in einer anderen Reihenfolge durchführen. Das in 5 dargestellte Verfahren kann von einer Umgebung ausgeführt werden, die eine oder mehrere Eigenschaften mit der in 1-3 dargestellten Umgebung teilt, wie hier beschrieben.
  • In Schritt 505 wird ein Trainingsinput erzeugt. Der Trainingsinput kann Merkmale von einer oder mehreren Matrizen beinhalten, die in einer Anforderung zur Durchführung einer Berechnung bereitgestellt werden können. Der Trainingsinput wird generiert, um ein neuronales Netzwerk zu trainieren, um einem oder mehreren Kerneln Relevanzwerte zuzuweisen, damit ein optimaler Kernel ausgewählt werden kann. Die Matrizen können zufällig generiert werden und können zufällige Größen haben. In einigen Ausführungsformen kann der generierte Trainingsinput auf der Grundlage von Beschränkungen der Hardware eines oder mehrerer Prozessoren, die einen oder mehrere Kernel ausführen, um ein Ergebnis zu berechnen, begrenzt sein. Beispielsweise kann der Trainingsinput von einer Komponente erzeugt werden, die eine oder mehrere Eigenschaften mit dem Inputgenerator 306 von 3 teilt. Der Inputgenerator kann die Hardwarespezifikationen für den Kernel-Prozessor 302 bestimmen und den Trainingsinput nur auf Matrizen beschränken, die innerhalb der Fähigkeiten des Kernel-Prozessors 302 liegen. In einigen Ausführungsformen kann der Trainingsinput basierend auf einer oder mehreren anderen Einschränkungen, wie hier beschrieben, generiert werden.
  • In Schritt 510 wird ein Ergebnissatz für den Trainingsinput erzeugt. Der Ergebnissatz beinhaltet einen oder mehrere Kernel, die verwendet werden können, um eine Berechnung mit dem Ergebnissatz durchzuführen. Beispielsweise kann der Ergebnissatz Kernel beinhalten, die zur Durchführung einer allgemeinen Matrixmultiplikation verwendet werden können. Jeder Kernel kann von einem Prozessor verwendet werden, um ein Ergebnis zu erzeugen, und die Laufzeit für die Durchführung jeder Berechnung kann in den Ergebnissatz aufgenommen werden. In Schritt 515 wird jedem Kernel in dem Ergebnissatz eine Relevanzbewertung zugewiesen, die die Qualität der Leistung dieses Kernels bei der Durchführung der Berechnung angibt. So kann Kernel mit schnelleren Laufzeiten eine höhere Punktzahl zugewiesen werden als Kernel, die langsamer arbeiten. In Schritt 520 können die Kernel basierend auf den Laufzeiten und/oder den zugewiesenen Relevanzwerten in eine Rangfolge gebracht werden.
  • In Schritt 525 werden der Trainingsinput und die Relevanzwerte einem neuronalen Netzwerk zum Training zur Verfügung gestellt. Das neuronale Netzwerk wird so trainiert, dass es die Merkmale einer oder mehrerer Matrizen als Eingabe erhält und eine nach Relevanzwerten geordnete Liste von Kerneln erzeugt. In einigen Ausführungsformen kann das neuronale Netzwerk verwendet werden, um einen optimalen Kernel aus einer Kandidatenliste von Kerneln basierend auf der Eingabe auszuwählen.
  • In einigen Ausführungsformen kann die Ausgabe des neuronalen Netzwerks verwendet werden, um weitere Trainingsinputs zu erzeugen. In Fällen, in denen das neuronale Netzwerk keinen optimalen Kernel auswählt, kann beispielsweise ein zusätzlicher Trainingsinput erzeugt werden, der einer ähnlichen Klasse angehört wie der Input, der zu dem suboptimalen Ergebnis geführt hat. In einigen Ausführungsformen können einer oder mehreren Klassen von Eingaben Gewichte zugewiesen werden, die die Häufigkeit angeben, mit der das neuronale Netzwerk Trainingsdaten aus dieser Klasse erhält. Wenn also zukünftige Trainingsinputs generiert werden, kann der Trainingsinput auf Eingaben beschränkt werden, die die Leistung des neuronalen Netzwerks verbessern.
  • In einigen Ausführungsformen kann dem neuronalen Netzwerk ein Trainingsinput zur Verfügung gestellt werden und kann die Leistung des neuronalen Netzwerks bei der Bestimmung einer Liste von Kerneln abnehmen (z.B. kann es mehr Zeit benötigen, um eine Liste zu erstellen, wodurch eine Liste von Kerneln vorausgesagt wird, die weniger optimal ist als vor dem Training). In diesen Fällen kann der Zustand des neuronalen Netzwerks auf einen Zustand vor dem Training zurückgesetzt werden und kann der Trainingsinput und/oder eine Klasse des Trainingsinputs aus der zukünftigen Erzeugung von Trainingsinputs entfernt werden.
  • 6 veranschaulicht ein beispielhaftes System 600, das in zumindest einer Ausführungsform zur Klassifizierung von Daten oder zur Erzeugung von Schlussfolgerungen bzw. Inferenzen verwendet werden kann. In zumindest einer Ausführungsform kann sowohl überwachtes als auch unüberwachtes Training in zumindest einer hierin diskutierten Ausführungsform verwendet werden. In zumindest einer Ausführungsform wird ein Satz von Trainingsdaten 602 (z.B. klassifizierte oder gekennzeichnete Daten) als Eingabe bereitgestellt, um als Trainingsdaten zu fungieren. In zumindest einer Ausführungsform können Trainingsdaten Instanzen zumindest eines Objekttyps beinhalten, für welchen ein neuronales Netzwerk zu trainieren ist, sowie Informationen, die diesen Objekttyp identifizieren. In zumindest einer Ausführungsform könnten Trainingsdaten einen Satz von Bildern umfassen, die jeweils eine Repräsentation eines Objekttyps beinhalten, wobei jedes Bild auch ein Etikett, Metadaten, eine Klassifizierung oder andere Informationsteile beinhaltet oder diesen zugeordnet ist, die einen Objekttyp identifizieren, der in einem entsprechenden Bild repräsentiert ist. Verschiedene andere Datentypen können ebenfalls als Trainingsdaten verwendet werden, wie und können beispielsweise Textdaten, Audiodaten, Videodaten und so weiter beinhalten. In zumindest einer Ausführungsform werden Trainingsdaten 602 als Trainingsinput für einen Trainingsmanager 604 bereitgestellt. In zumindest einer Ausführungsform kann der Trainingsmanager 604 ein System oder ein Dienst sein, der Hardware und Software beinhaltet, wie beispielsweise ein oder mehrere Rechenvorrichtungen, die eine Trainingsanwendung ausführen, um ein neuronales Netzwerk (oder ein anderes Modell oder einen Algorithmus usw.) zu trainieren. In zumindest einer Ausführungsform empfängt der Trainingsmanager 604 eine Anweisung oder Anforderung, die einen Modelltyp angibt, der für das Training zu verwenden ist. In zumindest einer Ausführungsform kann ein Modell ein beliebiges geeignetes statistisches Modell, Netzwerk oder Algorithmus sein, das bzw. der für solche Zwecke nützlich ist, und kann beispielsweise ein künstliches neuronales Netzwerk, einen Deep-Learning-Algorithmus, einen lernenden Klassifikator, ein Bayes'sches Netzwerk und so weiter beinhalten. In zumindest einer Ausführungsform kann der Trainingsmanager 604 ein Ausgangsmodell oder ein anderes untrainiertes Modell aus einem geeigneten Depot bzw. Repository 606 auswählen und Trainingsdaten 602 dazu verwenden, ein Modell zu trainieren und ein trainiertes Modell 608 (z.B. ein trainiertes tiefes neuronales Netzwerk) zu erzeugen, das verwendet werden kann, um ähnliche Datentypen zu klassifizieren oder andere derartige Inferenzen zu erzeugen. In zumindest einer Ausführungsform, in der keine Trainingsdaten verwendet werden, kann dennoch ein geeignetes Ausgangsmodell für das Training auf Eingangsdaten per Trainingsmanager 604 ausgewählt werden.
  • In zumindest einer Ausführungsform kann ein Modell in einer Anzahl verschiedener Arten trainiert werden, was zum Teil von der Art des gewählten Modells abhängen kann. In zumindest einer Ausführungsform kann ein Algorithmus maschinellen Lernens mit einem Satz von Trainingsdaten versehen sein, wobei ein Modell ein Modellartefakt ist, das durch einen Trainingsprozess erstellt wurde. In zumindest einer Ausführungsform beinhaltet jede Instanz von Trainingsdaten eine richtige Antwort (z.B. eine Klassifizierung), die als ein Ziel oder Zielattribut bezeichnet werden kann. In zumindest einer Ausführungsform findet ein Lernalgorithmus Muster in Trainingsdaten, die Eingabedatenattribute auf ein Ziel, eine vorherzusagende Antwort, abbilden, und wird ein Modell maschinellen Lernens ausgegeben, das diese Muster erfasst. In zumindest einer Ausführungsform kann ein Modell maschinellen Lernens dann verwendet werden, um Vorhersagen für neue Daten zu erhalten, für welche ein Ziel nicht spezifiziert ist.
  • In zumindest einer Ausführungsform kann ein Trainingsmanager 604 aus einer Reihe von Modellen maschinellen Lernens, einschließlich binärer Klassifikation, Multiklassenklassifikation und Regressionsmodellen, auswählen. In zumindest einer Ausführungsform kann eine Art eines zu verwendenden Modells zumindest teilweise von einer Art des vorherzusagenden Ziels abhängen. In zumindest einer Ausführungsform sagen Modelle maschinellen Lernens für binäre Klassifizierungsprobleme ein binäres Ergebnis voraus, wie beispielsweise eine von zwei möglichen Klassen. In zumindest einer Ausführungsform kann ein Lernalgorithmus wie beispielsweise logistische Regression zum Trainieren von binären Klassifikationsmodellen verwendet werden. In zumindest einer Ausführungsform ermöglichen Modelle maschinellen Lernens für Multiklassen-Klassifizierungsprobleme die Erstellung von Vorhersagen für mehrere Klassen, wie beispielsweise zur Vorhersage eines von mehr als zwei Ergebnissen. Multinomiale logistische Regression kann zum Trainieren von Multiklassenmodellen nützlich sein. Modelle für maschinelles Lernen für Regressionsprobleme sagen einen numerischen Wert voraus. Lineare Regression kann zum Trainieren von Regressionsmodellen nützlich sein.
  • In zumindest einer Ausführungsform muss, um ein Modell maschinellen Lernens in Übereinstimmung mit einer Ausführungsform zu trainieren, ein Trainingsmanager eine Input- bzw. Eingabetrainingsdatenquelle sowie andere Informationen wie beispielsweise einen Namen eines Datenattributs, das ein vorherzusagendes Ziel beinhaltet, erforderliche Datentransformationsanweisungen und Trainingsparameter zur Steuerung eines Lernalgorithmus bestimmen. In zumindest einer Ausführungsform kann ein Trainingsmanager 604 während eines Trainingsprozesses automatisch einen geeigneten Lernalgorithmus basierend auf einem in einer Trainingsdatenquelle angegebenen Zieltyp auswählen. In zumindest einer Ausführungsform können maschinelle Lernalgorithmen Parameter akzeptieren, die zur Steuerung bestimmter Eigenschaften eines Trainingsprozesses und eines resultierenden Modelle maschinellen Lernens verwendet werden. Diese werden hierin als Trainingsparameter bezeichnet. In zumindest einer Ausführungsform kann dann, wenn keine Trainingsparameter spezifiziert sind, ein Trainingsmanager, Standardwerte verwenden, von denen bekannt ist, dass sie für einen großen Bereich von maschinellen Lernaufgaben gut funktionieren. Beispiele für Trainingsparameter, für die Werte spezifiziert werden können, beinhalten maximale Modellgröße, maximale Anzahl von Durchläufen über Trainingsdaten, Shuffle-Typ, Regelungsart, Lernrate und Regelungsumfang. Standardeinstellungen können spezifiziert werden, mit Optionen zur Anpassung von Werten zur Feinabstimmung der Leistung.
  • In zumindest einer Ausführungsform ist eine maximale Modellgröße eine Gesamtgröße, in Byte-Einheiten, von Mustern, die während des Trainings eines Modells erstellt werden. In zumindest einer Ausführungsform kann ein Modell standardmäßig mit einer bestimmten Größe erstellt werden, z.B. ein Modell von 100 MB. Falls ein Trainingsmanager nicht in der Lage ist, genügend Muster zu ermitteln, um eine Modellgröße zu füllen, kann ein kleineres Modell erstellt werden. Falls ein Trainingsmanager mehr Muster findet, als in die spezifizierte Größe passen werden, kann ein Maximal-Cut-Off erzwungen werden, indem Muster getrimmt bzw. abgeschnitten werden, die die Qualität eines gelernten Modells am wenigsten beeinträchtigen. Die Wahl einer Modellgröße ermöglicht die Steuerung eines Kompromisses zwischen der Vorhersagequalität eines Modells und den Kosten der Nutzung. In zumindest einer Ausführungsform können kleinere Modelle einen Trainingsmanager dazu veranlassen, viele Muster zu entfernen, um in eine Maximalgrößenbegrenzung zu passen, was die Qualität von Vorhersagen beeinträchtigt. In zumindest einer Ausführungsform können größere Modelle mehr kosten, um für Echtzeitvorhersagen abzufragen. In zumindest einer Ausführungsform führen größere Eingabedatensätze nicht unbedingt zu größeren Modellen, weil Modelle Muster und nicht Eingabedaten speichern. In zumindest einer Ausführungsform wird ein resultierendes Modell klein sein, falls es wenige und einfache Muster gibt. Bei Eingabedaten mit einer großen Anzahl von Rohattributen (Eingabespalten) oder abgeleiteten Merkmalen (Ausgaben von Datentransformationen) werden wahrscheinlich mehr Muster gefunden und während eines Trainingsprozesses gespeichert.
  • In zumindest einer Ausführungsform kann der Trainingsmanager 604 mehrere Durchläufe oder Iterationen über Trainingsdaten durchführen, um zu versuchen, Muster zu entdecken. In zumindest einer Ausführungsform kann es eine Standardanzahl von Durchläufen geben, wie beispielsweise zehn Durchläufe, während in zumindest einer Ausführungsform bis zu einer maximalen Anzahl von Durchläufen festgelegt werden kann, wie beispielsweise bis zu hundert Durchläufe. In zumindest einer Ausführungsform kann kein Maximum festgelegt sein, oder es kann ein Konvergenzkriterium oder ein anderer Faktor festgelegt sein, der ein Ende des Trainingsprozesses auslösen wird. In zumindest einer Ausführungsform kann der Trainingsmanager 604 eine Qualität von Mustern (z.B. für Modellkonvergenz) während des Trainings überwachen und das Training automatisch beenden, wenn es keine weiteren Datenpunkte oder Muster zu entdecken gibt. In zumindest einer Ausführungsform können bei Datensätzen mit nur wenigen Beobachtungen mehr Durchläufe über die Daten erforderlich sein, um eine ausreichend hohe Modellqualität zu erhalten. Größere Datensätze können viele ähnliche Datenpunkte beinhalten, was die Notwendigkeit einer großen Anzahl von Durchläufen reduzieren kann. Eine mögliche Auswirkung der Wahl von mehr Datendurchläufen über Daten ist, dass das Modelltraining länger dauern kann und in Bezug auf Ressourcen und Systemauslastung mehr kosten kann.
  • In zumindest einer Ausführungsform werden die Trainingsdaten vor dem Training oder zwischen den Trainingsdurchgängen geshuffled bzw. gemischt. In zumindest einer Ausführungsform ist das Shuffling bzw. Mischen ein zufälliges oder pseudozufälliges Mischen, um eine wirklich zufällige Reihenfolge zu erzeugen, obwohl es einige Einschränkungen geben kann, um sicherzustellen, dass es keine Gruppierung bestimmter Datentypen gibt, oder können gemischte Daten neu gemischt werden, falls eine solche Gruppierung existiert, usw. In zumindest einer Ausführungsform ändert das Mischen eine Reihenfolge oder Anordnung, in der Daten für das Training verwendet werden, so dass ein Trainingsalgorithmus nicht auf Gruppierungen ähnlicher Datentypen oder einen einzigen Datentyp für zu viele Beobachtungen in Folge stößt. In zumindest einer Ausführungsform könnte ein Modell dazu trainiert werden, ein Objekt vorherzusagen. In zumindest einer Ausführungsform könnten Daten vor dem Hochladen nach Objekttyp sortiert werden. In zumindest einer Ausführungsform kann ein Algorithmus die Daten dann alphabetisch nach Objekttyp verarbeiten, wobei er zunächst nur auf Daten für einen bestimmten Objekttyp trifft. In zumindest einer Ausführungsform beginnt ein Modell, Muster für diesen Objekttyp zu lernen. In zumindest einer Ausführungsform trifft ein Modell dann nur auf Daten für einen zweiten Objekttyp und versucht, ein Modell an diesen Objekttyp anzupassen, was die Muster, die zum ersten Objekttyp passen, verschlechtern kann. Dieser plötzliche Wechsel zwischen den Objekttypen kann dazu führen, dass ein Modell nicht lernt, die Objekttypen genau vorherzusagen. In zumindest einer Ausführungsform kann ein Mischen durchgeführt werden, bevor ein Trainingsdatensatz in Trainings- und Auswertungs-Teilmengen aufgeteilt wird, so dass eine relativ gleichmäßige Verteilung der Datentypen für beide Stufen verwendet wird. In zumindest einer Ausführungsform kann der Trainingsmanager 604 die Daten automatisch mischen, z.B. mit einer Pseudo-Zufallsmischungstechnik.
  • Bei der Erstellung eines maschinellen Lernmodells in zumindest einer Ausführungsform kann der Trainingsmanager 604 einem Benutzer ermöglichen, Einstellungen anzugeben oder benutzerdefinierte Optionen anzuwenden. In zumindest einer Ausführungsform kann ein Benutzer eine oder mehrere Bewertungseinstellungen festlegen, die einen Teil der Eingabedaten angeben, der für die Bewertung der Vorhersagequalität eines Modells maschinellen Lernens reserviert werden soll. In zumindest einer Ausführungsform kann ein Benutzer eine Richtlinie festlegen, die angibt, welche Attribute und Attributtransformationen für das Modelltraining verfügbar sind. In zumindest einer Ausführungsform kann ein Benutzer auch verschiedene Trainingsparameter angeben, die bestimmte Eigenschaften eines Trainingsprozesses und eines resultierenden Modells steuern.
  • In zumindest einer Ausführungsform kann, sobald ein Trainingsmanager festgestellt hat, dass das Training eines Modells abgeschlossen ist, wie beispielsweise durch Verwendung zumindest eines hierin diskutierten Endekriteriums, das trainierte Modell 608 zur Verwendung durch einen Klassifikator 614 bei der Klassifizierung von (oder anderweitigen Erzeugung von Schlussfolgerungen für) Validierungsdaten 612 bereitgestellt werden. In zumindest einer Ausführungsform beinhaltet dies einen logischen Übergang zwischen einem Trainingsmodus für ein Modell und einem Inferenzmodus für ein Modell. In zumindest einer Ausführungsform wird jedoch das trainierte Modell 608 zunächst an einen Evaluator 610 weitergeleitet, der eine Anwendung, einen Prozess oder einen Dienst beinhalten kann, die bzw. der auf zumindest einer Rechenressource (z.B. einer CPU oder GPU zumindest eines Servers) ausgeführt wird, um eine Qualität (oder einen anderen derartigen Aspekt) eines trainierten Modells zu evaluieren. In zumindest einer Ausführungsform wird ein Modell bewertet, um festzustellen, ob dieses Modell zumindest ein akzeptables Mindest- oder Schwellenwertniveau an Leistung bei der Vorhersage eines Ziels auf neuen und zukünftigen Daten bietet. Wenn dies nicht der Fall ist, kann der Trainingsmanager 604 mit dem Training dieses Modells fortfahren. In zumindest einer Ausführungsform kann es, da zukünftige Dateninstanzen oft unbekannte Zielwerte haben werden, wünschenswert sein, eine Genauigkeitsmetrik des maschinellen Lernens auf Daten zu überprüfen, für die eine Zielantwort bekannt ist, und diese Bewertung als Proxy für die Vorhersagegenauigkeit auf zukünftigen Daten zu verwenden.
  • In zumindest einer Ausführungsform wird ein Modell unter Verwendung einer Teilmenge von Trainingsdaten 602, die für das Training bereitgestellt wurde, ausgewertet. Diese Teilmenge kann unter Verwendung eines Shuffle- und Split-Ansatzes wie vorstehend beschrieben bestimmt werden. In zumindest einer Ausführungsform wird diese Teilmenge von Evaluierungsdaten mit einem Ziel gekennzeichnet und kann somit als eine Quelle von Grundwahrheit bzw. Ground Truth für die Evaluierung dienen. Ein Bewerten einer Vorhersagegenauigkeit eines Modells maschinellen Lernens mit denselben Daten, die für das Training verwendet wurden, ist nicht sinnvoll, da positive Bewertungen für Modelle erzeugt werden könnten, die sich Trainingsdaten merken, anstatt daraus zu generalisieren. In zumindest einer Ausführungsform wird nach Abschluss des Trainings die Teilmenge von Evaluierungsdaten mit dem trainierten Modell 608 verarbeitet, und der Evaluator 610 kann die Genauigkeit dieses Modells durch Vergleichen der Grundwahrheitsdaten mit entsprechenden Ausgaben (oder Vorhersagen/Beobachtungen) dieses Modells bestimmen. In zumindest einer Ausführungsform kann der Evaluator 610 eine Zusammenfassung oder Leistungsmetrik bereitstellen, die angibt, wie gut vorhergesagte und wahre Werte übereinstimmen. In zumindest einer Ausführungsform kann dann, wenn ein trainiertes Modell nicht zumindest ein minimales Leistungskriterium oder einen anderen solchen Genauigkeitsschwellenwert erfüllt, der Trainingsmanager 604 angewiesen werden, weiteres Training durchzuführen oder in einigen Fällen zu versuchen, ein neues oder anderes Modell zu trainieren. In zumindest einer Ausführungsform kann dann, wenn das trainierte Modell 608 die relevanten Kriterien erfüllt, ein trainiertes Modell zur Verwendung durch den Klassifikator 614 bereitgestellt werden.
  • Bei dem Erstellen und Trainieren eines Modells maschinellen Lernens kann es in zumindest einer Ausführungsform wünschenswert sein, Modelleinstellungen oder Trainingsparameter zu spezifizieren, die zu einem Modell führen, das genaue Vorhersagen machen kann. In zumindest einer Ausführungsform beinhalten Parameter eine Anzahl durchzuführender Durchläufe (vorwärts und/oder rückwärts), eine Regelung bzw. Regularisation oder Verfeinerung, eine Modellgröße und einen Shuffle-Typ bzw. eine Art der Mischung. In zumindest einer Ausführungsform könnte die Auswahl von Modellparametereinstellungen, die eine beste Vorhersageleistung auf Auswertungsdaten erzeugen, zu einer Überanpassung eines Modells führen. In zumindest einer Ausführungsform tritt eine Überanpassung auf, wenn sich ein Modell Muster gemerkt hat, die in Trainings- und Auswertungsdatenquellen vorkommen, aber nicht in der Lage war, Muster in Daten zu verallgemeinern. Überanpassung tritt häufig auf, wenn Trainingsdaten alle Daten umfassen, die in einer Auswertung verwendet werden. In zumindest einer Ausführungsform kann ein Modell, das überangepasst wurde, während der Auswertung gut abschneiden, aber bei neuen oder anderweitigen Validierungsdaten keine genauen Vorhersagen machen. Um zu vermeiden, dass ein überangepasstes Modell als bestes Modell ausgewählt wird, kann in zumindest einer Ausführungsform ein Trainingsmanager zusätzliche Daten zur Validierung der Leistung eines Modells reservieren. Beispielsweise könnte der Trainingsdatensatz in 60 Prozent für das Training und 40 Prozent für die Evaluierung oder Validierung aufgeteilt werden, die in zwei oder mehr Stufen unterteilt sein kann. In zumindest einer Ausführungsform kann nach der Auswahl von Modellparametern, die für Evaluierungsdaten gut funktionieren und zu Konvergenz auf einer Teilmenge von Validierungsdaten, wie beispielsweise der Hälfte dieser Validierungsdaten, führen, eine zweite Validierung mit einem Rest dieser Validierungsdaten durchgeführt werden, um die Leistung dieses Modells sicherzustellen. Falls dieses Modell die Erwartungen an die Validierungsdaten erfüllt, dann passt sich dieses Modell nicht zu sehr an die Daten an. In zumindest einer Ausführungsform kann ein Testsatz oder ein Held-out-Satz zum Testen von Parametern verwendet werden. In zumindest einer Ausführungsform hilft die Verwendung eines zweiten Validierungs- oder Testschritts bei der Auswahl geeigneter Modellparameter, um eine Überanpassung zu verhindern. Wenn jedoch mehr Daten aus einem Trainingsprozess zur Validierung zurückgehalten werden, stehen weniger Daten für das Training zur Verfügung. Dies kann bei kleineren Datensätzen problematisch sein, da möglicherweise nicht genügend Daten für das Training zur Verfügung stehen. In zumindest einer Ausführungsform besteht ein Ansatz in einer solchen Situation darin, eine Kreuzvalidierung durchzuführen, wie an anderer Stelle hierin beschrieben wird.
  • In zumindest einer Ausführungsform gibt es viele Metriken oder Erkenntnisse, die zur Überprüfung und Bewertung der Vorhersagegenauigkeit eines bestimmten Modells verwendet werden können. In zumindest einer Ausführungsform beinhaltet ein Bewertungsergebnis eine Metrik für die Vorhersagegenauigkeit, um über den Gesamterfolg eines Modells zu berichten, sowie Visualisierungen, um die Genauigkeit eines Modells über die Metrik für die Vorhersagegenauigkeit hinaus zu untersuchen. Ein Ergebnis kann auch die Möglichkeit bieten, die Auswirkungen des Setzens eines Schwellenwerts für die Punktzahl zu überprüfen, z.B. für eine binäre Klassifizierung, und kann Warnmeldungen zu Kriterien generieren, um die Gültigkeit einer Auswertung zu überprüfen. Die Wahl einer Metrik und einer Visualisierung kann zumindest teilweise von der Art des zu bewertenden Modells abhängen.
  • In zumindest einer Ausführungsform kann ein trainiertes maschinelles Lernmodell, nachdem es trainiert und zufriedenstellend ausgewertet wurde, zum Aufbau oder zur Unterstützung einer Anwendung maschinellen Lernens verwendet werden. In einer Ausführungsform ist der Aufbau einer Anwendung maschinellen Lernens ein iterativer Prozess, der eine Abfolge von Schritten umfasst. In zumindest einer Ausführungsform kann ein Kernproblem des maschinellen Lernens in Bezug auf das Beobachtete und die Antwort, die ein Modell vorhersagen soll, formuliert werden. In zumindest einer Ausführungsform können dann Daten gesammelt, bereinigt und vorbereitet werden, um die Daten für die Verwendung bzw. den Verbrauch durch Trainingsalgorithmen für Modelle maschinellen Lernens geeignet zu machen. Diese Daten können visualisiert und analysiert werden, um Plausibilitätsprüfungen durchzuführen, um eine Qualität der Daten zu validieren und um die Daten zu verstehen. Es kann sein, dass Rohdaten (z.B. Eingabevariablen) und Antwortdaten (z.B. ein Ziel) nicht auf eine Weise dargestellt werden, die zum Trainieren eines hoch prädiktiven Modells verwendet werden kann. Daher kann es wünschenswert sein, aus Rohvariablen aussagekräftigere Eingabedarstellungen oder Merkmale aufzubauen. Die sich daraus ergebenden Merkmale können in einen Lernalgorithmus eingespeist werden, um Modelle zu erstellen und die Qualität der Modelle anhand von Daten zu bewerten, die von der Modellbildung zurückgehalten wurden. Ein Modell kann dann verwendet werden, um Vorhersagen für eine Zielantwort für neue Dateninstanzen zu generieren.
  • In zumindest einer Ausführungsform wird in dem System 600 von 6 ein trainiertes Modell 610 nach der Auswertung einem Klassifikator 614 bereitgestellt oder verfügbar gemacht, der in der Lage ist, ein trainiertes Modell zur Verarbeitung von Validierungsdaten zu verwenden. In zumindest einer Ausführungsform können dies z.B. Daten sein, die von Benutzern oder Dritten empfangen werden, die nicht klassifiziert sind, wie beispielsweise Abfragebilder, die nach Informationen darüber suchen, was in diesen Bildern dargestellt ist. In zumindest einer Ausführungsform können die Validierungsdaten von einem Klassifikator unter Verwendung eines trainierten Modells verarbeitet werden, und können die erzeugten Ergebnisse 616 (z.B. Klassifizierungen oder Vorhersagen) an die jeweiligen Quellen zurückgesendet oder anderweitig verarbeitet oder gespeichert werden. In zumindest einer Ausführungsform, und wo eine solche Verwendung zulässig ist, können diese nun klassifizierten Dateninstanzen in einem Trainingsdatenspeicher gespeichert werden, der für das weitere Training des trainierten Modells 608 durch einen Trainingsmanager verwendet werden kann. In zumindest einer Ausführungsform wird ein Modell kontinuierlich trainiert, wenn neue Daten verfügbar sind, aber in zumindest einer Ausführungsform werden diese Modelle periodisch neu trainiert, z.B. einmal pro Tag oder Woche, abhängig von Faktoren wie der Größe eines Datensatzes oder der Komplexität eines Modells.
  • In zumindest einer Ausführungsform kann der Klassifikator 614 geeignete Hardware und Software zur Verarbeitung von Validierungsdaten 612 unter Verwendung eines trainierten Modells beinhalten. In zumindest einer Ausführungsform wird ein Klassifikator einen oder mehrere Computerserver mit jeweils einer oder mehreren Grafikverarbeitungseinheiten (GPUs), die in der Lage sind, Daten zu verarbeiten, beinhalten. In zumindest einer Ausführungsform können Konfiguration und Design von GPUs dazu führen, dass sie für die Verarbeitung von Daten des maschinellen Lernens besser geeignet sind als CPUs oder andere derartige Komponenten. In zumindest einer Ausführungsform kann ein trainiertes Modell in GPU-Speicher geladen und eine empfangene Dateninstanz einer GPU zur Verarbeitung bereitgestellt werden. GPUs können eine viel größere Anzahl von Kernen haben als CPUs, und GPU-Kerne können auch viel weniger komplex sein. In zumindest einer Ausführungsform kann eine bestimmte GPU in der Lage sein, Tausende von Dateninstanzen gleichzeitig über verschiedene Hardware-Threads zu verarbeiten. In zumindest einer Ausführungsform kann ein Grafikprozessor auch dazu konfiguriert sein, den Fließkommadurchsatz zu maximieren, was für einen großen Datensatz signifikante zusätzliche Verarbeitungsvorteile bieten kann.
  • In zumindest einer Ausführungsform können solche Tasks selbst bei Verwendung von GPUs, Beschleunigern und anderer solcher Hardware zur Beschleunigung von Tasks wie beispielsweise dem Training eines Modells oder der Klassifizierung von Daten unter Verwendung eines solchen Modells immer noch erhebliche Zeit, Ressourcenzuweisung und Kosten erfordern. In zumindest einer Ausführungsform, wenn ein Modell maschinellen Lernens in 600 Durchgängen zu trainieren ist und ein Datensatz 1.000.000 Dateninstanzen beinhaltet, die für das Training zu verwenden sind, müssten alle Millionen Instanzen für jeden Durchgang verarbeitet werden. Verschiedene Teile einer Architektur können auch von verschiedenen Vorrichtungstypen unterstützt werden. In zumindest einer Ausführungsform kann das Training mit einer Reihe von Servern an einem logisch zentralisierten Ort durchgeführt werden, und kann beispielsweise als ein Dienst angeboten werden, während die Klassifizierung der Rohdaten durch einen solchen Dienst oder auf einem Client-Vorrichtung durchgeführt werden kann, neben anderen solchen Optionen. Diese Vorrichtungen können auch im Besitz, Betrieb oder unter der Kontrolle ein und derselben Entität oder mehrerer Entitäten sein.
  • In zumindest einer Ausführungsform kann ein in 7 dargestelltes beispielhaftes neuronales Netzwerk 700 trainiert oder anderweitig verwendet werden. In zumindest einer Ausführungsform ist ein statistisches Modell ein künstliches neuronales Netzwerk (artificial neural network; ANN), das mehrere Schichten von Knoten beinhaltet, darunter eine Input- bzw. Eingabeschicht 702, eine Output- bzw. Ausgabeschicht 706 und mehrere Schichten 704 von Zwischenknoten, die oft als „verborgene“ Schichten bezeichnet werden, da interne Schichten und Knoten in neuronalen Netzwerken normalerweise nicht sichtbar oder zugänglich sind. Obwohl in zumindest einer Ausführungsform nur einige wenige Zwischenschichten zu Erklärungszwecken dargestellt sind, versteht sich, dass es keine Begrenzung für die Anzahl von Zwischenschichten gibt, die verwendet werden können, und wird jede Begrenzung von Schichten häufig ein Faktor von Ressourcen oder Zeit sein, die für die Verarbeitung unter Verwendung eines Modells erforderlich ist. In zumindest einer Ausführungsform können auch andere Arten von Modellen, Netzwerken, Algorithmen oder Prozessen verwendet werden, wie beispielsweise unter anderem eine andere Anzahl oder Auswahl von Knoten und Schichten. In zumindest einer Ausführungsform können Validierungsdaten durch Schichten eines Netzwerks verarbeitet werden, um einen Satz von Schlussfolgerungen oder Schlussfolgerungsbewertungen zu erzeugen, die dann einer Verlustfunktion 708 zugeführt werden können.
  • In zumindest einer Ausführungsform sind alle Knoten einer bestimmten Schicht mit allen Knoten einer benachbarten Schicht verbunden. In zumindest einer Ausführungsform sind dann jeweils Knoten einer Zwischenschicht mit Knoten zweier benachbarter Schichten verbunden. In zumindest einer Ausführungsform werden Knoten in einigen Modellen auch als Neuronen oder verbundene Einheiten bezeichnet, und werden Verbindungen zwischen Knoten als Kanten bezeichnet. Jeder Knoten kann eine Funktion für empfangene Eingaben ausführen, z.B. unter Verwendung einer bestimmten Funktion. In zumindest einer Ausführungsform können Knoten und Kanten während des Trainings unterschiedliche Gewichtungen erhalten, und können einzelne Schichten von Knoten bestimmte Arten von Transformationen an empfangenen Eingaben durchführen, wobei diese Transformationen auch während des Trainings gelernt oder angepasst werden können. In zumindest einer Ausführungsform kann das Lernen ein überwachtes oder unüberwachtes Lernen sein, was zumindest teilweise von der Art der in einem Trainingsdatensatz beinhaltenen Informationen abhängen kann. In zumindest einer Ausführungsform können verschiedene Arten von neuronalen Netzen verwendet werden, wie beispielsweise ein neuronales Faltungsnetzwerk (convolutional neural network; CNN), das eine Anzahl von Faltungsschichten und einen Satz von Pooling-Schichten beinhaltet und sich für Anwendungen wie die Bilderkennung als vorteilhaft erwiesen hat. CNNs können auch einfacher zu trainieren sein als andere Netzwerke, da nur eine relativ kleine Anzahl von Parametern bestimmt werden muss.
  • In zumindest einer Ausführungsform kann ein solches komplexes Modell maschinellen Lernens mit verschiedenen Abstimmungsparametern trainiert werden. Das Auswählen von Parametern, das Anpassen eines Modells und das Auswerten eines Modells sind Teile eines Modellabstimmungsprozesses, der oft als Hyperparameter-Optimierung bezeichnet wird. Eine solche Abstimmung kann in zumindest einer Ausführungsform eine Introspektion eines zugrunde liegenden Modells oder zugrunde liegender Daten beinhalten. In einer Trainings- oder Produktionsumgebung kann ein robuster Arbeitsablauf wichtig sein, um eine Überanpassung von Hyperparametern zu vermeiden, wie an anderer Stelle hierin beschrieben wurde. Kreuzvalidierung und das Hinzufügen von Gaußschem Rauschen zu einem Trainingsdatensatz sind Techniken, die nützlich sein können, um eine Überanpassung an einen bestimmten Datensatz zu vermeiden. Für die Hyperparameter-Optimierung kann es wünschenswert sein, die Trainings- und Validierungssätze fest zu halten. In zumindest einer Ausführungsform können Hyperparameter in bestimmten Kategorien, wie beispielsweise Datenvorverarbeitung (z.B. Übersetzung von Wörtern in Vektoren), Definition der CNN-Architektur (z.B. Filtergrößen, Anzahl der Filter), Parameter des stochastischen Gradientenabstiegs (SGD) (z.B. Lernrate) und Regularisation oder Verfeinerung (z.B. Dropout-Wahrscheinlichkeit), neben anderen solchen Optionen, abgestimmt werden.
  • In zumindest einer Ausführungsform können Instanzen eines Datensatzes während der Vorverarbeitung in einen niedrigdimensionalen Raum einer bestimmten Größe eingebettet werden. In zumindest einer Ausführungsform ist die Größe dieses Raums ein abzustimmender Parameter. In zumindest einer Ausführungsform beinhaltet eine Architektur eines CNN viele abstimmbare Parameter. Ein Parameter für Filtergrößen kann eine Interpretation von Informationen repräsentieren, die einer Größe Instanz entspricht, die analysiert werden wird. In der Computerlinguistik ist dies als eine n-Gramm-Größe bekannt. Ein beispielhaftes CNN verwendet drei verschiedene Filtergrößen, die potenziell verschiedene n-Gramm-Größen repräsentieren. Eine Anzahl von Filtern pro Filtergröße kann einer Filtertiefe entsprechen. Jeder Filter versucht, etwas anderes aus einer Struktur einer Instanz zu lernen, wie beispielsweise eine Satzstruktur für textuelle Daten. In einer Faltungsschicht kann eine Aktivierungsfunktion eine gleichgerichtete lineare Einheit sein und kann ein Pooling-Typ als Max-Pooling eingestellt sein. Ergebnisse können dann zu einem eindimensionalen Vektor konkateniert werden, und eine letzte Schicht ist vollständig mit einem zweidimensionalen Ausgang verbunden. Dies entspricht einer binären Klassifikation, auf die eine Optimierungsfunktion angewendet werden kann. Eine solche Funktion ist eine Implementierung einer Root Mean Square (RMS)-Propagationsverfahrens des Gradientenabstiegs, wobei beispielhafte Hyperparameter die Lernrate, die Stapelgröße, die maximale Gradientennormale und Epochen umfassen können. Bei neuronalen Netzen kann die Regularisation eine äußerst wichtige Überlegung sein. In zumindest einer Ausführungsform können die Eingabedaten relativ spärlich sein. Ein Haupthyperparameter in einer solchen Situation kann ein Dropout an einer vorletzten Schicht sein, welche einen Anteil von Knoten repräsentiert, die nicht bei jedem Trainingszyklus „feuern“ werden. Ein beispielhafter Trainingsprozess kann verschiedene Hyperparameterkonfigurationen vorschlagen, die auf einer Rückmeldung bzw. einem Feedback für die Leistung vorheriger Konfigurationen basieren. Dieses Modell kann mit einer vorgeschlagenen Konfiguration trainiert werden, auf einem bestimmten Validierungssatz ausgewertet werden und leistungsberichtend sein. Dieser Prozess kann wiederholt werden, um z.B. einen Kompromiss zwischen Exploration (mehr über verschiedene Konfigurationen lernen) und Exploitation (vorheriges Wissen ausnutzen, um bessere Ergebnisse zu erzielen) zu finden.
  • Da das Trainieren von CNNs parallelisiert werden kann und GPU-fähige Rechenressourcen genutzt werden können, können mehrere Optimierungsstrategien für verschiedene Szenarien versucht werden. Ein komplexes Szenario ermöglicht Abstimmungsmodellarchitektur- und Vorverarbeitungs- und stochastische Gradientenabstiegs-Parameter. Dies erweitert einen Modellkonfigurationsraum. In einem Basisszenario werden nur die Vorverarbeitungs- und stochastischen Gradientenabstiegs-Parameter abgestimmt. In einem komplexen Szenario kann es eine größere Anzahl von Konfigurationsparametern geben als in einem Basisszenario. Ein Abstimmen in einem gemeinsamen Raum kann unter Verwendung einer linearen oder exponentiellen Anzahl von Schritten durchgeführt werden, wobei eine Optimierungsschleife für Modelle durchlaufen wird. Kosten für einen solchen Abstimmungsprozess können signifikant geringer sein als für Abstimmungsprozesse wie beispielsweise Zufallssuche und Gittersuche, ohne dass es zu einem signifikanten Leistungsverlust kommt.
  • In zumindest einer Ausführungsform kann Rückwärtsausbreitung bzw. Backpropagation verwendet werden, um einen Gradienten zu berechnen, der zur Bestimmung von Gewichten für ein neuronales Netzwerk verwendet wird. Backpropagation ist eine Form der Differenzierung und kann von einem Gradientenabstiegs-Optimierungsalgorithmus verwendet werden, um Gewichte anzupassen, die auf verschiedene Knoten oder Neuronen angewendet werden, wie vorstehend beschrieben wurde. Gewichte können unter Verwendung eines Gradienten einer relevanten Verlustfunktion bestimmt werden. Backpropagation kann eine Ableitung einer Verlustfunktion in Bezug auf eine von einem statistischen Modell erzeugte Ausgabe verwenden. Wie erwähnt, können verschiedene Knoten zugehörige Aktivierungsfunktionen haben, die die Ausgabe der jeweiligen Knoten definieren. Verschiedene Aktivierungsfunktionen können bedarfsweise verwendet werden, und können beispielsweise radiale Basisfunktionen (RBFs) und Sigmoide, die von verschiedenen Support-Vektor-Maschinen (SVMs) zur Transformation von Daten verwendet werden können, beinhalten. Eine Aktivierungsfunktion einer Zwischenschicht von Knoten wird hierin als ein Kernel des inneren Produkts bezeichnet. Diese Funktionen können z.B. Identitätsfunktionen, Schrittfunktionen, Sigmoidalfunktionen, Rampenfunktionen und so weiter beinhalten. Aktivierungsfunktionen können unter anderem auch linear oder nichtlinear sein.
  • In zumindest einer Ausführungsform wird ein untrainiertes neuronales Netzwerk unter Verwendung eines Trainingsdatensatzes trainiert. In zumindest einer Ausführungsform ist ein Trainingsframework ein PyTorch-Framework, Tensorflow, Boost, Caffe, Microsoft Cognitive Toolkit/CNTK, MXNet, Chainer, Keras, Deeplearning4j oder ein anderes Trainingsframework. In zumindest einer Ausführungsform trainiert das Trainingsframework ein untrainiertes neuronales Netzwerk und ermöglicht dessen Training unter Verwendung der hierin beschriebenen Verarbeitungsressourcen, um ein trainiertes neuronales Netzwerk zu erzeugen. In zumindest einer Ausführungsform können Gewichte zufällig oder durch Vortraining unter Verwendung eines Deep Belief Network ausgewählt werden. In zumindest einer Ausführungsform kann das Training entweder auf überwachte, teilweise überwachte oder nicht überwachte Weise durchgeführt werden.
  • In zumindest einer Ausführungsform wird ein untrainiertes neuronales Netzwerk unter Verwendung überwachten Lernens trainiert, wobei der Trainingsdatensatz einen Input beinhaltet, der mit einer gewünschten Ausgabe für einen Input gepaart ist, oder wobei der Trainingsdatensatz Input mit einer bekannten Ausgabe beinhaltet und eine Ausgabe des neuronalen Netzwerks manuell eingestuft wird. In zumindest einer Ausführungsform wird ein untrainiertes neuronales Netzwerk auf überwachte Weise trainiert, verarbeitet Inputs aus dem Trainingsdatensatz und vergleicht resultierende Ausgaben mit einem Satz von erwarteten oder gewünschten Ausgaben. In zumindest einer Ausführungsform werden Fehler dann durch das untrainierte neuronale Netzwerk zurück propagiert. In zumindest einer Ausführungsform passt das Trainingsframework die Gewichte an, die das untrainierte neuronale Netzwerk steuern. In zumindest einer Ausführungsform beinhaltet das Trainingsframework Werkzeuge zum Überwachen, wie gut das untrainierte neuronale Netzwerk zu einem Modell konvergiert, wie beispielsweise einem trainierten neuronalen Netzwerk, das geeignet ist, korrekte Antworten zu erzeugen, wie beispielsweise im Ergebnis, basierend auf bekannten Eingabedaten, wie beispielsweise neuen Daten. In zumindest einer Ausführungsform trainiert das Trainingsframework das untrainierte neuronale Netzwerk wiederholt, während es Gewichte anpasst, um eine Ausgabe des untrainierten neuronalen Netzwerks unter Verwendung einer Verlustfunktion und eines Anpassungsalgorithmus, wie beispielsweise stochastischem Gradientenabstieg, zu verfeinern. In zumindest einer Ausführungsform trainiert das Trainingsframework das untrainierte neuronale Netzwerk, bis das untrainierte neuronale Netzwerk eine gewünschte Genauigkeit erreicht. In zumindest einer Ausführungsform kann das trainierte neuronale Netzwerk dann eingesetzt werden, um eine beliebige Anzahl von Operationen maschinellen Lernens zu implementieren.
  • In zumindest einer Ausführungsform wird das untrainierte neuronale Netzwerk unter Verwendung von unüberwachtem Lernen trainiert, wobei das untrainierte neuronale Netzwerk versucht, sich unter Verwendung unmarkierter Daten selbst zu trainieren. In zumindest einer Ausführungsform wird der Trainingsdatensatz des unüberwachten Lernens Eingabedaten ohne jegliche zugehörige Ausgabedaten oder „Grundwahrheits“-Daten‟ beinhalten. In zumindest einer Ausführungsform kann das untrainierte neuronale Netzwerk Gruppierungen innerhalb des Trainingsdatensatzes lernen und bestimmen, wie individuelle Inputs mit dem untrainierten Datensatz in Beziehung stehen. In zumindest einer Ausführungsform kann unüberwachtes Training verwendet werden, um eine selbstorganisierende Karte zu erzeugen, die eine Art von trainiertem neuronalem Netzwerk ist, das in der Lage ist, Operationen durchzuführen, die bei der Reduzierung der Dimensionalität neuer Daten nützlich sind. In zumindest einer Ausführungsform kann unüberwachtes Training auch zur Erkennung von Anomalien verwendet werden, was die Identifizierung von Datenpunkten in einem neuen Datensatz ermöglicht, die von normalen Mustern des neuen Datensatzes abweichen.
  • In zumindest einer Ausführungsform kann halbüberwachtes Lernen verwendet werden, welches eine Technik ist, bei der der Trainingsdatensatz eine Mischung aus gekennzeichneten und nicht gekennzeichneten Daten beinhaltet. In zumindest einer Ausführungsform kann das Trainingsframework verwendet werden, um inkrementelles Lernen durchzuführen, wie beispielsweise durch übertragene Lerntechniken. In zumindest einer Ausführungsform ermöglicht das inkrementelle Lernen dem trainierten neuronalen Netzwerk, sich an neue Daten anzupassen, ohne Wissen zu vergessen, das dem Netzwerk während anfänglichen Trainings eingeflößt wurde.
  • 8 veranschaulicht eine Inferenz- und/oder Trainingslogik 815, die verwendet wird, um Inferenz- und/oder Trainingsoperationen in Verbindung mit einer oder mehreren Ausführungsformen durchzuführen. Einzelheiten zur Inferenz- und/oder Trainingslogik 815 werden nachstehend in Verbindung mit 8 und/oder 9 beschrieben.
  • In zumindest einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 815, ohne darauf beschränkt zu sein, einen Code- und/oder Datenspeicher 801 beinhalten, um Vorwärts- und/oder Ausgangsgewichte und/oder Eingangs- /Ausgangsdaten und/oder andere Parameter zu speichern, um Neuronen oder Schichten eines neuronalen Netzwerks zu konfigurieren, das in Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder zum Inferenzieren verwendet wird. In zumindest einer Ausführungsform kann die Trainingslogik 815 einen Code- und/oder Datenspeicher 801 beinhalten oder mit diesem gekoppelt sein, um einen Graphencode oder eine andere Software zu speichern, um den Zeitpunkt und/oder die Reihenfolge zu steuern, in welcher Gewichts- und/oder andere Parameterinformationen geladen werden müssen, um Logik zu konfigurieren, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten (zusammenfassend als arithmetische Logikeinheiten (ALUs) bezeichnet). In zumindest einer Ausführungsform lädt Code, wie beispielsweise Graphencode, Gewichts- oder andere Parameterinformationen in Prozessor-ALUs auf der Grundlage einer Architektur eines neuronalen Netzwerks, dem dieser Code entspricht. In zumindest einer Ausführungsform speichern der Code und/oder der Datenspeicher 801 Gewichtsparameter und/oder Eingabe-/Ausgabedaten jeder Schicht eines neuronalen Netzwerks, das in Verbindung mit einer oder mehreren Ausführungsformen während der Vorwärtspropagierung von Eingabe-/Ausgabedaten und/oder Gewichtsparametern während des Trainings und/oder einer Inferenzierung unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen trainiert wurde. In zumindest einer Ausführungsform kann ein beliebiger Teil des Code- und/oder Datenspeichers 801 in einen anderen On-Chip- oder Off-Chip-Datenspeicher, einschließlich des L1-, L2- oder L3-Cache oder Systemspeichers eines Prozessors, enthalten sein.
  • In zumindest einer Ausführungsform kann ein beliebiger Teil des Code- und/oder Datenspeichers 801 intern oder extern zu einem oder mehreren Prozessoren oder anderen Hardware-Logik-Vorrichtungen oder -Schaltungen sein. In zumindest einer Ausführungsform kann der Code- und/oder Code- und/oder Datenspeicher 801 ein Cache-Speicher, ein dynamischer Direktzugriffsspeicher („DRAM“), ein statischer Direktzugriffsspeicher („SRAM“), ein nichtflüchtiger Speicher (z.B. ein Flash-Speicher) oder ein anderer Speicher sein. In zumindest einer Ausführungsform kann die Wahl, ob der Code- und/oder Code- und/oder Datenspeicher 801 beispielsweise intern oder extern zu einem Prozessor ist oder aus DRAM, SRAM, Flash oder einem anderen Speichertyp besteht, von dem verfügbaren Speicher auf dem Chip gegenüber dem Speicher außerhalb des Chips, Latenzanforderungen der durchgeführten Trainings- und/oder Inferenzfunktionen, der Stapelgröße der Daten, die bei der Inferenz und/oder dem Training eines neuronalen Netzwerks verwendet werden, oder einer Kombination dieser Faktoren abhängen.
  • In zumindest einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 815, ohne darauf beschränkt zu sein, einen Code- und/oder Datenspeicher 805 beinhalten, um Rückwärts- und/oder Ausgangsgewichts- und/oder Eingabe-/Ausgabedaten zu speichern, die Neuronen oder Schichten eines neuronalen Netzwerks entsprechen, das in Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder zum Inferenzieren verwendet wird. In zumindest einer Ausführungsform speichert der Code- und/oder Datenspeicher 805 Gewichtsparameter und/oder Eingabe-/Ausgabedaten jeder Schicht eines neuronalen Netzwerks, das in Verbindung mit einem oder mehreren Ausführungsformen während der Rückwärtspropagation von Eingabe-/Ausgabedaten und/oder von Gewichtsparametern während des Trainings und/oder der Inferenzierung unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen trainiert oder verwendet wird. In zumindest einer Ausführungsform kann die Trainingslogik 815 einen Code- und/oder Datenspeicher 805 beinhalten oder mit diesem gekoppelt sein, um einen Graphencode oder eine andere Software zum Steuern des Zeitpunkts und/oder der Reihenfolge zu speichern, in der Gewichts- und/oder andere Parameterinformationen zu laden sind, um Logik einschließlich Ganzzahl- und/oder Gleitkommaeinheiten (zusammenfassend als arithmetische Logikeinheiten (ALUs) bezeichnet) zu konfigurieren. In zumindest einer Ausführungsform lädt Code, wie beispielsweise Graphencode, Gewichts- oder andere Parameterinformationen auf der Grundlage einer Architektur eines neuronalen Netzwerks, dem dieser Code entspricht, in Prozessor-ALUs. In zumindest einer Ausführungsform kann ein beliebiger Teil des Code- und/oder Datenspeichers 805 in einen anderen On-Chip- oder Off-Chip-Datenspeicher, einschließlich des L1-, L2- oder L3-Cache oder Systemspeichers eines Prozessors, enthalten sein. In zumindest einer Ausführungsform kann jeder Teil des Code- und/oder Datenspeichers 805 intern oder extern zu einem oder mehreren Prozessoren oder anderen Hardware-Logik-Vorrichtungen oder -Schaltungen sein. In zumindest einer Ausführungsform kann der Code- und/oder Datenspeicher 805 ein Cache-Speicher, DRAM, SRAM, ein nichtflüchtiger Speicher (z.B. Flash-Speicher) oder ein anderer Speicher sein. In zumindest einer Ausführungsform kann die Wahl, ob der Code- und/oder Datenspeicher 805 beispielsweise intern oder extern zu einem Prozessor ist oder aus DRAM, SRAM, Flash oder einem anderen Speichertyp besteht, von dem verfügbaren Speicher auf dem Chip gegenüber dem Speicher außerhalb des Chips, Latenzanforderungen der durchgeführten Trainings- und/oder Inferenzfunktionen, der Stapelgröße der Daten, die bei der Inferenz und/oder dem Training eines neuronalen Netzwerks verwendet werden, oder einer Kombination dieser Faktoren abhängen.
  • In zumindest einer Ausführungsform können der Code- und/oder Datenspeicher 801 und der Code- und/oder Datenspeicher 805 separate Speicherstrukturen sein. In zumindest einer Ausführungsform können der Code- und/oder Datenspeicher 801 und der Code- und/oder Datenspeicher 805 dieselbe Speicherstruktur sein. In zumindest einer Ausführungsform können der Code- und/oder Datenspeicher 801 und der Code- und/oder Datenspeicher 805 teilweise dieselbe Speicherstruktur und teilweise separate Speicherstrukturen sein. In zumindest einer Ausführungsform kann ein beliebiger Teil des Code- und/oder Datenspeichers 801 und des Code- und/oder Datenspeichers 805 in einen anderen On-Chip- oder Off-Chip-Datenspeicher, einschließlich des L1-, L2- oder L3-Cache oder Systemspeichers eines Prozessors, enthalten sein.
  • In zumindest einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 915, ohne Beschränkung darauf, eine oder mehrere arithmetische Logikeinheit(en) („ALU(s)“) 910 beinhalten, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten, um logische und/oder mathematische Operationen durchzuführen, die zumindest teilweise auf Trainings- und/oder Inferenzcode (z.B. Graphencode) basieren oder durch diesen angegeben werden), deren Ergebnis Aktivierungen (z.B. Ausgabewerte von Schichten oder Neuronen innerhalb eines neuronalen Netzwerks) produzieren kann, die in einem Aktivierungsspeicher 920 gespeichert sind, die Funktionen von in dem Code- und/oder Datenspeicher 901 und/oder dem Code- und/oder Datenspeicher 905 gespeicherten Eingabe/Ausgabe- und/oder Gewichtsparameterdaten sind. In zumindest einer Ausführungsform werden die in dem Aktivierungsspeicher 920 gespeicherten Aktivierungen in Übereinstimmung mit linearer algebraischer und/oder matrixbasierter Mathematik erzeugt, die von der/den ALU(s) 910 im Ansprechen auf die Durchführung von Anweisungen oder anderem Code durchgeführt wird, wobei in dem Code- und/oder Datenspeicher 905 und/oder in dem Code- und/oder Datenspeicher 901 gespeicherte Gewichtswerte als Operanden zusammen mit anderen Werten, wie beispielsweise Bias-Werten, Gradienteninformationen, Momentenwerten oder anderen Parametern oder Hyperparametern, verwendet werden, von denen einige oder alle in dem Code- und/oder Datenspeicher 905 oder in dem Code- und/oder Datenspeicher 901 oder in einem anderen Speicher auf oder außerhalb des Chips gespeichert sein können.
  • In zumindest einer Ausführungsform sind die ALU(s) 910 in einem oder mehreren Prozessoren oder anderen Hardware-Logik-Vorrichtungen oder - Schaltungen enthalten, während in einer anderen Ausführungsform die ALU(s) 910 extern zu einem Prozessor oder einem anderen Hardware-Logikvorrichtungen oder einer Schaltung sein können, die sie verwendet (z.B. ein Co-Prozessor). In zumindest einer Ausführungsform können die ALUs 910 in den Ausführungseinheiten eines Prozessors oder anderweitig in einer Bank von ALUs enthalten sein, auf die die Ausführungseinheiten eines Prozessors zugreifen können, entweder innerhalb desselben Prozessors oder verteilt auf verschiedene Prozessoren unterschiedlichen Typs (z.B. zentrale Verarbeitungseinheiten, Grafikverarbeitungseinheiten, feste Funktionseinheiten usw.). In zumindest einer Ausführungsform können sich der Code- und/oder Datenspeicher 901, der Code- und/oder Datenspeicher 905 und der Aktivierungsspeicher 920 auf demselben Prozessor oder einer anderen Hardware-Logik-Vorrichtung oder -Schaltung befinden, während sie in einer anderen Ausführungsform in verschiedenen Prozessoren oder anderen Hardware-Logik-Vorrichtungen oder -Schaltungen oder in einer Kombination aus gleichen und verschiedenen Prozessoren oder anderen Hardware-Logik-Vorrichtungen oder -Schaltungen untergebracht sein können. In zumindest einer Ausführungsform kann ein beliebiger Teil des Aktivierungsspeichers 920 in anderen On-Chip- oder Off-Chip-Datenspeichern, einschließlich des L1-, L2- oder L3-Cache oder Systemspeichers eines Prozessors, enthalten sein. Darüber hinaus kann der Inferenz- und/oder Trainingscode zusammen mit anderem Code gespeichert werden, auf den ein Prozessor oder eine andere Hardware-Logik oder -Schaltung zugreifen kann und der unter Verwendung der Abruf-, Dekodier-, Planungs-, Ausführungs-, Ausscheidungs- und/oder anderer logischer Schaltungen eines Prozessors abgerufen und/oder verarbeitet wird.
  • In zumindest einer Ausführungsform kann der Aktivierungsspeicher 920 ein Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z.B. Flash-Speicher) oder ein anderer Speicher sein. In zumindest einer Ausführungsform kann sich der Aktivierungsspeicher 920 vollständig oder teilweise innerhalb oder außerhalb eines oder mehrerer Prozessoren oder anderer logischer Schaltungen befinden. In zumindest einer Ausführungsform kann die Wahl, ob der Aktivierungsspeicher 920 z.B. intern oder extern zu einem Prozessor ist oder aus DRAM, SRAM, Flash oder einem anderen Speichertyp besteht, von dem verfügbaren Speicher auf dem Chip im Vergleich zu außerhalb des Chips, den Latenzanforderungen der durchgeführten Trainings- und/oder Inferenzfunktionen, der Stapelgröße der bei der Inferenz und/oder dem Training eines neuronalen Netzwerks verwendeten Daten oder einer Kombination dieser Faktoren abhängen. In zumindest einer Ausführungsform kann die in 8 veranschaulichte Inferenz- und/oder Trainingslogik 915 in Verbindung mit einem anwendungsspezifischen integrierten Schaltkreis („ASIC“), wie beispielsweise der Tensorflow® Processing Unit von Google, einer Inferenzverarbeitungseinheit (IPU) von Graphcore™ oder einem Nervana® (z.B. „Lake Crest“) Prozessor von Intel Corp. verwendet werden In zumindest einer Ausführungsform kann die in 8 veranschaulichte Inferenz- und/oder Trainingslogik 1015 in Verbindung mit Hardware der Zentralverarbeitungseinheit („CPU“), der Grafikverarbeitungseinheit („GPU“) oder anderer Hardware, wie beispielsweise Field Programmable Gate Arrays („FPGAs“), verwendet werden.
  • 9 veranschaulicht die Inferenz- und/oder Trainingslogik 915 in Übereinstimmung mit zumindest einer oder mehreren Ausführungsformen. In zumindest einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 915, ohne darauf beschränkt zu sein, eine Hardware-Logik umfassen, in der Rechenressourcen dediziert oder anderweitig ausschließlich in Verbindung mit Gewichtswerten oder anderen Informationen verwendet werden, die einer oder mehreren Schichten von Neuronen innerhalb eines neuronalen Netzwerks entsprechen. In zumindest einer Ausführungsform kann die in 9 veranschaulichte Inferenz- und/oder Trainingslogik 915 in Verbindung mit einem anwendungsspezifischen integrierten Schaltkreis (ASIC), wie beispielsweise der Tensorflow® Processing Unit von Google, einer Inferenzverarbeitungseinheit (IPU) von Graphcore™ oder einem Nervana® (z.B. „Lake Crest“) Prozessor von Intel Corp. verwendet werden. In zumindest einer Ausführungsform kann die in 9 veranschaulichte Inferenz- und/oder Trainingslogik 915 in Verbindung mit Hardware der Zentralverarbeitungseinheit (CPU), der Grafikverarbeitungseinheit (GPU) oder anderer Hardware, wie beispielsweise FPGAs (Field Programmable Gate Arrays), verwendet werden. In zumindest einer Ausführungsform umfasst die Inferenz- und/oder Trainingslogik 915, ohne darauf beschränkt zu sein, den Code- und/oder Datenspeicher 901 und den Code- und/oder Datenspeicher 905, die zum Speichern von Code (z.B. Graphencode), Gewichtungswerten und/oder anderen Informationen, einschließlich Bias-Werten, Gradienteninformationen, Momentenwerten und/oder anderen Parameter- oder Hyperparameterinformationen, verwendet werden können. In zumindest einer Ausführungsform, die in 9 veranschaulicht ist, ist jeder der Code- und/oder Datenspeicher 901 und Code- und/oder Datenspeicher 905 einer dedizierten Rechenressource zugeordnet, wie beispielsweise Rechenhardware 902 bzw. Rechenhardware 906. In zumindest einer Ausführungsform umfasst jede der Rechenhardware 902 und der Rechenhardware 906 eine oder mehrere ALUs, die mathematische Funktionen, wie beispielsweise lineare algebraische Funktionen, nur auf Informationen ausführen, die in dem Code- und/oder Datenspeicher 901 bzw. in dem Code- und/oder Datenspeicher 905 gespeichert sind, deren Ergebnis in dem Aktivierungsspeicher 920 gespeichert wird.
  • In zumindest einer Ausführungsform entspricht jeder der Code- und/oder Datenspeicher 901 und 905 und die entsprechende Rechenhardware 902 bzw. 906 verschiedenen Schichten eines neuronalen Netzwerks, so dass die resultierende Aktivierung von einem „Speicher-/Rechenpaar 901/902“ des Codes und/oder Datenspeichers 901 und der Rechenhardware 902 als ein Input bzw. eine Eingabe für das „Speicher-/Rechenpaar 905/906“ des Codes und/oder Datenspeichers 905 und der Rechenhardware 906 bereitgestellt wird, um die konzeptionelle Organisation eines neuronalen Netzwerks zu spiegeln. In zumindest einer Ausführungsform kann jedes der Speicher-/Rechenpaare 901/902 und 905/906 mehr als einer Schicht eines neuronalen Netzwerks entsprechen. In zumindest einer Ausführungsform können zusätzliche Speicher-/Berechnungspaare (nicht gezeigt) im Anschluss an oder parallel zu den Speicher-/Berechnungs-Paaren 901/902 und 905/906 in der Inferenz- und/oder Trainingslogik 915 enthalten sein.
  • Andere Variationen sind im Sinne der Erfindung. Daher sind, während offenbarte Techniken verschiedenen Modifikationen und alternativen Konstruktionen zugänglich sind, bestimmte dargestellte Ausführungsformen derselben in Zeichnungen gezeigt und wurden vorstehend im Einzelnen beschrieben. Es versteht sich jedoch, dass nicht beabsichtigt ist, die Erfindung auf eine bestimmte Form oder bestimmte Formen zu beschränken, sondern dass im Gegenteil beabsichtigt ist, alle Modifikationen, alternativen Konstruktionen und Äquivalente abzudecken, die in den Rahmen und den Schutzumfang der Erfindung fallen, wie sie in den beigefügten Ansprüchen definiert ist.
  • Die Verwendung der Begriffe „ein(e)“ und „der“ und ähnlicher Bezeichnungen im Kontext des Beschreibens offenbarter Ausführungsformen (insbesondere im Kontext der folgenden Ansprüche) ist so auszulegen, dass diese sowohl die Einzahl als auch die Mehrzahl umfassen, sofern hier nichts anders angegeben ist oder durch Kontext eindeutig widerlegt wird, und nicht als Definition eines Begriffs. Die Begriffe „umfassend“, „mit“, „einschließlich“, „beinhaltend“ und „enthaltend“ sind, sofern nicht anders angegeben, als offene Begriffe zu verstehen (d.h. „einschließlich, aber nicht beschränkt auf‟). Der Begriff „verbunden“ ist, wenn unverändert und sich auf physikalische Verbindungen beziehend, als teilweise oder ganz in einem Bauteil enthalten, an ihm angebracht oder mit ihm verbunden zu verstehen, auch wenn etwas dazwischen liegt. Angaben von Wertebereichen sind lediglich beabsichtigt, als ein verkürzendes Verfahren der individuellen Bezugnahme auf jeden einzelnen Wert, der in den Bereich fällt, zu dienen, sofern hierin nichts anderes angegeben ist, und jeder einzelne Wert wird in die Spezifikation einbezogen, als wäre er hierin einzeln aufgeführt. Die Verwendung des Begriffs „Satz“ oder „Menge“ (z. B. „eine Menge von Gegenständen“) oder „Teilmenge“ ist, sofern nicht anders angegeben oder durch Kontext widerlegt, als eine nicht leere Sammlung zu verstehen, die ein oder mehrere Elemente umfasst. Außerdem und sofern nicht anders vermerkt oder durch Kontext widerlegt, bezeichnet der Begriff „Teilmenge“ einer entsprechenden Menge nicht unbedingt eine echte Teilmenge der entsprechenden Menge, sondern Teilmenge und entsprechende Menge können gleich sein.
  • Konjunktivische Sprache, wie z. B. Phrasen der Form „zumindest eines von A, B und C“ oder „zumindest eines von A, B und C“, wird, sofern nicht ausdrücklich anders angegeben oder anderweitig eindeutig durch Kontext widerlegt, andernfalls mit Kontext verstanden, wie er im Allgemeinen verwendet wird, um darzulegen, dass ein Element, ein Begriff usw. entweder A oder B oder C oder eine beliebige nicht leere Teilmenge der Menge von A und B und C sein kann. Beispielsweise beziehen sich in einem veranschaulichenden Beispiel einer Menge mit drei Elementen die konjunktivischen Phrasen „zumindest eines von A, B und C“ und „zumindest eines von A, B und C“ auf eine beliebige der folgenden Mengen: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Eine solche konjunktivische Sprache soll also nicht generell implizieren, dass bestimmte Ausführungsformen zumindest eines von A, zumindest eines von B und zumindest eines von C als vorhanden erfordern. Darüber hinaus, sofern nicht anders angegeben oder durch Kontext widerlegt, bezeichnet der Begriff „Vielzahl“ einen Zustand des mehrfachen Vorhandenseins (z. B. bezeichnet „eine Mehrzahl von Elementen“ mehrere Elemente). Die Anzahl von Elementen in einer Mehrzahl beträgt zumindest zwei, kann aber mehr sein, wenn dies entweder explizit oder durch Kontext so angegeben wird. Sofern nicht anders angegeben oder aus Kontext anderweitig ersichtlich, bedeutet „basierend auf‟ „zumindest teilweise basierend auf‟ und nicht „ausschließlich basierend auf‟.
  • Operationen bzw. Betriebsabläufe hierin beschriebenen Prozesse können in jeder geeigneten Reihenfolge ausgeführt werden, sofern hierin nicht anders angegeben oder durch Kontext eindeutig widerlegt. In zumindest einer Ausführungsform wird ein Prozess wie die hierin beschriebenen Prozesse (oder Variationen und/oder Kombinationen davon) gesteuert durch ein oder mehrere Computersysteme durchgeführt, die mit ausführbaren Anweisungen konfiguriert sind und als Code (z. B. ausführbare Anweisungen, ein oder mehrere Computerprogramme oder eine oder mehrere Anwendungen) implementiert sind, die kollektiv auf einem oder mehreren Prozessoren, durch Hardware oder Kombinationen davon ausgeführt werden. In zumindest einer Ausführungsform ist der Code auf einem computerlesbaren Speichermedium gespeichert, z. B. in Form eines Computerprogramms, das eine Vielzahl von Anweisungen umfasst, die von einem oder mehreren Prozessoren ausgeführt werden können. In zumindest einer Ausführungsform ist ein computerlesbares Speichermedium ein nichtflüchtiges computerlesbares Speichermedium, das flüchtige Signale (z. B. eine sich ausbreitende transiente elektrische oder elektromagnetische Übertragung) ausschließt, aber nichtflüchtige Datenspeicherschaltkreise (z. B. Puffer, Cache und Warteschlangen) innerhalb von Transceivern für flüchtige Signale einschließt. In zumindest einer Ausführungsform ist Code (z.B. ausführbarer Code oder Quellcode) auf einem Satz von einem oder mehreren nichtflüchtigen computerlesbaren Speichermedien, auf denen ausführbare Anweisungen gespeichert sind (oder anderem Speicher zum Speichern von ausführbaren Anweisungen) gespeichert, die, wenn sie von einem oder mehreren Prozessoren eines Computersystems ausgeführt werden (d.h. als ein Ergebnis der Ausführung), das Computersystem veranlassen, hierin beschriebene Operationen durchzuführen. In zumindest einer Ausführungsform umfasst der Satz nichtflüchtiger, computerlesbarer Speichermedien mehrere nichtflüchtige, computerlesbare Speichermedien, und fehlt einem oder mehreren der einzelnen nichtflüchtigen Speichermedien der mehreren nichtflüchtigen, computerlesbaren Speichermedien der gesamte Code, während mehreren nichtflüchtige, computerlesbare Speichermedien gemeinsam den gesamten Code speichern. In zumindest einer Ausführungsform werden ausführbare Befehle derart ausgeführt, dass verschiedene Befehle von verschiedenen Prozessoren ausgeführt werden - zum Beispiel speichert ein nichtflüchtiges, computerlesbares Speichermedium Anweisungen und führt eine Haupt-Zentralverarbeitungseinheit („CPU“) einige der Befehle aus, während eine Grafikverarbeitungseinheit („GPU“) andere Anweisungen ausführt. In zumindest einer Ausführungsform haben verschiedene Komponenten eines Computersystems separate Prozessoren und führen verschiedene Prozessoren verschiedene Teilmengen von Anweisungen aus.
  • Demgemäß sind in zumindest einer Ausführungsform Computersysteme dazu konfiguriert, einen oder mehrere Dienste zu implementieren, die einzeln oder gemeinsam Operationen der hierin beschriebenen Prozesse durchführen, und sind solche Computersysteme mit anwendbarer Hardware und/oder Software konfiguriert, die die Durchführung von Operationen ermöglichen. Ferner ist ein Computersystem, das zumindest eine Ausführungsform der vorliegenden Offenbarung implementiert, eine einzelne Vorrichtung und, in einer anderen Ausführungsform, ein verteiltes Computersystem, das mehrere Vorrichtungen umfasst, die unterschiedlich arbeiten derart, dass das verteilte Computersystem die hierin beschriebenen Operationen durchführt, und derart, dass eine einzelne Vorrichtung nicht alle Operationen durchführt.
  • Die Verwendung der Beispiele einzeln und insgesamt, oder beispielhafter Formulierungen (z. B. „wie beispielsweise“), die hierin bereitgestellt wird, dient lediglich der besseren Veranschaulichung von Ausführungsformen der Erfindung und stellt keine Beschränkung des Umfangs der Erfindung dar, sofern nicht anders beansprucht. Keine Formulierung in der Beschreibung ist so auszulegen, dass ein nicht beanspruchtes Element als wesentlich für die Umsetzung der Erfindung angesehen wird.
  • Alle Bezugnahmen, einschließlich Veröffentlichungen, Patentanmeldungen und Patenten, die hierin zitiert werden, werden hiermit durch Bezugnahme in demselben Umfang einbezogen, als ob jede Bezugnahme einzeln und ausdrücklich als durch Bezugnahme einbezogen angegeben wäre und hierin in ihrer Gesamtheit wiedergegeben würde.
  • In der Beschreibung und den Ansprüchen können Begriffe „gekoppelt“ und „verbunden“ sowie deren Ableitungen verwendet werden. Es versteht sich, dass diese Begriffe nicht als Synonyme füreinander gedacht sind. Vielmehr kann in bestimmten Beispielen „verbunden“ oder „gekoppelt“ verwendet werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem oder indirektem physikalischem oder elektrischem Kontakt zueinander stehen. „Gekoppelt“ kann auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt zueinander stehen, aber dennoch miteinander kooperieren oder interagieren.
  • Sofern nicht ausdrücklich anders angegeben, beziehen sich Begriffe wie „Verarbeiten“, „Rechnen“, „Berechnen“, „Bestimmen“ oder dergleichen in der gesamten Spezifikation auf Aktionen und/oder Prozesse eines Computers oder Rechen- bzw. Computersystems, oder einer ähnlichen elektronischen Rechenvorrichtung, die Daten, die als physikalische, z. B. elektronische, Größen in Registern und/oder Speichern des Computersystems dargestellt werden, manipulieren und/oder in andere Daten umwandeln, die in ähnlicher Weise als physikalische Größen in Speichern, Registern oder anderen solchen Informationsspeicher-, -übertragungs- oder -anzeigevorrichtungen des Computersystems repräsentiert werden.
  • In ähnlicher Weise kann sich der Begriff „Prozessor“ auf eine beliebige Vorrichtung oder einen beliebigen Teil einer Vorrichtung beziehen, die elektronische Daten aus Registern und/oder Speicher verarbeitet und diese elektronischen Daten in andere elektronische Daten umwandelt, die in Registern und/oder Speicher gespeichert werden können. Als nicht beschränkende Beispiele kann ein „Prozessor“ eine CPU oder eine GPU sein. Eine „Datenverarbeitungsplattform“ kann einen oder mehrere Prozessoren umfassen. Wie hierin verwendet, können „Software“-Prozesse z. B. Software- und/oder Hardware-Entitäten umfassen, die im Laufe der Zeit Arbeit verrichten, wie z. B. Tasks, Threads und intelligente Agenten. Außerdem kann sich jeder Prozess auf mehrere Prozesse beziehen, um Anweisungen nacheinander oder parallel, kontinuierlich oder intermittierend auszuführen. Die Begriffe „System“ und „Verfahren“ werden hier insofern austauschbar verwendet, als ein System ein oder mehrere Verfahren verkörpern kann und Verfahren als ein System betrachtet werden können.
  • In dem vorliegenden Dokument kann auf das Erhalten, Erfassen, Empfangen oder Eingeben analoger oder digitaler Daten in ein Subsystem, ein Computersystem oder eine computerimplementierte Maschine Bezug genommen werden. Der Prozess des Erhaltens, Erfassens, Empfangens oder Eingebens analoger und digitaler Daten kann auf verschiedene Weise erzielt werden, z. B. durch Empfangen von Daten als ein Parameter eines Funktionsaufrufs oder eines Aufrufs an eine Anwendungsprogrammierschnittstelle. In einigen Implementierungen kann der Prozess des Erhaltens, Erfassens, Empfangens oder Eingebens von analogen oder digitalen Daten durch die Übertragung von Daten über eine serielle oder parallele Schnittstelle erzielt werden. In einer anderen Implementierung kann der Prozess des Erhaltens, Erfassens, Empfangens oder Eingebens von analogen oder digitalen Daten durch Übertragen von Daten über ein Computernetzwerk von einer bereitstellenden Entität zur einer erfassenden Entität erzielt werden. Es kann auch auf das Bereitstellen, Ausgeben, Übertragen, Senden oder Präsentieren analoger oder digitaler Daten Bezug genommen werden. In verschiedenen Beispielen kann der Prozess des Bereitstellens, Ausgebens, Übertragens, Sendens oder Darstellens analoger oder digitaler Daten durch die Übertragung von Daten als Eingabe- oder Ausgabeparameter eines Funktionsaufrufs, eines Parameters einer Anwendungsprogrammierschnittstelle oder eines Interprozess-Kommunikationsmechanismus erzielt werden.
  • Obwohl die vorstehende Diskussion beispielhafte Implementierungen der beschriebenen Techniken darlegt, können auch andere Architekturen verwendet werden, um die beschriebene Funktionalität zu implementieren, und sollen in den Anwendungsbereich dieser Erfindung fallen. Ferner könnten, obwohl spezifische Verteilungen von Verantwortlichkeiten vorstehend zu Diskussionszwecken definiert sind, verschiedene Funktionen und Verantwortlichkeiten abhängig von Umständen auf unterschiedliche Weisen verteilt und aufgeteilt werden.
  • Ferner versteht sich, obwohl der Gegenstand in einer Sprache beschrieben wurde, die für strukturelle Merkmale und/oder methodische Handlungen spezifisch ist, dass der in den beigefügten Ansprüchen beanspruchte Gegenstand nicht notwendigerweise auf bestimmte beschriebene Merkmale oder Handlungen beschränkt ist. Vielmehr werden bestimmte Merkmale und Handlungen als beispielhafte Formen des Implementierens der Ansprüche offenbart.

Claims (20)

  1. Prozessor, umfassend: eine oder mehrere arithmetische Logikeinheiten (ALUs), die dazu zu konfigurieren sind, eine Matrixberechnung durchzuführen durch: Empfangen einer Anforderung für die Matrixberechnung, wobei die Anforderung zumindest eine Matrix und die durchzuführende Matrixberechnung beinhaltet; Bereitstellen von Eigenschaften der zumindest einen Matrix und der Matrixberechnung für ein neuronales Netzwerk; Erzeugen einer Rangliste von Kerneln unter Verwendung des neuronalen Netzwerks, wobei die Rangliste auf einem Relevanzwert basiert, der unter Verwendung des neuronalen Netzwerks für jeden Kernel in der Rangliste bestimmt wird; Auswählen eines ersten Kernels aus der Rangliste von Kerneln; Erzeugen eines Ergebnisses für die Matrixberechnung unter Verwendung der zumindest einen Matrix und des ersten Kernels; und Bereitstellen des Ergebnisses.
  2. Prozessor nach Anspruch 1, wobei die eine oder die mehreren ALUs ferner dazu konfiguriert sind, die Matrixberechnung durchzuführen durch: Erzeugen einer Kandidaten-Kernelliste basierend auf der zumindest einen Matrix und der Matrixberechnung; und Bereitstellen der Kandidaten-Kernelliste für das neuronale Netzwerk mit den Eigenschaften der zumindest einen Matrix und der Matrixberechnung, wobei die erzeugte Rangliste von Kerneln nur Kernel beinhaltet, die in der Kandidaten-Kernelliste enthalten sind.
  3. Prozessor nach Anspruch 1 oder 2, wobei die eine oder die mehreren ALUs ferner dazu konfiguriert sind, die Matrixberechnung durchzuführen durch: Identifizierung eines Kernel-Prozessors, der zur Erzeugung des Ergebnisses konfiguriert ist; Entfernen eines oder mehrerer Kernel aus der Kandidaten-Kernelliste basierend auf einer oder mehreren Hardware-Einschränkungen des Kernel-Prozessors.
  4. Prozessor nach einem der vorangehenden Ansprüche, wobei die Anforderung über eine Anwendungsprogrammierschnittstelle (API) empfangen wird.
  5. Prozessor nach einem der vorangehenden Ansprüche, wobei die eine oder die mehreren ALUs ferner dazu konfiguriert sind, die Matrixberechnung durchzuführen durch: Identifizieren von Hardware-Verhaltensinformationen; und Bereitstellen der Hardware-Verhaltensinformationen für das neuronale Netzwerk mit den Eigenschaften der zumindest einen Matrix und der Matrixberechnung.
  6. Prozessor nach einem der vorangehenden Ansprüche, wobei die Matrixberechnung eine allgemeine Matrixmultiplikation (GeMM) ist.
  7. Prozessor nach einem der vorangehenden Ansprüche, wobei die eine oder die mehreren ALUs ferner dazu konfiguriert sind, die Matrixberechnung durchzuführen durch: Bestimmen eines zweiten Kernels für die zumindest eine Matrix und die Matrixberechnung; Vergleichen der Rangliste von Kerneln durch das neuronale Netzwerk mit dem zweiten Kernel; und Erzeugen zusätzlicher Trainingsdaten für das neuronale Netzwerk auf der Grundlage der zumindest einen Matrix und des zweiten Kernels.
  8. Prozessor nach Anspruch 7, wobei das Erzeugen der zusätzlichen Trainingsdaten beinhaltet: Bestimmen einer Klasse für die zumindest eine Matrix; Erzeugen von Input basierend auf der Klasse; und Bereitstellen der zusätzlichen Trainingsdaten für das neuronale Netzwerk.
  9. System, umfassend: einen oder mehrere Prozessoren, die dazu zu konfigurieren sind, unter Verwendung eines oder mehrerer neuronaler Netze durchzuführen: Empfangen einer Anforderung für die Matrixberechnung, wobei die Anforderung zumindest eine Matrix und die durchzuführende Matrixberechnung beinhaltet; Bereitstellen von Eigenschaften der zumindest einen Matrix und der Matrixberechnung für ein neuronales Netzwerk; Erzeugen einer Rangliste von Kerneln unter Verwendung des neuronalen Netzwerks, wobei die Rangliste auf einem Relevanzwert basiert, der unter Verwendung des neuronalen Netzwerks für jeden Kernel in der Rangliste bestimmt wird; Auswählen eines ersten Kernels aus der Rangliste von Kerneln; Erzeugen eines Ergebnisses für die Matrixberechnung unter Verwendung der zumindest einen Matrix und des ersten Kernels; und Bereitstellen des Ergebnisses; und einen oder mehrere Speicher zum Speichern von Parametern, die dem einen oder den mehreren neuronalen Netzwerken entsprechen.
  10. System nach Anspruch 9, wobei die Prozessoren ferner dazu konfiguriert sind, durchzuführen: Erzeugen einer Kandidaten-Kernelliste basierend auf der zumindest einen Matrix und der Matrixberechnung; und Bereitstellen der Kandidaten-Kernelliste für das neuronale Netzwerk mit der zumindest einen Matrix und Matrixberechnung, wobei die erzeugte Rangliste von Kernein nur Kernel beinhaltet, die in der Kandidaten-Kernelliste enthalten sind.
  11. System nach Anspruch 9 oder 10, wobei die Prozessoren ferner dazu konfiguriert sind, durchzuführen: Identifizieren eines Kernel-Prozessors, der zum Erzeugen des Ergebnisses konfiguriert ist; Entfernen eines oder mehrerer Kernel aus der Kandidaten-Kernelliste aufgrund einer oder mehrerer Hardware-Beschränkungen des Kernel-Prozessors.
  12. System nach einem der Ansprüche 9 bis 11, wobei die Prozessoren ferner dazu konfiguriert sind, durchzuführen: Identifizieren von Hardware-Verhaltensinformationen; und Bereitstellen der Hardware-Verhaltensinformationen für das neuronale Netzwerk mit den Eigenschaften der zumindest einen Matrix und der Matrixberech n u ng.
  13. System nach einem der Ansprüche 9 bis 12, wobei die Prozessoren ferner dazu konfiguriert sind, durchzuführen: Bestimmen eines zweiten Kernels für die zumindest eine Matrix und die Matrixberechnung; Vergleichen der Rangliste von Kerneln durch das neuronale Netzwerk mit dem zweiten Kernel; und Erzeugen zusätzlicher Trainingsdaten für das neuronale Netzwerk auf der Grundlage der zumindest einen Matrix und des zweiten Kernels.
  14. System nach Anspruch 13, wobei die Prozessoren ferner dazu konfiguriert sind, durchzuführen: Bestimmen einer Klasse für die zumindest eine Matrix; Erzeugen von Input basierend auf der Klasse; und Bereitstellen der zusätzlichen Trainingsdaten für das neuronale Netzwerk.
  15. Maschinenlesbares Medium, auf dem ein Satz von Anweisungen gespeichert ist, die dann, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen zumindest zum: Bereitstellen einer Anforderung für die Matrixberechnung, wobei die Anforderung zumindest eine Matrix und die durchzuführende Matrixberechnung beinhaltet, wobei die Anforderung einem System bereitgestellt wird, das konfiguriert ist zum: Bereitstellen, für ein neuronales Netzwerk, von Eigenschaften der zumindest einen Matrix und der Matrixberechnung; Erzeugen einer Rangliste von Kerneln unter Verwendung des neuronalen Netzwerks, wobei die Rangliste auf einem Relevanzwert basiert, der unter Verwendung des neuronalen Netzwerks für jeden Kernel in der Rangliste bestimmt wird; Auswählen eines ersten Kernels aus der Rangliste von Kerneln; Erzeugen eines Ergebnisses für die Matrixberechnung unter Verwendung der zumindest einen Matrix und des ersten Kernels; und Bereitstellen des Ergebnisses im Ansprechen auf die Anforderung.
  16. Maschinenlesbares Medium nach Anspruch 15, wobei die Anforderung über eine Anwendungsprogrammierschnittstelle (API) bereitgestellt wird.
  17. Maschinenlesbares Medium nach Anspruch 15 oder 16, wobei die Matrixberechnung eine allgemeine Matrixmultiplikation (GeMM) ist.
  18. Maschinenlesbares Medium nach einem der Ansprüche 15 bis 17, wobei das System ferner konfiguriert ist zum: Bestimmen eines zweiten Kernels für die zumindest eine Matrix und die Matrixberechnung; Vergleichen der Rangliste von Kerneln durch das neuronale Netzwerk mit dem zweiten Kernel; und Erzeugen zusätzlicher Trainingsdaten für das neuronale Netzwerk auf der Grundlage der zumindest einen Matrix und des zweiten Kernels.
  19. Maschinenlesbares Medium nach einem der Ansprüche 15 bis 18, wobei die Anweisungen ferner Anweisungen beinhalten zum: Bestimmen einer Klasse für die zumindest eine Matrix; und Bereitstellen der Klasse mit der Anforderung.
  20. Maschinenlesbares Medium nach Anspruch 19, wobei das System ferner konfiguriert ist zum: Identifizieren von Hardware-Verhaltensinformationen; und Bereitstellen der Hardware-Verhaltensinformationen für das neuronale Netzwerk mit den Eigenschaften der zumindest einen Matrix und der Matrixberechnung.
DE102020132591.6A 2019-12-20 2020-12-08 Auswählen von rechenkernvarianten unter verwendung neuronaler netzwerke Pending DE102020132591A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/723,608 2019-12-20
US16/723,608 US11625605B2 (en) 2019-12-20 2019-12-20 Selecting computational kernel variants using neural networks

Publications (1)

Publication Number Publication Date
DE102020132591A1 true DE102020132591A1 (de) 2021-06-24

Family

ID=76206002

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020132591.6A Pending DE102020132591A1 (de) 2019-12-20 2020-12-08 Auswählen von rechenkernvarianten unter verwendung neuronaler netzwerke

Country Status (3)

Country Link
US (1) US11625605B2 (de)
CN (1) CN113011578A (de)
DE (1) DE102020132591A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102021116779A1 (de) 2021-06-30 2023-01-05 Bayerische Motoren Werke Aktiengesellschaft Verfahren zum Bereitstellen eines prädizierten, aktuellen Fahrziels an einen Nutzer eines Fahrzeugs, computerlesbares Medium, System, Fahrzeug, und mobiles Endgerät

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658395B1 (en) * 1998-05-01 2003-12-02 Biowulf Technologies, L.L.C. Enhancing knowledge discovery from multiple data sets using multiple support vector machines
US20020015401A1 (en) * 2000-08-03 2002-02-07 Ravi Subramanian Flexible TDMA system architecture
US7069256B1 (en) * 2002-05-23 2006-06-27 Oracle International Corporation Neural network module for data mining
US9127950B2 (en) * 2012-05-03 2015-09-08 Honda Motor Co., Ltd. Landmark-based location belief tracking for voice-controlled navigation system
US20140066320A1 (en) * 2012-09-04 2014-03-06 Microsoft Corporation Identifying causal genetic markers for a specified phenotype
US9746849B2 (en) * 2012-11-09 2017-08-29 Tokyo Electron Limited Method and apparatus for autonomous tool parameter impact identification system for semiconductor manufacturing
CN104636309B (zh) * 2015-02-06 2018-01-05 南京理工大学 基于机器视觉的矩阵识别方法
US11099918B2 (en) * 2015-05-11 2021-08-24 Xilinx, Inc. Accelerating algorithms and applications on FPGAs
US20170193361A1 (en) * 2015-12-31 2017-07-06 Microsoft Technology Licensing, Llc Neural network training performance optimization framework
CN107766079B (zh) * 2016-08-19 2022-03-11 北京百度网讯科技有限公司 处理器以及用于在处理器上执行指令的方法
US10163197B2 (en) * 2016-12-02 2018-12-25 Tata Consultancy Services Limited System and method for layer-wise training of deep neural networks
US10528321B2 (en) * 2016-12-07 2020-01-07 Microsoft Technology Licensing, Llc Block floating point for neural network implementations
US11093832B2 (en) * 2017-10-19 2021-08-17 International Business Machines Corporation Pruning redundant neurons and kernels of deep convolutional neural networks
KR20190051697A (ko) * 2017-11-07 2019-05-15 삼성전자주식회사 뉴럴 네트워크의 디컨벌루션 연산을 수행하는 장치 및 방법
US10990650B1 (en) * 2018-03-22 2021-04-27 Amazon Technologies, Inc. Reducing computations for data including padding
US10699383B2 (en) * 2018-08-27 2020-06-30 Nvidia Corp. Computational blur for varifocal displays
CN113196274A (zh) * 2018-09-10 2021-07-30 西门子工业软件有限公司 根据材料属性的自定义元胞晶格核的计算机辅助设计

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102021116779A1 (de) 2021-06-30 2023-01-05 Bayerische Motoren Werke Aktiengesellschaft Verfahren zum Bereitstellen eines prädizierten, aktuellen Fahrziels an einen Nutzer eines Fahrzeugs, computerlesbares Medium, System, Fahrzeug, und mobiles Endgerät

Also Published As

Publication number Publication date
CN113011578A (zh) 2021-06-22
US11625605B2 (en) 2023-04-11
US20210192334A1 (en) 2021-06-24

Similar Documents

Publication Publication Date Title
DE112020000584T5 (de) Verfahren für unüberwachte bild-zu-bild-übersetzung mit wenigen aufnahmen
DE69216077T2 (de) Praediktives selbst-organisierendes neuronales netzwerk
DE112020000537T5 (de) Verbesserung von fairness durch bestärkendes lernen
DE3788830T2 (de) Anpassbarer Mechanismus zur Durchführung von aufeinanderfolgenden Entscheidungen.
DE112020003498T5 (de) Erzeugung von trainings- und validierungsdaten für maschinelles lernen
DE202020101701U1 (de) Trainieren neuronaler Netze unter Verwendung von Datenvermehrungsstrategien
Tay et al. A clustering-based failure mode and effect analysis model and its application to the edible bird nest industry
DE112020005610T5 (de) Identifizieren von optimalen gewichtungen zum verbessern einervorhersagegenauigkeit bei methoden für maschinelles lernen
DE202017007528U1 (de) Differenzmetrik für auf maschinellem Lernen basierende Verarbeitungssysteme
DE112005000569T5 (de) System und Verfahren zur Patientenidentifikation für klinische Untersuchungen unter Verwendung von inhaltsbasiertem Erlangen und Lernen
DE202020101664U1 (de) Rechnergestützte Graphenoptimierung
DE102021004562A1 (de) Abwandlung von Szenengraphen auf Grundlage von Befehlen in natürlicher Sprache
DE112020002693T5 (de) Verringerung der berechnung in neuralen netzwerken mit selbstmodifizierendem code
DE102021109468A1 (de) Hardware beschleuniger mit analog-inhaltlichem adressierbarem speicher (a-cam) für entscheidungsbaumrechnung
DE102021125856A1 (de) Erkennen von feindlichen angriffen auf ein tiefes neuronales netz (deep neural network (dnn))
DE112021005910T5 (de) Schnellere abdeckungskonvergenz mit automatischer testparameterabstimmung bei eingeschränkter zufallsverifikation
DE102018127802A1 (de) Hybrider klassifikator eines gepulsten neuronalen netzwerks und einer support-vektor-maschine
DE112020003055T5 (de) Neuanordnen der operationen eines neuronalen netzwerks für parallele ausführung
DE102020132591A1 (de) Auswählen von rechenkernvarianten unter verwendung neuronaler netzwerke
DE112021003761T5 (de) Prädiktive modelle mit zerlegbaren hierarchischen ebenen, die konfiguriert werden, um interpretierbare resultate zu erzeugen
DE102022209542B4 (de) Sensormesswertanomaliedetektion
DE112021001565T5 (de) Sortieren von datenelementen eines bestimmten satzes von datenelementen
DE102020123155A1 (de) Quantisierungsverfahren eines künstlichen neuronalen Netzwerks und Operationsverfahren unter Verwendung eines künstlichen neuronalen Netzwerks
Sterne et al. Why MCA? Nonlinear sparse coding with spike-and-slab prior for neurally plausible image encoding
Shatnyi et al. Simulation of sequential and partially parallel fuzzy ART neural network

Legal Events

Date Code Title Description
R012 Request for examination validly filed