DE102020202093A1 - Verfahren und Vorrichtung für maschinelles Lernen - Google Patents

Verfahren und Vorrichtung für maschinelles Lernen Download PDF

Info

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
Application number
DE102020202093.0A
Other languages
English (en)
Inventor
Michael Klaiber
Christoph Schorn
Sebastian Vogel
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.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
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 Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE102020202093.0A priority Critical patent/DE102020202093A1/de
Priority to US17/172,707 priority patent/US20210256376A1/en
Priority to CN202110186930.0A priority patent/CN113283595A/zh
Priority to JP2021023957A priority patent/JP2021131859A/ja
Publication of DE102020202093A1 publication Critical patent/DE102020202093A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1476Error detection or correction of the data by redundancy in operation in neural networks
    • 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

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 Vorrichtung 100 für maschinelles Lernen schematisch dargestellt.
  • Die Vorrichtung 100 umfasst einen Speicher 102, einen Memory-Controller 104, eine Datenbus 106 einen Prozessor 108 und eine Berechnungshardware 110.
  • Der Memory-Controller 104 ist ausgebildet, über den Datenbus 106 von der Berechnungshardware 110 Leseanfragen auf den Speicher 102 zu empfangen und in Erwiderung auf eine Leseanfrage Daten aus dem Speicher 102 zu lesen und über den Datenbus 106 an die Berechnungshardware 110 zu senden. Der Prozessor 108 ist ausgebildet, zur Umsetzung eines Verfahrens für maschinelles Lernen über den Datenbus 106 mit dem Memory-Controller 104 zu kommunizieren. Im Beispiel ist vorgesehen, dass der Prozessor 108 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 Prozessor 108 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 Speicher 102 erfolgt im Beispiel insbesondere ausschließlich über den Memory-Controller 104. Eine Kommunikation zwischen dem Prozessor 108 und dem Speicher 102 erfolgt im Beispiel insbesondere ausschließlich über den Memory-Controller 104. Durch diese Trennung zwischen Prozessor 108, Memory-Controller 104, Berechnungshardware 110 und Speicher 102 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-Controller 104 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 Speicher 102 ab. Die Dimension-Anordnung beschreit einen Rang, eine Größe, einen Datentyp eines N-dimensionalen Feldes, das im Speicher 102 abspeicherbar ist. Die Speicherabbildungsfunktion errechnet für ein Programm, das auf Elemente eines Felds zugreifen will, deren Speicheradresse im Speicher 102. 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 Berechnungshardware 110 beschrieben. Andere Operationen werden entsprechend umgesetzt. Als Aktivierungsfunktion wird im Beispiel eine rectified linear unit, ReLU, verwendet, die auf dem Memory-Controller 104 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 Speicher 102 und der Berechnungshardware 110 dargestellt.
  • Bei der Folgenden Beschreibung wird davon ausgegangen, dass der Prozessor 108 in einem Schritt 202 bestimmt welche der Operationen und Aktivierungsfunktionen auf dem Memory-Controller 108 und welche auf der Berechnungshardware 110 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 Speicher 102 vom Memory-Controller 104 wie vom Prozessor 110 definiert konfiguriert. Der Memory-Controller 104 kann zudem abhängig von der Schicht-Beschreibung eine erforderliche Speichergröße, die diese Schicht-Beschreibung definiert, bestimmen. Der Memory-Controller 104 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 Schritt 208 an der Startadresse addr_layer in den Speicher 102 geschrieben. Die Startadresse addr_layer wird im Beispiel vom Prozessor 108 gesendet und vom Memory-Controller 104 empfangen. Die Startadresse addr_layer wird im Beispiel vom Prozessor 108 und vom Memory-Controller 104 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 Startsignal 210 an die Berechnungshardware 110 sendet. Das Startsignal 210 startet eine Berechnung in der Berechnungshardware 110. Das Startsignal 210 ist wird vorzugsweise nach Abschluss der Konfiguration gesendet. Der Abschluss der Konfiguration kann optional vom Memory-Controller 104 an den Prozessor 108 übertragen werden. Eine Zeitablaufsteuerung ist ebenfalls möglich.
  • Die Schritte 202, 204, 206 und 208 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
      1. a) Eingangswerten für ifmap
      2. b) Ausgangswerten für ofmap
      3. 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.
  • 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)
    wobei
    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 104 bestimmt. Der Referenzkern CK kann zu Optimierungszwecken im Speicher 102 gespeichert werden.
  • 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.
  • 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)
    wobei
    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)
  • 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.
  • 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. CA = j N o j
    Figure DE102020202093A1_0001
    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 o j = i x i w j , i + b j
    Figure DE102020202093A1_0002
    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.
  • Im Beispiel wird die Prüfsumme bestimmt als CA = Sum ( Ofmap , dimension = C )
    Figure DE102020202093A1_0003
    wobei Sum eine Addition der Vielzahl von Werten des Tensors Ofmap entlang einer C Dimension (dimension=x, wobei x jede Dimension aus der Tensor-Form von Ofmap sein kann) des Tensors definiert.
  • In einem Schritt 236 wird die Prüfsumme CA in einem Vergleich mit einem Referenzwert CAR geprüft.
  • Der Vergleich wird im Beispiel mit dem Referenzwert oc durchgeführt. Ein Fehler innerhalb der Menge N oder im Referenzwert liegt vor, wenn: j N o j o c
    Figure DE102020202093A1_0004
  • 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)

    1. 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.
    2. 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.
    3. Verfahren nach Anspruch 1 oder 2, 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.
    4. Verfahren nach Anspruch 1 oder 2, 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.
    5. Verfahren nach Anspruch 3 oder 4, dadurch gekennzeichnet, dass eine Fehlererkennung (238) für wenigstens eine Schicht des künstlichen neuronalen Netzwerks durchgeführt wird.
    6. 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).
    7. 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.
    8. 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).
    9. 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).
    10. 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.
    11. 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.
    12. Computerprogramm, dadurch gekennzeichnet, dass das Computerprogramm computerlesbare Instruktionen umfasst, bei deren Ausführung durch einen Computer ein Verfahren nach einem der Ansprüche 1 bis 11 abläuft.
    13. Vorrichtung für maschinelles Lernen, dadurch gekennzeichnet, dass die Vorrichtung ausgebildet ist ein Verfahren nach einem der Ansprüche 1 bis 11 auszuführen.
    DE102020202093.0A 2020-02-19 2020-02-19 Verfahren und Vorrichtung für maschinelles Lernen Pending DE102020202093A1 (de)

    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)

    * Cited by examiner, † Cited by third party
    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)

    * Cited by examiner, † Cited by third party
    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

    Patent Citations (4)

    * Cited by examiner, † Cited by third party
    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