DE112019000336T5 - Massiv parallele neuronale inferenz-datenverarbeitungselemente - Google Patents

Massiv parallele neuronale inferenz-datenverarbeitungselemente Download PDF

Info

Publication number
DE112019000336T5
DE112019000336T5 DE112019000336.4T DE112019000336T DE112019000336T5 DE 112019000336 T5 DE112019000336 T5 DE 112019000336T5 DE 112019000336 T DE112019000336 T DE 112019000336T DE 112019000336 T5 DE112019000336 T5 DE 112019000336T5
Authority
DE
Germany
Prior art keywords
function
multipliers
adders
parallel
function blocks
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
DE112019000336.4T
Other languages
English (en)
Inventor
Jun Sawada
Dharmendra Modha
John Vernon Arthur
Steven Kyle Esser
Rathinakumar Appuswamy
Brian Seisho Taba
Andrew Stephen Cassidy
Pallab Datta
Myron Flickner
Hartmut Penner
Jennifer Klamo
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 DE112019000336T5 publication Critical patent/DE112019000336T5/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/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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • 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/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • 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
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • 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
    • 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/044Recurrent networks, e.g. Hopfield networks
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

Bereitgestellt werden massiv parallele neuronale Inferenz-Datenverarbeitungselemente. Eine Mehrzahl von Multiplizierern ist in einer Mehrzahl von gleich großen Gruppen angeordnet. Jeder aus der Mehrzahl von Multiplizierern ist ausgelegt, um eine Gewichtung auf eine Eingabeaktivierung parallel anzuwenden, um eine Ausgabe zu erzeugen. Eine Mehrzahl von Addierern ist mit einer der Gruppen von Multiplizierern wirkverbunden. Jeder aus der Mehrzahl von Addierern ist ausgelegt, um die Ausgaben der Multiplizierer innerhalb der ihnen jeweils zugehörigen Gruppe parallel zu addieren, um eine Partialsumme zu erzeugen. Eine Mehrzahl von Funktionsblöcken ist mit einem aus der Mehrzahl von Addierern wirkverbunden. Jeder aus der Mehrzahl von Funktionsblöcken ist ausgelegt, um eine Funktion auf die Partialsumme des ihm zugehörigen Addierers parallel anzuwenden, um einen Ausgabewert zu erzeugen.

