DE102020202093A1 - Verfahren und Vorrichtung für maschinelles Lernen - Google Patents
Verfahren und Vorrichtung für maschinelles Lernen Download PDFInfo
- Publication number
- DE102020202093A1 DE102020202093A1 DE102020202093.0A DE102020202093A DE102020202093A1 DE 102020202093 A1 DE102020202093 A1 DE 102020202093A1 DE 102020202093 A DE102020202093 A DE 102020202093A DE 102020202093 A1 DE102020202093 A1 DE 102020202093A1
- Authority
- DE
- Germany
- Prior art keywords
- memory
- layer
- weights
- tensor
- hardware
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
- G06F11/0772—Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1476—Error detection or correction of the data by redundancy in operation in neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Quality & Reliability (AREA)
- Neurology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Debugging And Monitoring (AREA)
- Hardware Redundancy (AREA)
- Detection And Correction Of Errors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Vorrichtung und Verfahren für maschinelles Lernen mit einem künstlichen neuronalen Netzwerk, dadurch gekennzeichnet, dass für eine Berechnungshardware (110) für das künstliche neuronale Netzwerk eine Schicht-Beschreibung bereitgestellt wird, die wenigstens einen Teil einer Schicht des künstlichen neuronalen Netzwerks definiert, wobei die Schicht-Beschreibung einen Tensor für Eingangswerte wenigstens eines Teils dieser Schicht, einen Tensor für Gewichte wenigstens eines Teils dieser Schicht und einen Tensor für Ausgangswerte wenigstens eines Teils dieser Schicht insbesondere deren Startadresse definiert, wobei von der Berechnungshardware (110) für eine Übertragung dieser Eingangswerte eine Nachricht gesendet wird (216), die eine Startadresse des Tensor für diese Eingangswerte in einem Speicher (102) umfasst, wobei von der Berechnungshardware (110) für eine Übertragung dieser Gewichte eine Nachricht (224) gesendet wird, die eine Startadresse des Tensors für diese Gewichte in einem Speicher (102) umfasst, oder wobei von der Berechnungshardware (110) für eine Übertragung dieser Ausgangswerte eine Nachricht (232) gesendet wird, die eine Startadresse des Tensors für diese Ausgangswerte in einem Speicher (102) umfasst.
Description
- Stand der Technik
- Die Erfindung geht aus von einem Verfahren und einer Vorrichtung für maschinelles Lernen.
- Maschinelles Lernen kann auf künstlichen neuronalen Netzwerken basieren, die in einer Berechnungshardware, einem sogenannten KI Beschleuniger, implementiert werden.
- Eine Fehlererkennung oder eine Fehlerkorrektur in einem derartig implementierten künstlichen neuronalen Netzwerk kann basierend auf einer Prüfsumme durchgeführt werden, die in der Berechnungshardware bestimmt wird.
- Dies ermöglicht eine Lokalisation und Korrektur fehlerhafter Neuronen-Ausgabewerte, die bei der Berechnung von Neuronenfunktionen des neuronalen Netzwerks auftreten können, z.B. ausgelöst durch ein Fehlverhalten der Berechnungshardware.
- Wünschenswert ist es, die Fehlererkennung oder eine Fehlerkorrektur für maschinelles Lernen weiter zu verbessern.
- Offenbarung der Erfindung
- Dies wird durch das Verfahren und die Vorrichtung nach den unabhängigen Ansprüchen erreicht.
- Das Verfahren für maschinelles Lernen sieht vor, dass für eine Berechnungshardware für das künstliche neuronale Netzwerk eine Schicht-Beschreibung bereitgestellt wird, die wenigstens einen Teil einer Schicht des künstlichen neuronalen Netzwerks definiert, wobei die Schicht-Beschreibung einen Tensor für Eingangswerte wenigstens eines Teils dieser Schicht, einen Tensor für Gewichte wenigstens eines Teils dieser Schicht und einen Tensor für Ausgangswerte wenigstens eines Teils dieser Schicht insbesondere deren Startadresse definiert, wobei von der Berechnungshardware für eine Übertragung dieser Eingangswerte eine Nachricht gesendet wird, die eine Startadresse des Tensor für diese Eingangswerte in einem Speicher umfasst, wobei von der Berechnungshardware für eine Übertragung dieser Gewichte eine Nachricht gesendet wird, die eine Startadresse des Tensors für diese Gewichte in einem Speicher umfasst, oder wobei von der Berechnungshardware für eine Übertragung dieser Ausgangswerte eine Nachricht gesendet wird, die eine Startadresse des Tensors für diese Ausgangswerte in einem Speicher umfasst. Dadurch erfolgt eine Kommunikation zwischen der Berechnungshardware und einem Memory-Controller erfolgt mit einem vorgegebenen Datenformat. Dadurch kann der Memory-Controller mit beliebiger Berechnungshardware kommunizieren, die dieses Datenformat unterstützt.
- In einem Aspekt wird für die Berechnungshardware für das künstliche neuronale Netzwerk eine Netzwerk-Beschreibung bereitgestellt, die eine Liste für eine Anzahl von Schicht-Beschreibungen umfasst, wobei eine Schicht-Beschreibung der Anzahl von Schicht-Beschreibungen eine Anzahl Speicher-Kachel-Beschreibungen umfasst, wobei eine Speicher-Kachel-Beschreibung aus der Anzahl Speicher-Kachel-Beschreibungen die Startadresse des Tensors für Eingangswerte des wenigstens einen Teils dieser Schicht, die Startadresse des Tensors für Gewichte des wenigstens einen Teils dieser Schicht und die Startadresse des Tensors für Ausgangswerte des wenigstens einen Teils dieser Schicht umfasst, wobei von der Berechnungshardware eine Nachricht gesendet wird, die diese Speicher-Kachel-Beschreibung in der Liste identifiziert, wobei in Erwiderung auf diese Nachricht die Speicher-Kachel-Beschreibung empfangen wird, und wobei die Startadressen der Tensoren abhängig von der Speicher-Kachel-Beschreibung bestimmt werden. Durch sukzessives abarbeiten der Liste kann die Berechnungshardware die Beschreibungen der Speicher-Kacheln für alle Berechnungen nacheinander anfordern, auswerten und dann durch direkten Zugriff auf den richtigen Speicherort von dort Eingangswerte oder Gewichte lesen bzw. Ausgangswerte schreiben.
- Vorzugsweise wird eine Vielzahl von Gewichten zum Speichern in der Berechnungshardware für das künstliche neuronale Netzwerk von einem Speicher über einen Memory-Controller zur Berechnungshardware übertragen, wobei eine Vielzahl von Eingangswerten aus dem Speicher über den Memory-Controller zum Speichern in der Berechnungshardware für das künstliche neuronale Netzwerk übertragen wird, wobei während die Vielzahl von Gewichten vom Speicher über den Memory-Controller zur Berechnungshardware übertragen wird, abhängig von der Vielzahl von Gewichten eine Summe bestimmt wird, wobei während die Vielzahl von Eingangswerten aus dem Speicher über den Memory-Controller zum Speichern in der Berechnungshardware übertragen wird, abhängig von der Vielzahl von Eingangswerten und der Summe ein Referenzwert bestimmt wird, wobei während am Memory-Controller eine Vielzahl von Ausgangswerten von der Berechnungshardware empfangen wird eine Prüfsumme abhängig von der Vielzahl von Ausgangswerten bestimmt wird, wobei die Prüfsumme in einem Vergleich mit dem Referenzwert geprüft wird, und wobei abhängig vom Ergebnis des Vergleichs ein Fehler erkannt wird oder nicht. Dadurch wird die Fehlererkennung außerhalb der Berechnungshardware ausgeführt. Dieses Verfahren ist für eine Steigerung einer Zuverlässigkeit von Berechnungshardware für maschinelles Lernen und für eine Verteilung von Zuverlässigkeitseinheiten und Funktionseinheiten von Berechnungshardware für maschinelles Lernen einsetzbar. Die Berechnung der Prüfsumme und des Referenzwertes und der Vergleich von Prüfsumme und Referenzwert findet außerhalb der Berechnungshardware statt, im Memory-Controller. Durch diesen hinzugefügten Saftety-Mechanismus kann die Berechnungshardware beispielsweise von einem externen Anbieter verwendet werden.
- In einem Aspekt wird eine Vielzahl von Gewichten zum Speichern in der Berechnungshardware für das künstliche neuronale Netzwerk von einem Speicher über einen Memory-Controller zur Berechnungshardware übertragen wird, wobei eine Vielzahl von Eingangswerten aus dem Speicher über den Memory-Controller zum Speichern in der Berechnungshardware für das künstliche neuronale Netzwerk übertragen wird, wobei während die Vielzahl von Eingangswerten vom Speicher über den Memory-Controller zur Berechnungshardware übertragen wird, abhängig von der Vielzahl von Eingangswerten eine Summe bestimmt wird, wobei während die Vielzahl von Gewichten aus dem Speicher über den Memory-Controller zum Speichern in der Berechnungshardware übertragen wird, abhängig von der Vielzahl von Gewichten und der Summe ein Referenzwert bestimmt wird, wobei während am Memory-Controller eine Vielzahl von Ausgangswerten von der Berechnungshardware empfangen wird eine Prüfsumme abhängig von der Vielzahl von Ausgangswerten bestimmt wird, wobei die Prüfsumme in einem Vergleich mit dem Referenzwert geprüft wird, und wobei abhängig vom Ergebnis des Vergleichs ein Fehler erkannt wird oder nicht. Diese Vorgehensweise ist eine Alternative zu der zuvor beschriebenen Fehlererkennung.
- Vorzugsweise wird eine Fehlererkennung für wenigstens eine Schicht des künstlichen neuronalen Netzwerks durchgeführt. Dadurch wird die Fehlererkennung für einen oder mehrere Layer eines Netzes durchgeführt.
- Vorzugsweise wird während die Vielzahl von Eingangswerten übertragen wird, abhängig von der Vielzahl von Eingangswerten und abhängig vom Referenzkern der Referenzwert bestimmt. Dadurch wird bereits während der Übertragung ein weiterer Teil der Fehlererkennung durchgeführt.
- Vorzugsweise wird eine Leseanfrage für eine Vielzahl von Gewichten einer Schicht eines künstlichen neuronalen Netzwerks empfangen, wobei die Vielzahl von Gewichten aus dem Speicher gelesen wird. Die Fehlererkennung wird in diesem Aspekt durch die Leseanfrage an einen Memory-Controller ausgelöst.
- Vorzugsweise wird eine Leseanfrage für eine Vielzahl von Eingangswerten für die Schicht des künstlichen neuronalen Netzwerks empfangen, wobei die Vielzahl von Eingangswerten aus dem Speicher gelesen wird. Die Fehlererkennung wird in diesem Aspekt durch die Leseanfrage an einen Memory-Controller fortgesetzt.
- In einem Aspekt wird die Vielzahl von Ausgangswerten der Schicht abhängig von der Vielzahl von Eingangswerten und der Vielzahl von Gewichten bestimmt. Das Verfahren umfasst in diesem Aspekt auch eine Berechnung in der Berechnungshardware.
- Vorzugsweise wird wenn kein Fehler erkannt wird, ein Ergebniswert abhängig von einem Ausgangswert der Vielzahl von Ausgangswerten und abhängig von einer Aktivierungsfunktion bestimmt.
- Wenn ein Fehler erkannt wird, kann vom Memory-Controller ein Fehlersignal insbesondere an einen Host gesendet werden.
- Vorzugsweise wird, wenn ein Fehler erkannt wird vom Memory-Controller eine Neuberechnung zumindest eines Teils der Ausgangswerte ausgelöst wird. Die Fehlererkennung kann den Fehler typischerweise auf eine Untermenge der Ausgangswerte eingrenzen, die durch eine Neuberechnung berichtigt werden können.
- Eine Vorrichtung ist ausgebildet, das Verfahren auszuführen.
- Weitere vorteilhafte Ausführungsformen ergeben sich aus der Beschreibung und der Zeichnung. In der Zeichnung zeigt:
-
1 eine schematische Darstellung einer Vorrichtung für maschinelles Lernen, -
2 Schritte in einem Verfahren für maschinelles Lernen. - In
1 ist eine Vorrichtung100 für maschinelles Lernen schematisch dargestellt. - Die Vorrichtung
100 umfasst einen Speicher102 , einen Memory-Controller104 , eine Datenbus106 einen Prozessor108 und eine Berechnungshardware110 . - Der Memory-Controller
104 ist ausgebildet, über den Datenbus106 von der Berechnungshardware110 Leseanfragen auf den Speicher102 zu empfangen und in Erwiderung auf eine Leseanfrage Daten aus dem Speicher102 zu lesen und über den Datenbus106 an die Berechnungshardware110 zu senden. Der Prozessor108 ist ausgebildet, zur Umsetzung eines Verfahrens für maschinelles Lernen über den Datenbus106 mit dem Memory-Controller104 zu kommunizieren. Im Beispiel ist vorgesehen, dass der Prozessor108 Hyperparameter, Gewichte und Eingangswerte für ein künstliches neuronales Netzwerk vorgibt, mit dem das maschinelle Lernen ausgeführt werden soll. Im Beispiel ist vorgesehen, dass der Prozessor108 ein Ergebnis des maschinellen Lernens abhängig von Ausgangswerten des künstlichen neuronalen Netzwerks bestimmt. Insofern ist unerheblich, ob mit dem maschinellen Lernen eine Klassifikation, eine Regression oder eine andere Berechnung durchzuführen ist. - Eine Kommunikation zwischen der Berechnungshardware
110 und dem Speicher102 erfolgt im Beispiel insbesondere ausschließlich über den Memory-Controller104 . Eine Kommunikation zwischen dem Prozessor108 und dem Speicher102 erfolgt im Beispiel insbesondere ausschließlich über den Memory-Controller104 . Durch diese Trennung zwischen Prozessor108 , Memory-Controller104 , Berechnungshardware110 und Speicher102 ist das im Folgenden beschriebene Verfahren für Fehlererkennung und ein darauf basierendes Verfahren für Fehlerbehandlung besonders wirkungsvoll umsetzbar. - Die Kommunikation zwischen der Berechnungshardware
110 und dem Memory-Controller104 erfolgt im Beispiel mit einem vorgegebenen Datenformat. Ein Beispiel für ein derartiges Datenformat ist in folgender Tensor-Beschreibung angegeben: - - Adresse im Speicher
- - Tensor-Form
- - Speicher Aufteilung
- - Tensor-Daten
- Dabei definiert „Adresse im Speicher“ im Beispiel eine Startadresse addr_layer des Tensors im Speicher
102 . - Die Tensor-Form definiert im Beispiel für eine Vielzahl von Eingangswerten oder für eine Vielzahl von Ausgangswerten für eine Schicht des künstlichen neuronalen Netzwerks deren Dimension B, W, H, C, beispielsweise ein Tensor T mit B=2, W=320, H=640, C=3. Die Form eines Tensors T wird im Folgenden auch als T.shape bezeichnet. Für einen Tensor T mit den Dimension B=2, W=320, H=640, C=3, entspricht T.shape=( B=2, W=320, H=640, C=3). Die Tensor-Form definiert im Beispiel für eine Vielzahl von Gewichten für eine Schicht des künstlichen neuronalen Netzwerks deren Dimension, beispielsweise Kx, Ky, Ci, Co. Beispielsweise Kx=2, Ky=3, Ci=512, Co=1024.
- Eine Dimensions-Anordnung oder Speicherabbildungsfunktion definiert im Beispiel die Speicher Aufteilung im Speicher
102 . Die Speicherabbildungsfunktion bildet einen mehrdimensionalen Tensor auf den eindimensionalen Speicher102 ab. Die Dimension-Anordnung beschreit einen Rang, eine Größe, einen Datentyp eines N-dimensionalen Feldes, das im Speicher102 abspeicherbar ist. Die Speicherabbildungsfunktion errechnet für ein Programm, das auf Elemente eines Felds zugreifen will, deren Speicheradresse im Speicher102 . Im N-dimensionalen Feld kann eine Sequenz von Dimensionen gespeichert werden. Ein erster Wert der Sequenz stellt im Beispiel eine mostminor Dimension dar. Ein letzter Wert der Sequenz stellt im Beispiel eine most-major Dimension dar. - Für die Vielzahl von Eingangswerten oder die Vielzahl von Ausgangswerten ist diese im Beispiel durch eine Sequenz BWHC definiert, wobei die letztgenannte Dimension, C, die most-major dimension ist. Für die Vielzahl von Gewichten ist diese im Beispiel durch eine Sequenz KxKyCiCo definiert.
- Die Tensor-Daten sind die Daten, d.h. die einzelnen Bits oder Bytes oder für eine Burst-Modus ein Datenblock oder mehrere Datenblöcke.
- Die Berechnungshardware
110 umfasst im Beispiel Speicher-Kacheln. Im Beispiel ist für einen Tensor mit einer Vielzahl von Eingangswerten eine Speicher-Kachel Ifmap gemäß einer Tensor-Beschreibung für die Vielzahl von Eingangswerten definiert. Im Beispiel ist für einen Tensor mit einer Vielzahl von Ausgangswerten eine Speicher-Kachel Ofmap gemäß einer Tensor-Beschreibung für die Vielzahl von Ausgangswerten definiert. Im Beispiel ist für einen Tensor mit einer Vielzahl von Gewichten eine Speicher-Kachel Weights gemäß einer Tensor-Beschreibung für die Vielzahl von Gewichten definiert. - Die Berechnungshardware
110 ist in diesem Beispiel ausgebildet, Ausgangswerte für die Speicher-Kachel Ofmap abhängig von den Eingangswerten aus der Speicher-Kachel Ifmap und der Speicher-Kachel Weights für die Gewichte zu bestimmen. - Für diese Zuordnung ist im Beispiel eine Speicher-Kachel-Beschreibung definiert:
- - Ifmap
- - Ofmap
- - Weights
- Das künstliche neuronale Netzwerk wird im Beispiel durch eine Schicht-Beschreibung und eine Netzwerk-Beschreibung definiert.
- Sch icht-Besch reibung:
- - Liste der Speicher-Kachel-Beschreibungen
- - Operator
- - Aktivierungsfunktion
- Die Liste der Speicher-Kachel-Beschreibungen umfasst in diesem Beispiel alle Speicher-Kachel-Beschreibungen für das Verfahren zum maschinellen Lernen. Der Operator definiert die Funktion der Schicht, d.h. beispielsweise Conv2D, Depthwise-Separable Convolution, Sum. Anderer Operationen können genauso vorgesehen sein. Die Aktivierungsfunktion, eine in der Regel nicht-lineare Funktion der Schicht, wie z.B. rectified linear unit, ReLU. Es kann auch eine andere Aktivierungsfunktion, beispielsweise Sigmoid oder tanh, verwendet werden.
- Netzwerk-Beschreibung:
- - Liste der Schicht-Beschreibungen
- Die Liste der Schicht-Beschreibungen umfasst im Beispiel alle Schichten, die für das Verfahren zum maschinellen Lernen eingesetzt werden sollen.
- Es können auch nur Teilaspekte des maschinellen Lernens mit Berechnungshardware ausgeführt sein. In diesem Fall werden nur für diese Teilaspekte Netzwerk-Beschreibungen und/oder Speicher-Kachel-Beschreibungen verwendet. Andere Berechnungsschritte können vom Prozessor
108 unabhängig davon ausgeführt werden. - Im Beispiel wird das Verfahren anhand der
2 am Beispiel einer Implementierung für Conv2D auf der Berechnungshardware110 beschrieben. Andere Operationen werden entsprechend umgesetzt. Als Aktivierungsfunktion wird im Beispiel eine rectified linear unit, ReLU, verwendet, die auf dem Memory-Controller104 implementiert ist. Es kann auch eine andere Aktivierungsfunktion, beispielsweise Sigmoid, verwendet werden. - In der Folgenden Beschreibung wird ein beispielhaftes Protokoll, d.h. ein festgelegtes Format, zur Kommunikation zwischen dem Memory-Controller
104 , dem Speicher102 und der Berechnungshardware110 dargestellt. - Bei der Folgenden Beschreibung wird davon ausgegangen, dass der Prozessor
108 in einem Schritt202 bestimmt welche der Operationen und Aktivierungsfunktionen auf dem Memory-Controller108 und welche auf der Berechnungshardware110 auszuführen sind. - Im Schritt
202 werden in diesem Beispiel, die Schicht-Beschreibung für die Schicht des künstlichen neuronalen Netzwerks, die berechnet werden soll, bestimmt. - In einem Schritt
204 wird in diesem Beispiel die Schicht-Beschreibung für eine Schicht des künstlichen neuronalen Netzwerks übertragen. - In einem Schritt
206 wird der Speicher102 vom Memory-Controller104 wie vom Prozessor110 definiert konfiguriert. Der Memory-Controller104 kann zudem abhängig von der Schicht-Beschreibung eine erforderliche Speichergröße, die diese Schicht-Beschreibung definiert, bestimmen. Der Memory-Controller104 kann zudem abhängig von der Schicht-Beschreibung, insbesondere für alle Datenstrukturen die erforderliche Speichergröße reservieren. Im Beispiel wird die Schicht-Beschreibung in einem Schritt208 an der Startadresse addr_layer in den Speicher102 geschrieben. Die Startadresse addr_layer wird im Beispiel vom Prozessor108 gesendet und vom Memory-Controller104 empfangen. Die Startadresse addr_layer wird im Beispiel vom Prozessor108 und vom Memory-Controller104 verwendet, um Daten zwischen diesen zu übertragen. Die Vielzahl Eingangsdaten, die Vielzahl Ausgangsdaten und die Vielzahl Gewichte sind im Beispiel aufgrund ihrer jeweiligen Startadresse addr_layer eindeutig als solche identifiziert. - Im Beispiel ist vorgesehen, dass der Prozessor
108 ein optionales Startsignal210 an die Berechnungshardware110 sendet. Das Startsignal210 startet eine Berechnung in der Berechnungshardware110 . Das Startsignal210 ist wird vorzugsweise nach Abschluss der Konfiguration gesendet. Der Abschluss der Konfiguration kann optional vom Memory-Controller104 an den Prozessor108 übertragen werden. Eine Zeitablaufsteuerung ist ebenfalls möglich. - Die Schritte
202 ,204 ,206 und208 können optional sein, beispielsweise, wenn die Konfiguration bereits ausgeführt wurde, bevor das Verfahren startet. - Die folgenden Schritte werden im Beispiel für n Schichten, die jeweils mehrere Speicherkachel enthält, nacheinander ausgeführt. Der Index n ist die Länge der Liste der Schicht-Beschreibungen in der Netzwerk-Beschreibung. Jede Schicht enthält mehrere Speicherkachel-Beschreibungen, die mit dem Index m im Folgenden gekennzeichnet werden. Die Anzahl an Speicherkachel-Beschreibungen ist nicht notwendigerweise gleich in allen Schichten.
- Eine Beispielhafte Beschreibung ist im Folgenden schematisch dargestellt:
- Netzwerkbeschreibung:
-
Schichtbeschreibung 1 Speicher-Kachel-Beschreibung 1 ifmap (Tensor-Beschreibung a) ofmap (Tensor-Beschreibung b) weight (Tensor-Beschreibung c) Speicher-Kachel-Beschreibung m ifmap (Tensor-Beschreibung a) ofmap (Tensor-Beschreibung b) weight (Tensor-Beschreibung c) Schichtbeschreibung n Speicher-Kachel-Beschreibung 1 ifmap (Tensor-Beschreibung a) ofmap (Tensor-Beschreibung b) weight (Tensor-Beschreibung c) Speicher-Kachel-Beschreibung m ifmap (Tensor-Beschreibung a) ofmap (Tensor-Beschreibung b) weight (Tensor-Beschreibung c)
Tensor-Beschreibung:
- - Adresse im Speicher = Startadresse addr_layer
- - Tensor-Form = Dimension B, W, H, C,
- - Speicher Aufteilung = Rang, Größe, Datentyp eines N-dimensionalen Feldes im Speicher
- - Tensor-Daten = Sequenz einer Vielzahl von
- a) Eingangswerten für ifmap
- b) Ausgangswerten für ofmap
- c) Gewichten für weights
In einem Schritt 212 wird an der Berechnungshardware 110 die m-te Speicherkachel-Beschreibungen der n-ten Schicht-Beschreibung aus der Liste der Schicht-Beschreibungen angefordert. Eine entsprechende Kurzschreibweise ist:
- neural_network_descriptor[n].tile[m].
Im Beispiel wird die m-te Speicherkachel-Beschreibungen der n-te Schicht-Beschreibung vom Memory-Controller 104 angefordert.
In einem Schritt 214 wird an der Berechnungshardware 110 die m-te Speicherkachel-Beschreibungen der n-te Schicht-Beschreibung aus der Liste der Schicht-Beschreibungen empfangen. Im Beispiel wird die m-te Speicherkachel-Beschreibungen der n-te Schicht-Beschreibung vom Memory-Controller 104 empfangen. Damit ist an der Berechnungshardware 110 die Startadresse addr_layer aller Speicher-Kacheln bekannt, die Daten und Operationen enthalten, die für diesen Berechnungsschritt erforderlich sind.
In einem Schritt 216 wird eine Leseanfrage für eine Vielzahl von Gewichten der m-te Speicherkachel-Beschreibungen der n-ten Schicht des künstlichen neuronalen Netzwerks übertragen. Im Beispiel wird die Leseanfrage von der Berechnungshardware 110 gesendet. Im Beispiel wird die Leseanfrage vom Memory-Controller 104 empfangen. Die Leseanfrage umfasst im Beispiel die Startadresse addr_layer und die Speicher Aufteilung für die Vielzahl Gewichte der m-te Speicherkachel-Beschreibungen der n-ten Schicht im Speicher 102 .
In einem Schritt 218 wird die Vielzahl von Gewichten aus dem Speicher 102 gelesen. Im Beispiel wird der Speicher 102 an der durch die Startadresse addr_layer für die Vielzahl von Gewichten definierten Stelle mit der durch die Speicher Aufteilung vorgegebenen Länge vom Memory-Controller 104 gelesen.
In einem Schritt 220 wird die Vielzahl von Gewichten, die durch Schritt 216 angefordert wurden, zur Berechnungshardware 110 übertragen. Für die m-te Speicherkachel-Beschreibungen der n-te Schicht wird die Vielzahl von Gewichten im Beispiel mit
neural_network_descriptor[n].tile[m]weights bezeichnet.
neural_network_descriptor[n].tile[m]weights bezeichnet.
In einem Schritt 222 wird, im Beispiel während die Vielzahl von Gewichten übertragen wird, abhängig von der Vielzahl von Gewichten ein Referenzkern CK bestimmt:
- CK = Sum(neural_network_descriptor[n]. tile[m]. weights, dimension =Co)
neural_network_descriptor[n]. tile[m]]. weights
die Vielzahl von Gewichten der m-ten Speicherkachel-Beschreibung der n-ten Schicht definiert, wobei Sum eine Addition der Vielzahl der Gewichte der n-ten Schicht entlang einer Dimension des Tensors der Gewichte der n-ten Schicht definiert, und wobei dimension die Dimension über welche addiert wird, im Beispiel Co definiert. Der Referenzkern CK weist in diesem Beispiel eine Form CK.shape = (Kx, Ky, Ci) auf. Der Referenzkern CK wird im Mermory-Controller
In einem Schritt 224 wird eine Leseanfrage für eine Vielzahl von Eingangswerten der m-te Speicherkachel-Beschreibungen der n-ten Schicht des künstlichen neuronalen Netzwerks übertragen. Im Beispiel wird die Leseanfrage von der Berechnungshardware 110 gesendet. Im Beispiel wird die Leseanfrage vom Memory-Controller 104 empfangen. Die Leseanfrage umfasst im Beispiel die Startadresse addr_layer und die Speicher Aufteilung für die Vielzahl Eingangswerte der m-te Speicherkachel-Beschreibungen der n-ten Schicht im Speicher 102 .
In einem Schritt 226 wird die Vielzahl von Eingangswerten aus dem Speicher 102 gelesen. Im Beispiel wird der Speicher 102 an der durch die Startadresse addr-Layer für die Vielzahl von Eingangsdaten definierten Stelle mit der durch die Speicher Aufteilung vorgegebenen Länge vom Memory-Controller 104 gelesen.
In einem Schritt 228 wird die Vielzahl von Eingangswerten zum Speichern in der Speicher-Kachel der Berechnungshardware 110 für das künstliche neuronale Netzwerk übertragen. Für die m-te Speicherkachel-Beschreibungen der n-te Schicht wird die Vielzahl von Eingangswerten im Beispiel mit
neural_network_descriptor[n]. tile[m]. ifmap
bezeichnet.
neural_network_descriptor[n]. tile[m]. ifmap
bezeichnet.
In einem Schritt 230 wird, im Beispiel während die Vielzahl von Eingangswerten übertragen wird, abhängig von der Vielzahl von Eingangswerten und abhängig vom Referenzkern CK ein Referenzwert CAR bestimmt:
- CAR= oc = Conv2D(neural_network_descriptor[n]. tile[m]. ifmap, CK)
neural_network_descriptor[n]. tile[m]. ifmap
die Vielzahl der Eingangswerte der m-te Speicherkachel-Beschreibungen der n-ten Schicht definiert und wobei der Referenzkern CK der m-te Speicherkachel-Beschreibungen der n-ten Schicht für die Berechnung des Referenzwerts CAR der m-te Speicherkachel-Beschreibungen der n-ten Schicht an die Vielzahl der Eingangswerte der m-ten Speicherkachel-Beschreibungen der n-ten Schicht angefügt, d.h. konkateniert, wird. Conv2D bezeichnet in diesem Beispiel eine zweidimensionale Faltung der Vielzahl von Eingangsgrößen
neural_network_descriptor[n]. tile[m]. ifmap
mit Referenzkern CK der m-te Speicherkachel-Beschreibungen der n-ten Schicht.
Es kann vorgesehen sein, den Referenzwert CAR in den Speicher 102 zu schreiben.
In einem Schritt 232 wird an der Berechnungshardware 110 die Vielzahl von Ausgangswerten der der m-te Speicherkachel-Beschreibungen der n-ten Schicht abhängig von der Vielzahl von Eingangswerten der m-ten Speicherkachel-Beschreibungen der n-ten Schicht und der Vielzahl von Gewichten der n-ten Schicht bestimmt. Die Vielzahl von Ausgangswerten der m-ten Speicherkachel-Beschreibungen der n-ten Schicht wird im Beispiel mit Ofmap bezeichnet und beispielsweise bestimmt als:
Ofmap = Conv2D(neural_network_descriptor[n]. tile[m]. ifmap,
neural_network_descriptor[n]. tile[m]. weights)
Ofmap = Conv2D(neural_network_descriptor[n]. tile[m]. ifmap,
neural_network_descriptor[n]. tile[m]. weights)
Conv2D bezeichnet in diesem Beispiel eine zweidimensionale Faltung der Vielzahl von Eingangsgrößen
neural_network_descriptor[n]. tile[m]. ifmap
mit der Vielzahl von Gewichen
neural_network_descriptor[n]. tile[m]. weights
der m-ten Speicherkachel-Beschreibungen der n-ten Schicht.
neural_network_descriptor[n]. tile[m]. ifmap
mit der Vielzahl von Gewichen
neural_network_descriptor[n]. tile[m]. weights
der m-ten Speicherkachel-Beschreibungen der n-ten Schicht.
In einem Schritt 232 wird die Vielzahl von Ausgangswerten für die m-te Speicherkachel-Beschreibungen der n-te Schicht übertragen. Im Beispiel wird die Vielzahl von Ausgangswerten für die m-ten Speicherkachel-Beschreibungen der n-te Schicht von der Berechnungshardware 110 gesendet. Im Beispiel wird die Vielzahl von Ausgangswerten für die m-ten Speicherkachel-Beschreibungen der n-te Schicht am Memory-Controller 104 empfangen.
In einem Schritt 234 wird eine Prüfsumme CA abhängig von der Vielzahl von Ausgangswerten bestimmt.
wobei die Prüfsumme CA über eine Menge Neuronen N der m-ten Speicherkachel-Beschreibungen der n-ten Schicht gebildet wird gemäß einer Neuronenfunktion oj
wobei die Neuronenfunktion oj im Beispiel als Addition von mit wj,i gewichteten eingehenden Werten xi und einem Bias-Wert bj jedes Neurons j bestimmt wird.
In einem Schritt 236 wird die Prüfsumme CA in einem Vergleich mit einem Referenzwert CAR geprüft.
Im Beispiel wird der Wert der Prüfsumme CA mit dem Referenzwert CAR verglichen. Es kann vorgesehen sein, den Referenzwert CAR aus dem Speicher 102 zu lesen.
Abhängig vom Ergebnis des Vergleichs wird im Beispiel ein Fehler erkannt oder nicht. Dies stellt eine Fehlererkennung dar. Die Fehlererkennung kann für eine Schicht oder mehrere Schichten des künstlichen neuronalen Netzwerks durchgeführt werden. Wenn der Fehler erkannt wird, wird im Beispiel vom Memory-Controller 104 eine Fehlermeldung 238 an den Prozessor 108 übertragen.
Während die Prüfsumme CA bestimmt wird, kann vorgesehen sein, einen Schritt 240 auszuführen in dem ein Ergebniswert abhängig von einem Ausgangswert der Vielzahl von Ausgangswerten und abhängig von der Aktivierungsfunktion bestimmt werden.
In diesem Fall kann vorgesehen sein, in einem Schritt 242 den Ergebniswert im Speicher 102 zu speichern. Vorzugsweise werden Ergebniswerte für alle Ausgangswerte bestimmt, für die kein Fehler festgestellt wurde.
Es kann vorgesehen sein, die Schritte 240 und 242 nur auszuführen, wenn kein Fehler erkannt wird.
Es kann vorgesehen sein, dass wenn ein Fehler erkannt wird vom Memory-Controller 104 ein Fehlersignal insbesondere an einen Host gesendet wird.
Es kann vorgesehen sein, wenn ein Fehler erkannt wird vom Memory-Controller 104 eine Neuberechnung der Ausgangswerte ausgelöst wird.
Durch das beschriebene Vorgehen wird eine Vielzahl von Gewichten und eine Vielzahl von Eingangswerten zum Speichern in der Berechnungshardware 110 für das künstliche neuronale Netzwerk vom Speicher 102 über den Memory-Controller 104 zur Berechnungshardware 110 übertragen. Zudem wird eine Vielzahl von Ausgangswerten von der Berechnungshardware 110 am Memory-Controller 104 empfangen. Dies erfolgt mit dem beschriebenen Datenformat.
Für die Berechnungshardware 110 wird für das künstliche neuronale Netzwerk eine Netzwerk-Beschreibung bereitgestellt, die eine Liste für eine Anzahl n von Schicht-Beschreibungen. Eine beispielhaft beschriebene Schicht-Beschreibung der Anzahl n von Schicht-Beschreibungen umfasst eine Anzahl m Speicher-Kachel-Beschreibungen. Die Speicher-Kachel-Beschreibung der im beispielhaft beschriebenen Speicher-Kachel umfasst die Startadresse des Tensors für Eingangswerte dieser Speicher-Kachel, die Startadresse des Tensors für Gewichte dieser Speicher-Kachel und die Startadresse des Tensors für Ausgangswerte dieser Speicher-Kachel.
Von der Berechnungshardware 110 wird im Beispiel im Schritt 212 eine Nachricht gesendet, die diese Speicher-Kachel-Beschreibung in der Liste identifiziert. In Erwiderung auf diese Nachricht wird die Speicher-Kachel-Beschreibung im Schritt 214 empfangen wird. Damit werden die Startadressen der Tensoren abhängig von der Speicher-Kachel-Beschreibung bestimmt.
Das zuvor beschriebene Verfahren sieht vor, dass für die Berechnungshardware 110 für das künstliche neuronale Netzwerk die Schicht-Beschreibung bereitgestellt wird. Diese definiert wenigstens einen Teil der Schicht des künstlichen neuronalen Netzwerks. Der Teil der Schicht entspricht im Beispiel der Speicher-Kachel. Diese Schicht-Beschreibung definiert einen Tensor für Eingangswerte dieser Speicher-Kachel, einen Tensor für Gewichte dieser Speicher-Kachel und einen Tensor für Ausgangswerte dieser Speicher-Kachel. Es können auch Tensoren für eine gesamte Schicht definiert sein.
Von der Berechnungshardware 110 wird für eine Übertragung dieser Eingangswerte im Schritt 216 eine Nachricht gesendet, die die Startadresse des Tensors für diese Eingangswerte im Speicher 102 umfasst. Von der Berechnungshardware 110 wird für eine Übertragung dieser Gewichte im Schritt 224 eine Nachricht gesendet, die die Startadresse des Tensors für diese Gewichte im Speicher 102 umfasst. Von der Berechnungshardware 110 wird für eine Übertragung dieser Ausgangswerte im Schritt 232 eine Nachricht gesendet, die die Startadresse des Tensors für diese Ausgangswerte im Speicher 102 umfasst.
Im zuvor beschriebenen Vorgehen wird während die Vielzahl von Gewichten vom Speicher 102 über den Memory-Controller (04 zur Berechnungshardware 110 übertragen wird, abhängig von der Vielzahl von Gewichten die Summe CK bestimmt und während die Vielzahl von Eingangswerten aus dem Speicher 102 über den Memory-Controller 104 zum Speichern in der Berechnungshardware 110 übertragen wird, abhängig von der Vielzahl von Eingangswerten und der Summe CK ein Referenzwert CAR bestimmt. Während am Memory-Controller 104 die Vielzahl von Ausgangswerten von der Berechnungshardware 110 empfangen wird, wird in diesem Fall die Prüfsumme CA abhängig von der Vielzahl von Ausgangswerten bestimmt. Diese Prüfsumme CA wird im Vergleich mit dem Referenzwert CAR geprüft. Abhängig vom Ergebnis des Vergleichs wird im Beispiel bei einer Abweichung der Prüfsumme CA vom Referenzwert CAR ein Fehler erkannt. Anderenfalls wird kein Fehler erkannt.
In einer Alternative wird während die Vielzahl von Eingangswerten vom Speicher 102 über den Memory-Controller 104 zur Berechnungshardware 110 übertragen wird, abhängig von der Vielzahl von Eingangswerten die Summe CK bestimmt. Während die Vielzahl von Gewichten aus dem Speicher 102 über den Memory-Controller 104 zum Speichern in der Berechnungshardware 110 übertragen wird, wird in dieser Alternative abhängig von der Vielzahl von Gewichten und der Summe CK der Referenzwert CAR bestimmt. Während am Memory-Controller 104 die Vielzahl von Ausgangswerten von der Berechnungshardware 110 empfangen wird, wird in diesem Fall die Prüfsumme CA abhängig von der Vielzahl von Ausgangswerten bestimmt und im Vergleich mit dem Referenzwert CAR geprüft. Abhängig vom Ergebnis des Vergleichs wird im Beispiel bei einer Abweichung der Prüfsumme CA vom Referenzwert CAR ein Fehler erkannt. Anderenfalls wird kein Fehler erkannt.
Claims (13)
- Verfahren für maschinelles Lernen mit einem künstlichen neuronalen Netzwerk, dadurch gekennzeichnet, dass für eine Berechnungshardware (110) für das künstliche neuronale Netzwerk eine Schicht-Beschreibung bereitgestellt wird, die wenigstens einen Teil einer Schicht des künstlichen neuronalen Netzwerks definiert, wobei die Schicht-Beschreibung einen Tensor für Eingangswerte wenigstens eines Teils dieser Schicht, einen Tensor für Gewichte wenigstens eines Teils dieser Schicht und einen Tensor für Ausgangswerte wenigstens eines Teils dieser Schicht insbesondere deren Startadresse definiert, wobei von der Berechnungshardware (110) für eine Übertragung dieser Eingangswerte eine Nachricht gesendet wird (216), die eine Startadresse des Tensor für diese Eingangswerte in einem Speicher (102) umfasst, wobei von der Berechnungshardware (110) für eine Übertragung dieser Gewichte eine Nachricht (224) gesendet wird, die eine Startadresse des Tensors für diese Gewichte in einem Speicher (102) umfasst, oder wobei von der Berechnungshardware (110) für eine Übertragung dieser Ausgangswerte eine Nachricht (232) gesendet wird, die eine Startadresse des Tensors für diese Ausgangswerte in einem Speicher (102) umfasst.
- Verfahren nach
Anspruch 1 , dadurch gekennzeichnet, dass für die Berechnungshardware (110) für das künstliche neuronale Netzwerk eine Netzwerk-Beschreibung bereitgestellt wird, die eine Liste für eine Anzahl von Schicht-Beschreibungen umfasst, wobei eine Schicht-Beschreibung der Anzahl von Schicht-Beschreibungen eine Anzahl Speicher-Kachel-Beschreibungen umfasst, wobei eine Speicher-Kachel-Beschreibung aus der Anzahl Speicher-Kachel-Beschreibungen die Startadresse des Tensors für Eingangswerte des wenigstens einen Teils dieser Schicht, die Startadresse des Tensors für Gewichte des wenigstens einen Teils dieser Schicht und die Startadresse des Tensors für Ausgangswerte des wenigstens einen Teils dieser Schicht umfasst, wobei von der Berechnungshardware (110) eine Nachricht gesendet wird (212), die diese Speicher-Kachel-Beschreibung in der Liste identifiziert, wobei in Erwiderung auf diese Nachricht die Speicher-Kachel-Beschreibung empfangen wird (214), und wobei die Startadressen der Tensoren abhängig von der Speicher-Kachel-Beschreibung bestimmt werden. - Verfahren nach
Anspruch 1 oder2 , dadurch gekennzeichnet, dass eine Vielzahl von Gewichten zum Speichern in der Berechnungshardware (110) für das künstliche neuronale Netzwerk von einem Speicher (102) über einen Memory-Controller (104) zur Berechnungshardware (110) übertragen wird (220), wobei eine Vielzahl von Eingangswerten aus dem Speicher (102) über den Memory-Controller (104) zum Speichern in der Berechnungshardware (110) für das künstliche neuronale Netzwerk übertragen wird (228), wobei während die Vielzahl von Gewichten vom Speicher (102) über den Memory-Controller (104) zur Berechnungshardware (110) übertragen wird, abhängig von der Vielzahl von Gewichten eine Summe (CK) bestimmt wird (222), wobei während die Vielzahl von Eingangswerten aus dem Speicher (102) über den Memory-Controller (104) zum Speichern in der Berechnungshardware (110) übertragen wird, abhängig von der Vielzahl von Eingangswerten und der Summe (CK) ein Referenzwert (CAR) bestimmt wird (230), wobei während am Memory-Controller (104) eine Vielzahl von Ausgangswerten von der Berechnungshardware (110) empfangen wird (232) eine Prüfsumme (CA) abhängig von der Vielzahl von Ausgangswerten bestimmt wird (234), wobei die Prüfsumme (CA) in einem Vergleich mit dem Referenzwert (CAR) geprüft wird (236), und wobei abhängig vom Ergebnis des Vergleichs ein Fehler erkannt wird (238) oder nicht. - Verfahren nach
Anspruch 1 oder2 , dadurch gekennzeichnet, dass eine Vielzahl von Gewichten zum Speichern in der Berechnungshardware (110) für das künstliche neuronale Netzwerk von einem Speicher (102) über einen Memory-Controller (104) zur Berechnungshardware (110) übertragen wird (220), wobei eine Vielzahl von Eingangswerten aus dem Speicher (102) über den Memory-Controller (104) zum Speichern in der Berechnungshardware (110) für das künstliche neuronale Netzwerk übertragen wird (228), wobei während die Vielzahl von Eingangswerten vom Speicher (102) über den Memory-Controller (104) zur Berechnungshardware (110) übertragen wird, abhängig von der Vielzahl von Eingangswerten eine Summe (CK) bestimmt wird (222), wobei während die Vielzahl von Gewichten aus dem Speicher (102) über den Memory-Controller (104) zum Speichern in der Berechnungshardware (110) übertragen wird, abhängig von der Vielzahl von Gewichten und der Summe (CK) ein Referenzwert (CAR) bestimmt wird (230), wobei während am Memory-Controller (104) eine Vielzahl von Ausgangswerten von der Berechnungshardware (110) empfangen wird (232) eine Prüfsumme (CA) abhängig von der Vielzahl von Ausgangswerten bestimmt wird (234), wobei die Prüfsumme (CA) in einem Vergleich mit dem Referenzwert (CAR) geprüft wird (236), und wobei abhängig vom Ergebnis des Vergleichs ein Fehler erkannt wird (238) oder nicht. - Verfahren nach
Anspruch 3 oder4 , dadurch gekennzeichnet, dass eine Fehlererkennung (238) für wenigstens eine Schicht des künstlichen neuronalen Netzwerks durchgeführt wird. - Verfahren nach einem der vorherigen Ansprüche, dadurch gekennzeichnet, dass eine Leseanfrage für eine Vielzahl von Gewichten einer Schicht eines künstlichen neuronalen Netzwerks empfangen wird (216), wobei die Vielzahl von Gewichten aus dem Speicher (102) gelesen wird (218).
- Verfahren nach einem der vorherigen Ansprüche, dadurch gekennzeichnet, dass eine Leseanfrage für eine Vielzahl von Eingangswerten für die Schicht des künstlichen neuronalen Netzwerks empfangen wird (208c), wobei die Vielzahl von Eingangswerten aus dem Speicher (102) gelesen wird.
- Verfahren nach einem der vorherigen Ansprüche, dadurch gekennzeichnet, dass die Vielzahl von Ausgangswerten der Schicht abhängig von der Vielzahl von Eingangswerten und der Vielzahl von Gewichten bestimmt wird (212).
- Verfahren nach einem der vorherigen Ansprüche, dadurch gekennzeichnet, dass wenn kein Fehler erkannt wird, ein Ergebniswert abhängig von einem Ausgangswert der Vielzahl von Ausgangswerten und abhängig von einer Aktivierungsfunktion bestimmt wird (240).
- Verfahren nach einem der vorherigen Ansprüche, dadurch gekennzeichnet, dass wenn ein Fehler erkannt wird vom Memory-Controller (104) ein Fehlersignal insbesondere an einen Host gesendet wird.
- Verfahren nach einem der vorherigen Ansprüche, dadurch gekennzeichnet, dass wenn ein Fehler erkannt wird vom Memory-Controller (104) eine Neuberechnung zumindest eines Teils der der Ausgangswerte ausgelöst wird.
- Computerprogramm, dadurch gekennzeichnet, dass das Computerprogramm computerlesbare Instruktionen umfasst, bei deren Ausführung durch einen Computer ein Verfahren nach einem der
Ansprüche 1 bis11 abläuft. - Vorrichtung für maschinelles Lernen, dadurch gekennzeichnet, dass die Vorrichtung ausgebildet ist ein Verfahren nach einem der
Ansprüche 1 bis11 auszuführen.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102020202093.0A DE102020202093A1 (de) | 2020-02-19 | 2020-02-19 | Verfahren und Vorrichtung für maschinelles Lernen |
US17/172,707 US20210256376A1 (en) | 2020-02-19 | 2021-02-10 | Method and device for machine learning |
CN202110186930.0A CN113283595A (zh) | 2020-02-19 | 2021-02-18 | 用于机器学习的方法和设备 |
JP2021023957A JP2021131859A (ja) | 2020-02-19 | 2021-02-18 | 機械学習のための方法及び装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102020202093.0A DE102020202093A1 (de) | 2020-02-19 | 2020-02-19 | Verfahren und Vorrichtung für maschinelles Lernen |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102020202093A1 true DE102020202093A1 (de) | 2021-08-19 |
Family
ID=77060720
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102020202093.0A Pending DE102020202093A1 (de) | 2020-02-19 | 2020-02-19 | Verfahren und Vorrichtung für maschinelles Lernen |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210256376A1 (de) |
JP (1) | JP2021131859A (de) |
CN (1) | CN113283595A (de) |
DE (1) | DE102020202093A1 (de) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0976039B1 (de) | 1997-03-21 | 2008-02-06 | International Business Machines Corporation | Gerät und verfahren zur übertragung zwischen einem intelligenten mittel und benutzerrechner unter verwendung von maskierten nachrichten |
US20190121734A1 (en) | 2017-10-20 | 2019-04-25 | International Business Machines Corporation | Memory-mapped interface for message passing computing systems |
EP3506095A2 (de) | 2017-12-29 | 2019-07-03 | INTEL Corporation | Kommunikationsoptimierungen für verteiltes maschinelles lernen |
EP3640862A1 (de) | 2018-10-15 | 2020-04-22 | GrAl Matter Labs S.A.S. | Bewertungswerkzeug und -verfahren für neuronales netzwerk |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11934934B2 (en) * | 2017-04-17 | 2024-03-19 | Intel Corporation | Convolutional neural network optimization mechanism |
US11630666B2 (en) * | 2018-02-13 | 2023-04-18 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
EP3557425B1 (de) * | 2018-04-19 | 2024-05-15 | Aimotive Kft. | Beschleuniger und system zur beschleunigung von vorgängen |
US11232016B1 (en) * | 2018-09-21 | 2022-01-25 | Amazon Technologies, Inc. | Debug for computation networks using error detection codes |
EP3654247A1 (de) * | 2018-11-15 | 2020-05-20 | IMEC vzw | Faltungsmotor für neuronale netzwerke |
-
2020
- 2020-02-19 DE DE102020202093.0A patent/DE102020202093A1/de active Pending
-
2021
- 2021-02-10 US US17/172,707 patent/US20210256376A1/en active Pending
- 2021-02-18 JP JP2021023957A patent/JP2021131859A/ja active Pending
- 2021-02-18 CN CN202110186930.0A patent/CN113283595A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0976039B1 (de) | 1997-03-21 | 2008-02-06 | International Business Machines Corporation | Gerät und verfahren zur übertragung zwischen einem intelligenten mittel und benutzerrechner unter verwendung von maskierten nachrichten |
US20190121734A1 (en) | 2017-10-20 | 2019-04-25 | International Business Machines Corporation | Memory-mapped interface for message passing computing systems |
EP3506095A2 (de) | 2017-12-29 | 2019-07-03 | INTEL Corporation | Kommunikationsoptimierungen für verteiltes maschinelles lernen |
EP3640862A1 (de) | 2018-10-15 | 2020-04-22 | GrAl Matter Labs S.A.S. | Bewertungswerkzeug und -verfahren für neuronales netzwerk |
Also Published As
Publication number | Publication date |
---|---|
CN113283595A (zh) | 2021-08-20 |
US20210256376A1 (en) | 2021-08-19 |
JP2021131859A (ja) | 2021-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69231497T2 (de) | Massivparalleles rechnersystem mit eingangs-ausgangsanordnung | |
DE102012020951A1 (de) | lnternet-Sensorschnittstelle mit Prioritätssteuerung | |
DE112007003602T5 (de) | Backup-Reihen-Zuordnungsvorrichtung, Speicher-Reparaturvorrichtung, Backup-Reihen-Zuordnungsverfahren, Speicher-Herstellungsverfahren und Programm | |
WO2019091901A1 (de) | Verfahren zum verknuepfen eines ersten datenblocks mit einem zweiten datenblock, verfahren zum ueberpruefen der integritaet einer blockchain-struktur, vorrichtung und computerprogrammprodukt | |
DE3201768A1 (de) | Job-verarbeitungsverfahren | |
DE102017219282A1 (de) | Verfahren und Vorrichtung zum automatischen Erzeugen eines künstlichen neuronalen Netzes | |
DE102018103244A1 (de) | Bildverarbeitugssystem | |
DE102019124404A1 (de) | Optimierungsvorrichtung für ein neuronales Netzwerk und Optimierungsverfahren für ein neuronales Netzwerk | |
EP2854045B1 (de) | Verfahren und System zum Bewerten von erhobenen Messwerten eines Systems | |
DE112020007472T5 (de) | Lernnutzungssystem, nutzungsvorrichtung, lernvorrichtung, programm und lernnutzungsverfahren | |
DE102008001162A1 (de) | Zurücksetzverfahren und Informationsverarbeitungsvorrichtung, die dieses ausführt | |
DE102020202093A1 (de) | Verfahren und Vorrichtung für maschinelles Lernen | |
DE102020207449A1 (de) | Verfahren, Computerprogramm und Vorrichtung zum Verarbeiten von Signalen | |
DE112014003067T5 (de) | Speicherprogrammierbare Steuerung | |
DE102013206291A1 (de) | Verfahren und Vorrichtung zum Erstellen eines nicht parametrischen, datenbasierten Funktionsmodells | |
DE2517525A1 (de) | Signalisierungsidentifizierer | |
DE102019217015A1 (de) | Kommunikationsvorrichtung | |
EP0525214B1 (de) | Verfahren zum Betreiben eines Automatisierungsgeräts | |
DE60226024T2 (de) | Verfahren und system um auf einen gemeinsamen speicher zuzugreifen | |
DE102020206262A1 (de) | Datenumschreibverfahren und Datenumschreibsystem | |
DE102020123911A1 (de) | Synchronisierung des verhaltens mehrerer instrumente mithilfe von aufträgen und zwischenzielen | |
DE102019216660A1 (de) | Elektronische steuerungseinheit | |
DE102018221954A1 (de) | Recheneinrichtung und Verfahren zum Betreiben einer Recheneinrichtung | |
DE102019210396A1 (de) | Elektronische steuereinheit | |
DE102018123563A1 (de) | Verfahren zur Zwischenkernkommunikation in einem Mehrkernprozessor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R163 | Identified publications notified |