DE112020003600T5 - Hardware für maschinelles lernen mit parameterkomponenten mit reduzierter genauigkeit für effiziente parameteraktualisierung - Google Patents

Hardware für maschinelles lernen mit parameterkomponenten mit reduzierter genauigkeit für effiziente parameteraktualisierung Download PDF

Info

Publication number
DE112020003600T5
DE112020003600T5 DE112020003600.6T DE112020003600T DE112020003600T5 DE 112020003600 T5 DE112020003600 T5 DE 112020003600T5 DE 112020003600 T DE112020003600 T DE 112020003600T DE 112020003600 T5 DE112020003600 T5 DE 112020003600T5
Authority
DE
Germany
Prior art keywords
weight
bits
learner
remainder
quantized
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
DE112020003600.6T
Other languages
English (en)
Inventor
Xiao Sun
Jungwook CHOI
Naigang Wang
Chia-Yu Chen
Kailash Gopalakrishnan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112020003600T5 publication Critical patent/DE112020003600T5/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/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/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
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Abstract

Eine Vorrichtung zum Trainieren und Folgern eines neuronalen Netzes enthält Schalttechnik, die so konfiguriert ist, dass sie eine erste Gewichtung mit einem ersten Format, das eine erste Anzahl von Bits enthält, zumindest teilweise auf Grundlage einer zweiten Gewichtung mit einem zweiten Format, das eine zweite Anzahl von Bits enthält, und eines Rests mit einem dritten Format, das eine dritte Anzahl von Bits enthält, erzeugt. Die zweite Anzahl von Bits und die dritte Anzahl von Bits sind jeweils kleiner als die erste Anzahl von Bits. Die Schalttechnik ist ferner so konfiguriert, dass sie die zweite Gewichtung zumindest teilweise auf Grundlage der ersten Gewichtung aktualisiert und den Rest zumindest teilweise auf Grundlage der aktualisierten zweiten Gewichtung und der ersten Gewichtung aktualisiert. Die Schalttechnik ist ferner so konfiguriert, dass sie die erste Gewichtung zumindest teilweise auf Grundlage der aktualisierten zweiten Gewichtung und des aktualisierten Rests aktualisiert.

Description

  • HINTERGRUND
  • Eine Gleitkommadarstellung einer bestimmten Zahl weist drei Hauptteile auf: einen Signifikanten, der die Ziffern der Zahl enthält, einen Exponenten, der die Stelle festlegt, an der das Dezimalkomma (oder Binärkomma) im Verhältnis zum Anfang des Signifikanten platziert wird, wobei negative Exponenten Zahlen darstellen, die sehr klein sind (d.h. nahe bei Null), und ein der Zahl zugeordnetes Vorzeichen (positiv oder negativ).
  • Bei einer Gleitkommaeinheit (Floating Point Unit, FPU) handelt es sich um einen Prozessor oder einen Teil eines Prozessors, der als Hardware-Schaltung implementiert ist, die FP- (Floating-Point-, Gleitkomma-) Berechnungen durchführt. Während die ersten FPUs eigenständige Prozessoren waren, sind sie heute zumeist in die CPU eines Computers integriert. Integrierte FPUs in modernen CPUs sind sehr komplex, da sie hochgenaue Gleitkommaberechnungen durchführen und gleichzeitig die Einhaltung der für diese Berechnungen geltenden Regeln gewährleisten, wie sie beispielsweise in den Gleitkommanormen des Institute of Electrical and Electronics Engineers (IEEE) festgelegt sind.
  • Die Konfiguration und das Training eines Modells für maschinelles Lernen wie z.B. neuronale Deep-Learning-Netze, auch tiefe neuronale Netze (Deep Neural Networks, DNN) genannt, sind oft rechenintensiv. Jede Iteration bzw. jeder Zyklus des Trainings eines DNN kann viele Gleitkommaberechnungen erfordern. Wenn ein DNN beispielsweise eine große Anzahl von Knoten enthält, steigt die Anzahl der Gleitkommaberechnungen, die zum Trainieren des DNN erforderlich sind, exponentiell mit der Anzahl der Knoten. Darüber hinaus können die verschiedenen Gleitkommaberechnungen, die beim DNN-Training verwendet werden, unterschiedliche Genauigkeitsanforderungen haben.
  • Maschinelles Lernen betreffende Arbeitslasten sind tendenziell auch sehr rechenintensiv. Die Trainingsalgorithmen für gängige Deep-Learning-Benchmarks benötigen beispielsweise oft Wochen, um zu konvergieren, wenn Systeme verwendet werden, die mehrere Prozessoren aufweisen. Spezialisierte Beschleuniger, die eine hohe Durchsatzdichte für Gleitkommaberechnungen bieten können, sowohl in Bezug auf die Fläche (Rechendurchsatz pro Quadratmillimeter Prozessorraum) als auch auf die Leistung (Rechendurchsatz pro umgesetztem Watt elektrischer Leistung), sind kritische Maßzahlen für zukünftige Deep-Learning-Systeme.
  • KURZDARSTELLUNG
  • Ausführungsformen der Erfindung stellen Methoden zum Trainieren und Folgern eines neuronalen Netzes unter Verwendung von Hardware-Schalttechnik bereit.
  • In einer Ausführungsform enthält eine Vorrichtung Schalttechnik für ein neuronales Netz. Die Schalttechnik ist so konfiguriert, dass sie eine erste Gewichtung mit einem ersten Format, das eine erste Anzahl von Bits enthält, zumindest teilweise auf Grundlage einer zweiten Gewichtung mit einem zweiten Format, das eine zweite Anzahl von Bits enthält, und eines Rests mit einem dritten Format, das eine dritte Anzahl von Bits enthält, erzeugt. Die zweite Anzahl von Bits und die dritte Anzahl von Bits sind jeweils kleiner als die erste Anzahl von Bits. Die Schalttechnik ist ferner so konfiguriert, dass sie die zweite Gewichtung zumindest teilweise auf Grundlage der ersten Gewichtung aktualisiert und den Rest zumindest teilweise auf Grundlage der aktualisierten zweiten Gewichtung und der ersten Gewichtung aktualisiert. Die Schalttechnik ist ferner so konfiguriert, dass sie die erste Gewichtung zumindest teilweise auf Grundlage der aktualisierten zweiten Gewichtung und des aktualisierten Rests aktualisiert.
  • In einer weiteren Ausführungsform umfasst ein Verfahren Erzeugen einer ersten Gewichtung mit einem ersten Format, das eine erste Anzahl von Bits enthält, zumindest teilweise auf Grundlage einer zweiten Gewichtung mit einem zweiten Format, das eine zweite Anzahl von Bits enthält, und eines Rests mit einem dritten Format, das eine dritte Anzahl von Bits enthält. Die zweite Anzahl von Bits und die dritte Anzahl von Bits sind jeweils kleiner als die erste Anzahl von Bits. Das Verfahren umfasst ferner Aktualisieren der zweiten Gewichtung zumindest teilweise auf Grundlage der ersten Gewichtung, Aktualisieren des Rests zumindest teilweise auf Grundlage der aktualisierten zweiten Gewichtung und der ersten Gewichtung und Aktualisieren der ersten Gewichtung zumindest teilweise auf Grundlage der aktualisierten zweiten Gewichtung und des aktualisierten Rests. Das Verfahren wird zumindest teilweise durch Schalttechnik für ein neuronales Netz durchgeführt.
  • In einer weiteren Ausführungsform umfasst eine Vorrichtung mindestens einen Lerner eines Mehrlernersystems, das eine Mehrzahl von Komponenten enthält. Der mindestens eine Lerner ist so konfiguriert, dass er einen Abschnitt eines Gradienten erzeugt und den Abschnitt des Gradienten an mindestens eine andere Komponente des Mehrlernersystems bereitstellt. Der mindestens eine Lerner ist ferner so konfiguriert, dass er zumindest einen Abschnitt einer Gewichtung von der mindestens einen anderen Komponente des Mehrlernersystems erhält und den Abschnitt des Gradienten zumindest teilweise auf Grundlage des zumindest erhaltenen Abschnitts der Gewichtung aktualisiert.
  • Diese und weitere Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung werden aus der nachstehenden ausführlichen Beschreibung veranschaulichender Ausführungsformen ersichtlich, die in Zusammenschau mit den begleitenden Zeichnungen zu lesen ist.
  • Figurenliste
    • 1 zeigt Schalttechnik einer Vorrichtung, die zum Durchführen eines Gewichtungsaktualisierungsablaufs eines neuronalen Netzes konfiguriert ist, gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung.
    • 2 zeigt ein beispielhaftes Mehrlernersystem gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung.
    • 3 zeigt ein weiteres beispielhaftes Mehrlernersystem, das einen Parameterserver aufweist und die Übertragung von Teilgradienten von den Lernern an den Parameterserver veranschaulicht, gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung.
    • 4 zeigt das beispielhafte Mehrlernersystem aus 3, das die Übertragung von Gewichtungen vom Parameterserver an die Lerner veranschaulicht, gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung.
    • 5 zeigt ein weiteres beispielhaftes Mehrlernersystem, das eine Ringkonfiguration aufweist und die Übertragung von Teilgradienten zwischen den Lernern veranschaulicht, gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung.
    • 6 zeigt das beispielhafte Mehrlernersystem aus 5, das die Übertragung von Abschnitten von Gewichtungen zwischen den Lernern veranschaulicht, gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung.
    • 7 zeigt zwei beispielhafte Lerner eines Mehrlernersystems, die Puffer mit Gradienten aufweisen, gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung.
    • 8 zeigt die beiden beispielhaften Lerner aus 7, deren jeweilige Gradienten in Chunks (Datenblöcke) unterteilt sind, gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung.
    • 9 zeigt die beiden beispielhaften Lerner aus 8, wobei jeweilige Chunks zwischen den beiden beispielhaften Lernern übertragen werden, gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung.
    • 10 zeigt die beiden beispielhaften Lerner aus 9, wobei die übertragenen Chunks mit den entsprechenden bestehenden Chunks summiert werden, gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung.
    • 11 zeigt die beiden beispielhaften Lerner aus 10 mit auf Grundlage der summierten Chunks erzeugten entsprechenden Gewichtungen gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung.
    • 12 zeigt die beiden beispielhaften Lerner aus 11 mit veranschaulichter Übertragung der entsprechenden Gewichtungen zwischen den beispielhaften Lernern gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung.
    • 13 zeigt ein Computersystem, gemäß dem eine oder mehrere Komponenten/Schritte erfindungsgemäßer Methoden implementiert werden können, gemäß einer beispielhaften Ausführungsform der Erfindung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Veranschaulichende Ausführungsformen der Erfindung können vorliegend im Kontext veranschaulichender Verfahren, Systeme und Einheiten zum Trainieren eines Modells für maschinelles Lernen, z.B. eines DNN, beschrieben sein. Es versteht sich jedoch, dass Ausführungsformen der Erfindung nicht auf die veranschaulichenden Verfahren, Systeme und Einheiten beschränkt sind, sondern in breiterem Umfang auch auf andere geeignete Verfahren, Systeme und Einheiten anwendbar sind.
  • Eine FPU verfügt üblicherweise über eine feste Bitbreite in Bezug auf die Anzahl an Binärbits, die zur Darstellung einer Zahl in einem Gleitkommaformat (im Folgenden als „Format“ oder „Gleitkommaformat“ bezeichnet) verwendet werden können. Einige beispielhaften FPU-Bitbreitenformate umfassen 8-Bit- (FP8-), 16-Bit- (FP16-), 32-Bit- (FP32-), 64-Bit- (FP64-) und 128-Bit- (FP128-) Formate.
  • Je größer das Bitbreitenformat einer FPU ist, desto komplexer und größer ist üblicherweise die FPU in Bezug auf die physische Größe der Halbleiter-Schalttechnik. Zudem steigt mit zunehmender Größe und Komplexität der FPU auch der Stromverbrauch und die Zeit, die zum Erzeugen einer Ausgabe für eine Gleitkommaberechnung benötigt wird.
  • Die Verwendung eines Formats mit großer Bitbreite wie z.B. FP64 führt zudem zu einer erhöhten Latenz in der FPU für Lese- und Aktualisierungsvorgänge sowie zu zusätzlichen Speicher- und Bandbreitenanforderungen sowohl in als auch außerhalb der FPU. Viele dieser Probleme können durch die Verwendung eines Formats mit geringerer Bitbreite wie z.B. FP32 sowohl für die Speicherung als auch für die Verwendung während eines Trainings und Folgerns um den Preis einer reduzierten Genauigkeit abgeschwächt werden.
  • In veranschaulichenden Ausführungsformen können die vorstehenden Probleme durch Zerlegen hochgenauer Gleitkommaparameter in zwei getrennte Komponenten, nämlich quantisierte Gewichtungen mit geringer Genauigkeit und Rundungsreste, weiter abgeschwächt werden. Zudem wird eine Skalierungsmethode offenbart, die das Auftreten eines Restüberlaufs verhindert, und es wird Lerner-Schalttechnik offenbart, die einen Prozess für Quantisierung, Rundungsrestberechnung und Gewichtungsaktualisierungen unter Verwendung der quantisierten Gewichtungen mit geringer Genauigkeit und der Rundungsreste implementiert. Schließlich wird ein Protokoll für mehrere Lerner offenbart, das die offenbarten quantisierten Gewichtungen mit geringer Genauigkeit, Rundungsreste, Prozesse und Lerner-Schalttechnik nutzt, um Speicherplatz und Bandbreitennutzung während Gewichtungslese- und -aktualisierungsvorgängen zu minimieren.
  • Ein Gewichtungsaktualisierungsablauf gemäß einer veranschaulichenden Ausführungsform wird nun unter Bezugnahme auf 1 und die nachstehenden Gleichungen (1) bis (5) beschrieben.
  • Gemäß 1 weist Lerner-Schalttechnik 100 eine Multiplikations- und Additionseinheit 102, eine Quantisierungseinheit 104, eine Subtraktionseinheit 106 und eine Quantisierungseinheit 108 auf. In einigen Ausführungsformen kann die Lerner-Schalttechnik 100 zudem eine Aufwärtsskalierungseinheit 110 und eine Abwärtsskalierungseinheit 112 aufweisen. Die Aufwärtsskalierungseinheit 108 und die Abwärtsskalierungseinheit 110 sind mit gestrichelten Linien dargestellt, um anzuzeigen, dass sie optional sind. Auch wenn die Einheiten 102 bis 108 als Einzeleinheiten beschrieben sind, kann in einigen Ausführungsformen jede Einheit 102 bis 108 mehrere Einheiten aufweisen.
  • Die Multiplikations- und Additionseinheit 102 ist so konfiguriert, dass sie als anfängliche Eingaben quantisierte Gewichtungsgradienten (Wgrad), Lernraten (Ir), quantisierte Reste (Resq) aus einer vorherigen Iteration, quantisierte Gewichtungen (Wq) aus der vorherigen Iteration und andere ähnliche Parameter empfängt und als Ausgabe genaue Gewichtungen Wp erzeugt. Beispielsweise können in einigen Ausführungsformen die quantisierten Gewichtungsgradienten Wgrad, die quantisierten Reste Resq und die quantisierten Gewichtungen Wq jeweils ein FP8-Format haben, während die genauen Gewichtungen Wp ein FP16-, FP32-, FP64- oder ein ähnliches hochgenaues Format haben können.
  • Gemäß Gleichung (1) wird vor einer ersten Iteration der quantisierte Rest Resq zunächst auf einen Wert von 0 gesetzt. R e s q = 0
    Figure DE112020003600T5_0001
  • Während jeder Iteration des Gewichtungsaktualisierungsablaufs wird von der Multiplikations- und Additionseinheit 102 eine genaue Gewichtung Wp gemäß der folgenden Gleichung (2) berechnet: W p = W q = l r × W g r a d + R e s q
    Figure DE112020003600T5_0002
  • Dabei ist Wp die genaue Gewichtung, Wq die quantisierte Gewichtung, Ir die Lernrate, Wgrad der quantisierte Gewichtungsgradient und Resq der quantisierte Rest.
  • Wenn beispielsweise Wq einen Anfangswert von 5,1015625 und Ir×Wgrad einen Wert von -0,03125 bei einer Ir von 2,0 und einem Wgrad von -0,015625 hat, wird aus Gleichung (2) Wp = 5,1015625 - (-0,03125) + 0. Die Multiplikations- und Additionseinheit 102 errechnet die genaue Gewichtung Wp als 5,1328125. In veranschaulichenden Ausführungsformen haben die quantisierten Eingaben, z.B. Wq, Wgrad und Resq, ein Format mit geringerer Genauigkeit, z.B. ein FP8-Format, während die genaue Ausgabe, z.B. Wp, ein Format mit höherer Genauigkeit hat, z.B. FP16, FP32 oder FP64. In einer veranschaulichenden Ausführungsform haben die quantisierten Eingaben das FP8-Format und die genaue Ausgabe das FP32-Format. Die genaue Gewichtung Wp wird sowohl der Quantisierungseinheit 104 als auch der Subtraktionseinheit 106 bereitgestellt.
  • Die Quantisierungseinheit 104 aktualisiert den Wert der quantisierten Gewichtung Wq gemäß der folgenden Gleichung (3): W q = Q w ( W p )
    Figure DE112020003600T5_0003
  • Dabei ist Qw() eine Quantisierungsfunktion wie z.B. Abschneiden, nächstliegende Rundung, stochastische Rundung oder andere übliche Quantisierungsfunktionen. Zum Beispiel kann die genaue Gewichtung Wp von dem Gleitkommaformat höherer Genauigkeit, in der veranschaulichenden Ausführungsform beispielsweise FP32, in ein Gleitkommaformat geringerer Genauigkeit, in der veranschaulichenden Ausführungsform beispielsweise FP8, quantisiert werden. Im vorstehenden Beispiel wird aus Gleichung (3) Wq = Qw(5,1328125). Abhängig von der gewählten Quantisierungsfunktion und dem Zielformat kann die aktualisierte quantisierte Gewichtung Wq in einem Beispiel als 5,0 berechnet werden. Die quantisierte Gewichtung Wq wird sowohl der Subtraktionseinheit 106 zur Verwendung während der aktuellen Iteration als auch der Multiplikations- und Additionseinheit 102 zur Verwendung während der nächsten Iteration bereitgestellt.
  • Die Subtraktionseinheit 106 aktualisiert den Wert des genauen Rests Resp gemäß nachstehender Gleichung (4): R e s q = W p W q
    Figure DE112020003600T5_0004
  • In Gleichung (4) ist Wp die von der Multiplikations- und Additionseinheit 102 bereitgestellte aktualisierte Gewichtung mit hoher Genauigkeit und Wq die von der Quantisierungseinheit 104 bereitgestellte quantisierte Gewichtung mit geringer Genauigkeit. Im vorstehenden Beispiel gilt Resp = 5,1328125 - 5,0. Die Subtraktionseinheit 106 errechnet den genauen Rest Resp als 0,1328125. In der veranschaulichenden Ausführungsform gibt die Subtraktionseinheit 106 den genauen Rest Resp im FP32-Format aus. In anderen Ausführungsformen kann die Subtraktionseinheit 106 den genauen Rest Resp in anderen Gleitkommaformaten wie z.B. FP64 oder FP16 ausgeben. Der genaue Rest Resp wird der Quantisierungseinheit 108 bereitgestellt.
  • Die Quantisierungseinheit 108 aktualisiert den quantisierten Rest Resq gemäß der nachstehenden Gleichung (5): R e s q = Q R ( R e s p )
    Figure DE112020003600T5_0005
  • Dabei ist QR() eine Quantisierungsfunktion wie z.B. Abschneiden, nächstliegende Rundung, stochastische Rundung oder andere übliche Quantisierungsfunktionen. Zum Beispiel kann die Quantisierungseinheit 108 den genauen Rest Resp von einem Gleitkommaformat höherer Genauigkeit wie z.B. FP32 in einen quantisierten Rest Resq mit einem Gleitkommaformat geringerer Genauigkeit wie z.B. FP16 oder FP8 quantisieren. In der veranschaulichenden Ausführungsform quantisiert die Quantisierungseinheit 108 den FP32-genauen Rest Resp in einen FP16-quantisierten Rest Resq. Im vorstehenden Beispiel wird aus Gleichung (5) Resq = QR(0,1328125). Je nach gewählter Quantisierungsfunktion berechnet die Quantisierungseinheit 108 in einem Beispiel den quantisierten Rest Resq als 0,140625. Der quantisierte Rest Resq wird der Multiplikations- und Additionseinheit 102 von der Quantisierungseinheit 108 zur Verwendung während der nächsten Iteration bereitgestellt.
  • In Fortführung des Beispiels betragen zu Beginn einer zweiten Iteration die quantisierte Gewichtung Wq = 5,0 (der aktualisierte Wq-Wert aus der vorstehenden Iteration), Ir×Wgrad = 0,05078125 bei einer Ir von 2,0 und einem Wgrad von 0,025390625 und der quantisierte Rest Resq = 0,140625. Die Multiplikations- und Additionseinheit 102 berechnet die genaue Gewichtung Wp gemäß Gleichung (2) als Wp = 5,0 - 0,05078125 + 0,140625 = 5,08984375 und liefert die aktualisierte genaue Gewichtung Wp an die Quantisierungseinheit 104 und die Subtraktionseinheit 106. Die Quantisierungseinheit 104 berechnet die quantisierte Gewichtung Wq gemäß Gleichung (3) als Wq = Qw(5,08984375) = 5,0 und liefert die quantisierte Gewichtung Wq sowohl an die Multiplikations- und Additionseinheit 102 zur Verwendung in der nächsten Iteration als auch an die Subtraktionseinheit 104 zur Verwendung in der aktuellen Iteration. Die Subtraktionseinheit 104 berechnet den genauen Rest Resp gemäß Gleichung (4) als Resp = 5,08984375 - 5 = 0,08984375 und liefert den genauen Rest Resp an die Quantisierungseinheit 108. Die Quantisierungseinheit 108 berechnet den quantisierten Rest Resq gemäß Gleichung (5) als Resq = QR(0,08984375) = 0,09375 und liefert den quantisierten Rest Resq an die Multiplikations- und Additionseinheit 102 zur Verwendung in der nächsten Iteration. Der Prozess kann dann für jede Iteration wiederholt werden, wobei die aktualisierten Werte für die quantisierte Gewichtung Wq und den quantisierten Rest Resq als Eingaben in der nächsten Iteration verwendet werden.
  • Wenn die Reste aggressiv quantisiert werden, z.B. in ein Format mit geringer Genauigkeit wie ein FP8-Format mit 4 oder 5 Exponentenbits, kann in einigen Fällen der Bereich zu begrenzt sein, um kleine Werte darzustellen. In einer veranschaulichenden Ausführungsform wird der Rest vor der Quantisierung um ein Verhältnis hochskaliert und in der nächsten Iteration vor der Verwendung wieder herabskaliert. Der Maßstab kann beispielsweise durch die Funktion f(qmin/pmin, qmax/pmax) gewählt werden, wobei pmin die kleinste Zahl ist, die quantisiert werden kann, qmin die kleinste Zahl ist, die das Format geringer Genauigkeit darstellen kann, pmax die größte Zahl ist, die quantisiert werden kann, und qmax die größte Zahl ist, die das Format geringer Genauigkeit darstellen kann. Die Funktion f() stellt ein Gleichgewicht zwischen Überlauf und Unterlauf dar. Wenn beispielsweise die Funktion f() eine min()-Funktion ist, wird ein Skalierungsfaktor gewählt, der klein genug ist, um einen Überlauf zu vermeiden, z.B. pmax×Maßstab< qmax.
  • Wenn Skalierung auf die Reste angewendet wird, sind die Aufwärtsskalierungseinheit 110 und die Abwärtsskalierungseinheit 112 zu der Lerner-Schalttechnik 100 hinzugefügt, wie in 1 gezeigt.
  • Wenn vorhanden, ist die Aufwärtsskalierungseinheit 110 im Gewichtungsaktualisierungsablauf zwischen der Subtraktionseinheit 106 und der Quantisierungseinheit 108 angeordnet und führt an dem von der Subtraktionseinheit 106 ausgegebenen genauen Rest Resp gemäß nachstehender Gleichung (6) eine Aufwärtsskalierungsoperation durch, um den genauen Rest Resp hochzuskalieren. R e s p = R e s p × s c a l e
    Figure DE112020003600T5_0006
  • Der hochskalierte genaue Rest Resp wird dann anstatt des aus der Subtraktionseinheit 106 ausgegebenen ursprünglichen Resp als Eingabe für die Quantisierungseinheit 108 verwendet. Die Quantisierungseinheit 108 erzeugt gemäß Gleichung (5) einen hochskalierten quantisierten Rest Resq, der an die Abwärtsskalierungseinheit 112 ausgegeben wird.
  • Wenn vorhanden, ist die Abwärtsskalierungseinheit 112 im Gewichtungsaktualisierungsablauf zwischen der Quantisierungseinheit 108 und der Multiplikations- und Additionseinheit 102 angeordnet und führt an dem aus der Quantisierungseinheit 108 ausgegebenen hochskalierten quantisierten Rest Resq gemäß nachstehender Gleichung (7) eine Abwärtsskalierungsoperation aus, um den quantisierten Rest Resq herabzuskalieren. R e s q = R e s q s c a l e
    Figure DE112020003600T5_0007
  • Der von der Abwärtsskalierungseinheit 112 ausgegebene quantisierte Rest Resq wird von der Abwärtsskalierungseinheit 112 an die Multiplizier- und Addiereinheit 102 bereitgestellt, und die nächste Iteration fährt fort wie üblich, wobei die Multiplizier- und Addiereinheit 102 die genaue Gewichtung Wp gemäß Gleichung (2) unter Verwendung des von der Abwärtsskalierungseinheit 112 empfangenen quantisierten Resq berechnet.
  • Der Vorteil des Durchführens von Skalierung wird in den beiden nachfolgenden Beispielszenarien aufgezeigt.
  • Im ersten Beispielszenario wird keine Skalierung verwendet, z.B. mit einem Maßstab von 1. Die Multiplikations- und Additionseinheit 102 erhält eine eingegebene quantisierte Gewichtung Wq von 0,5, einen eingegebenen Resq von 0,0 und ein eingegebenes Ir×Wgrad von 1,52587890625E-5. Die Multiplikations- und Additionseinheit 102 verwendet Gleichung (2), um eine genaue Gewichtung Wp von 0,5000152587890625 zu berechnen. Die Quantisierungseinheit 104 verwendet Gleichung (3), um eine quantisierte Gewichtung Wq von 0,5 zu berechnen. Die Subtraktionseinheit 106 verwendet Gleichung (4), um einen genauen Rest Resp von 1,52587890625E-5 zu berechnen, und liefert den berechneten genauen Rest Resp an die Aufwärtsskalierungseinheit 110.
  • Die Aufwärtsskalierungseinheit 110 verwendet Gleichung (6), um den hochskalierten genauen Rest Resp als Resp = 1,52587890625E-5 × 1 = 1,52587890625E-5 zu berechnen, d.h. keine Änderung gegenüber dem von der Subtraktionseinheit 106 berechneten genauen Rest Resp, da keine Skalierung verwendet wird. Der hochskalierte genaue Rest Resp wird an die Quantisierungseinheit 108 bereitgestellt, die anhand von Gleichung (5) einen hochskalierten quantisierten Rest Resq von 0,0 berechnet. Der hochskalierte quantisierte Rest Resq wird an die Abwärtsskalierungseinheit 112 bereitgestellt, die unter Verwendung von Gleichung (7) den quantisierten Rest Resq als Resq = 0,0 / 1,0 = 0 herabskaliert. Der herabskalierte quantisierte Rest Resq von 0,0 wird der Multiplikations- und Additionseinheit 102 als Eingabe für die nächste Iteration bereitgestellt.
  • In der nächsten Iteration erhält die Multiplikations- und Additionseinheit 102 die quantisierte Gewichtung Wq von 0,5 aus der vorherigen Iteration, einen eingegebenen herabskalierten Resq von 0,0 und ein eingegebenes Ir×Wgrad von 4,57763671875E-5. Die Multiplikations- und Additionseinheit 102 verwendet Gleichung (2), um eine genaue Gewichtung Wp von 0,5000457763671875 zu berechnen. Die Quantisierungseinheit 104 verwendet Gleichung (3), um eine quantisierte Gewichtung Wq von 0,5 zu berechnen. Die Subtraktionseinheit 106 verwendet Gleichung (4), um einen genauen Rest Resp von 4.57763671875E-5 zu berechnen, und liefert den berechneten genauen Rest Resp an die Aufwärtsskalierungseinheit 110.
  • Die Aufwärtsskalierungseinheit 110 verwendet Gleichung (6) zur Berechnung des hochskalierten genauen Rests Resp als Resp = 4,57763671875E-5 x 1 = 4,57763671875E-5. Der hochskalierte genaue Rest Resp von 4.57763671875E-5 wird an die Quantisierungseinheit 108 bereitgestellt, die anhand von Gleichung (5) einen hochskalierten quantisierten Rest Resq von 0,0 berechnet. Der hochskalierte quantisierte Rest Resq von 0,0 wird an die Abwärtsskalierungseinheit 112 bereitgestellt, die unter Verwendung von Gleichung (7) den quantisierten Rest Resq als Resq = 0,0/1 = 0,0 herabskaliert. Der herabskalierte quantisierte Rest Resq von 0,0 wird der Multiplikations- und Additionseinheit 102 als Eingabe für die nächste Iteration bereitgestellt.
  • Wie aus dem vorstehenden Beispielszenario ersichtlich, wird der quantisierte Rest Resq 0,0, wenn keine Skalierung für den Rest verwendet wird und der genaue Rest Resp sehr klein ist, z.B. kleiner als der Mindestwert, den das Gleitkommaformat der Quantisierung verarbeiten kann, und es erfolgt kein Übertrag von Rest-Informationen an die nachfolgenden Iterationen.
  • Im zweiten Beispielszenario wird Skalierung verwendet, z.B. mit einem Maßstab von 28 = 256. Die Multiplikations- und Additionseinheit 102 erhält eine eingegebene quantisierte Gewichtung Wq von 0,5, einen eingegebenen Resq von 0,0 und ein eingegebenes Ir×Wgrad von 1,52587890625E-5. Die Multiplikations- und Additionseinheit 102 verwendet Gleichung (2), um eine genaue Gewichtung Wp von 0,5000152587890625 zu berechnen. Die Quantisierungseinheit 104 verwendet Gleichung (3), um eine quantisierte Gewichtung Wq von 0,5 zu berechnen. Die Subtraktionseinheit 106 verwendet Gleichung (4), um einen genauen Rest Resp von 1.52587890625E-5 zu berechnen, und liefert den berechneten genauen Rest Resp an die Aufwärtsskalierungseinheit 110.
  • Die Aufwärtsskalierungseinheit 110 verwendet Gleichung (6) zur Berechnung des hochskalierten genauen Rests Resp als Resp = 1,52587890625E-5 × 256 = 0,00390625. Der hochskalierte genaue Rest Resp von 0,00390625 wird an die Quantisierungseinheit 108 bereitgestellt, die anhand von Gleichung (5) einen hochskalierten quantisierten Rest Resq von 0,00390625 berechnet. Der hochskalierte quantisierte Rest Resq von 0,00390625 wird an die Abwärtsskalierungseinheit 112 bereitgestellt, die unter Verwendung von Gleichung (7) den quantisierten Rest Resq als Resq = 0,00390625 / 256 = 1,52587890625E-5 herabskaliert. Der herabskalierte quantisierte Rest Resq von 1,52587890625E-5 wird der Multiplikations- und Additionseinheit 102 als Eingabe für die nächste Iteration bereitgestellt.
  • In der nächsten Iteration erhält die Multiplikations- und Additionseinheit 102 die quantisierte Gewichtung Wq von 0,5 aus der vorherigen Iteration, einen eingegebenen herabskalierten Resq von 1,52587890625E -5 und ein eingegebenes Ir×Wgrad von 4,57763671875E-5. Die Multiplikations- und Additionseinheit 102 verwendet Gleichung (2), um eine genaue Gewichtung Wp von 0,50006103515625 zu berechnen. Die Quantisierungseinheit 104 verwendet Gleichung (3), um eine quantisierte Gewichtung Wq von 0,5 zu berechnen. Die Subtraktionseinheit 106 verwendet Gleichung (4), um einen genauen Rest Resp von 6,103515625E-5 zu berechnen, und liefert den berechneten genauen Rest Resp an die Aufwärtsskalierungseinheit 110.
  • Die Aufwärtsskalierungseinheit 110 verwendet Gleichung (6) zur Berechnung des hochskalierten genauen Rests Resp als Resp = 6,103515625E-5 × 256 = 0,015625. Der hochskalierte genaue Rest Resp von 0,015625 wird an die Quantisierungseinheit 108 bereitgestellt, die anhand von Gleichung (5) einen hochskalierten quantisierten Rest Resq von 0,015625 berechnet. Der hochskalierte quantisierte Rest Resq von 0,015625 wird an die Abwärtsskalierungseinheit 112 bereitgestellt, die unter Verwendung von Gleichung (7) den quantisierten Rest Resq als Resq = 0,015625 / 256 = 6,103515625E-5 herabskaliert. Der herabskalierte quantisierte Rest Resq von 6,103515625E-5 wird der Multiplikations- und Additionseinheit 102 als Eingabe für die nächste Iteration bereitgestellt.
  • Wie aus dem zweiten Beispielszenario ersichtlich, wird der quantisierte Rest Resq, der von der ersten Iteration zur zweiten Iteration übertragen wird, zu 1,52587890625E-5 anstatt zu 0,0, wie es im Beispielszenario 1 der Fall war, wenn Skalierung auf den Rest angewendet wird und der genaue Rest Resp sehr klein ist, z.B. kleiner als der Mindestwert, den das Gleitkommaformat der Quantisierung verarbeiten kann. Durch Hochskalieren des genauen Rests Resq, der ein Gleitkommaformat hoher Genauigkeit wie z.B. FP32 hat, vor der Quantisierung auf den quantisierten Rest Resq, der ein Gleitkommaformat geringer Genauigkeit wie z.B. FP8 oder FP16 hat, können kleinere Reste, die sonst bei der Quantisierung verloren gegangen wären, zur Verwendung in der nächsten Iteration erfasst werden. Beispielsweise werden, wie in der zweiten Iteration zu sehen, die Reste weitergetragen und weiter akkumuliert. Es ist zu beachten, dass in einigen Ausführungsformen der Wert von Ir×Wgrad effektiv erfasst und im quantisierten Rest Resq akkumuliert wird.
  • In veranschaulichenden Ausführungsformen können die quantisierten Ausgaben der Gewichtungen, Reste, Dynamik und anderen Parameter, die zur Verwendung in nachfolgenden Iterationen gespeichert werden, gemäß den folgenden Formaten optimiert werden. Dynamik ist ein optionaler Parameter in einem SGD-Optimierer zur Aktualisierung der Gewichtung. Dynamik wird auf Grundlage der Dynamik der vorherigen Iteration und des Gradienten der aktuellen Iteration berechnet. Zum Beispiel kann die Dynamik für jede Iteration gemäß den Gleichungen (8)-(10) wie folgt berechnet werden: ν p = β ν q + l r × W g r a d
    Figure DE112020003600T5_0008
    W p = W q ν p + R e s q
    Figure DE112020003600T5_0009
    ν q = Q ( ν p )
    Figure DE112020003600T5_0010

    wobei
    vp die genaue Dynamik ist;
    vq die quantisierte Dynamik aus der vorherigen Iteration ist;
    β eine Konstante ist, die kleiner als 1 ist, z.B. 0,9; und
  • QR(vp) eine Quantisierungsfunktion von vp wie z.B. Abschneiden, nächstliegende Rundung, stochastische Rundung oder andere übliche Quantisierungsfunktionen ist. Zum Beispiel kann eine Quantisierungseinheit wie die vorstehend beschriebenen die genaue Dynamik vp von einem Gleitkommaformat höherer Genauigkeit wie z.B. FP32 in eine quantisierte Dynamik vq mit einem Gleitkommaformat geringerer Genauigkeit wie z.B. FP16 oder FP8 quantisieren. Die quantisierte Dynamik vq wird während der nächsten Iteration genutzt.
  • Für die quantisierte Gewichtung Wq kann in einer beispielhaften Ausführungsform ein FP8-Format verwendet werden, das ein Vorzeichenbit, vier Exponentenbits und drei Mantissenbits aufweist, d.h. eine (1, 4, 3)-Konfiguration. Die (1, 4, 3)-Konfiguration zeigt gute Leistung für verschiedene Deep-Learning-Aufgaben und verbessert die Leistung gegenüber Formaten mit höherer Genauigkeit wie FP16, FP32 usw., wenn sie für die quantisierte Gewichtung Wq verwendet wird. In anderen Ausführungsformen können auch andere FP8-Formate für die quantisierte Gewichtung Wq verwendet werden, darunter beispielsweise ein (1, 5, 2)-Format, eine (1, 6, 1)-Formation oder ein anderes FP8-Format. In einigen Ausführungsformen kann alternativ ein FP16- oder ein anderes Format mit höherer Genauigkeit für die quantisierte Gewichtung Wq verwendet werden.
  • Für den quantisierten Rest Resq kann in einer beispielhaften Ausführungsform ein FP16-Format verwendet werden, das ein Vorzeichenbit, sechs Exponentenbits und neun Mantissenbits aufweist, d.h. eine (1, 6, 9)-Konfiguration. Die (1, 6, 9)-Konfiguration ermöglicht es dem quantisierten Rest Resq, Rest-Informationen zu speichern, die nicht durch die quantisierte Gewichtung Wq im FP8-Format erfasst werden. In anderen Ausführungsformen können auch andere FP16-Formate für den quantisierten Rest Resq verwendet werden. In einigen Ausführungsformen kann ein Format mit geringerer Genauigkeit, z.B. ein FP8-Format, für den quantisierten Rest Resq verwendet werden. In einigen Ausführungsformen kann alternativ ein FP32- oder ein anderes Format mit höherer Genauigkeit für den quantisierten Rest Resq verwendet werden.
  • In einigen Ausführungsformen kann das Quantisierungsformat für die Dynamik und andere Zwischenparameter auch das gleiche Format wie der quantisierte Rest Resq verwenden, z.B. das FP16-Format in der (1, 6, 9)-Konfiguration oder eines der anderen vorstehend genannten Formate. In anderen Ausführungsformen kann das Quantisierungsformat für die Dynamik oder andere Zwischenparameter ein anderes Format verwenden als den quantisierten Rest Resq.
  • Durch Zerlegen hochgenauer Parameter wie beispielsweise genauer Gewichtungen Wp in quantisierte Gewichtungen Wq und quantisierte Reste Resq zur Verwendung in nachfolgenden Iterationen reduziert die Lerner-Schalttechnik 100 die Anzahl zu speichernder Bits im Vergleich zum Speichern der vollständigen hochgenauen Parameter, die normalerweise für Operationen in neuronalen Netzen verwendet werden. Während beispielsweise eine genaue Gewichtung Wp im hochgenauen FP32-Format mit einer Genauigkeit von 32 Bits zur Verwendung in der nächsten Iteration gespeichert wird, wird in veranschaulichenden Ausführungsformen die genaue Gewichtung Wp in zwei Komponenten umgewandelt, nämlich eine quantisierte Gewichtung Wq mit 8 Bits und einen quantisierten Rest Resq mit 16 Bits, was nur eine Speicherung von 24 Bits erfordert.
  • Zusätzliche Effizienz kann durch Verwendung eines Mehrlernersystems erzielt werden. In einem Mehrlernersystem führt jeder Lerner für eine bestimmte Iteration einen Abschnitt oder Bruchteil einer Gewichtungsaktualisierung durch. Gemäß 2 ist beispielsweise in einer veranschaulichenden Ausführungsform ein beispielhaftes Mehrlernersystem 200 veranschaulicht. Das Mehrlernersystem weist die Lerner 2021, 2022, . .. 202N auf. Jeder Lerner 202 in dem Mehrlernersystem 200 weist zumindest einen Abschnitt einer Lerner-Schalttechnik 100 auf. In einigen Ausführungsformen weisen einer oder mehrere der Lerner 202 einen Datenverarbeitungsknoten 1310 auf, dessen Komponenten nachstehend unter Bezugnahme auf 13 näher beschrieben werden.
  • Jeder Lerner 202 weist jeweilige Gewichtungsaktualisierungsinformationseinträge 2041-1, 2041-2, ... 2041-N, 2042-1, 2042-2, . .. 2042-N ... 204N-1, 204N-2, ... 204N-N auf, die jeweils einem Abschnitt der Gewichtungsgradienten, der Reste und der Dynamik für das neuronale Netz entsprechen. Jeder Eintrag 204 entspricht dem Abschnitt der Gewichtungsaktualisierungsinformationen, der von einem der Lerner 202 erzeugt wurde. Zum Beispiel entspricht der Eintrag 2041-1 dem Abschnitt der Gewichtungsaktualisierungsinformationen, der vom Lerner 2021 erzeugt wurde, der Eintrag 2042-2 entspricht den partiellen Gewichtungsaktualisierungsinformationen, die vom Lerner 2022 erzeugt wurden, ... und der Eintrag 204N-N entspricht dem Abschnitt der Gewichtungsaktualisierungsinformationen, die vom Lerner 202N erzeugt wurden.
  • In einigen Ausführungsformen kann ein bestimmter Lerner 202 Gewichtungsaktualisierungsinformationen für mehr als einen Abschnitt der Gewichtungsaktualisierungseinträge 204 erzeugen. In einigen Ausführungsformen kann der jedem Eintrag entsprechende Abschnitt der Gewichtungsgradienten, Reste und Dynamik einen Abschnitt der Gewichtungsgradienten, Reste und Dynamik einer oder mehrerer Schichten und in einigen Ausführungsformen jeder Schicht aufweisen. In einigen Ausführungsformen kann zum Beispiel ein bestimmter Lerner 202 das Berechnen der Informationen zur Gewichtungsaktualisierungsinformationen übernehmen, die mit demselben Abschnitt der Gewichtungsgradienten, Reste und Dynamik verbunden sind, die in jeder der Schichten des neuronalen Netzes gefunden wurden.
  • In einigen Ausführungsformen erhält oder berechnet jeder Lerner 202 nach einer Rückwärtspropagierung einen Abschnitt dw des partiellen reduzierten Gewichtungsgradienten Wgrad und stellt diesen Abschnitt dw jedem anderen Lerner 202 bereit. Der partielle reduzierte Gewichtungsgradient bezieht sich auf einen Abschnitt oder Chunk eines vollständigen reduzierten Gewichtungsgradienten, der von jedem Lerner 202 während der Rückwärtspropagierung berechnet wird. Für jeden Lerner 202 wird mindestens ein Abschnitt dw des partiellen reduzierten Gewichtungsgradienten Wgrad mit demselben Abschnitt partieller reduzierter Wgrad summiert, die von allen anderen Lernern 202 erhalten wurden, um den vollständigen reduzierten Gewichtungsgradienten Wgrad für diesen Abschnitt dw zu bilden, welcher zur Aktualisierung des entsprechenden Abschnitts der Gewichtung verwendet wird.
  • Während der Abschnitt der quantisierten Gewichtung Wq und der Abschnitt dw des Gewichtungsgradienten Wgrad, die von einem gegebenen Lerner 202 unter Verwendung der Lerner-Schalttechnik 100 erzeugt oder berechnet werden, an die anderen Lerner 202 repliziert werden, werden in einigen Ausführungsformen der Abschnitt des quantisierten Rests Resq und andere Parameter wie z.B. Dynamik, die von dem gegebenen Lerner 202 genutzt werden, um den entsprechenden Abschnitt der Gewichtung zu aktualisieren, nicht repliziert und stattdessen lokal auf dem gegebenen Lerner 202 gespeichert. Da beispielsweise der Abschnitt des quantisierten Rests Resq innerhalb der Lerner-Schalttechnik 100 des gegebenen Lerners 202 verwendet wird und von den anderen Lernern 202 zum Berechnen der jeweiligen Abschnitte ihrer quantisierten Gewichtungen Wq nicht benötigt wird, besteht keine Notwendigkeit, den Abschnitt des quantisierten Rests Resq, der von dem gegebenen Lerner 202 verwendet wird, an die anderen Lerner 202 zu replizieren, was die benötigte Bandbreite reduziert.
  • Jeder gegebene Lerner 202 verwendet zumindest einen Abschnitt der Lerner-Schalttechnik 100, um einen Abschnitt der quantisierten Gewichtung Wq zu berechnen, der einer gegebenen Schicht des neuronalen Netzes entspricht. Der Abschnitt der quantisierten Gewichtung Wq wird an jeden anderen Lerner 202 repliziert und im entsprechenden Eintrag 204 für diese gegebene Schicht gespeichert. Die von jedem der Lerner 202 erhaltenen Abschnitte der quantisierten Gewichtung Wq werden kombiniert, z.B. miteinander verkettet, um die quantisierte Gewichtung Wq zu bilden, die in der nächsten Iteration für alle Lerner verwendet wird.
  • Gemäß 3 und 4 ist in einem weiteren beispielhaften Mehrlernersystem 300 zusätzlich zu den Lernern 3021, 3022, 3023 ... 302N ein Parameterserver 306 enthalten. Das Mehrlernersystem 300 teilt den vorstehend beschriebenen Gewichtungsaktualisierungsablauf zwischen den mehreren Lernern 302 und einem oder mehreren zentralen Parameterservern 304 auf. Zum Beispiel übermitteln die Lerner 302 ihre jeweiligen partiellen reduzierten Gewichtungsgradienten 3041, 3042, 3043 ... 304N an den Parameterserver 306, z.B. im FP16-Format, und der Parameterserver 306 kombiniert, z.B. summiert, die partiellen reduzierten Gewichtungsgradienten 304, um vollständige reduzierte Gewichtungsgradienten zu bilden, und verwendet zumindest einen Abschnitt der Schalttechnik 100, um quantisierte vollständige reduzierte Gewichtungsgradienten und neue quantisierte Gewichtungen 308 zu erzeugen. Wie in 4 zu sehen ist, werden die Reste 310 vom Parameterserver 306 berechnet und lokal gespeichert, während die aktualisierten quantisierten Gewichtungen 3121, 3122, 3123 ... 312N, die in einer beispielhaften Ausführungsform ein FP8-Format haben, den Lernern 302 zur Verwendung in der nächsten Iteration bereitgestellt werden.
  • Wie in 3 und 4 zu sehen ist, reduziert ein Zerlegen einer genauen Gewichtung mit einem Format hoher Genauigkeit, z.B. einem FP32-Format, in eine quantisierte Gewichtung mit einem Format geringerer Genauigkeit, z.B. einem FP8-Format, und einen Rest mit einem Format geringerer Genauigkeit, z.B. einem FP16-Format, in einem Mehrlernersystem 300 mit einem Parameterserver 306 die erforderliche Bandbreitennutzung zwischen den Lernern 302 und dem Parameterserver 306. Beispielsweise muss, anstatt vollständige hochgenaue 32-Bit-Gewichtungen oder andere Parameter zwischen den Lernern 302 und dem Parameterserver 306 zu senden, jeder Lerner 302 nur partielle reduzierte Gewichtungsgradienten 304 mit 16 Bit an den Parameterserver senden. Der Parameterserver 306 führt dann die Berechnungen gemäß zumindest einem Teil der Schalttechnik 100 durch und muss nur die berechneten quantisierten 8-Bit-Gewichtungen an jeden der Lerner 302 senden. Diese deutliche Verringerung der Bandbreite erhöht die Effizienz des Systems.
  • Gemäß 5 und 6 wird in einem weiteren beispielhaften Mehrlernersystem 500 eine ringbasierte Konfiguration genutzt, die keinen Parameterserver enthält. Das Mehrlernersystem 500 weist Lerner 5021, 5022, 5023, ... 502N auf, wobei der Lerner 5021so konfiguriert ist, dass er mit den benachbarten Lernern 502N und 5022 Daten austauscht, der Lerner 5022 so konfiguriert ist, dass er mit den Lernern 5021 und 5023 Daten austauscht, und ringsum so weiter.
  • Das Mehrlernersystem teilt den Gewichtungsaktualisierungsablauf zwischen den mehreren Lernern 502 auf, wobei jeder Lerner 502 separat Berechnungen gemäß zumindest einem Teil der Lerner-Schalttechnik 100 durchführt, um einen jeweiligen partiellen reduzierten Gewichtungsgradienten 5041, 5042, 5043, ... 504N zu ermitteln. In einigen Ausführungsformen haben die partiellen reduzierten Gewichtungsgradienten 504 das FP16-Format. Die Lerner 502 liefern partielle reduzierte Gewichtungsgradienten 504 in Abschnitten an benachbarte Lerner 502, um die partiellen reduzierten Gewichtungsgradienten 504 entlang des Rings zu propagieren. In einigen Ausführungsformen wird zumindest ein Abschnitt der partiellen reduzierten Gewichtungsgradienten 504 bei jedem Lerner 502 akkumuliert, bis jeder Lerner über einen Abschnitt eines vollständig reduzierten Gewichtungsgradienten verfügt. Die Lerner 502 aktualisieren dann ihren eigenen Abschnitt der Gewichtungen zumindest teilweise auf Grundlage desselben Abschnitts der vollständig reduzierten Gewichtungsgradienten, um einen entsprechenden Abschnitt aktualisierter Gewichtungen und Reste 5061, 5062, 5063 ... 506N zu erzeugen (6). In einigen Ausführungsformen handelt es sich bei den aktualisierten Gewichtungen beispielsweise um quantisierte Gewichtungen im FP8-Format und bei den Resten um quantisierte Reste im FP16-Format. Die quantisierten Gewichtungen jedes Abschnitts von jedem Lerner werden dann wie vorstehend beschrieben entlang des Rings gesendet, bis alle Lerner 502 über den vollständigen Satz aktualisierter Gewichtungen verfügen, wobei jeder Lerner 502 seinen eigenen Abschnitt der Reste behält und den Resteabschnitt nicht mit den anderen Lernern teilt. In einigen Ausführungsformen können die Reste alternativ entlang des Rings geteilt werden.
  • Wie in 5 und 6 zu sehen ist, kann ein Zerlegen einer genauen Gewichtung mit einem Format hoher Genauigkeit, z.B. einem FP32-Format, in eine quantisierte Gewichtung mit einem Format geringerer Genauigkeit, z.B. einem FP8-Format, und einen Rest mit einem Format geringerer Genauigkeit, z.B. einem FP16-Format, in einem Mehrlernersystem 500 mit einer Ringkonfiguration eine Bandbreitennutzung zwischen den Lernern 502 im Ring reduzieren. So können beispielsweise statt vollständiger hochgenauer 32-Bit-Gewichtungen oder anderer Parameter zwischen jedem Lerner 502 16 Bit zum Replizieren und Akkumulieren der Gewichtungsgradienten und 8 Bit zum Replizieren der Gewichtungen selbst gesendet werden. Diese deutliche Verringerung erhöht die Effizienz des Systems.
  • Unter Bezugnahme auf 7 bis 12 wird nun ein beispielhafter Gewichtungsaktualisierungsablauf beschrieben, der in dem Mehrlernersystem 500 verwendet werden kann.
  • 7 veranschaulicht ein beispielhaftes Mehrlernersystem mit zwei Lernern, nämlich einem ersten Lerner 700 und einem zweiten Lerner 720. Wenngleich 7 bis 12 ein Mehrlernersystem mit zwei Lernern veranschaulichen, um das Verständnis zu erleichtern, versteht es sich von selbst, dass der in 7 bis 12 dargestellte beispielhafte Gewichtungsaktualisierungsablauf auch mit mehr als zwei Lernern genutzt werden kann.
  • Wie in 7 gezeigt, weist der erste Lerner 700 einen Puffer 702 und der zweite Lerner 720 einen Puffer 722 auf. Der Puffer 702 weist Gradienten für den ersten Lerner 700 auf, die mit (1) gekennzeichnet sind, und der Puffer 722 weist Gradienten für den zweiten Lerner 720 auf, die mit (2) gekennzeichnet sind.
  • Gemäß 8 weist der Puffer 702 einen ersten Abschnitt 702-1 und einen zweiten Abschnitt 702-2 auf, die jeweils einen Chunk der Gradienten (1) speichern. Zum Beispiel speichert Abschnitt 702-1 einen ersten Chunk der Gradienten (1), der als Chunkl (1) bezeichnet wird, während Abschnitt 702-2 einen zweiten Chunk der Gradienten (1) speichert, der als Chunk2 (1) bezeichnet wird. Zudem weist der Puffer 722 Abschnitte 722-1 und 722-2 auf, die jeweils einen Chunk der Gradienten (2) speichern. Zum Beispiel speichert Abschnitt 722-1 einen ersten Chunk der Gradienten (2), der als Chunkl (2) bezeichnet wird, während Abschnitt 722-2 einen zweiten Chunk der Gradienten (2) speichert, der als Chunk2 (2) bezeichnet wird. In einigen Ausführungsformen kann die Anzahl der Abschnitte, in die der Puffer für jeden Lerner zerlegt ist, auf der Gesamtanzahl an Lernern in dem Mehrlernersystem beruhen. Wenn beispielsweise sechs Lerner in dem Mehrlernersystem vorhanden sind, kann jeder Lerner einen Puffer mit sechs Abschnitten aufweisen, von denen jeder einen bestimmten Chunk der Gradienten dieses Lerners aufweist. Einem gegebenen Lerner in dem Mehrlernersystem kann ein gegebener Abschnitt der Puffer aller Lerner zugeordnet sein. In einigen Ausführungsformen kann beispielsweise der erste Abschnitt jedes Puffers dem Lerner 700, der zweite Abschnitt jedes Puffers dem Lerner 720, und so weiter für jeden Lerner in dem Mehrlernersystem, zugeordnet sein.
  • Gemäß 9 ist in der beispielhaften Ausführungsform der Lerner 700 den ersten Abschnitten 702-1 und 722-1 zugeordnet, während der Lerner 720 den zweiten Abschnitten 702-2 und 722-2 zugeordnet ist. Wie in 9 gezeigt, wird Chunkl (2) von Abschnitt 722-1 auf Abschnitt 702-1 des Lerners 700 und Chunk2 (1) von Abschnitt 702-2 auf Abschnitt 722-2 des Lerners 720 repliziert. Wie bereits erwähnt, wird, wenn zusätzliche Lerner vorhanden sind, der Chunkl jedes dieser zusätzlichen Lerner in den Abschnitt 702-1 repliziert, der Chunk2 jedes dieser zusätzlichen Lerner wird in den Abschnitt 722-2 repliziert, und alle zusätzlichen Chunks werden in den zugehörigen Lerner für den Abschnitt repliziert, der diesen Chunk speichert. In einigen Ausführungsformen, beispielsweise wenn eine Ringkonfiguration verwendet wird, kann die Replikation jedes Chunks über einen oder mehrere dazwischenliegende Lerner erfolgen.
  • Gemäß 10 summiert jeder Lerner die replizierten Chunks für seinen zugehörigen Abschnitt zusammen. Zum Beispiel summiert der Lerner 700 Chunkl (1) und Chunkl (2) des Abschnitts 702-1 zusammen, um einen summierten Chunkl (1 & 2) zu bilden. Ebenso summiert der Lerner 720 Chunk2 (1) und Chunk2 (2) des Abschnitts 722-2 zusammen, um einen summierten Chunk2 (1 & 2) zu bilden. In einigen Ausführungsformen kann die Größe des summierten Chunkl (1 & 2) auf die ursprüngliche Größe des einzelnen Chunkl (1) reduziert werden, beispielsweise unter Verwendung einer Reduktions-Streuungs-Phase (reduce-scatter phase). Es ist zu beachten, dass in der beispielhaften Ausführungsform jeder Lerner nur die Chunks summiert, die er in seinem zugehörigen Abschnitt gefunden hat, und nicht in allen Abschnitten seines Puffers. Dadurch werden die erforderlichen Berechnungen bei jedem Lerner reduziert, da jeder Lerner Berechnungen für einen anderen Abschnitt der Gradienten durchführt, was die Effizienz des Systems verbessert.
  • Gemäß 11 aktualisiert jeder Lerner die Gewichtung für den Chunk, der in dem diesem Lerner zugeordneten Abschnitt gespeichert ist. Zum Beispiel aktualisiert der Lerner 700 die Gewichtung für Chunkl, der in Abschnitt 702-1 des Puffers 702 gespeichert ist, zumindest teilweise auf Grundlage des summierten Chunkl (1 & 2). Ebenso aktualisiert der Lerner 720 die Gewichtung für Chunk2, der in Abschnitt 722-2 des Puffers 722 gespeichert ist, zumindest teilweise auf Grundlage des summierten Chunk2 (1 & 2). In beispielhaften Ausführungsformen kann die Gewichtung gemäß der Schalttechnik 100 wie in einer der vorstehenden Ausführungsformen beschrieben aktualisiert werden.
  • Es ist zu beachten, dass in der beispielhaften Ausführungsform jeder Lerner nur die Gewichtung für die Chunks summiert, die er in seinem zugehörigen Abschnitt gefunden hat, und nicht in allen Abschnitten seines Puffers. Dadurch werden die erforderlichen Berechnungen bei jedem Lerner reduziert, da jeder Lerner Berechnungen für einen anderen Abschnitt der Gradienten durchführt, was die Effizienz des Systems verbessert. Dadurch wird die Belastung des lokalen Speichers für den chipinternen Speicher erheblich reduziert und bei der Nutzung des chipinternen Speichers eine erhebliche Verringerung der Bandbreite bereitgestellt, z.B. um 30 %. In beispielhaften Ausführungsformen kann die Gewichtung auch quantisiert werden, z.B. in das FP8-Format, wie vorstehend beschrieben.
  • Gemäß 12 repliziert jeder Lerner die aktualisierte Gewichtung für den Chunk, der in dem diesem Lerner zugeordneten Abschnitt gespeichert ist, an die anderen Lerner in dem Mehrlernersystem. Beispielsweise stellt der Lerner 700 die aktualisierte Gewichtung für Chunkl, die in Abschnitt 702-1 seines Puffers 702 gespeichert ist, dem Lerner 722 bereit, der die entsprechende Gewichtung für Chunkl, die in seinem Abschnitt 722-1 seines Puffers 722 gespeichert ist, überschreibt. Ebenso stellt der Lerner 720 die aktualisierte Gewichtung für Chunk2, die in Abschnitt 722-2 seines Puffers 722 gespeichert ist, dem Lerner 702 zur Verfügung, der die entsprechende Gewichtung für Chunk2, die in seinem Abschnitt 702-2 seines Puffers 702 gespeichert ist, überschreibt. Anderen Lernern kann in ähnlicher Weise die aktualisierte Gewichtung für jeden Abschnitt bereitgestellt werden. Es ist zu beachten, dass in der beispielhaften Ausführungsform jeder Lerner nur die Gewichtungen für seinen zugehörigen Abschnitt an die anderen Lerner bereitstellt, nicht aber alle Gewichtungen seines Puffers. Dadurch werden die erforderlichen Berechnungen bei jedem Lerner reduziert, da jeder Lerner Berechnungen für einen anderen Abschnitt der Gewichtung durchführt, was die Effizienz des Systems verbessert. Wenn außerdem die Gewichtung in ein Format mit geringerer Genauigkeit quantisiert wird, wie z.B. ein FP8-Format, kann zusätzliche Effizienz bei der Bandbreitennutzung erzielt werden, da jeder Lerner nur eine Gewichtung zur Replikation an die anderen Lerner bereitstellt.
  • Ausführungsformen der vorliegenden Erfindung können ein System, ein Verfahren und/oder ein Computerprogrammprodukt jedes möglichen technisch detaillierten Integrationsgrads enthalten. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) umfassen, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. ein Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern mittels durch einen Computer lesbarer Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in den Blöcken angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Eine oder mehrere Ausführungsformen können Software verwenden, die auf einem Universalcomputer oder einer Workstation läuft. Gemäß 13 ist in einem Datenverarbeitungsknoten 1310 ein Computersystem/Server 1312 vorhanden, welches/r zusammen mit zahlreichen weiteren Universal- oder Spezial-Datenverarbeitungssystem-Umgebungen oder -Konfigurationen betriebsfähig ist. Zu Beispielen bekannter Datenverarbeitungssysteme, -umgebungen und/oder -konfigurationen, die sich für die Verwendung mit dem Computersystem/Server 1312 eignen können, zählen, ohne hierauf beschränkt zu sein, Personal-Computer-Systeme, Servercomputersysteme, Thin Clients, Thick Clients, tragbare oder Laptop-Einheiten, Multiprozessorsysteme, Systeme aus Mikroprozessoren, Set-Top-Boxen, programmierbare Consumer-Elektronik, Netzwerk-PCs, Minicomputer-Systeme, Großrechnersysteme, mobile und tragbare Einheiten und verteilte Cloud-Computing-Umgebungen, die jedwede der vorstehend genannten Systeme oder Einheiten umfassen, und dergleichen.
  • Computersystem/Server 1312 kann im allgemeinen Kontext durch ein Computersystem ausführbarer Befehle wie beispielsweise Programmmodule beschrieben werden, die durch ein Computersystem ausgeführt werden. Allgemein enthalten Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen und so weiter, die bestimmte Aufgaben erfüllen oder bestimmte abstrakte Datentypen implementieren. Computersystem/Server 1312 können in verteilten Cloud-Computing-Umgebungen betrieben werden, in denen Aufgaben durch entfernt angeordnete Verarbeitungseinheiten ausgeführt werden, die durch ein Kommunikationsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl in lokalen als auch in entfernt angeordneten Speichermedien des Computersystems einschließlich Kurzzeit-Speichereinheiten befinden.
  • Wie in 13 gezeigt, wird Computersystem/Server 1312 in dem Datenverarbeitungsknoten 1310 in Form einer Universal-Datenverarbeitungseinheit gezeigt. Zu den Komponenten des Computersystems/Servers 1312 können, ohne jedoch hierauf eingeschränkt zu sein, ein oder mehrere Prozessoren oder Verarbeitungseinheiten 1316, ein Systemspeicher 1328 und ein Bus 1318 zählen, der verschiedene Systemkomponenten einschließlich des Systemspeichers 1328 mit der Verarbeitungseinheit 1316 verbindet. In einer veranschaulichenden Ausführungsform umfasst die Verarbeitungseinheit 1316 Schalttechnik 100. In anderen Ausführungsformen kann die Verarbeitungseinheit 1316 von der Schalttechnik 100 getrennt sein und so konfiguriert sein, dass sie mit der Schalttechnik 100 über den Bus 1318 oder einen Netzwerkadapter 1320 Daten austauscht.
  • Der Bus 1318 stellt einen oder mehrere von verschiedenen Typen von Bus-Strukturen dar, darunter ein Speicherbus oder eine Speichersteuereinheit, ein Peripherie-Bus, ein AGP-Bus und ein Prozessor- oder lokaler Bus, der jedwede einer Vielfalt von Busarchitekturen verwendet. Als nicht einschränkende Beispiele gehören zu solchen Architekturen der ISA- (Industry-Standard-Architecture-) Bus, der Mikrokanal- (Micro-Channel-Architecture, MCA-) Bus, der EISA- (Enhanced-ISA-) Bus, VESA- (Video-Electronics-Standards-Association-) Localbus und der PCI- (Peripheral-Component-Interconnects-) Bus.
  • Das Computersystem/der Server 1312 umfasst üblicherweise eine Vielfalt durch ein Computersystem lesbarer Medien. Bei solchen Medien kann es sich um jedwedes verfügbare Medium handeln, auf das von dem Computersystem/Server 1312 zugegriffen werden kann, und dazu zählen sowohl flüchtige als auch nichtflüchtige Medien, entfernbare sowie nicht entfernbare Medien.
  • Der Systemspeicher 1328 kann durch ein Computersystem lesbare Medien in Form eines flüchtigen Speichers wie beispielsweise Arbeitsspeicher (RAM) 1330 und/oder Cache 1332 umfassen. Das Computersystem/der Server 1312 kann ferner weitere auswechselbare/nichtauswechselbare, flüchtige/nichtflüchtige Speichermedien des Computersystems umfassen. Lediglich beispielhaft kann das Speichersystem 1334 zum Lesen von einem sowie Schreiben auf ein nicht entfernbares nichtflüchtiges magnetisches Medium (nicht gezeigt und üblicherweise als „Festplattenspeicher“ bezeichnet) bereitgestellt sein. Auch wenn dies nicht gezeigt ist, können ein Magnetplattenlaufwerk zum Lesen von einer und Schreiben auf eine auswechselbare, nichtflüchtige Magnetplatte (z.B. eine „Floppy Disk“) und ein optisches Plattenlaufwerk zum Lesen von einer oder Schreiben auf eine auswechselbare, nichtflüchtige optische Platte wie beispielsweise einen CD-ROM, DVD-ROM oder andere optische Medien bereitgestellt sein. In solchen Fällen kann jedes der Genannten über eine oder mehrere Daten-Medien-Schnittstellen mit dem Bus 1318 verbunden sein. Wie vorliegend dargestellt und beschrieben wird, kann der Systemspeicher 1328 mindestens ein Programmprodukt mit einer Gruppe (z.B. mindestens einem) von Programmmodulen umfassen, die so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen. Als nicht einschränkendes Beispiel können in dem Speicher 1328 ein Programm/Dienstprogramm 1340 mit einer Gruppe (mindestens einem) von Programmmodulen 1342 sowie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, weitere Programmmodule und Programmdaten gespeichert sein. Das Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten oder eine Kombination aus diesen können jeweils eine Implementierung einer Netzwerkumgebung enthalten. Allgemein führen die Programmmodule 1342 die Funktionen und/oder Methodiken aus Ausführungsformen der Erfindung wie vorliegend beschrieben aus.
  • Computersystem/Server 1312 kann zudem mit einer oder mehreren externen Einheiten 1314 wie beispielsweise einer Tastatur, einer Zeigeeinheit, einer Anzeige 1324 usw., einer oder mehreren Einheiten, die einem Nutzer eine Interaktion mit dem Computersystem/Server 1312 ermöglichen, und/oder jedweden Einheiten (z.B. Netzwerkkarte, Modem usw.) in Datenaustausch stehen, die dem Computersystem/Server 1312 einen Datenaustausch mit einer oder mehreren anderen Datenverarbeitungseinheiten ermöglichen. Ein solcher Datenaustausch kann über E/A-Schnittstellen 1322 erfolgen. Dennoch kann Computersystem/Server 1312 über einen Netzwerkadapter 1320 in Datenaustausch mit einem oder mehreren Netzwerken wie beispielsweise einem LAN, einem allgemeinen WAN und/oder einem öffentlichen Netz (z.B. dem Internet) stehen. Wie dargestellt, tauscht der Netzwerkadapter 1320 über den Bus 1318 Daten mit den anderen Komponenten des Computersystems/Servers 1312 aus. Es sei angemerkt, dass, auch wenn dies nicht gezeigt ist, andere Hardware- und/oder Software-Komponenten zusammen mit dem Computersystem/Server 1312 verwendet werden könnten. Zu Beispielen zählen, ohne auf diese beschränkt zu sein, Mikrocode, Gerätetreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerk-Arrays, RAID-Systeme, Bandlaufwerke und Speichersysteme zur Datenarchivierung usw.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden für Zwecke der Veranschaulichung dargelegt, sind jedoch nicht als abschließend oder auf die Ausführungsformen beschränkt zu verstehen. Für den Fachmann sind viele Abwandlungen und Variationen ersichtlich, ohne den Umfang der beschriebenen Ausführungsformen zu verlassen. Die hierin verwendete Terminologie wurde gewählt, um bestmöglich die Grundgedanken der Ausführungsformen, der praktischen Anwendung oder technischen Verbesserung gegenüber den auf dem Markt erhältlichen Technologien zu erklären oder um dem Fachmann das Verständnis der hierin offenbarten Ausführungsformen zu ermöglichen.
  • In einer Ausführungsform der vorliegend beschriebenen vorliegenden Erfindung wird eine Vorrichtung bereitgestellt, die mindestens einen Lerner eines Mehrlernersystems aufweist, das eine Vielzahl von Komponenten aufweist, wobei der mindestens eine Lerner so konfiguriert ist, dass er: einen Abschnitt eines Gradienten erzeugt; den Abschnitt des Gradienten an mindestens eine andere Komponente des Mehrlernersystems bereitstellt; und zumindest einen Abschnitt einer Gewichtung von der mindestens einen anderen Komponente des Mehrlernersystems erhält; und den Abschnitt des Gradienten zumindest teilweise auf Grundlage des zumindest erhaltenen Abschnitts der Gewichtung aktualisiert. Die mindestens eine andere Komponente des Mehrlernersystems kann einen Parameterserver aufweisen; wobei der zumindest eine Abschnitt der Gewichtung die gesamte Gewichtung aufweist; und wobei das Bereitstellen des Abschnitts des Gradienten an die mindestens eine andere Komponente des Mehrlernersystems Bereitstellen des Abschnitts des Gradienten an den Parameterserver umfasst, wobei der Parameterserver so konfiguriert ist, dass er die Gewichtung zumindest teilweise auf Grundlage des bereitgestellten Abschnitts des Gradienten erzeugt und die Gewichtung an den mindestens einen Lerner bereitstellt. Der Parameterserver kann ferner so konfiguriert sein, dass er: zumindest teilweise auf Grundlage der Gewichtung einen Rest erzeugt; und dass er den Rest lokal auf dem Parameterserver behält, ohne den Rest an den mindestens einen Lerner bereitzustellen. Das Mehrlernersystem kann eine Mehrzahl von Lernern aufweisen, die in einem Ringformat konfiguriert sind; wobei das Bereitstellen des Abschnitts des Gradienten an die mindestens eine andere Komponente des Mehrlernersystems Bereitstellen des Abschnitts des Gradienten an mindestens einen anderen Lerner der Mehrzahl von Lernern umfasst; wobei der mindestens eine Lerner ferner so konfiguriert ist, dass er: zumindest einen zweiten Abschnitt des Gradienten von dem mindestens einen anderen Lerner empfängt; zumindest einen zweiten Abschnitt der Gewichtung zumindest teilweise auf Grundlage des Abschnitts des Gradienten und des zweiten Abschnitts des Gradienten erzeugt; und zumindest den zweiten Abschnitt der Gewichtung an den mindestens einen anderen Lerner bereitstellt. Der zumindest eine Abschnitt der Gewichtung, der von der mindestens einen anderen Komponente des Mehrlernersystems erhalten wurde, kann einen dritten Abschnitt der Gewichtung aufweisen, der von zumindest einem dritten Lerner des Mehrlernersystems erzeugt wurde. Das Aktualisieren des Abschnitts des Gradienten zumindest teilweise auf Grundlage des zumindest erhaltenen Abschnitts der Gewichtung kann Aktualisieren des Abschnitts des Gradienten zumindest teilweise auf Grundlage des zweiten Abschnitts der Gewichtung, der von dem mindestens einen Lerner erzeugt wurde, und des dritten Abschnitts der Gewichtung umfassen, der von zumindest dem dritten Lerner des Mehrlernersystems erzeugt wurde. Der mindestens eine Lerner kann ferner so konfiguriert sein, dass er: zumindest teilweise auf Grundlage des erzeugten zumindest einen zweiten Abschnitts der Gewichtung einen Rest erzeugt; und den zumindest einen zweiten Abschnitt der Gewichtung zumindest teilweise auf Grundlage des Rests aktualisiert, wobei der Rest lokal auf dem mindestens einen Lerner gespeichert wird und dem mindestens einen Lerner der Mehrzahl von Lernern nicht bereitgestellt wird. Der Abschnitt des Gradienten kann ein 16-Bit-Format und der zumindest eine Abschnitt der Gewichtung ein 8-Bit-Format aufweisen.

Claims (12)

  1. Vorrichtung, die Schalttechnik für ein neuronales Netz aufweist, wobei die Schalttechnik so konfiguriert ist, dass sie: eine erste Gewichtung mit einem ersten Format, das eine erste Anzahl an Bits aufweist, zumindest teilweise auf Grundlage einer zweiten Gewichtung mit einem zweiten Format, das eine zweite Anzahl an Bits aufweist, und eines Rests mit einem dritten Format erzeugt, das eine dritte Anzahl an Bits aufweist, wobei die zweite Anzahl an Bits und die dritte Anzahl an Bits jeweils geringer sind als die erste Anzahl an Bits; die zweite Gewichtung zumindest teilweise auf Grundlage der ersten Gewichtung aktualisiert; und den Rest zumindest teilweise auf Grundlage der aktualisierten zweiten Gewichtung und der ersten Gewichtung aktualisiert; und die erste Gewichtung zumindest teilweise auf Grundlage der aktualisierten zweiten Gewichtung und des aktualisierten Rests aktualisiert.
  2. Vorrichtung nach Anspruch 1, wobei die zweite Anzahl an Bits 8 Bits aufweist.
  3. Vorrichtung nach Anspruch 1, wobei die dritte Anzahl an Bits 16 Bits aufweist.
  4. Vorrichtung nach Anspruch 1, wobei die zweite Anzahl an Bits und die dritte Anzahl an Bits zusammen weniger Bits aufweisen als die erste Anzahl an Bits.
  5. Vorrichtung nach Anspruch 4, wobei das Aktualisieren des Rests zumindest teilweise auf Grundlage der aktualisierten zweiten Gewichtung und der ersten Gewichtung Folgendes umfasst: Erzeugen eines zweiten Rests, der eine vierte Anzahl an Bits aufweist, zumindest teilweise auf Grundlage der aktualisierten zweiten Gewichtung und der ersten Gewichtung, wobei die vierte Anzahl an Bits eine größere Anzahl an Bits aufweist als die dritte Anzahl an Bits; und Quantisieren des zweiten Rests von der vierten Anzahl an Bits auf die dritte Anzahl an Bits, um den Rest zu aktualisieren.
  6. Vorrichtung nach Anspruch 5, wobei die Schalttechnik ferner so konfiguriert ist, dass sie: vor einem Quantisieren des zweiten Rests den zweiten Rest zumindest teilweise auf Grundlage eines Skalierungsfaktors hochskaliert; und vor einem Aktualisieren der ersten Gewichtung zumindest teilweise auf Grundlage der aktualisierten zweiten Gewichtung und des aktualisierten Rests den aktualisierten Rest zumindest teilweise auf Grundlage des Skalierungsfaktors herabskaliert.
  7. Verfahren, umfassend: Erzeugen einer ersten Gewichtung mit einem ersten Format, das eine erste Anzahl an Bits aufweist, zumindest teilweise auf Grundlage einer zweiten Gewichtung mit einem zweiten Format, das eine zweite Anzahl an Bits aufweist, und eines Rests mit einem dritten Format, das eine dritte Anzahl an Bits aufweist, wobei die zweite Anzahl an Bits und die dritte Anzahl an Bits jeweils geringer sind als die erste Anzahl an Bits; Aktualisieren der zweiten Gewichtung zumindest teilweise auf Grundlage der ersten Gewichtung; und Aktualisieren des Rests zumindest teilweise auf Grundlage der aktualisierten zweiten Gewichtung und der ersten Gewichtung; und Aktualisieren der ersten Gewichtung zumindest teilweise auf Grundlage der aktualisierten zweiten Gewichtung und des aktualisierten Rests; wobei das Verfahren zumindest teilweise durch Schalttechnik für ein neuronales Netz durchgeführt wird.
  8. Verfahren nach Anspruch 7, wobei die zweite Anzahl an Bits 8 Bits aufweist.
  9. Verfahren nach Anspruch 7, wobei die dritte Anzahl an Bits 16 Bits aufweist.
  10. Verfahren nach Anspruch 7, wobei die zweite Anzahl an Bits und die dritte Anzahl an Bits zusammen weniger Bits aufweisen als die erste Anzahl an Bits.
  11. Verfahren nach Anspruch 10, wobei das Aktualisieren des Rests zumindest teilweise auf Grundlage der aktualisierten zweiten Gewichtung und der ersten Gewichtung Folgendes umfasst: Erzeugen eines zweiten Rests, der eine vierte Anzahl an Bits aufweist, zumindest teilweise auf Grundlage der aktualisierten zweiten Gewichtung und der ersten Gewichtung, wobei die vierte Anzahl an Bits eine größere Anzahl an Bits aufweist als die dritte Anzahl an Bits; und Quantisieren des zweiten Rests von der vierten Anzahl an Bits auf die dritte Anzahl an Bits, um den Rest zu aktualisieren.
  12. Verfahren nach Anspruch 11, wobei das Verfahren ferner Folgendes umfasst: zumindest teilweise auf Grundlage eines Skalierungsfaktors erfolgendes Hochskalieren des zweiten Rests vor einem Quantisieren des zweiten Rests; und vor einem Aktualisieren der ersten Gewichtung zumindest teilweise auf Grundlage der aktualisierten zweiten Gewichtung und des aktualisierten Rests zumindest teilweise auf Grundlage des Skalierungsfaktors erfolgendes Herabskalieren des aktualisierten Rests.
DE112020003600.6T 2019-09-03 2020-08-17 Hardware für maschinelles lernen mit parameterkomponenten mit reduzierter genauigkeit für effiziente parameteraktualisierung Pending DE112020003600T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/558,585 2019-09-03
US16/558,585 US20210064985A1 (en) 2019-09-03 2019-09-03 Machine learning hardware having reduced precision parameter components for efficient parameter update
PCT/IB2020/057723 WO2021044244A1 (en) 2019-09-03 2020-08-17 Machine learning hardware having reduced precision parameter components for efficient parameter update

Publications (1)

Publication Number Publication Date
DE112020003600T5 true DE112020003600T5 (de) 2022-04-14

Family

ID=74679838

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020003600.6T Pending DE112020003600T5 (de) 2019-09-03 2020-08-17 Hardware für maschinelles lernen mit parameterkomponenten mit reduzierter genauigkeit für effiziente parameteraktualisierung

Country Status (6)

Country Link
US (1) US20210064985A1 (de)
JP (1) JP2022546668A (de)
CN (1) CN114341892A (de)
DE (1) DE112020003600T5 (de)
GB (1) GB2600871A (de)
WO (1) WO2021044244A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11195096B2 (en) * 2017-10-24 2021-12-07 International Business Machines Corporation Facilitating neural network efficiency
US11507823B2 (en) * 2019-01-22 2022-11-22 Black Sesame Technologies Inc. Adaptive quantization and mixed precision in a network
US11842169B1 (en) 2019-09-25 2023-12-12 Amazon Technologies, Inc. Systolic multiply delayed accumulate processor architecture
US11816446B2 (en) 2019-11-27 2023-11-14 Amazon Technologies, Inc. Systolic array component combining multiple integer and floating-point data types
US11449752B2 (en) * 2020-03-31 2022-09-20 Microsoft Technology Licensing, Llc System and method for gradient accumulation with free momentum
US11308027B1 (en) 2020-06-29 2022-04-19 Amazon Technologies, Inc. Multiple accumulate busses in a systolic array
US11880682B2 (en) * 2021-06-30 2024-01-23 Amazon Technologies, Inc. Systolic array with efficient input reduction and extended array performance
US20230205544A1 (en) * 2021-12-29 2023-06-29 Advanced Micro Devices, Inc. Forward tensor and activation scaling for lower precision neural networks

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201402736D0 (en) * 2013-07-26 2014-04-02 Isis Innovation Method of training a neural network
US9633306B2 (en) * 2015-05-07 2017-04-25 Siemens Healthcare Gmbh Method and system for approximating deep neural networks for anatomical object detection
CN107644254A (zh) * 2017-09-09 2018-01-30 复旦大学 一种卷积神经网络权重参数量化训练方法及系统
CN108053028B (zh) * 2017-12-21 2021-09-14 深圳励飞科技有限公司 数据定点化处理方法、装置、电子设备及计算机存储介质
CN108805286A (zh) * 2018-06-12 2018-11-13 上海交通大学 基于高阶残留量化的高性能网络加速方法