Description

  • HINTERGRUND
  • Ausführungsformen der vorliegenden Offenbarung beziehen sich auf neuronale Netzwerk-Inferenz und im Besonderen auf massiv parallele neuronale Inferenz-Datenvera rbeitu ngselemente.
  • KURZDARSTELLUNG
  • Gemäß Ausführungsformen der vorliegenden Offenbarung werden Systeme, Verfahren und Computerprogrammprodukte für eine massiv parallele neuronale Inferenz-Datenverarbeitung bereitgestellt. Eine Mehrzahl von Multiplizierern ist in einer Mehrzahl von gleich großen Gruppen angeordnet. Jeder aus der Mehrzahl von Multiplizierern ist ausgelegt, um eine Gewichtung auf eine Eingabeaktivierung parallel anzuwenden, um eine Ausgabe zu erzeugen. Eine Mehrzahl von Addierern ist mit einer der Gruppen von Multiplizierern wirkverbunden. Jeder aus der Mehrzahl von Addierern ist ausgelegt, um die Ausgaben der Multiplizierer innerhalb der ihnen jeweils zugehörigen Gruppe parallel zu addieren, um eine Partialsumme zu erzeugen. Eine Mehrzahl von Funktionsblöcken ist mit einem aus der Mehrzahl von Addierern wirkverbunden. Jeder aus der Mehrzahl von Funktionsblöcken ist ausgelegt, um eine Funktion auf die Partialsumme des ihm zugehörigen Addierers parallel anzuwenden, um einen Ausgabewert zu erzeugen.
  • Gemäß einem Aspekt wird ein System bereitgestellt, aufweisend: eine Mehrzahl von Multiplizierern, wobei die Mehrzahl von Multiplizierern in einer Mehrzahl von gleich großen Gruppen angeordnet ist, wobei jeder aus der Mehrzahl von Multiplizierern ausgelegt ist, um eine Gewichtung auf eine Eingabeaktivierung parallel anzuwenden, um eine Ausgabe zu erzeugen; eine Mehrzahl von Addierern, wobei jeder aus der Mehrzahl von Addierern mit einer der Gruppen von Multiplizierern wirkverbunden ist, wobei jeder aus der Mehrzahl von Addierern ausgelegt ist, um die Ausgaben der Multiplizierer innerhalb der ihnen jeweils zugehörigen Gruppe parallel zu addieren, um eine Partialsumme zu erzeugen.
  • Gemäß einem Aspekt wird ein Verfahren bereitgestellt, aufweisend: paralleles Anwenden einer Mehrzahl von Gewichtungen auf eine Mehrzahl von Eingabeaktivierungen durch eine Mehrzahl von gleich großen Gruppen von Multiplizierern, um eine Mehrzahl von Ausgaben für jede Gruppe von Multiplizierern zu erzeugen; paralleles Addieren der Mehrzahl von Ausgaben aus jeder Gruppe von Multiplizierern, um aus jeder Gruppe von Multiplizierern eine Partialsumme zu erzeugen.
  • Gemäß einem Aspekt wird ein System bereitgestellt, aufweisend: eine Mehrzahl von Multiplizierern, wobei die Mehrzahl von Multiplizierern in einer Mehrzahl von gleich großen Gruppen angeordnet ist; eine Mehrzahl von Addierern, wobei jeder aus der Mehrzahl von Addierern mit einer der Gruppen von Multiplizierern wirkverbunden ist; ein durch einen Computer lesbares Speichermedium mit darin enthaltenen Programmanweisungen, wobei die Programmanweisungen ausführbar sind, um ein Verfahren durchzuführen, aufweisend: paralleles Anwenden einer Gewichtung auf eine Eingabeaktivierung durch die Mehrzahl von Multiplizierern, um eine Ausgabe zu erzeugen; paralleles Addieren der Ausgaben der Multiplizierer innerhalb der ihnen jeweils zugehörigen Gruppe durch jeden aus der Mehrzahl von Addierern, um eine Partialsumme zu erzeugen.
  • Figurenliste
  • Mit Blick auf die beigefügten Zeichnungen werden nun Ausführungsformen der Erfindung beschrieben, die lediglich beispielhaft zu verstehen sind und bei denen:
    • 1 eine Inferenz-Prozessorarchitektur mit mehreren neuronalen Kernen gemäß Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 2 einen massiv parallelen Vektormatrix-Multiplizierer zum Berechnen von Partialsummen gemäß Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 3 eine dendritische Schaltung gemäß Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 4 einen Vektormatrix-Multiplizierer mit einer Anordnung von Addierern und einem Vektorregister gemäß Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 5 einen Vektormatrix-Multiplizierer mit einer Aktivierungsfunktion gemäß Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 6 eine Verweistabelle für eine Aktivierungsfunktion gemäß Ausführungsformen der vorliegenden Offenbarung darstellt.
    • Die 7A und 7B eine Eingabeaktivierung über ein Verteilungsrundsenden gemäß Ausführungsformen der vorliegenden Offenbarung darstellen.
    • 8 Binärbäume von Addierern für eine dendritische Schaltung gemäß Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 9 einen Baum von Übertrags-Speicher-Addierern für eine dendritische Schaltung gemäß Ausführungsformen der vorliegenden Offenbarung darstellt.
    • Die 10A und 10B einen durch einen Multiplexer realisierten ternären Multiplizierer gemäß Ausführungsformen der vorliegenden Offenbarung darstellen.
    • 11 einen Verschieber zur Verwendung bei einer Vektormatrix-Multiplikation gemäß Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 12 eine neuronale Schaltung gemäß Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 13 eine Misch-Operation unter Verwendung einer Vektormatrix-Multiplikationseinheit gemäß Ausführungsformen der vorliegenden Offenbarung darstellt.
    • Die 14A und 14B beispielhafte Butterfly-Netzwerk-Berechnungen gemäß Ausführungsformen der vorliegenden Offenbarung veranschaulichen.
    • 15 eine Datenpack-Operation unter Verwendung einer Vektormatrix-Multiplikationseinheit gemäß Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 16 eine Maximalwert-Pooling-Operation unter Verwendung einer Vektormatrix-Multiplikationseinheit gemäß Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 17 eine Mittelwert-Pooling-Operation unter Verwendung einer Vektormatrix-Multiplikationseinheit gemäß Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 18 eine elementweise Multiplikationsoperation unter Verwendung einer Vektormatrix-Multiplikationseinheit gemäß Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 19 eine programmierbare Operation gemäß Ausführungsformen der vorliegenden Offenbarung darstellt, um Partialsummen unter Verwendung einer Vektormatrix-Multiplikationseinheit mit mehreren elementweisen Operationen zu kombinieren.
    • 20 ein Verfahren zum Betreiben eines neuronalen Verarbeitungskerns gemäß Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 21 einen Datenverarbeitungsknoten gemäß Ausführungsformen der vorliegenden Offenbarung darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Ein künstliches Neuron ist eine mathematische Funktion, deren Ausgabe eine nicht lineare Funktion einer linearen Kombination ihrer Eingaben ist. Zwei Neuronen sind verbunden, wenn die Ausgabe des einen eine Eingabe des anderen ist. Eine Gewichtung ist ein Einzelwert, der die Stärke der Verbindung zwischen der Ausgabe des einen Neurons und der Eingabe eines weiteren Neurons codiert.
  • Ein Neuron berechnet seine Ausgabe, die auch als Aktivierung bezeichnet wird, indem es eine nicht lineare Aktivierungsfunktion auf eine gewichtete Summe seiner Eingaben anwendet. Eine gewichtete Summe ist ein Zwischenresultat, das berechnet wird, indem jede Eingabe mit der entsprechenden Gewichtung multipliziert wird und die Produkte akkumuliert werden. Eine Partialsumme ist eine gewichtete Summe eines Teilsatzes von Eingaben. Eine gewichtete Summe aller Eingaben kann schrittweise berechnet werden, indem eine oder mehrere Partialsummen akkumuliert werden.
  • Ein neuronales Netzwerk ist eine Ansammlung von einem oder mehreren Neuronen. Ein neuronales Netzwerk ist häufig in Gruppen von Neuronen unterteilt, die als Schichten bezeichnet werden. Eine Schicht ist eine Ansammlung von einem oder mehreren Neuronen, die alle Eingaben von denselben Schichten empfangen und alle Ausgaben an dieselben Schichten senden und die typischerweise eine ähnliche Funktion durchführen. Eine Eingabeschicht ist eine Schicht, die Eingaben von einer Quelle außerhalb des neuronalen Netzwerks empfängt. Eine Ausgabeschicht ist eine Schicht, die Ausgaben an ein Ziel außerhalb des neuronalen Netzwerks sendet. Alle anderen Schichten sind zwischengelagerte Verarbeitungsschichten. Ein mehrschichtiges neuronales Netzwerk ist ein neuronales Netzwerk mit mehr als einer Schicht. Ein tiefes neuronales Netzwerk ist ein mehrschichtiges neuronales Netzwerk mit vielen Schichten.
  • Anordnungen von neuronalen Verarbeitungseinheiten, die auch als neuronale Kerne bezeichnet werden, stellen eine Architektur bereit, um verschiedene Typen von neuronalen Netzwerken und tiefen neuronalen Netzwerken auszuführen. Eine Vielfalt von Kern-Architekturen ist geeignet, um neuronale Netzwerk-Berechnungen zu realisieren. Im Allgemeinen enthalten solche Berechnungen ein Berechnen von Neuronenaktivierungen auf Grundlage von Eingabewerten, synaptischen Gewichtungen und neuronalen Aktivierungsfunktionen. Es sollte offensichtlich sein, dass Neuronenaktivierungen auf verschiedene Arten verteilt werden können, z.B. über ein On-Chip-Netzwerk. Auch wenn sich verschiedene Beispiele hier auf Neuronenaktivierungen beziehen, die über ein Netzwerk übertragen werden, dürfte klar sein, dass die vorliegende Offenbarung weiter gefasst auf alle neurosynaptischen Systeme wie z.B. GPUs und spezialisierte ASIC-Chips sowie unabhängig vom Transportmechanismus auf Neuronenaktivitäten anwendbar ist.
  • Gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung stellt ein neuronales Programm ein neuronales Netzwerk dar. Ein neuronales Programm enthält Informationen, die sich auf das neuronale Netzwerk beziehen. Bei manchen Ausführungsformen enthalten die Informationen neuronale Eigenschaften und dynamische Aspekte, die eine Antwort eines elektronischen Neurons auf eingegebene Neuronenaktivierungen festlegen. Zum Beispiel können neuronale Eigenschaften und dynamische Aspekte einen Schwellenparameter, einen Verlustparameter, einen Verzögerungsparameter oder einen Rücksetzparameter enthalten. Bei manchen Ausführungsformen enthalten die neuronalen Programminformationen synaptische Verbindungen des Neurons (z.B. synaptische Verbindungen, die über eine synaptische Gewichtungsmatrix hergestellt werden). Bei manchen Ausführungsformen enthalten die neuronalen Programminformationen Axon-Eigenschaften (z.B. Axon-Typen) Bei manchen Ausführungsformen enthalten die neuronalen Programminformationen ein oder mehrere Ziele (z.B. Ziel-Axone), an welche die Ausgabeaktivierung des Neurons ausgeliefert werden soll.
  • Gemäß verschiedenen Ausführungsformen stellt ein neuronales Netzwerk eine Instanziierung eines neuronalen Programms dar. Ein neuronales Netzwerk kann in Hardware, in einer Simulation oder in beidem instanziiert werden. Zum Beispiel kann ein neuronales Programm eine oder mehrere Instanzen eines neuronalen Netzwerks erzeugen, wobei sich die Instanzen in einem einzigen Kern, in mehreren Kernen oder auf mehreren Chips befinden können.
  • Gemäß einer Ausführungsform der vorliegenden Offenbarung wird ein dendritischer Baum bereitgestellt, der in einer zweckbestimmten Ausrichtung auf Multiplikations-Akkumulations-Schaltungen für jede Synapse konfiguriert sein kann und der in manchen Instanzen parallel betrieben werden kann. Zusätzlich stellt die vorliegende Offenbarung gemäß einer bevorzugten Ausführungsform zweckbestimmte Partialsummen-Operatoren und nicht lineare Aktivierungsschaltungen für jedes Neuron bereit, die ebenfalls parallel betrieben werden können. Bei manchen Ausführungsformen wird eine Multifunktionsschaltung für Addierer- oder Maximalwert/Minimalwert-Operationen verwendet. Bei manchen Ausführungsformen enthält das System einen als Pipeline strukturierten dendritischen Baum.
  • Gemäß Ausführungsformen der vorliegenden Offenbarung ist eine Neuronen-Aktivierungsfunktion enthalten, die bei manchen Ausführungsformen eine Verweistabelle verwendet, um eine Neuronen-Aktivierungsfunktion darzustellen. Dieses Merkmal ist vorteilhaft, da es effiziente und neu konfigurierbare Realisierungen von diskretisierten Modellen kontinuierlicher Nichtlinearitäten wie Sigmoid-, Tanh-, ReLU(Rectified Linear Unit)-Funktionen usw. ermöglicht. Bei manchen Ausführungsformen verteilt das System Aktivierungen an alle parallelen Neuronenschaltungen in einem Kern, z.B. unter Verwendung eines Rundsendenetzwerks oder einer systolischen Verteilung. Des Weiteren enthält die vorliegende Offenbarung gemäß bevorzugten Ausführungsformen eine Schaltung für eine effiziente ternäre Vektormatrix-Multiplikation. Bei manchen Ausführungsformen wird mit ternären Multiplizierern mit m Einträgen und Akkumulatorschaltungen eine Vektormultiplikation mit m Einträgen und n Bits durchgeführt. Bei manchen Ausführungsformen wird eine Vektormultiplikation mit m Einträgen und n Bits direkt mit einem ternären komprimierten Vektor mit m Einträgen (z.B. 8 Bits für fünf Gewichtungen) und einer Akkumulationsschaltung durchgeführt.
  • In Bezug auf 1 wird eine als Referenz dienende neuronale Mehrkern-Inferenz-Prozessorarchitektur gemäß Ausführungsformen der vorliegenden Offenbarung dargestellt. Bei manchen Ausführungsformen empfängt der neuronale Kern 100 einen Vektor von neuronalen Aktivierungen als axonale Eingaben und multipliziert die Eingabeaktivierungen mit einer Matrix, die für synaptische Gewichtungen steht, um einen Vektor von neuronalen Aktivierungen als eine Ausgabe zu erzeugen. Bei manchen Ausführungsformen werden Eingabe- und Ausgabeaktivierungen als Vektoren mit 32 Elementen bereitgestellt. Bei solchen Ausführungsformen werden die synaptischen Gewichtungen durch eine „32 × 32“-Matrix mit 1024 Gewichtungselementen dargestellt. Bei verschiedenen Ausführungsformen sind die Gewichtungen binär, trinär (-1, 0, 1) oder kleine Ganzzahlen. Bei manchen Ausführungsformen ist eine Mehrzahl von neuronalen Kernen nebeneinander auf einem Chip angeordnet, wie in 1 gezeigt.
  • Insgesamt ist die Mehrzahl von neuronalen Inferenzkernen 100 durch ein Network on Chip (NoC) 102 verbunden. Wie in 1 gezeigt, enthält jeder neuronale Inferenzkern 100 einen Aktivierungsarbeitsspeicher 104, einen Gewichtungsarbeitsspeicher 106, einen Rundsendebus 108, ein Eingabeaktivierungsregister 110, einen massiv parallelen Vektormatrix-Multiplizierer 112, ein Ausgabeaktivierungsregister 114, einen Partialsummen-Arbeitspuffer 116 und einen Routing-Puffer 118.
  • Bei einer beispielhaften Ausführungsform verhält sich der Referenzkern gemäß dem folgenden Protokoll:
    1. 1. Bei der Initialisierung werden Eingabeaktivitäten in den Kern-Aktivierungsarbeitsspeichern gespeichert.
    2. 2. Gewichtungswerte werden über das Network on Chip (NoC) 102 an jeden Kern verteilt und in dem Gewichtungsarbeitsspeicher 106 gespeichert.
    3. 3. Ein Aktivierungsblock X wird aus dem Aktivierungsarbeitsspeicher 104 gelesen, ein Gewichtungsblock W wird aus dem Gewichtungsarbeitsspeicher 106 gelesen und an den Vektormatrix-Multiplizierer gesendet.
    4. 4. Der Vektormatrix-Multiplizierer berechnet ein Vektormatrix-Produkt XW, und die Ausgabe 7 wird in dem Partialsummenregister 116 gespeichert.
    5. 5. Die Partialsummen können über den Routing-Arbeitsspeicher 118 an benachbarte Kerne gesendet oder von diesen empfangen und anschließend zu anderen Matrixmultiplikations-Partialresultaten X'W' = Z' hinzugefügt werden.
    6. 6. Eine Aktivierungsfunktion wird auf die End-Partialsumme angewendet, und das Resultat Y wird in das Ausgabeaktivierungsregister 114 geschrieben.
    7. 7. Die Ausgabeaktivierung Y wird in den Aktivierungsarbeitsspeicher 104 zurückgeschrieben.
  • Auf diese Weise stellen verschiedene Kernkonfigurationen eine verteilte Logik zur Berechnung bereit. Bei verschiedenen Ausführungsformen wirken mehrere verteilte neuronale Kerne parallel. Diese Parallelität ermöglicht eine höhere Geschwindigkeit der neuronalen Netzwerkverarbeitung und verringert zugleich eine Latenz zwischen der Eingabedarstellung und der Ausgabeberechnung. Jeder neuronale Kern realisiert einen Teil des größeren neuronalen Netzwerkmodells für ein bestimmtes Problem. Jeder neuronale Kern empfängt einen Teil der gesamten Chip-Eingabe und einen Teil des gesamten neuronalen Netzwerkmodells. Die dadurch ermöglichte Modularität von Chips und Kernen führt zu einer Straffung von Systementwurf, Fehlerbehebung und Tests.
  • Für den Fachmann dürfte offensichtlich sein, dass die hier offenbarte bestimmte Kernrealisierung zur Veranschaulichung dient und nicht als Beschränkung gedacht ist und dass in Ausführungsformen der vorliegenden Offenbarung eine Vielfalt von Kernrealisierungen enthalten sein kann.
  • Bei einer beispielhaften Realisierung wird für jedes Neuron j bei einer Eingabeaktivierung xi und einer Gewichtung wij die folgende neuronale Netzwerkberechnung durchgeführt, wobei sich die Partialsumme Zj berechnen lässt durch: Z j = i x i w i j
    Figure DE112019000336T5_0001
  • Die Ausgabeaktivierung wird dann für jedes Ausgabeneuron j aus der Partialsumme z berechnet y j = f ( z j )
    Figure DE112019000336T5_0002
    wobei f(z) eine nicht lineare Aktivierungsfunktion ist.
  • Für f(z), kann eine Sigmoidfunktion, eine tanh(x)- oder eine einfachere lineare Rektifikatorfunktion verwendet werden.
  • Neuronale Beschleuniger wie z.B. GPUs und ASICs, ohne darauf beschränkt zu sein, können eine verteilte Multiplikations-Additions-Operation über mehrere Multiplikations-Akkumulations-Einheiten (Multiply-Accumulate, MAC) durchführen. Allerdings gehen solche Architekturen beim Durchführen einer Folge von Multiplikations-Additions-Operationen von ihrer Natur her sequenziell vor, was den Grad an Parallelität begrenzt, obwohl das zugrundeliegende neuronale Netzwerk von seinem Grundsatz her eine parallele Berechnung aufweist, die eine massive Parallelität ermöglicht. Entsprechend stellt die vorliegende Offenbarung vorzugsweise ein neuronales Netzwerk mit geringer Präzision bereit, bei dem die Hardware in der Lage ist, wesentlich mehr Berechnungen (z.B. mehrere Größenordnungen) parallel durchzuführen. Im Besonderen stellt die vorliegende Offenbarung vorzugsweise massiv parallele Datenverarbeitungselemente bereit, die mehrere Multiplikations-Additions-Operationen enthalten, um Neuronen parallel zu berechnen.
  • Mit Bezug auf 2 wird ein beispielhaftes massiv paralleles Datenverarbeitungselement zum Berechnen von Neuronenaktivierungen offenbart. Die beispielhafte Ausführungsform enthält eine massiv parallele Vektormatrix-Multiplikationseinheit für einen neuronalen Inferenzprozessor mit Neuronen von geringer Präzision. In der Recheneinheit 202 wird eine Mehrzahl von Addiererbäumen 204 bereitgestellt (wobei jeder Addiererbaum n Ausgaben von n Multiplizierern summieren kann). Ein einzelner Multiplizierer ist als 206 dargestellt, wobei eine einzelne Spalte 208 eines VMMs als ein dendritischer Baum dargestellt ist (und mit Bezug auf 3 ausführlicher beschrieben wird).
  • Das System empfängt X, einen Eingabeaktivierungs-Zeilenvektor des n-Elements (bei manchen Ausführungsformen besteht jedes Element aus 4 Bits mit n = 32). Zusätzlich empfängt das System W, eine „n × m“-Gewichtungsmatrix (bei manchen Ausführungsformen besteht jedes Element aus 2 Bits und n = m = 32). Die Recheneinheit 202 hat n × m Multiplizierer sowie Addierer, um Produkte zu kombinieren. Sie berechnen alle Multiplikationen parallel und summieren die Resultate parallel (wobei die exakte Position eines Multiplizierers jedoch variieren kann und nicht auf die dargestellte bestimmte Anordnung beschränkt ist). Bei manchen Ausführungsformen gibt es 32 × 32 = 1024 kleine Multiplizierer. Das Resultat Z = XW ist ein Vektormatrix-Produkt mit m Elementen. Bei einer beispielhaften Ausführungsform ist m = 32, aber jedes der m-Elemente besteht aus 10 Bits.
  • Wie in 3 dargestellt, kann das Ausgabeelement der Vektormatrix-Multiplikationseinheit aus 2 durch n parallele Multiplizierer, gefolgt von einem Addiererbaum berechnet werden. Im Besonderen werden die Eingaben, Vektor X für n-Elemente und Wj (j-te Spalte der Matrix W), an parallele n-Wege-Multiplizierer 302 verteilt, die in einer parallelen Ausrichtung konfiguriert sein können. Jeder Multiplizierer berechnet ein Produkt, wobei die Produkte durch den Addiererbaum 304 zu einer einzigen Summe addiert werden. Die Ausgabe des Addiererbaums ist die Partialsumme 306, die zum Berechnen der Neuronenaktivierung verwendet werden kann. Wie weiter unten dargelegt, kann diese Partialsumme einer Aktivierungsfunktion bereitgestellt werden, die bei manchen Ausführungsformen programmierbar ist und als eine nicht lineare oder lineare Funktion wie z.B. die Identitätsfunktion definiert werden kann.
  • In der beispielhaften Ausführungsform aus 3 werden n Multiplizierer und ein Addiererbaum bereitgestellt. Zusätzlich werden der Eingabe-Zeilenvektor X des n-Elements und Wj (j-te Spalte der Matrix W) an n Multiplizierer verteilt; jeder Multiplizierer berechnet ein Produkt; die Produkte werden durch den Addiererbaum zu einer einzigen Summe addiert; und die Ausgabe Zj = Σi xiwij steht für das j-te Vektorelement von Z = XW. Bei manchen Ausführungsformen handelt es sich bei den Multiplizierern um Multiplizierer mit 4 × 2 Bits, und der Addiererbaum summiert die Ausgaben von n = 32 Multiplizierern, wobei die endgültige Ausgabe 10 Bits lautet. Bei anderen Ausführungsformen werden die Multiplikations- und Additionsoperationen unter Verwendung von Übertrags-Speicher-Addierern (Carry-Save Adders, CSAs) durchgeführt, so dass die endgültige Ausgabe aus zwei Vektoren (Summenvektor und Übertragsvektor) besteht. Die endgültige Antwort Z ist die Addition der Summen- und Übertragsvektoren. Die endgültige Addition der Summen- und Übertragsvektoren kann innerhalb des dendritischen Baums erfolgen, oder sie kann durch eine nachfolgende Verarbeitungsstufe außerhalb des dendritischen Baums durchgeführt werden.
  • In Verbindung mit der in 4 schematisch gezeigten Operation wird eine beispielhafte Ausführungsform vorgestellt, bei der das Resultat des Vektormatrix-Multiplizierers zu einem zuvor berechneten (Partialsummen-)Resultat addiert wird. Bei solchen Ausführungsformen kann das (als ein Partialsummenvektor bezeichnete) Ausgaberesultat der Vektormatrix-Multiplikationseinheit zu einem zuvor berechneten Partialsummenvektor addiert werden. Wie in 4 gezeigt, kann ein Partialsummenregister Partialsummenvektoren von m-Elementen und m parallele Addierer speichern, um die neuen Partialsummen (Z) und zuvor berechnete Partialsummen (Vt-1) zu addieren. Außerdem können zuvor berechnete Partialsummen (Vt-1) über einen Kern-zu-Kern-Übertragungskanal von anderen Kernen empfangen werden. Bei der veranschaulichten Ausführungsform erfolgt die Partialsummen-Vektoraddition parallel mit m parallelen Addierern 407. Zusätzlich kann eine weitere Optimierung realisiert werden, wenn die Ausgabe des Vektormatrix-Multiplizierers durch zwei Sätze von Vektoren (Summenvektor und Übertragsvektor) dargestellt wird. Im Anschluss daran können unter Verwendung von Übertrags-Speicher-Addierern (ähnlich einem Gleitkomma-Multiplikationsaddierer) m-parallele Addierer realisiert werden.
  • Wie in 5 gezeigt, wird eine Aktivierungsfunktionsanordnung offenbart, bei der jedes Ausgabeelement der Vektormatrixeinheit Zj = Σi xiwij. ist. Eine Aktivierungsfunktion / kann angewendet werden, um die Neuronenaktivierung zu erhalten: Yj = f(∑ixiwij). Beispielhafte Aktivierungsfunktionen enthalten die Binärschwellenwert-Funktion, die Sigmoid-Funktion, die ReLU(Rectified Linear Unit)- und die Linear-Funktion sowie nicht lineare Arbiträrfunktionen, die unter Verwendung einer Verweistabelle (LUT) möglich sind. Im Anschluss daran wird eine Anordnung von m Aktivierungsfunktionsberechnern realisiert, die mit der Ausgabe der Vektormatrix-Einheit verbunden ist. Dies erzeugt m Aktivierungswerte, die jeweils darstellbar sind als: yj = f (Σixiwij). Um den Architekturentwurf zu vereinfachen, kann die Ausgabe der Aktivierungsfunktion (Y) dieselbe Präzision wie die Eingabeaktivierungen (X) aufweisen. Bei manchen Ausführungsformen weisen sowohl Eingabe- als auch Ausgabeaktivierungen 4 Bits auf. Die Aktivierungsfunktionsberechner können dazu verwendet werden, die Präzision der Vektoren zu verringern. Die Partialsummenvektoren (Z) weisen im Allgemeinen eine höhere Präzision auf (10 Bits), wohingegen die Ausgabeaktivierungsvektoren (Y) eine geringe Präzision (4 Bits) aufweisen. Diese Verringerung der Präzision kann durch eine Vielfalt von linearen und nicht linearen Funktionen erreicht werden. Bei einer beispielhaften Ausführungsform ist zudem m = n = 32, so dass die Eingabe- und Ausgabeaktivierungsvektoren dieselbe Länge aufweisen. Entsprechend kann der Ausgabeaktivierungsvektor (Y) sofort als ein Eingabeaktivierungsvektor (X) verwendet werden.
  • Eine typische Neuronenaktivierung verwendet wie gezeigt einen n-Element-Vektor X, eine „n × m“-Gewichtungsmatrix W, berechnet Yj = f (Σixiwij) und erzeugt einen m-Element-Ausgabevektor Y . Der Zj = Σi xi wij Teil wird durch einen Vektormatrix-Multiplizierer 502 berechnet, der aus Anordnungen von Multiplizierern 504 und Anordnungen von Addiererbäumen 506 besteht. Auf die Ausgabe der Vektormatrix-Multiplikation werden Aktivierungsfunktionen 508 parallel angewendet. Bei manchen Ausführungsformen ist n = m = 32 oder n = m = 64; dies ergibt eine identische Eingabe- und Ausgabegröße.
  • In Verbindung mit der in 6 schematisch gezeigten Operation wird eine beispielhafte Ausführungsform vorgestellt, bei der durch eine Verweistabelle eine programmierbare, nicht lineare monotone Aktivierungsfunktion realisiert wird. Bei dieser beispielhaften Ausführungsform geben programmierbare Tabelleneinträge T0, T1, T2... den Partialsummenbereich (PS-Bereich) für spezifische Ausgabewerte an:
    • • zj < T0, dann f = 0
    • • < zj < T1, dann f = 1
    • • < zj < T0, dann f = 2 usw.
  • Bei der in 6 dargestellten Realisierung enthält die programmierbare Verweistabelle T0, T1, T2, ...., und eine Anordnung von Komparatoren vergleicht Tabelleneinträge mit dem Partialsummenelement zj. Eine Selektorlogik wählt die Funktionswertausgabe entsprechend den Komparatorresultaten aus. Es dürfte offensichtlich sein, dass sich die Konfiguration aus 6 auf eine Verweistabelle von beliebiger Größe anwenden lässt.
  • Durch einen Vergleich von nur den höchstwertigen oder nur den niedrigstwertigen Bits kann die Logikgröße verringert werden. Dies funktioniert, da die Ausgabeaktivierung eine begrenzte Präzision aufweist (z.B. 4 Bits, während die Verweistabelle nur 15 Einträge benötigt). Auf diese Weise lassen sich nicht lineare Arbiträrfunktionen wie z.B. die Sigmoid-Funktion ohne eine komplexe arithmetische Recheneinheit realisieren.
  • Gemäß einer weiteren Ausführungsform der Offenbarung ist eine Vektormatrix-Multiplikation als Pipeline strukturiert, und auch die kombinierte Schaltung mit der Aktivierungsfunktionsschaltung ist als Pipeline strukturiert. Eine Strukturierung als Pipeline kann durchgeführt werden, um die Taktfrequenz und Leistung der Logikschaltungen zu erhöhen. Da die Vektormatrix-Multiplikationsschaltung aus vergleichsweise großen Schaltungen besteht, eignet sie sich gut für eine Strukturierung als Pipeline.
  • Die 7A und 7B stellen beispielhafte Ausführungsformen dar, bei denen eine Verteilung der Eingabeaktivierung durch ein Rundsenden oder durch eine systolische Pipeline erreicht wird. Die Vektormatrix-Multiplikationseinheit, die aus m dendritischen Bäumen besteht, bei denen es sich um mittelgroße Schaltungen handelt, kann mit Blick auf das Rundsenden von Eingaben optimiert werden. Zusätzlich kann durch Rundsenden ein Übergeben von Eingabeaktivierungen erreicht werden. Bei manchen Ausführungen beginnen alle dendritischen Bäume die Berechnung gemeinsam, und alle Ausgaberesultate werden zur gleichen Zeit erzeugt. Zusätzlich oder alternativ hierzu kann ein Übergeben von Eingabeaktivierungen durch eine systolische Pipeline erfolgen. Zum Beispiel kann eine Aktivierungseingabe bei jedem Taktzyklus von einem an einen anderen Latch übergeben und bei einem anderen Taktzyklus an die dendritischen Bäume ausgeliefert werden. Bei solchen Szenarien kann eine gewisse Verzögerung auftreten, wobei der Durchsatz jedoch verbessert werden kann, indem eine schnellere Taktfrequenz bereitgestellt wird.
  • In Verbindung mit der in 8 schematisch gezeigten Operation wird eine beispielhafte Ausführungsform vorgestellt, bei der ein Addiererbaum als ein Binärbaum von Addierern konfiguriert wird. Gemäß Ausführungsformen der vorliegenden Offenbarung kann ein Addiererbaum auf verschiedene Arten realisiert werden. Eine beispielhafte Realisierung eines Addiererbaums verwendet einen Binärbaum. Dies ist vorteilhaft, da gegenwärtige Werkzeuge für die Schaltungssynthese verwendet werden können, um gut optimierte Schaltungen zu erzeugen. Für einen Addiererbaum mit geringer Präzision stellt dieser Ansatz ausreichende Resultate bereit.
  • In Verbindung mit der in 9 schematisch gezeigten Operation wird eine beispielhafte Ausführungsform vorgestellt, bei der ein Addiererbaum mit Übertrags-Speicher-Addierern realisiert wird. Übertrags-Speicher-Addierer sind vorteilhaft, da sie eine kurze Zykluszeit aufweisen, drei Eingaben empfangen und zwei Ausgaben erzeugen, deren Summe gleich der Summe der Eingaben ist, und weil sie häufig in Multipliziererschaltungen verwendet werden. Wenn zum Beispiel s0 und c0 zwei Ausgaben eines CSAs sind: Summenvektor : s 0 = CSA S ( a 0 , a 1 , a 2 )
    Figure DE112019000336T5_0003
    Übertragsvektor : c 0 = CSA C ( a 0 , a 1 , a 2 )
    Figure DE112019000336T5_0004
    Dann ist s0 + c0 = a0 + a1 + a2
  • Bei der gezeigten beispielhaften Ausführungsform wird ein Wallace-Addiererbaum mit Übertrags-Speicher-Addierern erzeugt, und die Ausgabe besteht aus zwei Vektoren, deren Summe gleich der Summe aller Eingaben ist. Um das endgültige Summierungsresultat zu erhalten, müssen die beiden Ausgabevektoren ein letztes Mal durch einen normalen Addierer addiert werden. Ein zusätzlicher CSA kann vorhanden sein, um eine zuvor berechnete Partialsumme zu addieren, bevor die endgültige Addition durchgeführt wird. Ein Vorteil dieser Methode besteht darin, dass die Laufzeit kürzer als ein einfacher Addiererbaum ist.
  • Bei manchen Ausführungsformen wird eine „n × m“-Gewichtungsmatrix W nur mit {-1,0,1} als möglichen Werten verwendet. Eine ternäre Gewichtungsmatrix mit 4-Bit-Neuronen kann mit geeigneten Trainingsalgorithmen eine hohe Präzision erreichen. Eine beispielhafte „4 × 4“-Matrix lautet wie folgt: W = ( 0 1 1 0 1 0 1 0 1 0 1 1 0 1 1 1 )
    Figure DE112019000336T5_0005
  • Die 10A und 10B stellen beispielhafte Ausführungsformen dar, bei denen ein ternärer Multiplizierer durch einen Multiplexer realisiert wird. Ein Multiplexer kann hier als ein Ersatz für einen Multiplizierer bereitgestellt werden, wenn die Gewichtung ein ternärer Wert ist: wij ∈ {-1, 0, 1}. Das gezeigte Beispiel gibt xiwij aus, wobei ein Zweiwege-Multiplexer verwendet wird.
    • • Ausgaben xi wenn wij = 1
    • • Ausgaben -xi wenn wij = -1
    • • Wenn kein Steuersignal aktiviert („ein“) ist, besteht die Ausgabe aus dem Standardwert 0.
  • Dies lässt sich wie folgt und wie in 10B dargestellt optimieren: Verwendung von xl (Einerkomplement von xi) anstatt von -xi(Zweierkomplement). Da -xi = x l+1, muss 1 an anderer Stelle addiert werden. Die 1 passt gut, wenn als Addiererbaum ein CSA-Baum verwendet wird, da die CSA-C-Ausgabe eines CSAs um 1 nach links verschoben wird. Zusätzlich kann wij durch eine 2-Bit-Darstellung dargestellt werden [b1b0]. (1 : [01], 0 : [00], -1 [10].) Danach können b0 und b1 als eine Eingabe in den Multiplexer verwendet werden.
  • Gemäß einer weiteren Ausführungsform der Offenbarung kann eine Gewichtungsmatrix in einem komprimierten Format gespeichert und nach Bedarf decodiert werden. Hier kann der ternäre Gewichtungswert komprimiert werden, da eine ternäre Darstellung weniger Informationen enthält (als zwei Binärbits). Bei manchen Ausführungsformen kann ein 8-Bit-Binärwert für fünf ternäre Werte stehen. Zum Beispiel wird ein komprimierter 8-Bit-Wert ω in fünf ternäre Werte w0:4 decodiert, wobei die nachfolgende Gleichung verwendet wird. w 0 = ω % 3 1
    Figure DE112019000336T5_0006
    w 1 = ( ω / 3 ) % 3 1
    Figure DE112019000336T5_0007
    w 2 = ( ω / 9 ) %3 1
    Figure DE112019000336T5_0008
    w 3 = ( ω / 27 ) % 3 1
    Figure DE112019000336T5_0009
    w 4 = ( ω / 81 ) % 3 1
    Figure DE112019000336T5_0010
    wobei a % b der Restbetrag aus der Division von a durch b ist.
  • Unmittelbar vor der Durchführung der Vektormatrix-Multiplikation wird eine Decodierung der komprimierten Gewichtung durchgeführt. Dies führt zu weniger Speicher- und Datenübertragungsaufwand (z.B. werden anstatt von 10 Bits lediglich 8 Bits benötigt, um fünf ternäre Werte darzustellen). Es dürfte klar sein, dass dieser beispielhafte Komprimierungsalgorithmus zur Veranschaulichung bereitgestellt wird und dass auch andere Komprimierungsalgorithmen für eine Komprimierung der Gewichtungsmatrix verwendet werden können. Zusätzlich können dünnbesetzte Matrizen komprimiert werden, um ein besseres Komprimierungsverhältnis zu erhalten.
  • 11 stellt eine beispielhafte Ausführungsform bereit, bei der ein Verschieber verwendet wird, um eine Vektormatrix-Multiplikation mit einer höheren Präzision zu erhalten. In manchen Fällen ist es wünschenswert, bei der Beurteilung eines neuronalen Netzwerks eine Berechnung mit einer höheren Präzision zu verwenden. Zum Beispiel können Eingabeaktivierungsdaten durch 8-Bit-Werte dargestellt werden. Ein 8-Bit-Aktivierungswert x kann dargestellt werden durch: x [ 7 : 0 ] = x L + ( x M < < 4 )
    Figure DE112019000336T5_0011
    wobei xL die niedrigstwertigen vier Bits ist
    und xM die höchstwertigen vier Bits ist.
  • XW kann berechnet werden, indem die Vektormatrix-Multiplikation wiederholt wird, da: X W = X L W + X M W < < 4
    Figure DE112019000336T5_0012
  • Die Partialsumme Vt-1 = XLW wird berechnet und um vier Bits nach links verschoben und zu der neuen Partialsumme Z = XMW addiert. Eine Anordnung von Verschiebern, die sich in dem Pfad von den Partialsummenregistern zu den Addiereranordnungen befindet, kann verwendet werden, um verschobene Partialsummen zu dem neuen Vektormatrix-Multiplikationsresultat zu addieren.
  • Entsprechend gibt es eine Anzahl von Vektormatrix-Multiplizierern, die Element für Element eine Multiplikations-Additions-Operation anwenden und nacheinander berechnen. Gemäß bevorzugten Ausführungsformen behandelt die vorliegende Offenbarung eine Vektormultiplikation mit geringer Präzision, für die eine parallele Architektur verwendet werden kann, um die gesamte Vektormultiplikation auf einmal zu berechnen. Somit ist der hier offenbarte neuartige parallele Aspekt besonders vorteilhaft gegenüber Methoden nach dem Stand der Technik.
  • Bei verschiedenen Ausführungsformen weist die in 5 dargestellte Schaltung m Schaltungen auf, wie in 12 dargestellt. Im Besonderen werden die Eingaben, n-Element-Vektor X und Wj (j-te Spalte der Matrix W), an n Multiplizierer 1202 verteilt, die in einer parallelen Ausrichtung konfiguriert sein können. Jeder Multiplizierer berechnet ein Produkt, wobei die Produkte durch den Addiererbaum 1204 zu einer einzigen Summe addiert werden. Die Ausgabe des Addiererbaums wird der Aktivierungsfunktion 1206 bereitgestellt, um die Neuronenaktivierung zu erhalten. Bei manchen Ausführungsformen ist diese Funktion programmierbar und kann als eine nicht lineare oder lineare Funktion wie z.B. die Identitätsfunktion definiert werden.
  • Gemäß einer Ausführungsform der Offenbarung berechnen die vorgestellten Systeme und Verfahren eine Vektormultiplikation, auf die eine nicht lineare oder lineare Aktivierungsfunktion folgen kann. Im Besonderen stellen Ausführungsformen der vorliegenden Offenbarung eine Berechnung von neuronalen Aktivierungen bereit. Zusätzlich stellen Ausführungsformen der vorliegenden Offenbarung eine „Pooling“-Operation in neuronalen Netzwerken (NN) bereit, die wesentlich und zeitaufwändig ist. Darüber hinaus stellen Ausführungsformen der vorliegenden Offenbarung eine Datenmisch-Operation bei einer neuronalen Netzwerk(NN)-Inferenz bereit. Diese Berechnungen werden erreicht, indem die oben beschriebenen dendritischen Baumschaltungen erweitert werden.
  • In Verbindung mit der in 13 schematisch gezeigten Operation wird eine beispielhafte Datenmisch-Operation dargestellt. Zum Beispiel wird eine Butterfly-Permutation wie folgt bereitgestellt: Für einen Eingabevektor X = (0123) ist das permutierte Ausgaberesultat Y = (1032). Bei manchen Ausführungsformen kann eine Misch-Operation realisiert werden, indem: die Aktivierungsfunktion als die Identitätsfunktion (id(x) = x) definiert wird; die Gewichtungsmatrix W als eine Permutationsmatrix definiert wird. Zum Beispiel hat nur ein Element in einer Zeile und Spalte den Wert 1, und alle anderen Elemente haben den Wert 0. Eine beispielhafte Realisierung eines Butterfly-Netzwerks wird in 14A veranschaulicht. Wenn die Matrix-Multiplikationsoperation mit der in 14A dargestellten Matrix W durchgeführt wird, wird der Eingabevektor X = (0,1,2,3) zu einem Ausgabevektor Y = (1,0,3,2) permutiert. Eine beispielhaftes Butterfly-Netzwerk zweiten Grades wird in 14B veranschaulicht. Wenn die Matrix-Multipliziereroperation mit der in 14B dargestellten Matrix W durchgeführt wird, wird der Eingabevektor X = (0,1,2,3) zu einem Ausgabevektor Y = (2,3,0,1) permutiert.
  • In Verbindung mit der in 15 schematisch gezeigten Operation wird eine beispielhafte Ausführungsform vorgestellt, bei der gemäß Ausführungsformen der vorliegenden Offenbarung Daten aus mehreren Vektoren in einen einzigen Vektor gepackt werden. Dieses Merkmal kann besonders für ein Tensor-Downsampling von Nutzen sein.
  • Zum Zwecke der Veranschaulichung und nicht als Beschränkung werden die Vektoren XA = (0 1 2 3) und XB = (4 5 6 7) in einen einzigen Vektor Y = (0 2 4 6) gepackt, indem alternativ Werte ausgewählt werden. Bei dieser beispielhaften Ausführungsform wird die folgende Vektormatrix-Multiplikationseinheit 1502 verwendet, wobei die Aktivierungsfunktion als die Identitätsfunktion (id(x) = x) definiert wird.
    • • Führe erstens durch: Z = XAW0 und V = Z + 0
      • W 0 = ( 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 )
        Figure DE112019000336T5_0013
    • • Führe zweitens durch V = V + XBW1
      • W 1 = ( 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 )
        Figure DE112019000336T5_0014
  • Das Vektorregister enthält die zuvor berechnete Partialsumme (V1). Diese Partialsumme wird an die Anordnung von Addierern 1504 zurückgemeldet, welche die neue Partialsumme (XBW1) dann addiert. Der in 15 rechts dargestellte Datenstrom besteht aus einer Anordnung von Addierern, Registern, Rückmeldepfaden sowie aus einer Anordnung von Aktivierungsfunktionen 1506, die als die Identitätsfunktion definiert werden.
  • In Verbindung mit der in 16 schematisch gezeigten Operation wird eine beispielhafte Ausführungsform vorgestellt, bei der gemäß Ausführungsformen der vorliegenden Offenbarung unter Verwendung der Vektormatrix-Multiplikationseinheit Maximalwert-Pooling-Operationen durchgeführt werden. Dieses Merkmal kann besonders nützlich bei neuronalen Netzwerken sein, um große Bilder auf eine kleinere Größe zu reduzieren. Zum Zwecke der Veranschaulichung und nicht als Beschränkung wird eine „2 × 2“-Maximalwert-Pooling-Operation für XA = (0 3 2 1), XB = (3 1 2 2), Xc = (4 0 1 0) und XD = (0 14 0) durchgeführt. Bei der dargestellten beispielhaften Ausführungsform wird ein elementweiser Maximalwert verwendet, um Y = (4 3 4 2) zu erhalten. Bei dieser beispielhaften Ausführungsform kann die Vektormatrix-Multiplikationseinheit wie folgt verwendet werden:
    • • Definiere die Aktivierungsfunktion als die Identitätsfunktion.
    • • Verwende die Identitätsmatrix W i d = ( 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 ) .
      Figure DE112019000336T5_0015
    • • Kombiniere die aktuelle Partialsumme (Z) unter Verwendung des Rückmeldepfads mit der zuvor berechneten Partialsumme (V) und verwende hierfür die elementweise Maximalwert-Operation.
    • • Diese Operationen können wie folgt beschrieben werden:
      1. 1. V = max (XAWid, 0)
      2. 2. V = max (XBWid, V)
      3. 3. V = max (XcWid, V)
      4. 4. V = max (XDWid, V)
      5. 5. Y = id(Vt-1)
  • In Verbindung mit der in 17 schematisch gezeigten Operation wird eine beispielhafte Ausführungsform vorgestellt, bei der gemäß Ausführungsformen der vorliegenden Offenbarung unter Verwendung der Vektormatrix-Multiplikationseinheit Mittelwert-Pooling-Operationen durchgeführt werden. Dieses Merkmal kann bei neuronalen Netzwerken ebenfalls besonders nützlich sein, um große Bilder auf eine kleinere Größe zu reduzieren. Zum Zwecke der Veranschaulichung und nicht als Beschränkung wird eine 2x2-Mittelwert-Pooling-Operation für XA = (0 3 2 1), XB = (3 1 2 2), Xc = (40 10) und XD = (1 0 3 1) durchgeführt. Dabei wird ein elementweiser Mittelwert verwendet, um Y = (2 1 2 1) zu erhalten. Bei dieser beispielhaften Ausführungsform kann die Vektormatrix-Multiplikationseinheit wie folgt verwendet werden:
    • • Definiere die Aktivierungsfunktion als Multiplikation mit 1/4.
    • • Verwende die Identitätsmatrix Wid.
    • • Addiere die zuvor berechnete Partialsumme (V) unter Verwendung des Rückmeldepfads einfach zu dem neuen Vektormatrixprodukt (Z = XW).
    • • Als Formel ausgedrückt wird Folgendes durchgeführt:
      1. 1. V = XAWid + 0
      2. 2. V = XBWid + V
      3. 3. V = XCWid + V
      4. 4. V = XDWid + V
      5. 5. Y = (V ∗ 1/4)
  • In Verbindung mit der in 18 schematisch gezeigten Operation wird eine beispielhafte Ausführungsform vorgestellt, bei der unter Verwendung der Vektormatrix-Multiplikationseinheit elementweise Multiplikationsoperationen durchgeführt werden. Dieses Merkmal ist bei manchen neuronalen Netzwerken wie z.B. LSTM-Netzwerken (Long Short-Term Memory) von entscheidender Bedeutung. Zum Zwecke der Veranschaulichung und nicht als Beschränkung wird eine elementweise Multiplikationsoperation für XA= (0 3 2 1) und XB= (3 1 2 2) durchgeführt, deren Resultat Y = (0 9 4 2) lautet. Bei dieser beispielhaften Ausführungsform kann die Vektormatrix-Multiplikationseinheit wie folgt verwendet werden:
    • • Definiere die Aktivierungsfunktion als die Identitätsfunktion.
    • • Verwende die Identitätsmatrix Wid.
    • • Die Rückmeldung wird durch eine Anordnung von Multiplizierereinheiten kombiniert, um aus dem Produkt der zuvor berechneten Partialsummen (V) das neue Vektormatrixprodukt (Z = XW) zu berechnen.
    • • Als Formel ausgedrückt, wird Folgendes durchgeführt:
      1. 1. V = XAWid ∗ 1
      2. 2. V = XBWid ∗ V
      3. 3. Y = id(V)
  • In Verbindung mit der in 19 schematisch gezeigten Operation wird eine beispielhafte Ausführungsform vorgestellt, bei der eine programmierbare Operation vorherige Partialsummen mit mehreren elementweisen Operationen kombiniert. Zum Zwecke der Veranschaulichung und nicht als Beschränkung kann die Vektoreinheit elementweise Funktionen wie Addition, Maximalwert, Multiplikation, Verschiebung, Umgehung durchführen. Zusätzlich oder alternativ können diese Funktionen in Verbindung mit einer Verschiebung (einer einzelnen Eingabe) bereitgestellt werden, z. B.:
    • • add(shift(A), B), max(shift(A), B), mult(shift(A), B), shift(A)
    • • SIMD(Single Instruction, Multiple Data)-Operation
    • • Dieselbe Operation wird auf alle Eingaben in die Vektoreinheit parallel angewendet.
    • • Die Vektoreinheit ist programmierbar, um in jedem Zyklus jede beliebige Operation durchzuführen.
  • Entsprechend weist die Vektoreinheit mehrere auswählbare elementweise Operatoren auf, und der Eingabepfad weist einen auswählbaren Verschiebe-Operator auf.
  • Entsprechend stellen Ausführungsformen der vorliegenden Offenbarung eine Einheit bereit, die eine Vektormatrix-Multiplikationseinheit mit programmierbaren elementweisen Operatoren und elementweisen Verschiebe-Operationen aufweist. Bei manchen Ausführungsformen ist die Datenlogik als Pipeline strukturiert.
  • In Bezug auf 20 wird ein Verfahren zum Betreiben eines neuronalen Verarbeitungskerns gemäß Ausführungsformen der vorliegenden Offenbarung veranschaulicht. In 2001 wendet eine Mehrzahl von gleich großen Gruppen von Multiplizierern eine Mehrzahl von Gewichtungen auf eine Mehrzahl von Eingabeaktivierungen parallel an, um für jede Gruppe von Multiplizierern eine Mehrzahl von Ausgaben zu erzeugen. In 2002 wird die Mehrzahl von Ausgaben aus jeder Gruppe von Multiplizierern parallel addiert, um aus jeder Gruppe von Multiplizierern eine Partialsumme zu erzeugen. Bei manchen Ausführungsformen wird in 2003 eine Funktion auf die Partialsummen parallel angewendet, um eine Mehrzahl von Ausgabewerten zu erzeugen. Bei manchen Ausführungsformen enthält die auf die Partialsummen angewendete Funktion Vektoradditions-, Multiplikations-, Verschiebe- und Maximalwert-Operationen, mit denen zusammengesetzte Partialsummen erzeugt werden. Wie dargestellt, können bei manchen Ausführungsformen in 2001 zusätzliche Partialsummen berechnet werden. In 2004 wird eine Aktivierungsfunktion auf die Partialsummen parallel angewendet, um eine Mehrzahl von Ausgabeaktivierungen zu erzeugen.
  • In Bezug auf 21 wird eine schematische Darstellung eines Beispiels für einen Datenverarbeitungsknoten gezeigt. Ein Datenverarbeitungsknoten 10 ist lediglich ein Beispiel für einen geeigneten-Datenverarbeitungsknoten und nicht als eine wie auch immer geartete Beschränkung von Verwendungsumfang oder Funktionalität von hier beschriebenen Ausführungsformen gedacht. Unabhängig davon kann der Datenverarbeitungsknoten 10 mit jeder beliebigen hier dargelegten Funktionalität realisiert werden und/oder diese durchführen.
  • In dem Datenverarbeitungsknoten 10 gibt es ein Computersystem/einen Server 12, das bzw. der mit zahlreichen anderen Universal- oder Spezial-Datenverarbeitungssystemumgebungen oder -konfigurationen betrieben werden kann. Beispiele bekannter Datenverarbeitungssysteme, -umgebungen und/oder -konfigurationen, die für eine Verwendung mit einem Computersystem/Server 12 geeignet sein können, sind, ohne darauf beschränkt zu sein, Personal-Computersysteme, Server-Computersysteme, Thin Clients, Thick Clients, Handheld- oder Laptop-Einheiten, Mehrprozessorsysteme, Systeme auf Grundlage von Mikroprozessoren, Set-Top-Boxen, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Mini-Computersysteme, Mainframe-Computersysteme sowie verteilte Cloud-Computing-Umgebungen, die irgendeines der obigen Systeme oder Einheiten enthalten, und dergleichen.
  • Das Computersystem/der Server 12 lässt sich im allgemeinen Zusammenhang von Anweisungen beschreiben, die durch ein Computersystem ausführbar sind, wie z.B. Programmmodule, die durch ein Computersystem ausgeführt werden. Allgemein können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. enthalten, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen realisieren. Das Computersystem/der Server 12 kann in verteilten Cloud-Computing-Umgebungen eingesetzt werden, wo Aufgaben von entfernt angeordneten Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl in lokalen als auch in entfernt angeordneten Computersystem-Speichermedien wie beispielsweise Arbeitsspeichereinheiten befinden.
  • Wie in 21 gezeigt, wird das Computersystem/der Server 12 in dem Datenverarbeitungsknoten 10 als eine Universal-Datenverarbeitungseinheit gezeigt. Die Komponenten des Computersystems/Servers 12 können eine(n) oder mehrere Prozessoren oder Verarbeitungseinheiten 16, einen Systemarbeitsspeicher 28 und einen Bus 18 enthalten, der verschiedene Systemkomponenten wie z.B. den Systemarbeitsspeicher 28 mit dem Prozessor 16 verbindet, ohne jedoch darauf beschränkt zu sein.
  • Der Bus 18 steht für mindestens eine von beliebigen mehreren Arten von Busstrukturen, z.B. ein Arbeitsspeicherbus oder ein Arbeitsspeicher-Controller, ein Peripheriebus, ein Accelerated Graphics Port (AGP) und ein Prozessor- oder lokaler Bus, wobei eine beliebige aus einer Vielfalt von Busarchitekturen verwendet werden kann. Beispielhaft und nicht als Beschränkung zu verstehen, enthalten derartige Architekturen einen ISA-Bus (Industry Standard Architecture), einen MCA-Bus (Micro Channel Architecture), einen EISA-Bus (Enhanced ISA), einen lokalen VESA-Bus (Video Electronics Standards Association), einen PCI-Bus (Peripheral Component Interconnect), Peripheral Component Interconnect Express (PCle) und Advanced Microcontroller Bus Architecture (AMBA).
  • Das Computersystem/der Server 12 enthält üblicherweise eine Vielfalt von Medien, die durch ein Computersystem lesbar sind. Derartige Medien können beliebige verfügbare Medien sein, auf die das Computersystem/der Server 12 zugreifen kann, und sowohl flüchtige als auch nicht flüchtige, entfernbare als auch nicht entfernbare Medien enthalten.
  • Der Systemarbeitsspeicher 28 kann ein durch ein Computersystem lesbares Medium in Form eines flüchtigen Arbeitsspeichers wie z.B. einem RAM 30 (Direktzugriffsspeicher, Random Access Memory) und/oder eines Cache-Arbeitsspeichers 32 enthalten. Das Computersystem/der Server 12 kann des Weiteren andere entfernbare/nicht entfernbare, flüchtige/nicht flüchtige Computersystem-Speichermedien enthalten. Nur um ein Beispiel zu geben, kann ein Speichersystem 34 zum Lesen von und Schreiben auf ein nicht entfernbares, nicht flüchtiges magnetisches Medium bereitgestellt werden (das nicht gezeigt ist und üblicherweise als eine „Festplatte“ bezeichnet wird). Obwohl hier nicht abgebildet, können ein Magnetplattenlaufwerk zum Lesen von und Schreiben auf eine entfernbare, nicht flüchtige Magnetplatte (z.B. eine „Diskette“) sowie ein optisches Plattenlaufwerk zum Lesen von oder Schreiben auf eine entfernbare, nicht flüchtige optische Platte wie z.B. ein CD-ROM, ein DVD-ROM oder ein anderes optisches Medium bereitgestellt werden. In diesen Fällen kann jedes Laufwerk über eine oder mehrere Datenmedienschnittstellen mit dem Bus 18 verbunden sein. Wie weiter unten ausführlicher dargestellt und beschrieben, kann der Arbeitsspeicher 28 mindestens ein Programmprodukt mit einem Satz von (z.B. mindestens einem) Programmmodulen enthalten, die konfiguriert werden, um die Funktionen von Ausführungsformen der Offenbarung durchzuführen.
  • Zum Beispiel und ohne als Beschränkung gedacht zu sein, kann ein Programm/Dienstprogramm 40 mit einem Satz von (mindestens einem) Programmmodulen 42 in dem Arbeitsspeicher 28 gespeichert sein, ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten. Das Betriebssystem, das eine oder die mehreren Anwendungsprogramme, die anderen Programmmodule und die Programmdaten oder eine Kombination hiervon können jeweils eine Realisierung einer Netzwerkumgebung enthalten. Die Programmmodule 42 führen im Allgemeinen die Funktionen und/oder Verfahrensweisen von hier beschriebenen Ausführungsformen aus.
  • Das Computersystem/der Server 12 kann zudem mit einer oder mehreren externen Einheiten 14 Daten austauschen, z.B. mit einer Tastatur, einer Zeigeeinheit, einer Anzeige 24 usw.; mit einer oder mehreren Einheiten, die einem Benutzer gestatten, mit dem Computersystem/Server 12 zu interagieren; und/oder mit beliebigen Einheiten (z.B. Netzwerkkarte, Modem usw.), die dem Computersystem/Server 12 ermöglichen, mit einer oder mehreren anderen Datenübertragungseinheiten Daten auszutauschen. Eine derartige Datenübertragung kann über Eingabe/Ausgabe-Schnittstellen (E/A-Schnittstellen) 22 erfolgen. Des Weiteren kann das Computersystem/der Server 12 über einen Netzwerkadapter 20 mit einem oder mehreren Netzwerken Daten austauschen, z.B. mit einem lokalen Netzwerk (LAN), einem Weitverkehrsnetzwerk (WAN) und/oder einem öffentlichen Netzwerk (z.B. dem Internet). Wie dargestellt, tauscht der Netzwerkadapter 20 über den Bus 18 Daten mit den anderen Komponenten des Computersystems/Servers 12 aus. Dabei sollte klar sein, dass - obwohl sie hier nicht abgebildet sind - auch andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem/Server 12 verwendet werden könnten. Beispiele hierfür sind, ohne darauf beschränkt zu sein, Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerksstapel, RAID-Systeme, Bandlaufwerke und Datenarchivierungsspeichersysteme usw.
  • Bei verschiedenen Ausführungsformen sind ein oder mehrere (nicht dargestellte) neurosynaptische Kerne mit dem Bus 18 verbunden. Bei solchen Ausführungsformen kann ein neurosynaptischer Kern über den Bus 18 Daten von dem Arbeitsspeicher 28 empfangen oder in diesen schreiben. Entsprechend kann ein neurosynaptischer Kern wie hier beschrieben über den Bus 18 mit anderen Komponenten Daten austauschen. Bei verschiedenen Ausführungsformen kann ein neurosynaptischer Kern einen oder mehrere lokale Controller, Arbeitsspeicher oder Taktgeber enthalten, wie dies zum Beispiel an anderer Stelle hier dargelegt ist.
  • Die vorliegende Offenbarung kann ein System, ein Verfahren und/oder ein Computerprogrammprodukt enthalten. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) mit darauf durch einen Computer lesbaren Programmanweisungen enthalten, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Offenbarung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Anweisungsausführungseinheit enthalten 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 RAM, ein ROM, ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer CD-ROM, eine DVD (Digital Versatile Disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder erhabene 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. durch ein Lichtwellenleiterkabel geleitete 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 Weitverkehrsnetzwerk 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 Offenbarung 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 entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten 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 Weitverkehrsnetzwerk (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Diensteanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld 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 Offenbarung durchzuführen.
  • Aspekte der vorliegenden Offenbarung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Offenbarung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaubildern mittels durch einen Computer lesbare 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 des Ablaufplans und/oder des Blockschaubilds 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 der Ablaufpläne und/oder Blockschaubilder 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 durch einen Computer umgesetzten 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 Blockschaubilder festgelegten Funktionen/Schritte umsetzen.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und den Betrieb möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern 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 dem Block 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 Blockschaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaubildern 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.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Offenbarung wurden zum Zwecke der Veranschaulichung vorgelegt und sind nicht als vollständig oder auf die offenbarten Ausführungsformen beschränkt zu verstehen. Der Fachmann weiß, dass zahlreiche Änderungen und Abwandlungen möglich sind, ohne von Umfang und Geist der beschriebenen Ausführungsformen abzuweichen. Die hier verwendete Begrifflichkeit wurde gewählt, um die Grundsätze der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber marktgängigen Technologien bestmöglich zu erläutern bzw. anderen Fachleuten das Verständnis der hier offenbarten Ausführungsformen zu ermöglichen.

Claims (35)

  1. System, aufweisend: eine Mehrzahl von Multiplizierern, wobei die Mehrzahl von Multiplizierern in einer Mehrzahl von gleich großen Gruppen angeordnet ist, wobei jeder aus der Mehrzahl von Multiplizierern ausgelegt ist, um eine Gewichtung auf eine Eingabeaktivierung parallel anzuwenden, um eine Ausgabe zu erzeugen; eine Mehrzahl von Addierern, wobei jeder aus der Mehrzahl von Addierern mit einer der Gruppen von Multiplizierern wirkverbunden ist, wobei jeder aus der Mehrzahl von Addierern ausgelegt ist, um die Ausgaben der Multiplizierer innerhalb der ihnen jeweils zugehörigen Gruppe parallel zu addieren, um eine Partialsumme zu erzeugen.
  2. System nach Anspruch 1, des Weiteren aufweisend: eine Mehrzahl von Funktionsblöcken, wobei jeder aus der Mehrzahl von Funktionsblöcken mit einem aus der Mehrzahl von Addierern wirkverbunden ist, wobei jeder aus der Mehrzahl von Funktionsblöcken ausgelegt ist, um eine Funktion auf die Partialsumme des ihm zugehörigen Addierers parallel anzuwenden, um einen Ausgabewert zu erzeugen.
  3. System nach Anspruch 1, das ausgelegt ist, um eine Matrix von Gewichtungen und einen Vektor von Aktivierungen zu empfangen.
  4. System nach Anspruch 1, wobei jeder aus der Mehrzahl von Addierern einen Baum von Addierern aufweist.
  5. System nach Anspruch 4, wobei der Baum von Addierern ein Binärbaum ist.
  6. System nach Anspruch 4, wobei der Baum von Addierern eine Mehrzahl von Übertrags-Speicher-Addierern aufweist.
  7. System nach Anspruch 3, wobei jede Aktivierung des Vektors von Aktivierungen an alle Gruppen von Multiplizierern rundgesendet wird.
  8. System nach Anspruch 3, des Weiteren aufweisend eine systolische Pipeline, die mit jeder der Gruppen von Multiplizierern wirkverbunden ist.
  9. System nach Anspruch 1, wobei die Gruppen von Multiplizierern als Pipeline strukturiert sind.
  10. System nach Anspruch 1, wobei die Gewichtungen ausgewogene ternäre Werte sind.
  11. System nach Anspruch 1, wobei jeder aus der Mehrzahl von Multiplizierern einen Multiplexer aufweist.
  12. System nach Anspruch 3, wobei die Matrix von Gewichtungen komprimiert wird und wobei das System ausgelegt ist, um die komprimierte Matrix von Gewichtungen zu dekomprimieren.
  13. System nach Anspruch 2, wobei die Mehrzahl von Funktionsblöcken ausgelegt ist, um die Ausgabewerte mit nachfolgend berechneten Ausgabewerten zu kombinieren.
  14. System nach Anspruch 2, des Weiteren aufweisend: eine Mehrzahl von Verschiebern, wobei jeder Verschieber mit einem der Funktionsblöcke wirkverbunden ist, wobei jeder Verschieber ausgelegt ist, um den Ausgabewert seines entsprechenden Funktionsblocks parallel zu verschieben, und wobei die Mehrzahl von Funktionsblöcken ausgelegt ist, um die verschobenen Werte mit nachfolgend berechneten Ausgabewerten zu kombinieren.
  15. System nach Anspruch 2, wobei die Funktion eines jeden der Funktionsblöcke eine Aktivierungsfunktion ist.
  16. System nach Anspruch 2, wobei die Funktion eines jeden der Funktionsblöcke programmierbar ist.
  17. System nach Anspruch 2, wobei die Funktion eines jeden der Funktionsblöcke eine Addition ist.
  18. System nach Anspruch 2, wobei die Funktion eines jeden der Funktionsblöcke eine Multiplikation ist.
  19. System nach Anspruch 2, wobei die Funktion eines jeden der Funktionsblöcke eine Identitätsfunktion ist.
  20. System nach Anspruch 2, des Weiteren aufweisend eine Verweistabelle, wobei die Funktion eines jeder der Aktivierungsfunktionsblöcke einen Verweis aus der Verweistabelle aufweist.
  21. System nach Anspruch 20, wobei die Verweistabelle programmierbar ist.
  22. System nach Anspruch 2, wobei die Funktion eines jeden der Funktionsblöcke eine Maximalwert-Funktion ist.
  23. System nach Anspruch 2, wobei die Funktion eines jeden der Funktionsblöcke eine Minimalwert-Funktion ist.
  24. System nach Anspruch 2, des Weiteren aufweisend ein Vektorregister, wobei das Vektorregister mit den Funktionsblöcken wirkverbunden ist, wobei das Vektorregister ausgelegt ist, um die Ausgabewerte der Funktionsblöcke zu speichern; eine zweite Mehrzahl von Funktionsblöcken, wobei jeder aus der zweiten Mehrzahl von Funktionsblöcken mit dem Vektorregister wirkverbunden ist, wobei jeder aus der zweiten Mehrzahl von Funktionsblöcken ausgelegt ist, um eine Funktion auf die gespeicherten Ausgabewerte parallel anzuwenden.
  25. System nach Anspruch 24, wobei die Funktion eines jeden aus der zweiten Mehrzahl von Funktionsblöcken die Identitätsfunktion ist.
  26. System nach Anspruch 24, wobei die Funktion eines jeden aus der zweiten Mehrzahl von Funktionsblöcken eine Aktivierungsfunktion ist.
  27. System nach Anspruch 24, das ausgelegt ist, um eine Permutationsoperation durchzuführen.
  28. System nach Anspruch 24, das ausgelegt ist, um eine Vektorpack-Operation durchzuführen.
  29. System nach Anspruch 24, das ausgelegt ist, um eine Maximalwert-Pooling-Operation durchzuführen.
  30. System nach Anspruch 24, das ausgelegt ist, um Mittelwert-Pooling-Operation durchzuführen.
  31. System nach Anspruch 24, das ausgelegt ist, um eine elementweise Multiplikationsoperation durchzuführen.
  32. Verfahren, aufweisend: paralleles Anwenden einer Mehrzahl von Gewichtungen auf eine Mehrzahl von Eingabeaktivierungen durch eine Mehrzahl von gleich großen Gruppen von Multiplizierern, um für jede Gruppe von Multiplizierern eine Mehrzahl von Ausgaben zu erzeugen; paralleles Addieren der Mehrzahl von Ausgaben aus jeder Gruppe von Multiplizierern, um aus jeder Gruppe von Multiplizierern eine Partialsumme zu erzeugen.
  33. Verfahren nach Anspruch 32, des Weiteren aufweisend: paralleles Anwenden einer Funktion auf die Partialsummen, um eine Mehrzahl von Ausgabewerten zu erzeugen.
  34. System, aufweisend: eine Mehrzahl von Multiplizierern, wobei die Mehrzahl von Multiplizierern in einer Mehrzahl von gleich großen Gruppen angeordnet ist; eine Mehrzahl von Addierern, wobei die Mehrzahl von Addierern mit einer der Gruppen von Multiplizierern wirkverbunden ist; ein durch einen Computer lesbares Speichermedium mit darin enthaltenen Programmanweisungen, wobei die Programmanweisungen ausführbar sind, um ein Verfahren durchzuführen, aufweisend: paralleles Anwenden einer Gewichtung auf eine Eingabeaktivierung durch jeden aus der Mehrzahl von Multiplizierern, um eine Ausgabe zu erzeugen; paralleles Addieren der Ausgaben der Multiplizierer innerhalb der ihnen jeweils zugehörigen Gruppe durch jeden aus der Mehrzahl von Addierern, um eine Partialsumme zu erzeugen.
  35. System nach Anspruch 34, des Weiteren aufweisend: eine Mehrzahl von Funktionsblöcken, wobei jeder aus der Mehrzahl von Funktionsblöcken mit einem aus der Mehrzahl von Addierern wirkverbunden ist, wobei das Verfahren des Weiteren aufweist: paralleles Anwenden einer Funktion auf die Partialsumme des ihm zugehörigen Addierers durch jeden aus der Mehrzahl von Funktionsblöcken, um einen Ausgabewert zu erzeugen.
DE112019000336.4T 2018-03-30 2019-03-11 Massiv parallele neuronale inferenz-datenverarbeitungselemente Pending DE112019000336T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/942,289 US10621489B2 (en) 2018-03-30 2018-03-30 Massively parallel neural inference computing elements
US15/942,289 2018-03-30
PCT/IB2019/051959 WO2019186309A1 (en) 2018-03-30 2019-03-11 Massively parallel neural inference computing elements

Publications (1)

Publication Number Publication Date
DE112019000336T5 true DE112019000336T5 (de) 2020-09-17

Family

ID=68054462

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019000336.4T Pending DE112019000336T5 (de) 2018-03-30 2019-03-11 Massiv parallele neuronale inferenz-datenverarbeitungselemente

Country Status (6)

Country Link
US (2) US10621489B2 (de)
JP (1) JP7175548B2 (de)
CN (1) CN111758106B (de)
DE (1) DE112019000336T5 (de)
GB (1) GB2585615B (de)
WO (1) WO2019186309A1 (de)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9924490B2 (en) * 2013-10-09 2018-03-20 International Business Machines Corporation Scaling multi-core neurosynaptic networks across chip boundaries
US10175980B2 (en) 2016-10-27 2019-01-08 Google Llc Neural network compute tile
US10621489B2 (en) 2018-03-30 2020-04-14 International Business Machines Corporation Massively parallel neural inference computing elements
US11222257B1 (en) 2018-04-20 2022-01-11 Perceive Corporation Non-dot product computations on neural network inference circuit
US11586910B1 (en) 2018-04-20 2023-02-21 Perceive Corporation Write cache for neural network inference circuit
US11783167B1 (en) 2018-04-20 2023-10-10 Perceive Corporation Data transfer for non-dot product computations on neural network inference circuit
US10740434B1 (en) 2018-04-20 2020-08-11 Perceive Corporation Reduced dot product computation circuit
US11210586B1 (en) 2018-04-20 2021-12-28 Perceive Corporation Weight value decoder of neural network inference circuit
US11568227B1 (en) 2018-04-20 2023-01-31 Perceive Corporation Neural network inference circuit read controller with multiple operational modes
US11886979B1 (en) 2018-04-20 2024-01-30 Perceive Corporation Shifting input values within input buffer of neural network inference circuit
US11205115B1 (en) 2018-04-20 2021-12-21 Perceive Corporation Neural network inference circuit
US11277455B2 (en) 2018-06-07 2022-03-15 Mellanox Technologies, Ltd. Streaming system
CN110796244B (zh) * 2018-08-01 2022-11-08 上海天数智芯半导体有限公司 用于人工智能设备的核心计算单元处理器及加速处理方法
US20200106828A1 (en) * 2018-10-02 2020-04-02 Mellanox Technologies, Ltd. Parallel Computation Network Device
US20200117981A1 (en) * 2018-10-11 2020-04-16 International Business Machines Corporation Data representation for dynamic precision in neural network cores
US11537853B1 (en) 2018-11-28 2022-12-27 Amazon Technologies, Inc. Decompression and compression of neural network data using different compression schemes
US11995533B1 (en) 2018-12-05 2024-05-28 Perceive Corporation Executing replicated neural network layers on inference circuit
US11347297B1 (en) 2019-01-23 2022-05-31 Perceive Corporation Neural network inference circuit employing dynamic memory sleep
US11625393B2 (en) 2019-02-19 2023-04-11 Mellanox Technologies, Ltd. High performance computing system
EP3699770A1 (de) 2019-02-25 2020-08-26 Mellanox Technologies TLV Ltd. System und verfahren zur kollektiven kommunikation
US20190228809A1 (en) * 2019-03-29 2019-07-25 Intel Corporation Technologies for providing high efficiency compute architecture on cross point memory for artificial intelligence operations
US11615322B1 (en) 2019-05-21 2023-03-28 Perceive Corporation Compiler for implementing memory shutdown for neural network implementation configuration
US11790217B2 (en) * 2019-09-25 2023-10-17 Intel Corporation LSTM circuit with selective input computation
US11651209B1 (en) * 2019-10-02 2023-05-16 Google Llc Accelerated embedding layer computations
US20210125040A1 (en) * 2019-10-24 2021-04-29 International Business Machines Corporation 3d neural inference processing unit architectures
US11520854B2 (en) 2019-10-29 2022-12-06 Meta Platforms, Inc. Support for different matrix multiplications by selecting adder tree intermediate results
US11537859B2 (en) * 2019-12-06 2022-12-27 International Business Machines Corporation Flexible precision neural inference processing unit
US11750699B2 (en) 2020-01-15 2023-09-05 Mellanox Technologies, Ltd. Small message aggregation
US11252027B2 (en) 2020-01-23 2022-02-15 Mellanox Technologies, Ltd. Network element supporting flexible data reduction operations
US20210295134A1 (en) * 2020-03-18 2021-09-23 Infineon Technologies Ag Artificial neural network activation function
US20210303987A1 (en) * 2020-03-26 2021-09-30 Advanced Micro Devices, Inc. Power reduction for machine learning accelerator background
US11379557B2 (en) * 2020-05-07 2022-07-05 Meta Platforms, Inc. Device and method for flexibly summing matrix values
US11876885B2 (en) 2020-07-02 2024-01-16 Mellanox Technologies, Ltd. Clock queue with arming and/or self-arming features
US11403111B2 (en) * 2020-07-17 2022-08-02 Micron Technology, Inc. Reconfigurable processing-in-memory logic using look-up tables
US20220075669A1 (en) * 2020-09-08 2022-03-10 Technion Research And Development Foundation Ltd. Non-Blocking Simultaneous MultiThreading (NB-SMT)
US11556378B2 (en) 2020-12-14 2023-01-17 Mellanox Technologies, Ltd. Offloading execution of a multi-task parameter-dependent operation to a network device
US11355170B1 (en) 2020-12-16 2022-06-07 Micron Technology, Inc. Reconfigurable processing-in-memory logic
KR20220101519A (ko) * 2021-01-11 2022-07-19 에스케이하이닉스 주식회사 엘리먼트-와이즈 곱셈을 위한 프로세싱-인-메모리 장치
CN112906863B (zh) * 2021-02-19 2023-04-07 山东英信计算机技术有限公司 一种神经元加速处理方法、装置、设备及可读存储介质
US11354134B1 (en) 2021-03-25 2022-06-07 Micron Technology, Inc. Processing-in-memory implementations of parsing strings against context-free grammars
US20220328099A1 (en) * 2021-04-09 2022-10-13 Mediatek Singapore Pte. Ltd. Method and apparatus for performing a mac operation in a memory array
CN114666038B (zh) * 2022-05-12 2022-09-02 广州万协通信息技术有限公司 一种大位宽数据处理方法、装置、设备及存储介质
US11922237B1 (en) 2022-09-12 2024-03-05 Mellanox Technologies, Ltd. Single-step collective operations
CN117896227A (zh) * 2022-10-14 2024-04-16 北京三星通信技术研究有限公司 接收机执行的方法、无线通信设备及存储介质

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2625347B1 (fr) * 1987-12-23 1990-05-04 Labo Electronique Physique Structure de reseau de neurones et circuit et arrangement de reseaux de neurones
JP2606339B2 (ja) * 1988-11-30 1997-04-30 日本電気株式会社 乗算器
JP2703010B2 (ja) * 1988-12-23 1998-01-26 株式会社日立製作所 ニユーラルネツト信号処理プロセツサ
US5065339A (en) * 1990-05-22 1991-11-12 International Business Machines Corporation Orthogonal row-column neural processor
US5337395A (en) * 1991-04-08 1994-08-09 International Business Machines Corporation SPIN: a sequential pipeline neurocomputer
JPH05346914A (ja) * 1992-06-16 1993-12-27 Matsushita Electron Corp ニューロプロセッサ
KR970006423B1 (ko) 1993-12-29 1997-04-28 한국전기통신공사 신경망을 이용한 영상 패턴 분류 인식 장치 및 방법
JPH0883264A (ja) * 1994-09-12 1996-03-26 Nippon Telegr & Teleph Corp <Ntt> 1次元シストリックアレイ型演算器とそれを用いたdct/idct演算装置
US7590676B1 (en) * 2005-09-27 2009-09-15 Altera Corporation Programmable logic device with specialized multiplier blocks
US7870180B2 (en) 2006-10-31 2011-01-11 Motorola, Inc. Method and apparatus for nonlinear signal and data aggregation
JP5376920B2 (ja) * 2008-12-04 2013-12-25 キヤノン株式会社 コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
US9153230B2 (en) * 2012-10-23 2015-10-06 Google Inc. Mobile speech recognition hardware accelerator
EP3089080A1 (de) 2015-04-27 2016-11-02 Universität Zürich Netzwerke und hierarchische routingstrukturen mit heterogenen speicherstrukturen für skalierbare ereignisgesteuerte computersysteme
US9747546B2 (en) 2015-05-21 2017-08-29 Google Inc. Neural network processor
US10049322B2 (en) * 2015-05-21 2018-08-14 Google Llc Prefetching weights for use in a neural network processor
US10438117B1 (en) 2015-05-21 2019-10-08 Google Llc Computing convolutions using a neural network processor
US11244225B2 (en) * 2015-07-10 2022-02-08 Samsung Electronics Co., Ltd. Neural network processor configurable using macro instructions
CN106503796B (zh) 2015-10-08 2019-02-12 上海兆芯集成电路有限公司 多运算神经网络单元
US10846591B2 (en) * 2015-12-29 2020-11-24 Synopsys, Inc. Configurable and programmable multi-core architecture with a specialized instruction set for embedded application based on neural networks
GB201607713D0 (en) * 2016-05-03 2016-06-15 Imagination Tech Ltd Convolutional neural network
KR102120396B1 (ko) * 2016-05-26 2020-06-08 더 가버닝 카운슬 오브 더 유니버시티 오브 토론토 심층 신경망용 가속기
US10621486B2 (en) * 2016-08-12 2020-04-14 Beijing Deephi Intelligent Technology Co., Ltd. Method for optimizing an artificial neural network (ANN)
US9646243B1 (en) 2016-09-12 2017-05-09 International Business Machines Corporation Convolutional neural networks using resistive processing unit array
KR20180034853A (ko) * 2016-09-28 2018-04-05 에스케이하이닉스 주식회사 합성곱 신경망의 연산 장치 및 방법
US10733505B2 (en) 2016-11-10 2020-08-04 Google Llc Performing kernel striding in hardware
US10528321B2 (en) * 2016-12-07 2020-01-07 Microsoft Technology Licensing, Llc Block floating point for neural network implementations
CN106682732B (zh) 2016-12-14 2019-03-29 浙江大学 一种应用于神经网络的高斯误差函数电路
US10817587B2 (en) * 2017-02-28 2020-10-27 Texas Instruments Incorporated Reconfigurable matrix multiplier system and method
US10909447B2 (en) * 2017-03-09 2021-02-02 Google Llc Transposing neural network matrices in hardware
US10410098B2 (en) * 2017-04-24 2019-09-10 Intel Corporation Compute optimizations for neural networks
GB2568776B (en) * 2017-08-11 2020-10-28 Google Llc Neural network accelerator with parameters resident on chip
GB2568086B (en) * 2017-11-03 2020-05-27 Imagination Tech Ltd Hardware implementation of convolution layer of deep neutral network
US10621489B2 (en) 2018-03-30 2020-04-14 International Business Machines Corporation Massively parallel neural inference computing elements

Also Published As

Publication number Publication date
JP2021519455A (ja) 2021-08-10
US10621489B2 (en) 2020-04-14
GB2585615B (en) 2021-05-19
CN111758106A (zh) 2020-10-09
US11010662B2 (en) 2021-05-18
JP7175548B2 (ja) 2022-11-21
US20200202205A1 (en) 2020-06-25
US20190303749A1 (en) 2019-10-03
CN111758106B (zh) 2024-02-27
GB2585615A (en) 2021-01-13
WO2019186309A1 (en) 2019-10-03
GB202016300D0 (en) 2020-11-25

Similar Documents

Publication Publication Date Title
DE112019000336T5 (de) Massiv parallele neuronale inferenz-datenverarbeitungselemente
DE202017105729U1 (de) Kerndurchschreiten in Hardware
DE112019002981T5 (de) Parallelberechnungsarchitektur mit rekonfigurierbarer kernebenen- und vektorebenen-parallelität
DE112019003529T5 (de) Datendarstellung für dynamische Genauigkeit in Kernen neuronaler Netze
DE112016002292T5 (de) Stapel-verarbeitung in einem neuronalen netzwerkprozessor
DE202016107436U1 (de) Neuronaler Netzwerkprozessor
DE102020105535A1 (de) Neuronale Netzwerkvorrichtung und Verfahren zum Quantisieren von Parametern eines neuronalen Netzwerks
DE112016002296T5 (de) Vektor-recheneinheit in einem neuronalen netzwerkprozessor
DE19581638C2 (de) Rechenvorrichtung mit einem Mikroprozessor, einem neuralen Netz-Koprozessor und einer DMA-Steuervorrichtung
DE202017105528U1 (de) Ausführen von Mittelwert-Poolbildung in Hardware
DE112019000676T5 (de) Zentraler scheduler und anweisungszuteiler für einen neuronalen inferenzprozessor
DE112016002298T5 (de) Vorabruf von gewichten zur verwendung in einem neuronalen netzwerkprozessor
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
EP3590078B1 (de) Neuronalnetzsystem
DE112020004031T5 (de) Systembezogene selektive quantisierung für in der leistungsfähigkeit optimiertes verteiltes deep learning
DE112019003326T5 (de) Speichererweiterte neuronale netzwerkarchitekturen eines codierers-decodierers
DE102019133699A1 (de) Anweisungssatz für hybrid-cpu und analogen speicherinternen künstliche-intelligenz-prozessor
DE102022103358A1 (de) Training für maschinelles lernen im logarithmischen zahlensystem
DE112017002931T5 (de) Synaptischer Supercomputer mit skalierbarem Fluss für neuronale Netzwerke mit äußerstem Durchsatz
DE19718224A1 (de) Digitaler Neuroprozessor
DE102014225039A1 (de) Verfahren und Vorrichtung zum Bereitstellen von spärlichen Gauß-Prozess-Modellen zur Berechnung in einem Motorsteuergerät
DE112021004537T5 (de) Speicherorientierter beschleuniger für neuronale netze für bereitstellbare inferenzsysteme
DE112021001767T5 (de) Rationalisieren von datenverarbeitungsoptimierungen für arbeitslasten mit maschinellem lernen
DE102021107510A1 (de) Training eines neuronalen netzwerks unter speicherbeschränkung
DE112020005055T5 (de) Prozessoreinheit für multiplizier- und akkumulieroperationen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication