DE102017113232A1 - Tensorverarbeitung unter verwendung eines formats mit geringer genauigkeit - Google Patents

Tensorverarbeitung unter verwendung eines formats mit geringer genauigkeit Download PDF

Info

Publication number
DE102017113232A1
DE102017113232A1 DE102017113232.5A DE102017113232A DE102017113232A1 DE 102017113232 A1 DE102017113232 A1 DE 102017113232A1 DE 102017113232 A DE102017113232 A DE 102017113232A DE 102017113232 A1 DE102017113232 A1 DE 102017113232A1
Authority
DE
Germany
Prior art keywords
matrix
max
mean
equal
determining
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
DE102017113232.5A
Other languages
English (en)
Inventor
Ginsburg Boris
Sergei Nikolaev
Ahmad Kiswani
Hao Sky Wu
Amir Gholaminejad
Slawomir Kierat
Michael HOUSTON
Alex Fit-Florea
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102017113232A1 publication Critical patent/DE102017113232A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/088Non-supervised learning, e.g. competitive 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

Abstract

Aspekte der vorliegenden Erfindung sind auf computerimplementierte Techniken zur Verbesserung des Trainings von künstlichen neuronalen Netzen unter Verwendung eines Datenformats mit reduzierter Genauigkeit (z. B. float16) gerichtet. Ausführungsformen der vorliegenden Erfindung skalieren Tensorwerte vor einer Durchführung von Matrixoperationen (wie Matrixmultiplikation oder Matrixaddition) neu, um Überlauf und Unterlauf zu verhindern. Um die Genauigkeit während der Durchführung der Matrixoperationen zu bewahren, werden die Skalierungsfaktoren unter Verwendung eines neuartigen Datenformats definiert, um Tensoren darzustellen, wobei eine Matrix durch das Tupel X repräsentiert wird, wobei X = (a, v[.]), wobei a ein Gleitkomma-Skalierungsfaktor ist und v[.] skalierte Werte sind, die im float16-Format gespeichert werden. Der Wert eines beliebigen Elements X[i] nach diesem Datenformat würde gleich a·v[i] sein.