Also Published As

Publication number Publication date
JP2022546668A (ja) 2022-11-07
CN114341892A (zh) 2022-04-12
WO2021044244A1 (en) 2021-03-11
GB202201893D0 (en) 2022-03-30
GB2600871A (en) 2022-05-11
US20210064985A1 (en) 2021-03-04

Similar Documents

Publication Publication Date Title
DE112020003600T5 (de) Hardware für maschinelles lernen mit parameterkomponenten mit reduzierter genauigkeit für effiziente parameteraktualisierung
DE102018130084A1 (de) Dynamische Quantisierung neuronaler Netzwerke
DE102017113232A1 (de) Tensorverarbeitung unter verwendung eines formats mit geringer genauigkeit
DE112018006189T5 (de) Robuste gradienten-gewichtskomprimierungsschemata für deep-learning-anwendungen
DE112019000336T5 (de) Massiv parallele neuronale inferenz-datenverarbeitungselemente
DE19540102C2 (de) Verfahren und Gleitkomma-Recheneinheit mit einer Logik für eine Vierfach-Präzisions-Arithmetik
DE112019003529T5 (de) Datendarstellung für dynamische Genauigkeit in Kernen neuronaler Netze
DE102018121905A1 (de) Verfahren und Vorrichtung zum Quantisieren von künstlichen neuronalen Netzen
CN107340993B (zh) 运算装置和方法
DE102018126670A1 (de) Fortschreitende Modifizierung von generativen adversativen neuronalen Netzen
DE202017105528U1 (de) Ausführen von Mittelwert-Poolbildung in Hardware
DE112017007224T5 (de) Momentaufnahmen-Verwaltung in einer Blockchain
DE112018004693T5 (de) Verbessern der effizienz eines neuronalen netzes
DE4414172A1 (de) Gleit-Komma-Arithmetikeinheit zur Division und Quadratwurzelberechnung, die eine modifizierte Newton-Raphson Technik verwendet
DE112018005205T5 (de) Komprimierung von vollständig verbundenen / wiederkehrenden Schichten von einem oder mehreren tiefen Netzen durch Durchsetzen von räumlicher Lokalität für Gewichtsmatrizen und erwirken von Frequenzkomprimierung
DE102014100108A1 (de) Festkomma-divisionschaltung unter verwendung einer gleitkomma-architektur
DE102020114310A1 (de) Beschleuniger für neuronale netze mit logarithmischbasierter arithmetik
DE112018000140T5 (de) Verschmolzene Multiplikations-Additions-Gleitkommaoperationen auf 128 BIT breiten Operanden
DE112020006010T5 (de) Schulung eines neuronalen netzwerks durch verwenden eines datenflussgraphen und dynamische verwaltung von arbeitsspeicher
DE112019000676T5 (de) Zentraler scheduler und anweisungszuteiler für einen neuronalen inferenzprozessor
DE102019103319A1 (de) Stochastisches runden von zahlenwerten
DE19718224A1 (de) Digitaler Neuroprozessor
DE102018110947A1 (de) Verlustskalierung für tiefes neuronales netzwerktraining mit verringerter präzision
DE112019000382T5 (de) GANZZAHLIGER MULTIPLIKATOR MIT MEHRFACHER GENAUIGKEIT DURCH MATRIX-MATRIX-MULTIPLIKATIONEN UNTER VERWENDUNG EINES 16-BIT-FLIEßKOMMA-MULTIPLIKATORS
DE102014225039A1 (de) Verfahren und Vorrichtung zum Bereitstellen von spärlichen Gauß-Prozess-Modellen zur Berechnung in einem Motorsteuergerät

Legal Events

Date Code Title Description
R012 Request for examination validly filed