Description

  • GEBIET DER ERFINDUNG
  • Ausführungsformen der vorliegenden Erfindung betreffen im Allgemeinen computerimplementierte Techniken für das maschinelle Lernen. Genauer richten sich Ausführungsformen der vorliegenden Erfindung auf ein Rahmenwerk für verbessertes Training für Deep Learning für neuronale Netze und Convolutional Networks.
  • HINTERGRUND DER ERFINDUNG
  • Maschinelles Lernen ist das Gebiet der Computerwissenschaft, das sich mit der Verwendung von computerimplementierten Algorithmen zur Problemlösung durch Mustererkennung und adaptive Verarbeitung eines Datensatzes befasst. Im Gegensatz zu regulärer „statischer” Programmierung sind Anwendungen maschinellen Lernens dadurch gekennzeichnet, dass sie voraussagende Datenmodelle durch iteratives Verfeinern von Modellen aus einem Datensatz ohne explizite Programmierung erzeugen können. Künstliche neuronale Netze sind unter den beliebtesten Algorithmen für maschinelles Lernen und verwenden verteilte Parallelprozessoren, um parametrisierte Berechnungen an Eingabedaten an mehreren, miteinander verbundenen „Neuronen” (Verarbeitungseinheiten) durchzuführen, die in einer oder mehreren internen oder „verdeckte” Schichten zwischen einer Eingabeschicht und einer Ausgabeschicht verteilt sind, um eine Ausgabe zu berechnen, die mit einem Ziel oder einer Referenzausgabe verglichen wird. Künstliche neuronale Netze werden durch Gewichte parameterisiert, die den Verbindungen zwischen Neuronen von benachbarten Schichten zugeordnet sind. Die Parameter der Netzwerke werden fortlaufend aktualisiert, um die Differenz in der Ausgabe zu reduzieren und schließlich zu eliminieren, bis ein genaues Datenmodell erreicht wird. „Deep” neuronale Netze bezeichnen neuronale Netze, die aus 3 oder mehr Schichten bestehen.
  • Ein beliebtes Trainingsverfahren für künstliche neuronale Netze wird Rückpropagierung (oder Backpropagation) genannt. Beginnend mit einem vorbestimmten (oft zufälligen) Satz von Gewichten werden die Gewichte verfeinert, indem ein zweiphasiger Zyklus von Operationen wiederholt angewandt wird, der eine Vorwärts- gefolgt von einer Rückpropagierungsphase („Backpropagation”-Phase) zusammen mit einer Optimierungsphase enthält. Während der Vorwärtspropagierungsphase werden Eingaben vorwärts durch das neuronale Netz propagiert, wobei Schicht für Schicht an jedem Neuron eine Berechnung durchgeführt wird, bis die Ausgabeschicht erreicht ist. Nichtlineare Aktivierungsfunktionen können auch an einem oder mehreren Neuronen angewandt werden, um die Ausgabe weiter zu diskreten Werten zu führen. Die Ausgabe wird dann unter Verwendung einer Verlustfunktion mit der Zielausgabe verglichen und ein Fehlerwert wird für jedes der Elemente in der Ausgabeschicht berechnet. Während der Rückpropagierungsphase werden die Gradienten der Fehlerfunktionen berechnet und dann rückwärts durch die Schichten propagiert, um Gradienten, die jedem Neuron entsprechen, zu ermitteln. Diese Gradienten werden dann verwendet, um den Gradienten der Verlustfunktion zu berechnen, der auf die Ausgabe in Bezug auf jedes der Gewichte im Netz angewandt wird. In der letzten Phase wird der berechnete Gradient verwendet, um die angewandten Gewichte beim Versuch zu aktualisieren, die Verlustfunktion zu minimieren. Sobald sich die tatsächliche Ausgabe der Zielausgabe wesentlich annähert (z. B. innerhalb einer Genauigkeitsschwelle), wird das Datenmodell als vollständig angesehen und weiteres Lernen kann beendet werden.
  • Standardimplementierungen der Rückpropagierung verwenden zur Datenspeicherung und Manipulation bei Datenberechnungen typischerweise 32-Bit-Gleitkommadarstellungen (auch als Float mit einfacher Genauigkeit bezeichnet) reeller Zahlen. Typischerweise verwendet eine Gleitkommazahl mit einfacher Genauigkeit das erste Bit eines 32-Bit-Gleitkommawerts, um das Vorzeichen anzugeben, die nächsten acht (8) Bits für den Wert des Exponenten und die verbleibenden dreiundzwanzig (23) Bits für die Mantisse (auch Bruch oder Signifikand genannt). Die Speicherung und Berechnung von 32-Bit-Werten erfordert jedoch erhebliche Arbeitsspeicher- und Verarbeitungsressourcen. Als Ergebnis wurden neue Techniken entwickelt, die stattdessen auf einem Format mit reduzierter Genauigkeit beruhen. Statt der vollen 32 Bits verwenden diese Lösungen typischerweise eine 16-Bit-Gleitkommadagstellung (float16). Ursprünglich zur Datenspeicherung entwickelt, verwendet das traditionelle float16-Format gleichermaßen das erste Bit für das Vorzeichen, aber nur fünf (5) Bits, um den Wert des Exponenten darzustellen, und nur zehn (10) Bits für den Bruch/die Mantisse. Der normale positive Bereich der Werte, die durch float16 dargestellt werden können, reicht von 2–14 (ungefähr –6,10 × 10–5) bis 216 (ungefähr 65.504), wobei der subnormale positive Bereich zwischen 2–24 und 2–14 liegt.
  • Die Verwendung von float16 zum Training neuronaler Netze (insbesondere von Convolutional Neural Networks) bietet mehrere Vorteile gegenüber herkömmlichen Gleitkommaformaten mit einfacher Genauigkeit. Genauer können float16-Berechnungen für rechenintensive Schichten im neuronalen Netz (möglicherweise) wesentlich schneller durchgeführt werden als mit Gleitkommazahlen einfacher Genauigkeit. Signifikant weniger Speicher wird zum Speichern der float16-Werte benötigt. Die Speicherung der Daten im float16-Format verbessert auch aufgrund der reduzierten Zeit, die zum Datentransfer benötigt wird, die Leistung der bandbreitenbegrenzten Schichten. Schließlich ermöglicht die Speicherung unter Verwendung des float16-Formats auch Reduktionen der Größe des Netzes und der Zeit, die zur Kommunikation bei Mehrprozessorsystemen (z. B. Mehr-GPU-Systemen) erforderlich ist.
  • Leider weisen die 16-Bit-Gleitkommazahlen einen wesentlich engeren numerischen Bereich als Gleitkommadarstellungen mit einfacher Genauigkeit auf. Als Ergebnis kann ein Überlauf oder ein Unterlauf auftreten, wenn Berechnungen durchgeführt werden, die in numerischen Werten außerhalb der vorgeschriebenen Bereiche resultieren. Ein Überlauf tritt typischerweise bei Faltungs- oder vollständig verbundenen Netzschichten als Ergebnis einer Matrix-Matrix-Multiplikation auf und kann sich als ein sehr großer Genauigkeitsverlust und unerwünschte NAN-Werte (undefinierte Werte) während Trainingsoperationen äußern, die für Analytiker wie eine Netzdivergenz aussehen kann. Ein Unterlauf kann unterdessen in weniger oder sogar keinen Aktivierungen (das Lernen ist angehalten) während Vorwärts-Trainingsoperationen, gleichermaßen in einem großen Genauigkeitsverlust und einer Netzdivergenz resultieren. Überlauf und Unterlauf können die Berechnung von Aktivierungen während des Vorwärtspropagierungsschritts des Trainingszyklus des neuronalen Netzes und die Berechnung des Gradienten während des Rückpropagierungsschritts beeinflussen. Sowohl Überlauf als auch Unterlauf können auch in einem Genauigkeitsverlust während des Aktualisierungsschritts der Gewichtung der zweiten Phase des Trainingszyklus resultieren.
  • DARSTELLUNG DER ERFINDUNG
  • Diese Zusammenfassung wird bereitgestellt, um eine Auswahl von Konzepten in vereinfachter Form einzuführen, die unten weiter in der detaillierten Beschreibung beschrieben werden. Diese Zusammenfassung soll keine Schlüssel- oder wesentlichen Merkmale der Erfindung identifizieren, noch soll sie den Umfang der Erfindung einschränken.
  • Ausführungsformen der vorliegenden Erfindung befassen sich mit computerimplementierten Techniken zur Verbesserung des Trainings von künstlichen neuronalen Netzen unter Verwendung eines Datenformats mit reduzierter Genauigkeit (z. B. float16). Ausführungsformen der vorliegenden Erfindung skalieren Tensorwerte vor einer Durchführung von Matrixoperationen (wie Matrixmultiplikation oder Matrixaddition) neu, um Überläufe und Unterläufe zu verhindern. Um die Genauigkeit während der Durchführung der Matrixoperationen zu bewahren, werden die Skalierungsfaktoren unter Verwendung eines neuartigen Datenformats definiert, um Tensoren darzustellen, wobei eine Matrix durch das Tupel X repräsentiert wird, wobei X = (a, v[.]), wobei a ein Gleitkomma-Skalierungsfaktor ist und v[.] skalierte Werte sind, die im float16-Format gespeichert werden. Der Wert eines beliebigen Elements X[i] nach diesem Datenformat würde gleich a·v[i] sein. Auf diese Weise können die Speicherverwendung und Leistungsvorteile des float16-Formats realisiert werden, während Probleme vermieden werden, die mit Unterlauf und Überlauf assoziiert sind.
  • Nach einer Ausführungsform der vorliegenden Erfindung wird ein computerimplementiertes Verfahren zur Durchführung von Matrixoperationen bereitgestellt, wobei Daten in einem neuartigen Format mit reduzierter Genauigkeit dargestellt werden. Nach Ausführungsformen wird auf Matrizen zugegriffen, die Werte umfassen, die in einem Gleitkomma-Datenformat mit reduzierter Genauigkeit dargestellt werden. Die Werte werden mit einem oder mehreren Schwellenwerten verglichen und Skalierungsfaktoren werden ermittelt, die jeder der Eingabematrizen entsprechen. In einer oder mehreren Ausführungsformen werden die Skalierungsfaktoren so auf Basis der Eingabewerte berechnet, dass bei Anwendung auf die Eingabewerte die Durchführung einer Matrizenberechnung, die die Matrizen involviert, vermeidet, sowohl Überlauf- als auch Unterlaufwerte zu erzeugen. Sobald die Datenwerte skaliert sind, wird die Matrizenberechnung durchgeführt, wobei die Matrizen und die Skalierungsfaktoren verglichen und angepasst werden, um eine Konsistenz der Ausgabewerte zu bewahren, die sich aus der Durchführung der Matrizenberechnung ergeben.
  • Nach einer weiteren Ausführungsform wird ein computerimplementiertes Verfahren zur Durchführung des Trainings eines Deep-Learning-Netzes bereitgestellt. Nach dieser Ausführungsform werden für jede Schicht eines neuronalen Netzes, das zumindest eine Vorwärtspropagierungsschicht, eine Faltungsschicht, eine Skalarproduktschicht und eine Rückpropagierungsschicht enthält, Berechnungen unter Verwendung von Datenwerten durchgeführt, die im oben beschriebenen Format mit reduzierter Genauigkeit ausgedrückt werden, wobei ein Skalierungsfaktor den neu skalierten Matrizen entspricht. Nach weiteren Ausführungsformen führt die Faltungsschicht eine Gradientenberechnung aus, die eine Gradientenausgabe erzeugt, die auch unter Verwendung des neuartigen Datenformats ausgedrückt wird.
  • Nach noch einer weiteren Ausführungsform der vorliegenden Erfindung wird ein Computersystem zur Durchführung des Trainings für Deep-Learning-Netze bereitgestellt, das einen Prozessor und einen Arbeitsspeicher enthält, wobei Datenwerte, die zur Durchführung der Berechnungen während Trainingsoperationen verwendet werden, im Arbeitsspeicher gespeichert und unter Verwendung eines Formats mit reduzierter Genauigkeit verarbeitet werden, wobei eine Matrix als ein Tupel mit skalierten Werten und einem gespeicherten Skalar repräsentiert wird.
  • Durch die Bereitstellung eines Datenformats mit reduzierter Genauigkeit wie hierin beschrieben können komplexe Matrizenberechnungen – wie die, die während des Trainings von Deep Netzen, einschließlich von neuronalen Netzen und Convolutional Networks, durchgeführt werden – vorteilhafterweise effizient mit einem Bruchteil des Arbeitsspeichers und der Berechnungskosten in Übereinstimmung mit den Ausführungsformen der vorliegenden Erfindung durchgeführt werden, während gleichzeitig auch der dynamische Bereich der Werte effektiv erweitert wird, um Überlauf- und Unterlauf-Datenwerte relativ zum herkömmlichen float16-Format zu verhindern.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die beigefügten Zeichnungen sind Bestandteil dieser Beschreibung und bilden einen Teil dieser Beschreibung. Die Zeichnungen illustrieren Ausführungsformen. Zusammen mit der Beschreibung dienen die Zeichnungen dazu, die Prinzipien der Ausführungsformen zu erläutern:
  • 1 zeigt ein beispielhaftes computerimplementiertes Verfahren zum Training eines künstlichen neuronalen Netzes nach verschiedenen Ausführungsformen der vorliegenden Erfindung.
  • 2 zeigt ein Ablaufdiagramm einer Abfolge von computerimplementierten Operationen, die während einer Rückpropagierung durchgeführt werden, nach verschiedenen Ausführungsformen der vorliegenden Erfindung.
  • 3 zeigt ein Ablaufdiagramm eines computerimplementiertes Verfahrens zur Durchführung einer Matrizenberechnung nach verschiedenen Ausführungsformen der vorliegenden Erfindung.
  • 4 zeigt ein beispielhaftes Rechensystem, in dem Ausführungsformen der vorliegenden Erfindung implementiert werden können, nach verschiedenen Ausführungsformen der vorliegenden Erfindung.
  • DETAILLIERTE BESCHREIBUNG
  • Nun wird ausführlich auf die bevorzugten Ausführungsformen der Erfindung Bezug genommen. Während die Erfindung in Verbindung mit den bevorzugten Ausführungsformen beschrieben wird, versteht sich, dass die Erfindung nicht auf diese Ausführungsformen beschränkt sein soll. Im Gegenteil soll die Erfindung Alternativen, Modifikationen und Äquivalente abdecken, die im Geist und Umfang enthalten sein können, wie in den beigefügten Ansprüchen definiert.
  • Ferner werden in den folgenden detaillierten Beschreibungen der Ausführungsformen zahlreiche spezifische Details dargelegt, um ein gründliches Verständnis der Erfindung zu vermitteln. Es wird jedoch Durchschnittsfachleuten klar sein, dass die Erfindung ohne diese spezifischen Details ausgebildet werden kann. In anderen Fällen wurden bekannte Verfahren, Prozeduren, Komponenten und Schaltungen nicht im Detail beschrieben, um Aspekte der Erfindung nicht unnötig zu verschleiern.
  • Einige Teile der detaillierten folgenden Beschreibung sind in Form von Prozeduren, Schritten, Logikblöcken, Verarbeitung und anderer symbolischer Darstellungen von Vorgängen an Datenbits dargelegt, die an einem Computerspeicher durchgeführt werden können. Diese Beschreibungen und Darstellungen sind die Mittel, die von Fachleuten auf dem Gebiet der Datenverarbeitung verwendet werden, um das Wesen ihrer Arbeit an andere Fachleute am effektivsten zu übermitteln. Eine Prozedur, ein von Computern generierter Schritt, ein Logikblock, ein Prozess usw. werden hier und im Allgemeinen als eine selbstkonsistente Folge von Schritten oder Anweisungen erachtet, die zu einem gewünschten Ergebnis führen. Die Schritte sind diese, die physische Manipulationen von physischen Größen erfordern. Üblicherweise, aber nicht notwendigerweise, nehmen diese Größen die Form elektrischer oder magnetischer Signale an, die gespeichert, übertragen, kombiniert, verglichen oder anderweitig in einem Computersystem manipuliert werden können. Es hat sich zuweilen als zweckmäßig herausgestellt, hauptsächlich aus Gründen üblicher Verwendung, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Ausdrücke, Zahlen oder Ähnliches zu bezeichnen.
  • Es sollte jedoch bedacht werden, dass alle diese und ähnliche Ausdrücke mit den entsprechenden physikalischen Größen assoziiert werden sollen und nur auf diese Größen angewandte zweckmäßige Bezeichnungen sind. Sofern nicht spezifisch anders angegeben, wie sich aus den folgenden Diskussionen ergibt, wird klar sein, dass sich in der ganzen vorliegenden Erfindung Diskussionen, die Ausdrücke wie etwa „Speichern”, ”„Erzeugen”, „Schützen”, „Empfangen”, „Verschlüsseln”, „Entschlüsseln”, „Zerstören” oder Ähnliches verwenden, auf die Handlung und Prozesse eines Computersystems oder einer integrierten Schaltung oder einer ähnlichen elektronischen Recheneinrichtung, einschließlich eines eingebetteten Systems, beziehen können, die als innerhalb der Register und Speicher des Computersystems physikalische (elektronische) Größen dargestellte Daten manipuliert und in andere Daten umwandelt, die gleichermaßen als physikalische Größen innerhalb der Speicher oder Register des Computersystems oder anderer solcher Informationsspeicherungs-, Übertragungs- oder Anzeigeeinrichtungen dargestellt sind.
  • Modifiziertes Float16-Format
  • Ausführungsformen der Erfindung richten sich auf neuartige Lösungen zur Verbesserung von Trainingsalgorithmen für neuronale Netze durch Verwendung eines modifizierten float16-Formats, bei dem eine Matrix X mit Datenwerten als ein Tupel (a, v[.]) repräsentiert wird, wobei a ein Gleitkomma-Skalierungsfaktor ist und v[.] die mit a neu skalierten Werte von X beinhaltet, sodass der Wert eines beliebigen Elements X[i] gleich a·v[i] ist. Die Modifikation des float16-Datenformats bietet durch eine Erweiterung des möglichen dynamischen Wertebereichs einen verbesserten Schutz vor Überlauf und Unterlauf relativ zum Standard-float16-Format. Nach Ausführungsformen der Erfindung kann die hierin beschriebene neuartige Datendarstellung verwendet werden, um eine Gleitkommazahl mit einfacher Genauigkeit in ein float16-Format (mit halber Genauigkeit) umzuwandeln, das Skalare zur Exponentenerweiterung verwendet. Da eine Gleitkommazahl mit halber Genauigkeit wesentlich weniger Bits in der Mantisse aufweist als eine Gleitkommazahl mit einfacher Genauigkeit, resultiert eine solche Umwandlung typischerweise in einem numerischen Genauigkeitsverlust, wenn Datenwerte einen gegebenen numerischen Bereich überschreiten. Durch Verwendung eines gemeinsamen Skalarwerts für alle Elemente in einem Tensorarray können die Grenzen des numerischen Bereichs der Matrix zwischen dem Bereich von [2229 ~ 10–9, 229 ~ 109] erweitert werden.
  • Eine beliebige Matrix X kann ohne wesentlichen Genauigkeitsverlust immer dann in das modifizierte float16-Format umgewandelt werden, wenn der aktuelle Bereich von X in den modifizierten float16-Bereich von 229 ~ 109 passt. Um den Bereich einer Matrix X abzuschätzen, werden der Mittelwert der Absolutbeträge der von null verschiedenen Elemente in X (als mean(X)) und der maximale Absolutbetrag (amax(X)) verwendet. Unter Verwendung dieser Werte kann geschätzt werden, dass der Bereich der Matrix (X) max(x)/mean(X) approximiert. Nach solchen Ausführungsformen kann die Umwandlung vom float32-Format mit einfacher Genauigkeit in das modifizierte float16-Format (a, v[]) unter Verwendung des Skalierungsfaktors a und eines Umwandlungsziels C nach dem folgenden Ausdruck parametrisiert werden: a = mean(X)/C; und V[i] = C·X[i]/mean(X).
  • Gleichermaßen kann die Umkehrtransformation vom modifizierten float16-Format in das Gleitkommaformat mit einfacher Genauigkeit durch die folgende Operation durchgeführt werden: X32[i] = a·v[i].
  • Die spezifische Anwendung eines Neuskalierungsalgorithmus unter einem modifizierten Datenformat für bestimmte Operationen wird unten ausführlicher beschrieben.
  • MATRIX-MATRIX-MULTIPLIKATION
  • 1 zeigt ein beispielhaftes computerimplementiertes Verfahren zum Training eines künstlichen neuronalen Netzes. Schritte 101109 beschreiben beispielhafte Schritte des Ablaufdiagramms 100 nach den verschiedenen, hierin beschriebenen Ausführungsformen. Wie in 1 gezeigt, beginnt das Training eines künstlichen neuronalen Netzes typischerweise bei Schritt 101 mit einem Empfang eines Trainingsdatensatzes als Eingabe. Bei Schritt 103 werden die Daten einer entsprechenden Anzahl an Neuronen zugeführt (typischerweise als eine oder mehrere Matrizen mit Werten). Bei Schritt 105 werden die Daten an jedem Neuron in Übereinstimmung mit vorbestimmten Parametern (Gewichten) manipuliert und eine resultierende gewichtete Ausgabe wird generiert und bei Schritt 107 an das nächste Neuron in der nächsten Schicht in der Abfolge weitergegeben. Das Neuron in jeder Schicht empfängt die gewichtete Ausgabe vom vorangehenden Neuron als Eingabe und der Prozess wird bei Schritt 109 für jede Zwischenschicht zwischen der Eingabe- und der Ausgabeschicht vorwärts propagiert.
  • Die Manipulation der Datenwerte an jedem Neuron kann beispielsweise eine Berechnung des Produkts einer oder mehrerer Matrizen, die von Neuronen aus einer vorangehenden Schicht (oder anfänglichen Eingabe) ausgegeben wurden, oder eine Berechnung des Produkts einer Eingabematrix mit einer entsprechenden Gewichtungs- oder Bias-Matrix enthalten. Wenn sich jedoch Datenwerte einem der beiden Enden des Bereichs des erweiterten float16-Formats nähern, kann eine Multiplikation mit einer anderen Matrix einen Überlauf oder Unterlauf im resultierenden Produkt verursachen. Ausführungsformen der vorliegenden Erfindung befassen sich mit der Lösung dieses Problems, indem Matrixwerte unter Verwendung gemeinsamer Skalare neu skaliert werden, um einen Überlauf und Unterlauf bei der Durchführung einer Matrix-Matrix-Multiplikation zu vermeiden.
  • Angemessene skalare Werte müssen berechnet werden, um einen Überlauf und einen Unterlauf während einer Matrix-Matrix-Multiplikation unter Verwendung des modifizierten float16-Formats effektiv zu vermeiden. In vielen Fällen kann der Satz der möglichen Skalarwerte umfangreich sein. Als Ergebnis kann die Auswahl eines Skalarwerts nach einer beliebigen Anzahl von Auswahlalgorithmen durchgeführt werden, solange der ausgewählte Skalarwert bestimmte Bedingungen erfüllt. Um einen Unterlauf während einer elementweisen Multiplikation zu vermeiden, müssen beispielsweise das Produkt des Mittelwerts der von null verschiedenen Elemente im Array v (wobei die Matrix X = (a, v[.])) und des Mittelwerts der von null verschiedenen Elemente im Array w (wobei die Matrix Y = (b, w[.])) größer als der untere Schwellenwert oder gleich dem unteren Schwellenwert eines normalen float16-Formats sein (ungefähr 1/65000). Diese Beziehung kann folgendermaßen ausgedrückt werden: mean(v)·mean(w) ≥ L0 (unterer Schwellenwert).
  • Um einen Überlauf während einer elementweisen Multiplikation zu vermeiden, sollte ein möglicher Skalar zusätzliche Bedingungen erfüllen. In einer Ausführungsform basieren diese Bedingungen auf dem oberen Schwellenwert (U0) eines normalen float16-Formats (z. B. ungefähr 65.000). Genauer können keine der folgenden Werte größer als der obere Schwellenwert sein: das Produkt des Mittelwerts der von null verschiedenen Elemente im Array v und des Mittelwerts der von null verschiedenen Elemente im Array w; das Produkt des maximalen Absolutbetrags von v und des Mittelwerts von w; das Produkt der Anzahl von Spalten K in der Matrix X (gleich der Anzahl der Zeilen in der Matrix Y) und des Mittelwerts von v und des Mittelwerts von w; und die maximalen Absolutbeträge in v oder w. Diese Bedingungen können folgendermaßen ausgedrückt werden: mean(v)·max(w) ≤ U0; (1) max(v)·mean(w) ≤ U0; (2) K·mean(v)·mean(w) ≤ U0; (3) max(v) ≤ U0; und (4) max(w) ≤ U0. (5)
  • Alternativ können diese Bedingungen folgendermaßen ausgedrückt werden: mean(v) ≥ L0/mean(w); mean(v) ≤ U0/max(w); max(v) ≤ U0/mean(w); mean(v) ≤ U0/(K·mean(w)) mean(v) ≤ U0/range(v); und mean(w) ≤ U0/range(w).
  • Um zum Beispiel eine Matrix X (a, v[.]) mit einer festen Matrix Y (b, w[.]) neu zu skalieren, werden ein zweiter unterer Schwellenwert L1 und ein zweiter oberer Schwellenwert U1 berechnet. In einer oder mehreren Ausführungsformen fungieren der zweite untere und der zweite obere Schwellenwert als Puffer und können folgendermaßen berechnet werden: L1 := L0/mean(w); U1 := min (U0/max(w); U0/(mean(w)·range(v)); U0/(mean(w)·K); U0/range(v)).
  • Die Matrix X wird danach so neu skaliert, dass mean(v) die Bedingung L1 ≤ mean(v) ≤ U1 erfüllt.
  • MATRIX-MATRIX-FALTUNG
  • Ausführungsformen der vorliegenden Erfindung können auch auf Matrix-Matrix-Faltungsberechnungen erweitert werden. Nach solchen Ausführungsformen kann eine Faltung an einer zweidimensionalen Matrix X (als (a, v[.]) repräsentiert) und einem zweidimensionalen Filter Y (als (b, w[.]) repräsentiert) durchgeführt werden, um den gefalteten Tensor Z zu berechnen. Der Tensor Z könnte im modifizierten float16-Format mit einem Skalar c als (c, conv(v, w)) ausgedrückt werden. Um einen Genauigkeitsverlust zu vermeiden, müssen während der Berechnung von conv(v, w) ein Unterlauf und ein Überlauf vermieden werden.
  • Um während der Berechnung einen Unterlauf und einen Überlauf zu vermeiden, müssen die Datenwerte in v und w skaliert werden, um Bedingungen zu erfüllen, die den oben in Bezug auf die Matrix-Matrix-Multiplikation beschriebenen ähnlich sind. Genauer, um einen Unterlauf zu vermeiden, muss auch mean(v)·mean(w) ≥ L0 (unterer Schwellenwert) während der Matrix-Matrix-Faltung erfüllt sein. Gleichermaßen müssen alle der folgenden fünf Bedingungen (mit Ausnahme der zweiten Bedingung max(v)·mean(w) ≤ U0) ebenfalls erfüllt sein, um einen Überlauf zu vermeiden: mean(v)·max(w) ≤ U0; (1) K·mean(v)·mean(w) ≤ U0; (3) max(v) ≤ U0; und (4) max(w) ≤ U0. (5)
  • Wohingegen der Wert von K bei der Matrix-Matrix-Multiplikation der Anzahl der Spalten in der Matrix X und der Anzahl der Zeilen in der Matrix Y entspricht, entspricht K bei der Matrix-Matrix-Faltung jedoch der Größe des Filters Y (z. B. K = Filterhöhe·Filtergewichtung).
  • Wie bei der Matrix-Matrix-Multiplikation, um zum Beispiel eine Matrix X (a, v[.]) mit einem festen Filter Y (b, w[.]) neu zu skalieren, werden ein zweiter unterer Schwellenwert L1 und ein zweiter oberer Schwellenwert U1 berechnet und der Mittelwert von v muss auch die folgende Bedingung erfüllen: L1 ≤ mean(v) ≤ U1;
  • In einer oder mehreren Ausführungsformen können der zweite untere und der zweite obere Schwellenwert folgendermaßen berechnet werden: L1 := mean(w); U1 := min (U0/max(w); U0/(mean(w)·range(v)); U0/(mean(w)·K); U0/range(v)).
  • ZUSÄTZLICHE TENSOROPERATIONEN
  • Ausführungsformen der vorliegenden Erfindung können auch verwendet werden, um Operationen zwischen Tensoren durchzuführen. Diese können beispielsweise eine Tensor-Skalar-Multiplikation enthalten, die zum Beispiel verwendet wird, um Daten zwischen skalierten und nicht skalierten Werten umzuwandeln. Die Tensor-Skalar-Multiplikation kann für die Matrix Y mit einem Skalar b und einem Tensor X (als das modifizierte float16-Datenformat (a, v[.]) ausgedrückt) durchgeführt werden. In solchen Fällen, Y = (a·b, v[.]).
  • Tensoroperationen können auch eine Tensor-Tensor-Addition im modifizierten float16-Format enthalten. Nach diesen Ausführungsformen, in denen die Matrix X = (a, v[.]) und Y = (b, w[.]), ist die Summe Z (c, t[.]) gleich X + Y. Um X und Y umzuwandeln, sodass sie sich eine gemeinsame Größenordnung teilen, kann X mit d1 und Y mit d2 neu skaliert werden, nach dem Ausdruck: c = a/d1 und c = b/d2
  • Wenn diese Bedingung erfüllt ist, sind auch die folgenden Umwandlungen möglich: v1[i] = v[i]·d1; w1[i] = w[i]·d2; mean(v1) = mean(v)·d1; mean(w2) = mean(w)·d2; max(v1) = max(v)·d1; und max(w2) = max(w)·d2.
  • Da ein Überlauf und ein Unterlauf während dieser Umwandlung weiterhin möglich sind (und vermieden werden sollten), müssen die Skalierungsfaktoren d1 und d2 auch die folgenden Bedingungen erfüllen: L0/mean(v) ≤ d1 ≤ U0/max(v); und L0/mean(w) ≤ d2 ≤ U0/max(w);
  • Diese Bedingungen definieren die Möglichkeiten für c als: max(a·max(v), b·max(w))/U0 ≤ c ≤ min(a·mean(v), b·mean(w))/L0;
  • Nach Ausführungsformen können die Tensoren X und Y ohne einen wesentlichen Genauigkeitsverlust addiert werden, falls das Intervall c keine leere Menge ist.
  • Die spezifische Anwendung eines Neuskalierungsalgorithmus im Rahmen eines modifizierten Datenformats für jede Phase eines Propagierungsalgorithmus (z. B. Vorwärtspropagierung, Rückpropagierung und Gewichtungsaktualisierung) wird unten ausführlicher besprochen.
  • VORWÄRTSPROPAGIERUNGSPHASE IN FALTUNGSSCHICHTEN
  • Convolutional Neural Networks sind eine bestimmte Erweiterung neuronaler Netze und werden oft in Bilderkennungssystemen verwendet – wie Gesichts- oder Objekterkennungsanwendungen, Videoanalyse, der Verarbeitung natürlicher Sprachen und selbstfahrende Kraftfahrzeuge. Convolutional Neural Networks unterscheiden sich von anderen künstlichen neuronalen Netzen durch das Vorhandensein einer oder mehrerer Faltungsschichten, die t typischerweise mit nicht linearen und Pooling-Schichten eines standardmäßigen mehrschichtigen neuronalen Netzes verschachtelt sind. Nach einer oder mehreren Ausführungsformen besteht die Eingabe für eine Faltungsschicht aus einem Bild und jede Faltungsschicht weist einen oder mehrere Filter (auch Kern genannt) mit einer Größe, die eine kleinere Dimension als das Eingabebild hat, und einer Anzahl von Kanälen auf, die gleich oder kleiner als die Datenkanäle des Bilds sind. Die spezifischen Dimensionen und Anzahl der Kanäle kann zwischen jedem Kern variieren.
  • Jeder Kern ist ein weiteres dreidimensionales Array von Zahlen mit der gleichen Tiefe wie das Eingabebild, aber mit einer viel kleineren Breite und Höhe. Um ein Ergebnis zu erzeugen, wird ein Kern auf ein Raster von Punkten über das Eingabebild angewandt. An jedem Punkt, an dem der Kern oder Filter angewandt wird, werden alle der entsprechenden Eingabewerte und Gewichte miteinander multipliziert und danach summiert, um einen einzigen Ausgabewert an diesem Punkt zu erzeugen. In einer oder mehreren Ausführungsformen beinhaltet der Kern ein Gewichtungsmuster und, wenn der Filter auf einen Teil des Eingabebilds angewandt wird, das ein ähnliches Muster aufweist, wird ein hoher Wert ausgegeben. Wenn die Eingabe nicht mit dem Muster übereinstimmt, ist das Ergebnis eine niedrige Zahl an dieser Position. Die Ausgabe kann als eine Eingabe an einem Neuron in der nächsten Faltungsschicht im Netz oder alternativ an einem Neuron in einer Skalarproduktschicht empfangen werden.
  • Nach einer oder mehreren Ausführungsformen kann eine Vorwärtspropagierung für eine beliebige Schicht eines neuronalen Netzes (z. B. Skalarproduktschichten) oder eines Convolutional Neural Network (z. B. Faltungsschichten + Skalarproduktschichten). Um das Problem von verschwindenden oder explodierenden Aktivierungen (aufgrund von Unterlauf bzw. Überlauf) zu vermeiden, können die oben beschriebenen Neuskalierungsoperationen durchgeführt werden.
  • Während einer Vorwärtspropagierung in einer Faltungsschicht berechnet die Faltungsschicht eine Ausgabe Y = convolution(X, W) + B, wobei X[n, c, h, w] die Datenwerte beinhaltet, die der Eingabe in die Schicht entsprechen, W[c, o, k, k] die Datenwerte beinhaltet, die den Filtern entsprechen, und B[O] die Datenwerte beinhaltet, die den Bias-Werten entsprechen. Nach Ausführungsformen wird jeder der drei Tensoren unter Verwendung des modifizierten float16-Formats repräsentiert: X = [α, x16], W = [β, w16] und B = [γ, b16]. In einer oder mehreren Ausführungsformen kann die direkte Implementierung einer Faltungsschicht unter Verwendung einer Bild-zu-Spalten-Umwandlungsoperation (z. B. im2col in MATLAB) auf eine Matrix-Matrix-Multiplikation reduziert werden. Unter Verwendung einer solchen Operation kann ein Bild X in eine zweidimensionale Matrix X' umgewandelt werden, sodass Y = X'·W, wobei X'[p, q], W[q, r] und Y[p, r]. Nach solchen Ausführungsformen können die Matrix X als [p, q] Dimensionen aufweisend, die Matrix W als [q, r] Dimensionen aufweisend und die Matrix Y als [p, r] Dimensionen aufweisend mit den folgenden Beziehungen ausgedrückt werden: p = N·H·W; q = C·K·K; und r = O. (wobei N die Stapelgröße, C die Anzahl der Eingangskanäle, O die Anzahl der Ausgangskanäle, K die Filterdimensionen und H und W die Dimensionen der Bildmerkmalsabbildung sind). In einer oder mehreren Ausführungsformen kann der Absolutbetrag der Ausgabe von Y unter einen oberen Schwellenwert U (z. B. den normalen Maximalbereich von float16/2) beschränkt werden, um einen Überlauf aufgrund der Addition eines Biaswerts (unten beschrieben) zu verhindern. In einer oder mehreren Ausführungsformen kann der Absolutbetrag der Ausgabe von Y auch beschränkt werden, über einem unteren Schwellenwert L (z. B. dem normalen Minimalbereich von float16) zu liegen.
  • Nach den oben bedingten Ausführungsformen wird die Eingabematrix X analysiert, um zu ermitteln, ob eine Neuskalierung erforderlich ist. Die Neuskalierung ist notwendig, um einen Überlauf zu verhindern, es sei denn, die folgenden Bedingungen sind erfüllt: |y(l, k)| = |x(l, .)|·|w(., k)| < U; und amax(x)·maxocl,j|w(o; c, l, j)|) über alle Gewichte < U.
  • Die Neuskalierung ist ebenfalls notwendig, um einen Unterlauf zu verhindern, es sei denn, die folgenden Bedingungen sind erfüllt: amean(x)·amean(w) > L.
  • Falls sowohl die Unterlauf- als auch die Überlaufbedingungen wahr sind, dann ist keine Neuskalierung notwendig, da eine geringe bis keine Gefahr eines Genauigkeitsverlusts während Matrixoperationen besteht. Andernfalls werden X und W neu skaliert.
  • Nach einer oder mehreren Ausführungsformen können X und W in Übereinstimmung mit den folgenden Ausdrücken neu skaliert werden: X = (α/k1, x'16), wobei x'[i] = x[i]·k1; und W = (β/k2, w'16), wobei w'[i] = w[i]·k2.
  • Um sicherzustellen, dass die Neuskalierung nicht in einem Überlauf resultiert, können den Skalierungswerten k1 und k2 die folgenden Bedingungen auferlegt werden: k1·amax(x) < U; und k2·amax(w) < U.
  • Um zu garantieren, dass |y| < U, sollten k1 und k2 Folgendes erfüllen: k1·k2·amax(x)·max_norm1(w)) < U.
  • Um einen Überlauf nach der Neuskalierung von X und W zu verhindern, werden die folgenden Bedingungen auferlegt: amean(x)·k1 > L; und amean(x)·k2 > L.
  • Um einen Unterlauf während der Matrix-Matrix-Multiplikation zu vermeiden, werden die folgenden Bedingungen auferlegt: k1·amean(x)·k2amean(w) > L
  • Ingesamt enthält die Gesamtheit der k1 und k2 auferlegten Bedingungen Folgendes: L/amean(x) < k1 < U/amax(x); L/amean(w) < k2 < U/amax(w); und L/(amean(x)·amean(w)) < k1·k2 < U/(amax(x)·max_norm1(w)).
  • Nach einer oder mehreren Ausführungsformen können die Skalierungswerte k1 und k2 mittels einer Vielfalt von Verfahren ausgewählt werden.
  • Sobald X und W neu skaliert sind (oder bestimmt wurde, dass sie keine Neuskalierung erfordern), wird ein Bias für die Datenwerte berechnet. Die verzerrte Ausgabe Z kann als Ausgabematrix Y + Bias-Matrix B ausgedrückt werden, so dass Z[b, o, h, w] = Y[b, o, h, w] + B[o], wobei Y = [δ, y16], B = [γ, b16] und Z = [ε, z16]. In einer oder mehreren Ausführungsformen kann Z unter Verwendung von Float32 mit Einzelpräzision berechnet und dann in Float16 umgewandelt werden. Erneut kann ein oberer Schwellenwert für die Ausgabe auf Y und B als U = FP16_MAX/2 mit einem niedrigen Schwellenwert L = FP16_MIN festgelegt werden.
  • Um Überlauf zu vermeiden, werden die folgenden Bedingungen auferlegt: amax(y)·k1 < U; und amax(b)·k2 < U.
  • Gleichermaßen werden die folgenden Bedingungen auferlegt, um Unterlauf zu vermeiden: amean(y)·k1 > L; und amean(b)·k2 > L.
  • Alternativ können die Beziehungen wie folgt angegeben werden: L/amean(y) < k1 < U/amax(y); und L/amean(b) < k2 < U/amax(b).
  • RÜCKWÄRTSPROPAGIERUNGSPHASE IN FALTUNGSSCHICHTEN
  • Gemäß einer oder mehreren Ausführungsformen werden drei Hauptoperationen während der Rückwärtspropagierung in einer Faltungsschicht durchgeführt. 2 stellt die drei computerimplementierte Hauptoperationen dar, die während der Rückwärtspropagierung durchgeführt werden. Die Schritte 201205 beschreiben beispielhafte Schritte des Flussdiagramms 100 gemäß den verschiedenen hierin beschriebenen Ausführungsformen. Wie in 2 dargestellt, beginnt die Rückwärtspropagierung bei Schritt 201, wobei Gradienten rückwärts propagiert werden. In einer oder mehreren Ausführungsformen kann der Gradient für die Eingabematrix X als die Faltung des Gradienten von Y und der Werte für die Gewichte W berechnet werden: z. B. dX = conv(dY, WT).
  • Bei Schritt 203 werden Gradienten für die Gewichte selbst berechnet. In einer oder mehreren Ausführungsformen kann der Gradient dW als Summe über einen Batch für die Faltung des Gradienten von Y und der Eingabematrix X berechnet werden: z. B. dW = sumB(conv(dY, X)). Schließlich werden bei Schritt 205 die Gradienten für das Bias als Summe über einen Batch des Gradienten von Y und eines Vektors e1 von Einsen berechnet (z. B. dB = sumB(dY·e1)). In einer oder mehreren Ausführungsformen wird jeder der Tensoren gemäß dem modifizierten Float16-Format wie folgt ausgedrückt: dY = [α, dy16], W = [β, w16], dX = [γ, dx16], dW = [δ, dw16], dB = [ε, db16].
  • Gemäß einer oder mehreren Ausführungsformen werden die berechneten Gradienten auch rückwärts propagiert. In einer oder mehreren Ausführungsformen können die Gradienten für die Matrix X (dX) durch die Faltung des Gradienten von Y (dY) unter Verwendung der Matrix von Gewichten W als Filter berechnet werden. Um sicherzustellen, dass der Absolutwert von dX[i] kleiner als ein oberer Schwellenwert ist (z. B. |dx[i]| < U), werden die folgenden Bedingungen auferlegt: amax(dy)·max_norm1_t(w) < U, wobei max_norm1_t(w): = max_norm1(WT) = maxco,i,j|w(c; o, i, j)|).
  • Um Unterlauf zu vermeiden, wird die folgende Bedingung auferlegt: amean(dy)·amean(w) > L
  • Falls beide Bedingungen wahr sind, besteht keine Notwendigkeit, neu zu skalieren.
  • Falls jedoch irgendeine der Bedingungen nicht erfüllt ist, werden sowohl der Gradient von Y, dY, als auch die Matrix W neu skaliert, so dass: dY = (α/k1, dy'16), wobei dy'[i] = dy[i]·k1 W = (β/k2, w'16), wobei w'[i] = w[i]·k2
  • Um sicherzustellen, dass während der Neuskalierung kein Überlauf auftreten kann, erfüllen die Skalierungswerte k1 und k2 die folgenden Bedingungen: k1·amax(dy) < U k2·amax(w) < U
  • Gleichermaßen erfüllen die Skalierungswerte k1 und k2 die folgenden Bedingungen, um sicherzustellen, dass während der Neuskalierung kein Unterlauf auftreten kann: k1·amean(dy) > L; und k2·amean(w) > L.
  • Somit kann Überlauf während der elementweisen Multiplikation vermieden werden, wenn k1 und k2 die folgende Bedingung erfüllen: k1·k2 < U/(amax(dy)·max_norm1_t(w)). Gleichermaßen kann Unterlauf vermieden werden, wenn k1 und k2 die folgende Bedingung erfüllen: k1·k2·amean(dy)·k2amean(w) > L.
  • Die Bedingungen in Bezug auf k1 und k2 können alternativ repräsentiert werden als: L/amean(dy) < k1 < U/amax(dy); L/amean(w) < k2 < U / amax(w); und L/(amean(dy)·amean(w)) < k1·k2 < U/(amax(dy)·max_norm1_t(w)).
  • GEWICHTS- UND BIAS-GRADIENTENBERECHNUNG IN FALTUNGSSCHICHTEN
  • Sobald die Vorwärts- und Rückwärtspropagierung in einem neuronalen Netzwerk durchgeführt werden, werden die Gradienten für die Gewichte, die verwendet werden, um den Einfluss der Daten, die von jedem Neuron ausgegeben werden, anzupassen, berechnet und anschließend neu angepasst. In einer oder mehreren Ausführungsformen können die Gradienten für Gewichte (dW) als dW(c, o, .,.) = sumB(conv(dY·X)) berechnet werden. Jedoch können, wie bei vorherigen Berechnungsphasen, sowohl Überlauf als auch Unterlauf während der Berechnung von Gewichtsgradienten auftreten. Um jeweils Überlauf und Unterlauf zu vermeiden, müssen die folgenden Bedingungen erfüllt sein: max|x|·max0(sumB,H,W|dy(., o, ., .)|) < U; und mean(x)·mean(dy) > L.
  • Unter diesen Bedingungen besteht keine Notwendigkeit, neu zu skalieren. Andernfalls muss eine Skalierung k1 für den Gradienten der Ausgabematrix Y (dY) und eine Skalierung k2 für die Eingabematrix X berechnet werden, so dass die folgenden Bedingungen auferlegt werden: k1·k2·max(x)·max_norm1_2(dY) < U, wobei max_norm1_2(dy): = max0(sumB,H,W|dy(., o, ., .)|) k1·max(dY) < U; k2·max(x) < U; k1·mean(dY) > L; k2·mean(x) > L; und k1·k2·mean(dY)·mean(x) > L.
  • Dies ergibt die folgenden Ausdrücke: L/mean(dy) < k1 < U/max(dY); L/mean(x) < k2 < U/max(x); und L/(mean(dY)·mean(x)) < k1·k2· < U/(max(x)·max_norm1_2(dY)).
  • VORWÄRTSPROPAGIERUNGSPHASE IN INNENPRODUKTSCHICHTEN
  • Während der Vorwärtspropagierung in einer Innenproduktschicht berechnet die Innenproduktschicht eine Ausgabe Y für aktivierte Werte X mit Gewichtsmatrix W und Bias B, so dass Y = X·W + B ist. In einer oder mehreren Ausführungsformen besteht die Vorwärtspropagierung innerhalb dieser Schicht aus zwei Stufen: eine erste Stufe, während der die Matrix-Matrix-Multiplikation durchgeführt wird (z. B. GEMM oder allgemeine Matrix-Matrix-Multiplikation) auf X und W, um die Ausgabe Y zu berechnen, und eine zweite Stufe, die das Bias zur Ausgabe Y hinzufügt, um die verzerrte Ausgabe Y' zu berechnen.
  • Während der GEMM werden der maximale Absolutwert von x, der maximale Normalwert von x und die absoluten Mittelwerte von x und w bestimmt und mit einem oberen und unteren Schwellenwert verglichen, um zu bestimmen, ob die folgenden Bedingungen wahr sind: amax(x)·max_norm1(w) < U0; und amean(x)·amean(w) > L0.
  • Falls beide dieser Bedingungen wahr sind, besteht keine Notwendigkeit, X oder W neu zu skalieren. Andernfalls werden die Skalarwerte k1 und k2 berechnet, so dass: L0/amean(x) < k1 < U0)/amax(x); L0/amean(w) < k2 < U0)/amax(w); und L0/amean(x)amean(w)) < k1·k2 < U0)/(2·amax(x)·max_norm1(w)).
  • RÜCKWÄRTSPROPAGIERUNGSPHASE IN INNENPRODUKTSCHICHTEN
  • Gemäß einer oder mehreren Ausführungsformen werden drei Hauptoperationen während der Rückwärtspropagierung in einer Faltungsschicht durchgeführt. Ähnlich wie bei der Rückwärtspropagierung, die für Faltungsschichten durchgeführt wird, werden auch drei Hauptoperationen während der Rückwärtspropagierung in Innenproduktschichten durchgeführt. Die drei Hauptgradientenberechnungen umfassen die Berechnung des Gradienten für die Eingabematrix X (dX) als Produkt des Gradienten von Y und der Werte für die Gewichte W: z. B. dX (b, c, ., .) = dY·WT; Berechnen des Gradienten für die Gewichte dW als Summe über einen Batch für das Produkt des Gradienten von Y und der Eingabematrix X: z. B. dW(c, o, ., .) = sumB(dY·X); und Berechnen der Gradienten für das Bias dB(o) als Summe über einen Batch des Gradienten von Y und eines Vektors e1 von Einsen (z. B. dB = sumB(dY·e1)). In einer oder mehreren Ausführungsformen wird jeder der Tensoren gemäß dem modifizierten Float16-Format wie folgt ausgedrückt: dY = [α, dy16], W = [β, w16], dX = [γ, dx16], dW = [δ, dw16], dB = [ε, db16].
  • Gemäß einer oder mehreren Ausführungsformen kann der Bias-Gradient berechnet werden als dB(o) = sumB(dY·e1).
  • Um Überlauf zu vermeiden, muss die folgende Bedingung erfüllt sein: max0(sumB,H,W|dy(., o, ., .)|) < U.
  • Falls die Bedingung erfüllt ist, besteht keine Notwendigkeit, neu zu skalieren. Andernfalls wird der Skalierungsfaktor k1 berechnet, so dass: k1·max_norm1_2(dy) < U; und k1·mean(dY) > L0, wobei max_norm1_2(dy): = max0(sumB,H,W|dy(., o, ., .)|)
  • Die danach auf k1 auferlegten Bedingungen können ausgedrückt werden als: L0/mean(dY) < k1 < U/max_norm1_2(dy).
  • Gemäß einer oder mehreren Ausführungsformen kann der Gewichtsgradient berechnet werden als: dW(c, o, ., .) = sumB(dY·X).
  • Um Überlauf zu vermeiden, muss die folgende Bedingung erfüllt sein: max(x)·max0(sumB,H,W|dy(., o, ., .)|) < U.
  • Falls auch kein Risiko eines Unterlaufs vorhanden ist (z. B. falls die Bedingung mean(x)·mean(dy) > L0 erfüllt ist), dann besteht keine Notwendigkeit, neu zu skalieren. Andernfalls wird der Skalierungsfaktor k1 für dY und der Skalierungsfaktor k2 für X berechnet, so dass: k1·k2·max(x)·max_norm1_2(dy) < U; k1·max(dy) < U; k2·max(x) < U; und k1·mean(dy) > L0 k2·mean(x) > L0 k1·k2·mean(dy)·mean(x) > L0
  • Die danach auf k1 und k2 auferlegten Bedingungen können ausgedrückt werden als: L0/mean(dy) < k1 < U/max(dy) L0/mean(x) < k2 < U/max(x) L0/mean(dy)·mean(x) < k1·k2· < U/(max(x)·max_norm1_2(dy)).
  • Gemäß einer oder mehreren Ausführungsformen kann die Gradientenrückwärtspropagierung als dX = dY·Wt berechnet werden. Um sicherzustellen, dass |dx[i]| < U (z. B. U = FP16_MAX, um Überlauf zu vermeiden), wird die folgende Bedingung auferlegt: amax(dy)·max_norm1_t(w) < U, wobei max_norm1_t(w): = max_norm1(WT) = maxco,i,j|w(c; o, i, j)|).
  • Um Unterlauf zu vermeiden, muss die folgende Bedingung erfüllt sein: amean(dy)·amean(w) > L0.
  • Falls beide Bedingungen wahr sind, besteht keine Notwendigkeit, neu zu skalieren. Andernfalls werden dY und W neu skaliert, so dass: dY = (α/k1, dy'16), wobei dy'[i] = dy[i]·k1; und W = (β/k2, w'16), wobei w'[i] = w[i]·k2.
  • Um sicherzustellen, dass nach der Neuskalierung kein Risiko eines Überlaufs oder Unterlaufs vorhanden ist, werden die folgenden Bedingungen auferlegt: k1·amax(dy) < U0; k2·amax(w) < U0; und k1·amean(dy) > L0; k2·amean(w) > L0.
  • Die danach auf k1 und k2 auferlegten Bedingungen können ausgedrückt werden als: k1·k2 < U0/(amax(dy)·max_norm1_t(w)); k1·k2·amean(dy)·k2amean(w) > L0; L0/amean(dy) < k1 < U0/amax(dy); L0/amean(w) < k2 < U0/amax(w); und L0/(amean(dy)amean(w)) < k1·k2 < U0/(amax(dy)·max_norm1_t(w)).
  • Ausführungsformen der vorliegenden Erfindung wurden hierin im Zusammenhang mit Faltungs- und Innenproduktschichten beschrieben. Jedoch können alternative Ausführungsformen zur Verwendung in zusätzlichen Schichten angepasst werden, einschließlich, aber nicht darauf beschränkt, Skalierungsschichten, Bias-Schichten und Batch-Normalisierungsschichten, von denen jede unter Verwendung des hierin beschriebenen modifizierten Float16-Datenformats repräsentiert werden kann.
  • GEWICHTSAKTUALISIERUNG
  • Das Training von tiefen Netzwerken basiert üblicherweise auf einem stochastischen Gradientenabfall (Stochastic Gradient Descent, SGD). In einer oder mehreren Ausführungsformen wird die folgende Formel während der Gewichtsaktualisierung angewendet: W(t + 1) = W(t) – λ·ΔW(t).
  • Anfänglich sind die Gradienten sehr klein, so dass λ·ΔW(t) viel kleiner als W ist und weit unterhalb des normalen Float16-Bereichs liegt; somit kann die Verwendung des traditionellen Float16-Formats bewirken, dass die Gradienten verschwinden. Als eine Lösung kann das hierin beschriebene modifizierte Float16-Datenformat erweitert werden, um den Verlust von Gradientendaten (Präzision) zu verhindern. In späteren Stufen des Trainings können die Gradienten hoch sein, aber λ wird klein, so dass λ·ΔW(t) viel kleiner als W wird, und die Gewichtsaktualisierung in traditionellen Float16-Formaten wird aufgrund von Rundung verschwinden. Der Graph des Verlusts kann einem Plateau ähneln, ist aber in Wirklichkeit nur Verlust der Genauigkeit während der Gewichtsaktualisierung.
  • Es gibt eine Reihe von möglichen Lösungen für dieses Problem der „verschwindenden Aktualisierung”. Eine mögliche Lösung besteht darin, eine extra Kopie von Gewichten im (32-Bit-)Float-Format zu verwenden. Gemäß derartigen Ausführungsformen wird eine Kopie von Gewichten als Float32 und eine zweite als Float16 für die Vorwärts- und Rückwärtspropagierung im Speicher gespeichert. Die Float32-Version der Gewichte W(t + 1) wird verwendet, um kleine Gewichtsaktualisierungen weiterhin zu akkumulieren. Eine Einzelpräzisions-Float32-zu-Float16-Umwandlung wird verwendet, um einen Float16-Satz von Gewichten zu erzeugen, der für Vorwärts-Rückwärts-Berechnungen verwendet wird. Eine weitere mögliche Lösung besteht darin, SGD-Algorithmus mit Momentum zu modifizieren, was das Hinzufügen eines Gewichtsabfalls, das Berechnen eines Momentums, das Berechnen einer Aktualisierung basierend auf dem Momentum und das Anwenden der Aktualisierung auf die Gewichte umfasst.
  • 3 stellt ein Flussdiagramm 300 eines beispielhaften computerimplementierten Prozesses zum Durchführen von Matrixberechnungen gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung dar. Die Schritte 301309 beschreiben beispielhafte Schritte des Flussdiagramms 300 gemäß den verschiedenen hierin beschriebenen Ausführungsformen. In einer oder mehreren Ausführungsformen kann ein Teil oder eine Gesamtheit der Schritte im Flussdiagramm 300 in einer Verarbeitungsvorrichtung, wie beispielsweise einer zentralen Verarbeitungseinheit oder einer Graphikverarbeitungseinheit einer Rechenvorrichtung, durchgeführt werden.
  • Bei Schritt 301 wird auf eine erste Matrix X zugegriffen. Bei Schritt 303 wird auf eine zweite Matrix Y zugegriffen. In einer oder mehreren Ausführungsformen umfassen Datenwerte, die in den Matrizen X und Y enthalten sind, im Gleitkommaformat mit reduzierter Präzision repräsentierte Werte, wie beispielsweise in einem Float16-Datenformat. In noch weiteren Ausführungsformen überschreiten die Werte in den Matrizen X und Y nicht (in beiden Richtungen) einen Wertebereich zwischen einem vorbestimmten hohen Schwellenwert und einem vorbestimmten niedrigen Schwellenwert. In einer oder mehreren Ausführungsformen können auf die Datenwerte, die wenigstens eines von X und Y umfassen, über eine Speichervorrichtung zugegriffen werden. Gemäß weiteren Ausführungsformen können die Datenwerte einen Trainingssatz von vorgelieferten Daten umfassen.
  • Bei Schritt 305 wird ein gemeinsamer Skalierungsfaktor a für die Werte in X bestimmt. Bei Schritt 307 wird ein gemeinsamer Skalierungsfaktor b für die Werte in Y bestimmt. Gemäß einer oder mehreren Ausführungsformen werden die Skalierungsfaktoren a und b verwendet, um die Werte in ihren jeweiligen Matrizen X und Y um einen entsprechenden Betrag neu zu skalieren. In noch weiteren Ausführungsformen werden die Skalierungsfaktoren berechnet, so dass Überlauf und Unterlauf während Matrixberechnungen vermieden werden, wie beispielsweise Matrix-Matrix-Multiplikation oder Matrix-Matrix-Faltung usw. Schließlich wird bei Schritt 309 unter Verwendung der Skalierungsfaktoren und neu skalierten Werte entsprechend X und Y eine Matrixberechnung durchgeführt.
  • BEISPIELHAFTE RECHENVORRICHTUNG
  • Wie in 4 dargestellt, umfasst ein beispielhaftes Computersystem, auf dem Ausführungsformen der vorliegenden Erfindung implementiert werden können, ein Allzweck-Rechensystem mit einer oder mehreren integrierten Schaltungen, wie beispielsweise das Rechensystem 400. In seiner grundlegendsten Konfiguration umfasst das Rechensystem 400 typischerweise wenigstens eine Verarbeitungseinheit 401 und Speicher und einen Adressen-/Datenbus 409 (oder eine andere Schnittstelle) zum Kommunizieren von Informationen. Je nach exakter Konfiguration und Typ der Rechensystemumgebung kann der Speicher flüchtig (wie beispielsweise RAM 402), nicht-flüchtig (wie beispielsweise ROM 403, Flash-Speicher usw.) oder eine Kombination von beiden sein. In einer oder mehreren Ausführungsformen kann die Verarbeitungseinheit 401 verwendet werden, um die Neuskalierungsoperationen oder Berechnungen, die oben unter Bezugnahme auf 13 beschrieben werden, (ganz oder teilweise) durchzuführen.
  • Das Rechensystem 400 kann auch ein optionales Graphikuntersystem 405 zum Präsentieren von Informationen für den Computerbenutzer umfassen, z. B. durch Anzeigen von Informationen auf einer angeschlossenen Anzeigevorrichtung 410, die durch ein Videokabel 411 verbunden ist. Gemäß Ausführungsformen der vorliegenden beanspruchten Erfindung kann das Graphikuntersystem 405 über das Videokabel 411 direkt mit der Anzeigevorrichtung 410 gekoppelt werden. Eine graphische Benutzerschnittstelle einer Bildbetrachtungssoftwareanwendung, die im Rechensystem 400 ausgeführt wird, kann beispielsweise im Graphikuntersystem 405 erzeugt und dem Benutzer in der Anzeigevorrichtung 410 angezeigt werden. In alternativen Ausführungsformen kann die Anzeigevorrichtung 410 in das Rechensystem (z. B. ein Laptop- oder Netbook-Anzeigefeld) integriert sein und erfordert kein Videokabel 411. In einer Ausführungsform können die Prozesse 200 und 300 ganz oder teilweise durch das Graphikuntersystem 405 in Verbindung mit dem Prozessor 401 und Speicher 402 durchgeführt werden, wobei jede resultierende Ausgabe in der angeschlossenen Anzeigevorrichtung 410 angezeigt wird.
  • Zusätzlich kann das Rechensystem 400 auch zusätzliche Merkmale/Funktionalität aufweisen. Beispielsweise kann das Rechensystem 400 auch zusätzlichen Speicher (entfernbar und/oder nicht-entfernbar) umfassen, einschließlich, aber nicht darauf beschränkt, magnetischer oder optischer Platten oder Bänder. Eine derartige zusätzliche Speicherung wird in 4 durch die Datenspeichervorrichtung 407 veranschaulicht. Computerspeichermedien umfassen flüchtige und nicht-flüchtige, entfernbare und nicht-entfernbare Medien, die in einem beliebigen Verfahren oder einer beliebigen Technologie zum Speichern von Informationen, wie beispielsweise computerlesbaren Anweisungen, Datenstrukturen, Programmmodulen oder anderen Daten, implementiert sind. Der RAM 402, der ROM 403 und die Datenspeichervorrichtung 407 sind alle Beispiele für Computerspeichermedien.
  • Das Rechensystem 400 umfasst auch eine optionale alphanumerische Eingabevorrichtung 406, eine optionale Cursorsteuer- oder Leitvorrichtung 407 und eine oder mehrere Signalkommunikationsschnittstellen (Eingabe-/Ausgabevorrichtungen, z. B. eine Netzwerkschnittstellenkarte) 408. Die optionale alphanumerische Eingabevorrichtung 406 kann Informationen und Befehlsoptionen an den zentralen Prozessor 401 kommunizieren. Die optionale Cursorsteuer- oder Leitvorrichtung 407 ist mit dem Bus 409 gekoppelt, um Benutzereingabeinformationen und Befehlsoptionen an den zentralen Prozessor 401 zu kommunizieren. Die Signalkommunikationsschnittstelle (Eingabe-/Ausgabevorrichtung) 408, die auch mit dem Bus 409 gekoppelt ist, kann ein serieller Port sein. Die Kommunikationsschnittstelle 409 kann auch drahtlose Kommunikationsmechanismen umfassen. Unter Verwendung der Kommunikationsschnittstelle 409 kann das Rechensystem 400 kommunikativ mit anderen Rechensystemen über ein Kommunikationsnetzwerk wie beispielsweise das Internet oder ein Intranet (z. B. ein lokales Netzwerk) gekoppelt sein oder Daten empfangen (z. B. ein digitales Fernsehsignal).
  • Obwohl der Gegenstand in einer für strukturelle Merkmale und/oder methodologische Vorgänge speziellen Sprache beschrieben worden ist, versteht es sich, dass der in den beigefügten Ansprüchen definierte Gegenstand nicht notwendigerweise auf die oben beschriebenen speziellen Merkmale oder Vorgänge beschränkt ist. Vielmehr werden die vorstehend beschriebenen speziellen Merkmale und Vorgänge als beispielhafte Formen zur Implementierung der Ansprüche offenbart.
  • In der vorstehenden Beschreibung wurden Ausführungsformen unter Bezugnahme auf zahlreiche spezielle Details beschrieben, die von Implementierung zu Implementierung variieren können. Somit ist der einzige und ausschließliche Indikator dafür, was die Erfindung ist und wie sie vom Anmelder als die Erfindung beabsichtigt ist, in den Ansprüchen dargelegt, die aus dieser Anmeldung hervorgehen, und zwar in der speziellen Form, in der derartige Ansprüche erstellt sind, einschließlich jeder anschließend erfolgenden Korrektur. Somit wird der Schutzbereich eines derartigen Anspruchs in keiner Weise durch eine Einschränkung, ein Element, eine Eigenschaft, ein Merkmal, einen Vorteil oder ein Attribut, die nicht ausdrücklich in einem Anspruch aufgeführt sind, eingeschränkt. Dementsprechend sind die Beschreibung und Zeichnungen in einem veranschaulichenden statt in einem einschränkenden Sinne zu betrachten.

Claims (21)

  1. Computerimplementiertes Verfahren zum Durchführen von Matrixberechnungen, wobei das Verfahren Folgendes umfasst: Abrufen einer ersten Matrix X; Abrufen einer zweiten Matrix Y, wobei sich die Matrizen X und Y in einem Speicher befinden und Werte umfassen, die in einem Gleitkommaformat mit reduzierter Genauigkeit dargestellt werden, und wobei das Gleitkommaformat mit reduzierter Genauigkeit Werte von einem niedrigen Schwellenwert bis zu einem hohen Schwellenwert darstellt; Bestimmen eines ersten Skalierungsfaktors a für Matrix X; Bestimmen eines zweiten Skalierungsfaktors b für Matrix Y, wobei die Bestimmungen durchgeführt werden, um Überlauf oder Unterlauf für Matrixberechnungen, in die a·X und b·Y involviert sind, zu vermeiden; und Durchführen einer Matrixberechnung, die a·X und b·Y als Eingaben verwendet und die eine Ausgabe erzeugt.
  2. Verfahren nach Anspruch 1, wobei das Gleitkommaformat mit reduzierter Genauigkeit das float16-Gleitkommaformat umfasst.
  3. Verfahren nach Anspruch 1 oder 2, wobei die Matrixberechnung Matrixmultiplikation umfasst.
  4. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Matrixberechnung Matrixkonvolution umfasst.
  5. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Matrixberechnung Matrixaddition umfasst.
  6. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Matrixberechnung mindestens eins von Matrixmultiplikation, Matrixkonvolution und Matrixaddition umfasst und wobei die Matrixberechnung ferner Teil eines Übungsverfahrens eines Lernnetzwerks ist, welches Gradientenberechnungen umfasst.
  7. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Matrixberechnung durch eine Hardwareberechnungseinheit einer Grafikverarbeitungseinheit durchgeführt wird.
  8. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Bestimmen des ersten Skalierungsfaktors a Folgendes umfasst: Berechnen eines maximalen Absolutwerts max(X) aus Werten der Matrix X; Berechnen eines Mittelwerts mean(X) aus Werten ungleich null der Matrix X; und Berechnen eines Bereichswerts range(X) als [max(X)/mean(X)].
  9. Verfahren nach Anspruch 8, wobei das Bestimmen des zweiten Skalierungsfaktors b Folgendes umfasst: Berechnen eines maximalen Absolutwerts max(Y) aus Werten der Matrix Y; Berechnen eines Mittelwerts mean(Y) aus Werten ungleich null der Matrix Y; und Berechnen eines Bereichswerts range(Y) als [max(Y)/mean(Y)].
  10. Verfahren nach Anspruch 9, wobei die Matrixberechnung Matrixmultiplikation umfasst und wobei das Bestimmen des ersten Skalierungsfaktors a und wobei das Bestimmen des zweiten Skalierungsfaktors b ferner Folgendes umfassen: Auswählen von a und b, wobei [a·mean(X)·b·mean(Y)] dem niedrigen Schwellenwert entspricht oder größer als dieser ist; und Auswählen von a und b, wobei: [a·mean(X)·b·max(Y)] dem hohen Schwellenwert entspricht oder kleiner als dieser ist; [b·mean(Y)·a·max(X)] dem hohen Schwellenwert entspricht oder kleiner als dieser ist; K·[a·mean(X)· b·mean(Y)] dem hohen Schwellenwert entspricht oder kleiner als dieser ist, wobei K eine Konstante ist; a·max(X) dem hohen Schwellenwert entspricht oder kleiner als dieser ist; und b·max(Y) dem hohen Schwellenwert entspricht oder kleiner als dieser ist.
  11. Verfahren nach Anspruch 9 oder 10, wobei die Matrixberechnung Matrixkonvolution umfasst und wobei das Bestimmen des ersten Skalierungsfaktors a und wobei das Bestimmen des zweiten Skalierungsfaktors b ferner Folgendes umfassen: Auswählen von a und b, wobei [a·mean(X)·b·mean(Y)] dem niedrigen Schwellenwert entspricht oder größer als dieser ist; und Auswählen von a und b, wobei: [a·mean(X)·b·max(Y)] dem hohen Schwellenwert entspricht oder kleiner als dieser ist; [a·max(X)·b·max(Y)] dem hohen Schwellenwert entspricht oder kleiner als dieser ist; K·[a·mean(X)·b·mean(Y)] dem hohen Schwellenwert entspricht oder kleiner als dieser ist, wobei K eine Konstante ist; a·max(X) dem hohen Schwellenwert entspricht oder kleiner als dieser ist; und b·max(Y) dem hohen Schwellenwert entspricht oder kleiner als dieser ist.
  12. Computerimplementiertes Verfahren zum Durchführen einer Übung für ein tiefgehendes Lernnetzwerk, wobei das Verfahren Folgendes umfasst: Abrufen einer ersten Matrix X; Abrufen einer zweiten Matrix Y, wobei sich die Matrizen X und Y in einem Speicher befinden und Werte umfassen, die in einem float16-Gleitkommaformat dargestellt werden, und wobei das float16-Gleitkommaformat Werte von einem niedrigen Schwellenwert bis zu einem hohen Schwellenwert darstellt; Bestimmen eines ersten Skalierungsfaktors a für Matrix X; Bestimmen eines zweiten Skalierungsfaktors b für Matrix Y, wobei die Bestimmungen durchgeführt werden, um Überlauf oder Unterlauf für Matrixberechnungen, in die a·X und b·Y involviert sind, zu vermeiden; und Durchführen der Übung durch Durchführen von Berechnungen einer Vorwärtsausbreitungsschicht, einer Konvolutionsschicht, einer inneren Produktschicht und einer Rückwärtsausbreitungsschicht, wobei die Konvolutionsschicht eine Gradientenberechnung umfasst, die eine Matrixberechnung umfasst, die a·X und b·Y als Eingaben verwendet und die eine Gradientenausgabe erzeugt.
  13. Verfahren nach Anspruch 12, wobei die Matrixberechnung durch eine Hardwareberechnungseinheit einer Grafikverarbeitungseinheit durchgeführt wird.
  14. Verfahren nach Anspruch 13, wobei das Bestimmen des ersten Skalierungsfaktors a Folgendes umfasst: Berechnen eines maximalen Absolutwerts max(X) aus Werten der Matrix X; Berechnen eines Mittelwerts mean(X) aus Werten ungleich null der Matrix X; und Berechnen eines Bereichswerts range(X) als [max(X)/mean(X)].
  15. Verfahren nach Anspruch 14, wobei das Bestimmen des zweiten Skalierungsfaktors b Folgendes umfasst: Berechnen eines maximalen Absolutwerts max(Y) aus Werten der Matrix Y; Berechnen eines Mittelwerts mean(Y) aus Werten ungleich null der Matrix Y; und Berechnen eines Bereichswerts range(Y) als [max(Y)/mean(Y)].
  16. Verfahren nach Anspruch 15, wobei die Matrixberechnung Matrixmultiplikation umfasst und wobei das Bestimmen des ersten Skalierungsfaktors a und wobei das Bestimmen des zweiten Skalierungsfaktors b ferner Folgendes umfassen: Auswählen von a und b, wobei [a·mean(X)·b·mean(Y)] dem niedrigen Schwellenwert entspricht oder größer als dieser ist; und Auswählen von a und b, wobei: [a·mean(X)·b·max(Y)] dem hohen Schwellenwert entspricht oder kleiner als dieser ist; [b·mean(Y)·a·max(X)] dem hohen Schwellenwert entspricht oder kleiner als dieser ist; K·[a·mean(X)·b·mean(Y)] dem hohen Schwellenwert entspricht oder kleiner als dieser ist, wobei K eine Konstante ist; a·max(X) dem hohen Schwellenwert entspricht oder kleiner als dieser ist; und b·max(Y) dem hohen Schwellenwert entspricht oder kleiner als dieser ist.
  17. Verfahren nach Anspruch 15, wobei die Matrixberechnung Matrixkonvolution umfasst und wobei das Bestimmen des ersten Skalierungsfaktors a und wobei das Bestimmen des zweiten Skalierungsfaktors b ferner Folgendes umfassen: Auswählen von a und b, wobei [a·mean(X)·b·mean(Y)] dem niedrigen Schwellenwert entspricht oder größer als dieser ist; und Auswählen von a und b, wobei: [a·mean(X)·b·max(Y)] dem hohen Schwellenwert entspricht oder kleiner als dieser ist; [a·max(X)·b·max(Y)] dem hohen Schwellenwert entspricht oder kleiner als dieser ist; K·[a·mean(X)·b·mean(Y)] dem hohen Schwellenwert entspricht oder kleiner als dieser ist, wobei K eine Konstante ist; a·max(X) dem hohen Schwellenwert entspricht oder kleiner als dieser ist; und b·max(Y) dem hohen Schwellenwert entspricht oder kleiner als dieser ist.
  18. Nichtflüchtiges computerlesbares Medium, welches eine Vielzahl von darauf gespeicherten programmierten Anweisungen umfasst, wobei die Vielzahl von programmierten Anweisungen konfiguriert ist, um durch eine Verarbeitungsvorrichtung ausgeführt zu werden, um eine Übung für ein tiefgehendes Lernnetzwerk durchzuführen, wobei die Vielzahl von programmierten Anweisungen Folgendes umfasst: Anweisungen zum Abrufen einer ersten Matrix X; Anweisungen zum Abrufen einer zweiten Matrix Y, wobei sich die Matrizen X und Y in einem Speicher befinden und Werte umfassen, die in einem float16-Gleitkommaformat dargestellt werden, und wobei das float16-Gleitkommaformat Werte von einem niedrigen Schwellenwert bis zu einem hohen Schwellenwert darstellt; Anweisungen zum Bestimmen eines ersten Skalierungsfaktors a für Matrix X; Anweisungen zum Bestimmen eines zweiten Skalierungsfaktors b für Matrix Y, wobei die Anweisungen zum Bestimmen des ersten und zweiten Skalierungsfaktors durchgeführt werden, um Überlauf oder Unterlauf für Matrixberechnungen, in die a·X und b·Y involviert sind, zu vermeiden; und Anweisungen zum Durchführen der Übung durch Durchführen von Berechnungen einer Vorwärtsausbreitungsschicht, einer Konvolutionsschicht, einer inneren Produktschicht und einer Rückwärtsausbreitungsschicht, wobei die Konvolutionsschicht eine Gradientenberechnung umfasst, die eine Matrixberechnung umfasst, die a·X und b·Y als Eingaben verwendet und die eine Gradientenausgabe erzeugt.
  19. Nichtflüchtiges computerlesbares Medium nach Anspruch 18, wobei die Anweisungen zum Bestimmen des ersten Skalierungsfaktors a Folgendes umfassen: Anweisungen zum Berechnen eines maximalen Absolutwerts max(X) aus Werten der Matrix X; Anweisungen zum Berechnen eines Mittelwerts mean(X) aus Werten ungleich null der Matrix X; und Anweisungen zum Berechnen eines Bereichswerts range(X) als [max(X)/mean(X)].
  20. Nichtflüchtiges computerlesbares Medium nach Anspruch 19, wobei die Anweisungen zum Bestimmen des zweiten Skalierungsfaktors b Folgendes umfassen: Anweisungen zum Berechnen eines maximalen Absolutwerts max(Y) aus Werten der Matrix Y; Anweisungen zum Berechnen eines Mittelwerts mean(Y) aus Werten ungleich null der Matrix Y; und Anweisungen zum Berechnen eines Bereichswerts range(Y) als [max(Y)/mean(Y)].
  21. Nichtflüchtiges computerlesbares Medium nach einem der Ansprüche 18–20, das konfiguriert ist, um ein computerimplementiertes Verfahren, wie in einem der Ansprüche 1–17 beschrieben, auszuführen, wenn die programmierten Anweisungen von der Prozessoreinheit ausgeführt werden.
DE102017113232.5A 2016-06-15 2017-06-16 Tensorverarbeitung unter verwendung eines formats mit geringer genauigkeit Pending DE102017113232A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201662350620P 2016-06-15 2016-06-15
US62/350,620 2016-06-15

Publications (1)

Publication Number Publication Date
DE102017113232A1 true DE102017113232A1 (de) 2017-12-21

Family

ID=60481190

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017113232.5A Pending DE102017113232A1 (de) 2016-06-15 2017-06-16 Tensorverarbeitung unter verwendung eines formats mit geringer genauigkeit

Country Status (3)

Country Link
US (1) US20170372202A1 (de)
CN (1) CN107526709A (de)
DE (1) DE102017113232A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109147891A (zh) * 2018-09-03 2019-01-04 秦怡静 一种基于bp神经网络和遗传算法的形象气质提升方法

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10489877B2 (en) 2017-04-24 2019-11-26 Intel Corporation Compute optimization mechanism
US10726514B2 (en) 2017-04-28 2020-07-28 Intel Corporation Compute optimizations for low precision machine learning operations
US11556772B2 (en) * 2017-04-28 2023-01-17 Intel Corporation Incremental precision networks using residual inference and fine-grain quantization
US11114138B2 (en) 2017-09-15 2021-09-07 Groq, Inc. Data structures with multiple read ports
US11243880B1 (en) 2017-09-15 2022-02-08 Groq, Inc. Processor architecture
US11360934B1 (en) 2017-09-15 2022-06-14 Groq, Inc. Tensor streaming processor architecture
US11868804B1 (en) 2019-11-18 2024-01-09 Groq, Inc. Processor instruction dispatch configuration
US11170307B1 (en) 2017-09-21 2021-11-09 Groq, Inc. Predictive model compiler for generating a statically scheduled binary with known resource constraints
US10902318B2 (en) 2017-11-06 2021-01-26 Neuralmagic Inc. Methods and systems for improved transforms in convolutional neural networks
US20190156214A1 (en) 2017-11-18 2019-05-23 Neuralmagic Inc. Systems and methods for exchange of data in distributed training of machine learning algorithms
US11373088B2 (en) * 2017-12-30 2022-06-28 Intel Corporation Machine learning accelerator mechanism
JP7056225B2 (ja) * 2018-02-26 2022-04-19 富士通株式会社 演算処理装置、情報処理装置、情報処理方法、およびプログラム
US10657442B2 (en) 2018-04-19 2020-05-19 International Business Machines Corporation Deep learning accelerator architecture with chunking GEMM
JP7240657B2 (ja) * 2018-05-15 2023-03-16 Tokyo Artisan Intelligence株式会社 ニューラルネットワーク回路装置、ニューラルネットワーク、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム
CN110533175A (zh) * 2018-05-23 2019-12-03 富士通株式会社 深度学习加速的方法和设备及深度神经网络
US11449363B2 (en) 2018-05-31 2022-09-20 Neuralmagic Inc. Systems and methods for improved neural network execution
US10963787B2 (en) * 2018-05-31 2021-03-30 Neuralmagic Inc. Systems and methods for generation of sparse code for convolutional neural networks
US11216732B2 (en) 2018-05-31 2022-01-04 Neuralmagic Inc. Systems and methods for generation of sparse code for convolutional neural networks
US10832133B2 (en) 2018-05-31 2020-11-10 Neuralmagic Inc. System and method of executing neural networks
US10656913B2 (en) * 2018-06-05 2020-05-19 International Business Machines Corporation Enhanced low precision binary floating-point formatting
US11568207B2 (en) * 2018-09-27 2023-01-31 Deepmind Technologies Limited Learning observation representations by predicting the future in latent space
US11636343B2 (en) 2018-10-01 2023-04-25 Neuralmagic Inc. Systems and methods for neural network pruning with accuracy preservation
US11157237B2 (en) 2018-11-13 2021-10-26 Hewlett Packard Enterprise Development Lp Memristive dot product circuit based floating point computations
US11204976B2 (en) 2018-11-19 2021-12-21 Groq, Inc. Expanded kernel generation
US20200202195A1 (en) * 2018-12-06 2020-06-25 MIPS Tech, LLC Neural network processing using mixed-precision data representation
CN109598344B (zh) * 2018-12-14 2020-10-02 北京字节跳动网络技术有限公司 模型生成方法和装置
US11676003B2 (en) * 2018-12-18 2023-06-13 Microsoft Technology Licensing, Llc Training neural network accelerators using mixed precision data formats
US11544559B2 (en) 2019-01-08 2023-01-03 Neuralmagic Inc. System and method for executing convolution in a neural network
WO2020144836A1 (ja) * 2019-01-11 2020-07-16 三菱電機株式会社 推論装置及び推論方法
US11562247B2 (en) 2019-01-24 2023-01-24 Microsoft Technology Licensing, Llc Neural network activation compression with non-uniform mantissas
US10963219B2 (en) 2019-02-06 2021-03-30 International Business Machines Corporation Hybrid floating point representation for deep learning acceleration
SG11202108799QA (en) * 2019-02-26 2021-09-29 Lightmatter Inc Hybrid analog-digital matrix processors
US11593637B2 (en) * 2019-04-30 2023-02-28 Samsung Electronics Co., Ltd. Convolution streaming engine for deep neural networks
US11556615B2 (en) * 2019-05-03 2023-01-17 Tesla, Inc. Data path for scalable matrix node engine with mixed data formats
US20200380369A1 (en) * 2019-05-31 2020-12-03 Nvidia Corporation Training a neural network using selective weight updates
WO2021026225A1 (en) 2019-08-08 2021-02-11 Neuralmagic Inc. System and method of accelerating execution of a neural network
US11537864B2 (en) 2019-11-26 2022-12-27 Apple Inc. Reduction mode of planar engine in neural processor
US11687778B2 (en) 2020-01-06 2023-06-27 The Research Foundation For The State University Of New York Fakecatcher: detection of synthetic portrait videos using biological signals
CN111258537B (zh) * 2020-01-15 2022-08-09 中科寒武纪科技股份有限公司 一种防止数据溢出的方法、装置和芯片
US20210303987A1 (en) * 2020-03-26 2021-09-30 Advanced Micro Devices, Inc. Power reduction for machine learning accelerator background
US11651228B2 (en) * 2020-04-17 2023-05-16 Microsoft Technology Licensing, Llc Dual-momentum gradient optimization with reduced memory requirements
CN111738403A (zh) * 2020-04-26 2020-10-02 华为技术有限公司 一种神经网络的优化方法及相关设备
KR20220030106A (ko) * 2020-09-02 2022-03-10 삼성전자주식회사 저장 장치, 저장 장치의 동작 방법 및 이를 포함한 전자 장치
CN114186186B (zh) * 2020-09-15 2023-08-04 华为技术有限公司 矩阵计算方法及相关设备
US11853759B2 (en) 2020-11-02 2023-12-26 Electronics And Telecommunications Research Institute Neural network accelerator with type conversion units and operating method thereof
CN112130807B (zh) * 2020-11-25 2021-02-26 上海燧原科技有限公司 张量浮点数据处理方法、装置、设备及存储介质
CN112416295B (zh) * 2020-12-09 2024-02-02 厦门壹普智慧科技有限公司 用于浮点数据、张量数据运算的运算器
US11556757B1 (en) 2020-12-10 2023-01-17 Neuralmagic Ltd. System and method of executing deep tensor columns in neural networks
US11494321B1 (en) * 2021-09-30 2022-11-08 Amazon Technologies, Inc. State buffer memloc reshaping
US11960982B1 (en) 2021-10-21 2024-04-16 Neuralmagic, Inc. System and method of determining and executing deep tensor columns in neural networks

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6996596B1 (en) * 2000-05-23 2006-02-07 Mips Technologies, Inc. Floating-point processor with operating mode having improved accuracy and high performance
US7634137B2 (en) * 2005-10-14 2009-12-15 Microsoft Corporation Unfolded convolution for fast feature extraction
US7844352B2 (en) * 2006-10-20 2010-11-30 Lehigh University Iterative matrix processor based implementation of real-time model predictive control
CN102362274A (zh) * 2009-03-24 2012-02-22 国际商业机器公司 方程的线性系统的处理
CN104915322B (zh) * 2015-06-09 2018-05-01 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109147891A (zh) * 2018-09-03 2019-01-04 秦怡静 一种基于bp神经网络和遗传算法的形象气质提升方法

Also Published As

Publication number Publication date
CN107526709A (zh) 2017-12-29
US20170372202A1 (en) 2017-12-28

Similar Documents

Publication Publication Date Title
DE102017113232A1 (de) Tensorverarbeitung unter verwendung eines formats mit geringer genauigkeit
DE202017105528U1 (de) Ausführen von Mittelwert-Poolbildung in Hardware
DE102020125207A1 (de) Unbeaufsichtigtes training von neuronalem netz zur bildkompression mit hohem dynamikumfang
DE102017124573A1 (de) Systeme und verfahren zum beschneiden von neuronalen netzen für eine betriebsmitteleffiziente folgerung
DE112017007826T5 (de) Simulieren von Quantenschaltungen
DE112016002296T5 (de) Vektor-recheneinheit in einem neuronalen netzwerkprozessor
DE202016008253U1 (de) Komprimierte rekurrente neuronale Netzwerkmodelle
DE102018130924A1 (de) Systeme und Verfahren zur dynamischen Gesichtsanalyse mittels eines rekurrenten neuronalen Netzes
DE112019000336T5 (de) Massiv parallele neuronale inferenz-datenverarbeitungselemente
DE102020211853A1 (de) Effiziente gegnerische blackbox-angriffe unter ausnutzung einer eingabedatenstruktur
DE202017105729U1 (de) Kerndurchschreiten in Hardware
DE202016107436U1 (de) Neuronaler Netzwerkprozessor
DE112016002298T5 (de) Vorabruf von gewichten zur verwendung in einem neuronalen netzwerkprozessor
DE202016107443U1 (de) Berechnen von Faltungen mithilfe eines neuronalen Netzwerkprozessors
DE202016107446U1 (de) Rotation von Daten für Berechnungen in neuronalen Netzwerken
DE102018105457A1 (de) Transponieren von Matrizen neuronaler Netze in Hardware
DE202017007641U1 (de) Training von maschinellen Lernmodellen auf mehrere maschinelle Lernaufgaben
DE112016002292T5 (de) Stapel-verarbeitung in einem neuronalen netzwerkprozessor
DE102019008221A1 (de) Interaktives Bildmattieren unter Verwendung neuronaler Netze
DE102018103598A1 (de) Permutieren in einem Matrix-Vektor-Prozessor
DE112020003600T5 (de) Hardware für maschinelles lernen mit parameterkomponenten mit reduzierter genauigkeit für effiziente parameteraktualisierung
DE102014006734A1 (de) Eckpunktparameter-datenkompression
DE102017102952A1 (de) Eine Vorrichtung zum Erzeugen eines dreidimensionalen Farbbildes und ein Verfahren zum Produzieren eines dreidimensionalen Farbbildes
DE102019133699A1 (de) Anweisungssatz für hybrid-cpu und analogen speicherinternen künstliche-intelligenz-prozessor
DE102022119386A1 (de) Verfahren und einrichtung zum durchführen einer dichten vorhersage unter verwendung von transformatorblöcken

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE

R016 Response to examination communication