DE202017105363U1 - Auswerten von Eingangsdatenseltenheit in Berechnungseinheiten eines neuronalen Netzes - Google Patents

Auswerten von Eingangsdatenseltenheit in Berechnungseinheiten eines neuronalen Netzes Download PDF

Info

Publication number
DE202017105363U1
DE202017105363U1 DE202017105363.6U DE202017105363U DE202017105363U1 DE 202017105363 U1 DE202017105363 U1 DE 202017105363U1 DE 202017105363 U DE202017105363 U DE 202017105363U DE 202017105363 U1 DE202017105363 U1 DE 202017105363U1
Authority
DE
Germany
Prior art keywords
input
zero
activations
value
controller
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.)
Active
Application number
DE202017105363.6U
Other languages
English (en)
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of DE202017105363U1 publication Critical patent/DE202017105363U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • 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/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • 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
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computer Hardware Design (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Image Analysis (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Storage Device Security (AREA)

Abstract

Eine oder mehrere maschinenlesbare Speichervorrichtungen, die Anweisungen speichern, die durch die eine oder die mehreren Verarbeitungsvorrichtungen ausführbar sind, um Operationen auszuführen, die umfassen: Empfangen durch eine Berechnungsvorrichtung von mehreren Eingangsaktivierungen, wobei die Eingangsaktivierungen wenigstens teilweise aus einer Quelle bereitgestellt werden, die extern zu der Berechnungsvorrichtung ist; Bestimmen durch eine Steuereinheit der Berechnungsvorrichtung, ob jede aus den mehreren Eingangsaktivierungen einen aus einem Nullwert oder einem Nichtnullwert aufweist; Speichern wenigstens einer aus den Eingangsaktivierungen in einer Speicherbank der Berechnungsvorrichtung; Erzeugen durch die Steuereinheit eines Index, der einen oder mehrere Speicheradressenorte umfasst, die Eingangsaktivierungswerte aufweisen, die Nichtnullwerte sind; und Bereitstellen durch die Steuereinheit und aus der Speicherbank wenigstens einer Eingangsaktivierung auf einen Datenbus, der durch eine oder mehrere Einheiten eines Berechnungs-Array zugreifbar ist, wobei die Aktivierungen wenigstens teilweise aus einem Speicheradressenort, der dem Index zugeordnet ist, bereitgestellt werden.

Description

  • Hintergrund
  • Diese Beschreibung bezieht sich auf das Ausführen von Berechnungen für maschinelles Lernen unter Verwendung einer Spezial-Berechnungseinheit.
  • Neuronale Netze sind Modelle zum maschinellen Lernen, die eine oder mehrere Schichten aus Modellen einsetzen, um einen Ausgang, z. B. eine Klassifizierung, für einen empfangene Eingang zu erzeugen. Einige neuronale Netze enthalten eine oder mehrere verdeckte Schichten zusätzlich zu einer Ausgangsschicht. Der Ausgang jeder verdeckten Schicht wird als Eingang für die nächste Schicht in dem Netz, d. h. die nächste verdeckte Schicht oder die Ausgangsschicht des Netzes, verwendet. Jede Schicht des Netzes erzeugt einen Ausgang aus einem empfangenen Eingang in Übereinstimmung mit aktuellen Werten einer jeweiligen Gruppe von Parametern.
  • Einige neuronale Netze enthalten eine oder mehrere Faltungsschichten des neuronalen Netzes. Jede Faltungsschicht des neuronalen Netzes weist eine zugeordnete Menge von Kernen auf. Jeder Kern enthält Werte, die durch ein Modell eines neuronalen Netzes aufgebaut sind, das durch einen Anwender erzeugt ist. In einigen Implementierungen identifizieren Kerne spezielle Bildkonturen, Formen oder Farben. Kerne können als eine Matrixstruktur gewichteter Eingänge repräsentiert sein. Jede Faltungsschicht kann außerdem eine Gruppe von Aktivierungseingängen verarbeiten. Die Gruppe von Aktivierungseingängen kann auch als eine Matrixstruktur repräsentiert sein.
  • Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.
  • Zusammenfassung
  • Eine Art zum Berechnen von Faltungsberechnungen erfordert zahlreiche Matrixmultiplikationen in einem vieldimensionalen Raum. Ein Prozessor oder eine Steuervorrichtung einer Berechnungseinheit kann Matrixmultiplikationen durch ein Exhaustionsverfahren berechnen. Beispielsweise kann der Prozessor, obwohl das rechenintensiv und zeitintensiv ist, wiederholt Einzelsummen und Produkte für Faltungsberechnungen berechnen. Der Grad, bis zu dem der Prozessor Berechnungen parallelisiert, ist aufgrund seiner Architektur begrenzt.
  • Ein innovativer Aspekt des Gegenstands, der in dieser Beschreibung beschrieben ist, kann in einem computerimplementierten Verfahren verwirklicht sein. Das Verfahren enthält Empfangen durch eine Berechnungsvorrichtung mehrerer Eingangsaktivierungen, wobei die Eingangsaktivierungen wenigstens teilweise aus einer Quelle bereitgestellt werden, die zu der Berechnungsvorrichtung extern ist, und Bestimmen durch eine Steuereinheit der Berechnungsvorrichtung, ob jede aus den mehreren Eingangsaktivierungen eines aus einem Nullwert oder einem Nichtnullwert ist. Das Verfahren enthält ferner Speichern wenigstens einer Eingangsaktivierung in einer Speicherbank der Berechnungsvorrichtung, wobei das Speichern der wenigstens einen aus den Eingangsaktivierungen das Erzeugen durch die Steuereinheit eines Index enthält, der einen oder mehrere Speicheradressenorte umfasst, die Eingangsaktivierungswerte aufweisen, die Nichtnullwerte sind. Das Verfahren umfasst ferner noch Bereitstellen durch die Steuereinheit und aus der Speicherbank wenigstens einer Eingangsaktivierung auf einen Datenbus, der durch eine oder mehrere Einheiten eines Berechnungs-Array zugreifbar ist, wobei die Aktivierungen wenigstens teilweise aus einem Speicheradressenort, der dem Index zugeordnet ist, bereitgestellt werden.
  • In einigen Implementierungen wird der Index basierend auf einer Bitmap erzeugt, die mehrere Bits umfasst und wobei jedes Bit der Bitmap wenigstens eines aus einem Nichtnull-Eingangsaktivierungswert oder einem Null-Eingangsaktivierungswert angibt. In einigen Implementierungen enthält das Verfahren ferner Bereitstellen einer ersten Eingangsaktivierung, die einen Nichtnullwert aufweist, um durch wenigstens eine Einheit eine Berechnung unter Verwendung des Nichtnullwerts auszuführen, und nachfolgend Bereitstellen einer zweiten Eingangsaktivierung, die einen Nullwert aufweist, und Verhindern der Berechnung in wenigstens einer Einheit, die andernfalls unter Verwendung des Nullwerts ausgeführt würde.
  • In einigen Implementierungen findet das Verhindern in Reaktion darauf statt, dass die Steuereinheit bestimmt, dass die Eingangsaktivierung aus einem Speicheradressenort bereitgestellt ist, der dem Index nicht zugeordnet ist. In einigen Implementierungen enthält das Verfahren ferner Detektieren durch die Steuereinheit, dass die Eingangsaktivierung von einem Speicheradressenort bereitgestellt ist, der nicht dem Index zugeordnet ist, und in Reaktion auf das Detektieren Bereitstellen eines Steuersignals für wenigstens eine Einheit des Berechnungs-Array, um eine Multiplizieroperation zu verhindern, die dem Null-Eingangsaktivierungswert zugeordnet ist.
  • In einigen Implementierungen umfasst das Verfahren ferner Abbilden durch die Steuereinheit und auf eine erste Einheit eines ersten Abschnitts einer Tensorberechnung, die eine erste Eingangsaktivierung verwendet, und Abbilden auf eine zweite Einheit, die von der ersten Einheit verschieden ist, eines zweiten Abschnitts der Tensorberechnung, die auch die erste Eingangsaktivierung verwendet. In einigen Implementierungen umfasst das Verfahren ferner der Reihe nach Bereitstellen einer einzelnen Eingangsaktivierung auf den Datenbus, wobei auf die einzelne Eingangsaktivierung von Speicheradressenorten, die dem Index zugeordnet sind, zugegriffen und davon ausgewählt wird. In einigen Implementierungen umfasst das Bereitstellen ferner nicht Bereitstellen von Eingangsaktivierungen, die einen Nullwert aufweisen.
  • Ein weiterer innovativer Aspekt des Gegenstands, der in dieser Beschreibung beschrieben ist, kann in einer oder mehreren maschinenlesbaren Speichervorrichtungen verwirklicht sein, die Anweisungen speichern, die durch eine oder mehrere Verarbeitungsvorrichtungen ausführbar sind, um Operationen auszuführen, die Empfangen durch eine Berechnungsvorrichtung von mehreren Eingangsaktivierungen, wobei die Eingangsaktivierungen wenigstens teilweise aus einer Quelle bereitgestellt werden, die extern zu der Berechnungsvorrichtung ist, und Bestimmen durch eine Steuereinheit des Berechnungsvorrichtung, ob jede aus den mehreren Eingangsaktivierungen eine eines Nullwerts oder eines Nichtnullwerts ist, umfassen. Die Operationen umfassen ferner Speichern wenigstens einer der Eingangsaktivierungen in einer Speicherbank der Berechnungsvorrichtung, wobei das Speichern der wenigstens einen Eingangsaktivierung das Erzeugen durch die Steuereinheit eines Index enthält, der einen oder mehrere Speicheradressenorte umfasst, die Eingangsaktivierungswerte aufweisen, die Nichtnullwerte sind. Die Operationen umfassen ferner noch Bereitstellen durch die Steuereinheit und aus der Speicherbank wenigstens einer Eingangsaktivierung auf einen Datenbus, der durch eine oder mehrere Einheiten eines Berechnungs-Array zugreifbar ist, wobei die Aktivierungen wenigstens teilweise aus einem Speicheradressenort, der dem Index zugeordnet ist, bereitgestellt werden.
  • Ein weiterer innovativer Aspekt des Gegenstands, der in dieser Beschreibung beschrieben ist, kann in einem elektronischen System verwirklicht sein, das eine Steuereinheit umfasst, die in einer Berechnungsvorrichtung angeordnet ist, wobei die Steuereinheit eine oder mehrere Verarbeitungsvorrichtungen enthält; und eine oder mehrere maschinenlesbare Speichervorrichtungen zum Speichern von Anweisungen umfasst, die durch die eine oder die mehreren Verarbeitungsvorrichtungen ausführbar sind, um Operationen auszuführen, die umfassen: Empfangen durch die Berechnungsvorrichtung von mehreren Eingangsaktivierungen, wobei die Eingangsaktivierungen wenigstens teilweise aus einer Quelle bereitgestellt werden, die extern zu der Berechnungsvorrichtung ist; und Bestimmen durch die Steuereinheit, ob jede aus den mehreren Eingangsaktivierungen eine aus einem Nullwert oder einem Nichtnullwert ist. Die Operationen umfassen ferner Speichern wenigstens einer der Eingangsaktivierungen in einer Speicherbank der Berechnungsvorrichtung, wobei das Speichern der wenigstens einen Eingangsaktivierung das Erzeugen eines Index enthält, der einen oder mehrere Speicheradressenorte umfasst, die Eingangsaktivierungswerte aufweisen, die Nichtnullwerte sind. Die Operationen umfassen ferner noch Bereitstellen durch die Steuereinheit und aus der Speicherbank wenigstens einer Eingangsaktivierung auf einen Datenbus, der durch eine oder mehrere Einheiten eines Berechnungs-Array zugreifbar ist, wobei die Aktivierungen wenigstens teilweise aus einem Speicheradressenort, der dem Index zugeordnet ist, bereitgestellt werden.
  • Der Gegenstand, der in dieser Beschreibung beschrieben ist, kann in speziellen Ausführungsformen implementiert sein, um einen oder mehrere der folgenden Vorteile zu realisieren. Aktivierungen, die aus einem ersten Speicher zugreifbar sind, und Gewichte, die aus einem zweiten Speicher zugreifbar sind, in einem einzelnen Berechnungssystem können basierend auf den Speicheradressenwerten, die aus Registern abgerufen werden, durchlaufen werden. Eine Steuereinheit des Berechnungssystems kann Aktivierungsdaten komprimieren durch Speichern von nur Nichtnullwerten in dem ersten Speicher und dadurch Speicherplatz und entsprechende Bandbreite einsparen. Matrixmultiplikationen treten in dem Berechnungssystem teilweise basierend auf primärem Bereitstellen von Nichtnull-Eingangsaktivierungen auf. Außerdem kann, wenn das Berechnungssystem ein Kommunikationsschema verwendet, das primär Nichtnull-Aktivierungswerte enthält, die Berechnungseffizienz durch Eliminieren von Multiplikationen mit Null verbessert oder beschleunigt werden.
  • Andere Implementierungen dieses und anderer Aspekte enthalten entsprechende Systeme, Einrichtungen und Computerprogramme, die konfiguriert sind, die Aktionen der Verfahren, die auf Computerspeichervorrichtungen codiert sind, auszuführen. Ein System aus einem oder mehreren Computern kann so konfiguriert sein mit Hilfe von Software, Firmware oder Hardware oder einer Kombination daraus, die auf dem System installiert ist, die im Betrieb bewirkt, dass das System die Aktionen ausführt. Ein oder mehrere Computerprogramme können so konfiguriert sein, dass sie aufgrund dessen, dass sie Anweisungen aufweisen, die dann, wenn sie durch eine Datenverarbeitungseinrichtung ausführt werden, bewirken, dass die Einrichtung die Aktionen ausführt.
  • Der Gegenstand, der in dieser Beschreibung beschrieben ist, bezieht sich außerdem auf ein Bilderkennungs- und/oder Klassifizierungs-Verfahren/System. Das/die System/e können unter Verwendung der offenbarten Techniken zum Auswerten von Eingabedatenseltenheit, wenn Berechnungseinheiten eines Hardware-Berechnungssystems Eingaben für eine Schicht eines neuronalen Netzes verarbeiten, um Inferenzberechnungen auszuführen, implementiert sein.
  • Die Einzelheiten einer oder mehrerer Ausführungsformen des in dieser Beschreibung beschriebenen Gegenstands sind in den begleitenden Zeichnungen und der nachstehenden Beschreibung dargelegt. Andere potentielle Merkmale, Aspekte und Vorteile des Gegenstands werden aus der Beschreibung, den Zeichnungen und den Ansprüchen offensichtlich.
  • Kurzbeschreibung der Zeichnungen
  • 1 stellt eine Beispiel-Berechnungsstruktur dar, die Aktivierungen und Parameter enthält.
  • 2 stellt eine Beispiel-Berechnungsstruktur dar, die Aktivierungen und mehrere Parameterstrukturen für eine Ausgangstiefe größer als eins enthält.
  • 3 stellt ein Beispiel-Berechnungssystem zum Zuführen von Eingangsaktivierungen zu einem oder mehreren Parametern dar.
  • 4 stellt eine Beispiel-Architektur dar, die eine Speichereinheit enthält, die Eingangsaktivierungen für eine oder mehrere Multiplizierungs-Akkumulierungs-Operatoren (MAC-Operatoren) bereitstellt.
  • 5 ist ein Beispiel-Ablaufplan eines Prozesses zum Reduzieren von Parameterberechnungen und Auswerten von Eingabedatenseltenheit.
  • Gleiche Bezugszeichen und Bezeichnungen in den verschiedenen Zeichnungen geben gleiche Elemente an.
  • Ausführliche Beschreibung
  • Der Gegenstand, der in dieser Beschreibung beschrieben ist, bezieht sich auf Reduzieren von Berechnungen, die innerhalb einer Berechnungseinheit oder Kachel eines beispielhaften Hardware-Berechnungssystems eines neuronalen Netzes stattfinden. Im Allgemeinen wird als Teil der Berechnung einer Inferenz eines neuronalen Netzes eine Eingabeaktivierung mit einem Parameter oder Gewichtswert multipliziert, um eine Ausgangsaktivierung zu produzieren. Hier können sich Eingänge und Eingangsaktivierung auf ein Datenelement beziehen, das in einer mehrdimensionalen Datenstruktur wie z. B. einem Tensor, einer Matrix und/oder einem Daten-Array enthalten ist, die allgemein in neuronalen Netzen verwendet werden. Aufgrund der algorithmischen Eigenschaften der Berechnung von Inferenzen für tiefe neuronale Netze ist ein großer Anteil von Eingangsaktivierungen null. Mit anderen Worten führen aktuelle Berechnungseinheiten eine große Anzahl von unnötigen Berechnungen aus, die Multiplizieren einer Zahl (z. B. eines Gewichts) mit null (Eingangsaktivierungswert) enthalten.
  • Diese Beschreibung beschreibt teilweise sowohl ein effizienteres Aktivierungsspeicher- und Kommunikationsschema als auch ein anwendungsspezifisches Architektur-Design für Verarbeitung in tiefen neuronalen Netzen, insbesondere zum Verarbeiten von Faltungsschichten eines neuronalen Netzes. Anders als herkömmliche Hardware-Beschleuniger, die dichte Matrixmultiplikation mit der Zeit ausführen, beschreibt diese Beschreibung eine Architektur, die 1) eine Berechnung nach dem Erkennen von Null-Eingangswerten überspringen oder umgehen kann; und 2) die Speichernutzung in einer Berechnungseinheit durch Speichern komprimierter Eingangsaktivierungen, die nur Nichtnullwerte enthalten, reduzieren kann. Insgesamt ist durch die Lehren dieser Beschreibung die Leistungsfähigkeit einer Berechnungseinheit für Berechnungen von Inferenzen für neuronale Netze verbessert, und es sind Energieeinsparungen durch Überspringen unnötiger Berechnungen realisiert.
  • 1 stellt eine Beispiel-Berechnungsstruktur 100 dar, die eine Aktivierungsstruktur 102 und eine Parameterstruktur 104 enthält. Die Aktivierungsstruktur 102 kann eine erste Datenstruktur 102a enthalten, die mehrere Datenelemente enthält, die einer ersten Eingangstiefe (bezeichnet durch die tiefgestellte 0) entsprechen. Ähnlich kann die Aktivierungsstruktur 102 auch eine zweite Datenstruktur 102b enthalten, die mehrere Datenelemente enthält, die einer zweiten Eingangstiefe (bezeichnet durch die tiefgestellte 1) entsprechen. Die mehreren Datenelemente, die in der Datenstruktur 102a und 102b gezeigt sind, sind als a0, b0, c0, d0 bzw. a1, b1, c1, d1 angegeben. Jedes Datenelement (a0, a1, b0, b1, c0, d0 usw.) der Datenstruktur 102a/b ist ein Eingangsaktivierungswert, und jede Eingangstiefe entspricht einer Tiefe eines Eingangs zu einer Schicht eines neuronalen Netzes. In einigen Implementierungen kann eine Schicht eines neuronalen Netzes eine Eingangstiefe von eins aufweisen, während in anderen Implementierungen eine Schicht eines neuronalen Netzes eine Eingangstiefe von mehr als eins aufweisen kann.
  • Die Parameterstruktur 104 kann auf eine ähnliche Weise wie die Aktivierungsstruktur 102 beschrieben werden. Die Parameterstruktur 104 enthält eine erste Datenstruktur 104a und eine zweite Datenstruktur 104b. Jede Datenstruktur 104a/b kann mehrere Datenelemente enthalten, von denen jedes Kern-Werte enthält. Wie in 1 gezeigt ist, sind die mehreren Datenelemente, die der Datenstruktur 104a und 104b entsprechen, als x0, y0, z0 bzw. x1, y1, z1 angegeben.
  • Wie vorstehend diskutiert, erzeugt jede Schicht des neuronalen Netzes einen Ausgang aus einen empfangenen Eingang in Übereinstimmung mit Werten einer jeweiligen Gruppe von Operanden. Wie andere Schichten des neuronalen Netzes kann jede Faltungsschicht eine Gruppe von Aktivierungseingängen, die als eine Matrixstruktur repräsentiert sein kann, verarbeiten. Eine Faltungsschicht eines neuronalen Netzes wird außerdem eine zugeordnete Gruppe von Kernen aufweisen, die Werte enthalten, und die Kerne können ebenfalls als eine Matrixstruktur von Gewichten repräsentiert sein. In 1 kann die Aktivierungsstruktur 102 einer Matrixstruktur entsprechen, die einen oder mehrere Aktivierungseingänge aufweist, und die Parameterstruktur 104 kann einer Matrixstruktur entsprechen, die einen oder mehrere Kerne oder Gewichtsparameter aufweist.
  • Wie nachstehend mit mehr Einzelheiten beschrieben ist, verarbeiten verschiedene Schichten eines neuronalen Netzes Maschinenlerninferenzen durch Ausführen größerer Menge von Berechnungen, die Matrixmultiplikationen enthalten. Berechnungsprozesse, die innerhalb einer Schicht (z. B. einer Faltungsschicht) eines neuronalen Netzes ausgeführt werden, können Multiplizieren einer Eingangsaktivierung (d. h. eines ersten Operanden) mit einem Gewicht (z. B. einem zweiten Operanden) in einem oder mehreren Zyklen und Ausführung einer Akkumulierung der Produkte über viele Zyklen enthalten. Eine Ausgangsaktivierung wird basierend auf den Multiplizier- und Akkumulierungs-Operationen, die auf den zwei Operanden ausgeführt werden, erzeugt.
  • Wie gezeigt stellt Gleichung 106 ein Beispiel einer auf einer Reihe basierenden mathematischen Operation bereit, die ausgeführt werden kann, wenn eine Eingangsaktivierung, die einem speziellen Datenelement der Aktivierungsstruktur 102 zugeordnet ist, mit einem Kern-Wert oder Gewicht/Parameter, das/der einem speziellen Datenelement der Parameterstruktur 104 zugeordnet ist, multipliziert wird. Beispielsweise wird in Gleichung 106, wenn der Index "i" gleich 0 ist, die Eingangsaktivierung, die dem Datenelement a0 der Aktivierungsstruktur 102 zugeordnet ist, mit dem Gewicht/Parameter, das/der dem Datenelement x0 der Parameterstruktur 104 zugeordnet ist, multipliziert. Außerdem werden, weil die Gleichung 106 eine teilweise reihenbasierte Gleichung ist, zusätzliche Multiplizieroperationen zwischen Gruppen von Operanden auftreten, die anderen Datenelementen der Aktivierungsstruktur 102 und der Parameterstruktur 104 entsprechen. In einigen Implementierungen kann eine Multiplikation einer Gruppe von Operanden eine Teilsumme 106a/b für ein/e spezielle/s Ausgangsmerkmal oder -aktivierung produzieren. Somit können, wie in Gleichung 106 gezeigt ist, Teilsummen addiert werden, um ein Ausgangsmerkmal zu produzieren.
  • Neuronale Netze können in einem oder mehreren Hardware-Berechnungssystemen verwirklicht sein, die mehrere Berechnungseinheiten enthalten, die konfiguriert sind, das maschinelle Lernen von Inferenzlast einer Netzschicht zu beschleunigen. Jede Berechnungseinheit ein eine Teilmenge von Berechnungen für eine gegebene Schicht verarbeiten. In einigen Implementierungen kann die Struktur 100 in einer oder mehreren Berechnungseinheiten verwirklicht sein, die jeweils wenigstens zwei Speicherbänke und eine oder mehrere Multiplizier-Akkumulierungs-Zellen (MAC-Zellen), die gemeinsam ein MAC-Array bilden können (nachstehend beschrieben), enthalten.
  • In einem Beispiel speichert eine erste Speicherbank 108 einer Beispiel-Berechnungseinheit Daten, die der Aktivierungsstruktur 102 zugeordnet sind, und kann konfiguriert sein, Eingangsaktivierungswerte zu empfangen und in Speicheradressenorte innerhalb der Speicherbank 108 zu schreiben. Ähnlich speichert eine zweite Speicherbank 110 der Beispiel-Berechnungseinheit Daten, die der Parameterstruktur 104 zugeordnet sind, und kann konfiguriert sein, Gewichtswerte zu empfangen und in Speicheradressenorte innerhalb der Speicherbank 110 zu schreiben. In diesem Beispiel kann jedes Element (z. B. a0, b0, c0, d0) aus den Datenelementen 102a in einer jeweiligen Speicheradresse der ersten Speicherbank 108 gespeichert sein. Ähnlich kann jedes Element (z. B. x0, y0, z0) aus den Datenelementen 104a in einer jeweiligen Speicheradresse des zweiten Speichers 110 gespeichert sein.
  • In einigen Implementierungen sind die erste Speicherbank 108 und die zweite Speicherbank 110 jeweils eine flüchtige Speichereinheit oder -einheiten. In einigen anderen Implementierungen sind die Speicherbank 108 und die Speicherbank 110 jeweils eine nichtflüchtige Speichereinheit oder -einheiten. Die Speicherbänke 108, 110 können auch eine weitere Form eines computerlesbaren Speichermediums sein, wie z. B. eine Diskettenvorrichtung, eine Festplattenvorrichtung, eine Vorrichtung mit einer optischen Platte oder eine Bandvorrichtung, ein Flash-Speicher oder eine ähnliche Feststoffspeichervorrichtung oder ein Array aus Vorrichtungen, das Vorrichtungen in einem Speicherbereichsnetz oder anderen Konfigurationen enthält.
  • Im Allgemeinen kann eine Berechnungseinheit eines Hardware-Berechnungssystems ein oder mehrere Register enthalten, um die Speicheradressenwerte zu verfolgen. Auf die Datenelemente der Matrixstruktur, die der Aktivierungsstruktur 102 entspricht, kann aus der ersten Speicherbank 108 zugriffen werden, während auf Datenelemente der Matrixstruktur, die der Parameterstruktur 104 entspricht, aus der zweiten Speicherbank 110 zugegriffen werden kann. Eine Beispiel-Steuervorrichtung der Berechnungskachel/Berechnungseinheit kann auf Datenelemente der Matrixstrukturen basierend auf Adressenwerten, die aus dem einen oder den mehreren Registern zugreifbar sind, zugreifen oder sie durchlaufen. Eine Beispiel-Berechnungseinheit/-kachel, die eine Beispiel-Steuervorrichtung, eine Aktivierungsstruktur 102, eine Parameterstruktur 102, eine erste Speicherbank 108 und eine zweite Speicherbank 110 enthält, ist nachstehend mit Bezug auf 3 genauer beschrieben.
  • Außerdem sind zusätzliche Einzelheiten und Beschreibungen, die sich auf Hardware-Berechnungssysteme zur Beschleunigung von Tensorberechnungen für neuronale Netze und Matrixmultiplikationen für die Inferenzlast in neuronalen Netzen in der US-Patentschrift Nr. 15/335,769 mit dem Titel “Neural Network Compute Tile", eingereicht am 27. Oktober 2016, beschrieben. Die gesamte Offenbarung der US-Patentschrift Nr. 15/335,769 ist hier ausdrücklich durch Bezugnahme vollständig mit aufgenommen.
  • 2 stellt eine Beispiel-Berechnungsstruktur 200 dar, eine Aktivierungsstruktur und mehrere Parameterstrukturen für eine Ausgangsmerkmalstiefe größer als eins enthält. In einigen Implementierungen kann ein neuronales Netz mehrere Schichten aufweisen, die Ausgänge produzieren, die mehrere Ausgangsmerkmalstiefen aufweisen. In einigen Implementierungen kann jede Parameterstruktur für eine jeweilige aus den Ausgangstiefen zuständig sein. Somit bildet die Berechnungsstruktur 200 eine skalierbare Berechnungsstruktur ab, in der zusätzliche Parameterstrukturen 104a/b/c hinzugefügt sind, um Berechnungen zu unterstützen, die der Anzahl N von Ausgangstiefen zugeordnet sind. N ist eine Variable und kann einen ganzzahligen Wert annehmen, der im Bereich von beispielsweise 1 bis 5 ist, oder alternativ 1 bis N, abhängig von den Präferenzen oder Notwendigkeit eines Berechnungssystem-Designers.
  • Wie durch den Datenpfad 105 gezeigt ist, können individuelle Eingangsaktivierungswerte für Elemente, die der Datenstruktur 102a zugeordnet sind, jeder Parameterstruktur 104a/b/c zugeführt werden zum Gebrauch in Berechnungen, die durch Multiplizieroperatoren ausgeführt werden, die jeweiligen Parameterstrukturen 104 zugeordnet sind. Jede Parameterstruktur 104 kann dann einen Aktivierungswert, der von ihrem linken Nachbarn empfangen wird, an ihren rechten Nachbarn in Art einer Pipeline weitergeben. Alternativ können durch jede Parameterstruktur 104 Aktivierungen gleichzeitig bereitgestellt und verbraucht werden.
  • Die Matrix 202 kann eine Beispiel-Matrixstruktur repräsentieren, die den Aktivierungen 102 entspricht. Insbesondere kann die Elementzeile 202a der Datenstruktur 102a entsprechen, und die Elementzeile 202b kann der Datenstruktur 102b entsprechen. Im Allgemeinen und als Beispiel wird auf eine erste Parameterstruktur 104 (1) zugegriffen, um Berechnungen auszuführen, die dem Raum 206 zugeordnet sind, und auf eine zweite Parameterstruktur 104 (2) wird zugegriffen, um Berechnungen auszuführen, die dem Raum 208 zugeordnet sind. Obwohl nicht gezeigt, können auch zusätzliche Berechnungen ausführt werden, die der z-Dimension entsprechen. Als ein Beispiel kann die Elementzeile 202a in einer R-Ebene eines RGB-Bilds sein, und die Elementzeile 202b kann in einer G-Ebene desselben RGB-Bilds sein. Eine Beispiel-Faltungsschicht eines neuronalen Netzes produziert typischerweise mehrere Ausgangsmerkmale. Beispiel-Ausgangsmerkmale können ein Ausgangsmerkmal zum Klassifizieren eines Apfels und ein weiteres Ausgangsmerkmal zum Klassifizieren einer Banane enthalten. Hinsichtlich der Datenstrukturen 204 können die Räume 206 und 208 unterschiedliche Ebenen für unterschiedliche Klassifizierungen repräsentieren.
  • 3 stellt ein Beispiel-Berechnungssystem 300 zum Zuführen von Eingangsaktivierungen zu einer oder mehreren Parameterstrukturen dar. Das Berechnungssystem 300 enthält im Allgemeinen eine Steuereinheit 302, die ein oder mehrere Steuersignale 310 bereitstellt, um zu bewirken, dass Eingangsaktivierungen für die Aktivierungsstruktur 102 entweder in einer Speicheradresse der Speicherbank 108 gespeichert oder daraus abgerufen werden. Ähnlich stellt die Steuereinheit 302 auch ein oder mehrere Steuersignale 310 bereit, um zu bewirken, dass Gewichte für die Parameterstruktur 104a/b/c entweder in einer Speicheradresse der Speicherbank 110 gespeichert oder daraus abgerufen werden. Das Berechnungssystem 300 enthält ferner eine oder mehrere Multiplizier-Akkumulier-Zelle(n)/Einheit(en) (MAC-Zelle(n)/Einheit(en)) 304, einen Eingangsaktivierungsbus 306 und einen Ausgangsaktivierungsbus 308. Die Steuersignale 310 können beispielsweise bewirken, dass die Speicherbank 108 eine oder mehrere Eingangsaktivierungen auf den Eingangsaktivierungsbus 306 bereitstellt, bewirken, dass die Speicherbank 110 ein oder mehrere Gewichte für die Parameterstruktur 104a/b/c bereitstellt, und/oder bewirken, dass die MAC-Einheit 304 Berechnungen ausführt, die Ausgangsaktivierungen produzieren, die für den Ausgangsaktivierungsbus 308 bereitgestellt werden.
  • Die Steuereinheit 302 kann eine oder mehrere Verarbeitungseinheiten und einen Speicher enthalten. In einigen Ausführungsformen können Verarbeitungseinheiten der Steuereinheit 302 einen oder mehrere Prozessoren (z. B. Mikroprozessoren oder zentrale Verarbeitungseinheiten (CPUs)), Grafikverarbeitungseinheiten (GPUs), anwendungsspezifische integrierte Schaltungen (ASICs) oder eine Kombination unterschiedlicher Prozessoren enthalten. In alternativen Ausführungsformen kann die Steuereinheit 302 andere Speicher- oder Berechnungsbetriebsmittel/-vorrichtungen (z. B. Puffer, Register, Steuerungs-Schaltungsanordnung usw.) enthalten, die zusätzliche Verarbeitungsoptionen zum Ausführen einer oder mehrerer der Bestimmungen und Berechnungen, die in dieser Beschreibung beschrieben sind, bereitstellen.
  • In einigen Implementierungen führen die Verarbeitungseinheit(en) der Steuereinheit 302 programmierte Anweisungen aus, die in dem Speicher gespeichert sind, um zu bewirken, dass die Steuereinheit 3ß2 und das Berechnungssystem 300 eine oder mehrere in dieser Beschreibung beschriebenen Funktionen ausführen. Der Speicher der Steuereinheit 302 kann ein oder mehrere nichttorische maschinenlesbare Speichermedien enthalten. Das nicht-transitorische computerlesbare Speichermedium kann Feststoffspeicher, Magnetplatte und optische Platte, eine tragbare Computerdiskette, einen Direktzugriffsspeicher (RAM), einen Festwertspeicher (ROM), einen löschbaren programmierbaren Festwertspeicher (z. B. EPROM, EEPROM oder Flash-Speicher) oder ein anderes materielles Medium, das zum Speichern von Informationen fähig ist, enthalten.
  • Im Allgemeinen ist das Berechnungssystem 300 eine Beispiel-Berechnungseinheit oder Kachel, die zusätzliche Hardware-Strukturen enthalten kann, um Berechnungen, die mehrdimensionalen Datenstrukturen wie z. B. Tensoren, Matrizen und/oder Daten-Arrays zugeordnet sind, auszuführen. In einigen Implementierungen können Eingangsaktivierungswerte vorab in eine Speicherbank 108 für die Aktivierungsstruktur 102 geladen werden, und Gewichtswerte können vorab in die zweite Speicherbank 110 geladen werden unter Verwendung von Datenwerten, die durch das Berechnungssystem 300 empfangen werden, die an dem Berechnungssystem 300 von einer externen Steuervorrichtung oder einer Steuervorrichtung höherer Ebene, die einem Hardware-Computersystem eines neuronalen Netzes zugeordnet ist, ankommen.
  • Anweisungen, Eingänge oder Eingangsaktivierungen und Gewichte können für das System 300 aus einer externen Quelle, wie z. B. einer externen Eingabe/Ausgabe-Vorrichtung (I/O-Vorrichtung) oder einer Steuervorrichtung höherer Ebene, die einem Hardware-Berechnungssystem eines neuronalen Netzes zugeordnet ist, bereitgestellt werden. In einigen Implementierungen stellen ein oder mehrere Datenbusse Datenkommunikation zwischen der externen Quelle (z. B. einer Steuervorrichtung) und dem/den System(en) 300 bereit. Die Datenbusse werden verwendet, um Anweisungen, Eingänge oder Aktivierungen und Gewichte aus einer Beispiel-I/O-Vorrichtung für jedes aus den mehreren Systemen 300 oder zwischen mehreren Berechungskacheln (z. B. mehreren Systemen 300), die in einem Hardware-Berechnungssystem für ein neuronales Netz enthalten sind, bereitzustellen.
  • Das System 300 kann Anweisungen empfangen, die eine spezielle Berechnungsoperation, die durch das System 300 ausgeführt werden soll, definieren. Außerdem kann die Steuereinheit 302 programmierte Anweisungen ausführen, um beispielsweise einen Datenstrom zu analysieren, der den empfangenen Eingangsaktivierungen zugeordnet ist. Das Analysieren des Eingangsaktivierungs-Datenstroms kann es ermöglichen, dass die Steuereinheit 302 detektiert oder bestimmt, ob ein Wert, der jeder der Eingangsaktivierungen zugeordnet ist, ein Nullwert oder ein Nichtnullwert ist. In einigen Implementierungen analysiert die Steuereinheit 302 einen Beispiel-Eingangsaktivierungs-Datenstrom und bildet jeden detektierten Null-Aktivierungswert und jeden detektierten Nichtnull-Aktivierungswert auf einen Bitvektor oder eine Bitmap 303 ab.
  • Wie in 3 gezeigt ist, kann die Bitmap 303 Binärwerte verwenden, um detektierte Nullwert-Eingangsaktivierungen und detektierte Nichtnullwert-Eingangsaktivierungen abzubilden. Beispielsweise kann der Binärwert von "0" einem detektierten Null-Eingangsaktivierungswert entsprechen, und ein Binärwert von "1" kann einem detektierten Nichtnull-Eingangsaktivierungswert entsprechen. Beispielsweise kann die Bitmap 303 eine 8-Bit-Bitmap sein, in der ungerade nummerierte Bitpositionen, die eine binäre "1" enthalten, Nichtnull-Aktivierungswerten entsprechen und gerade nummerierte Bitpositionen, die eine binäre "0" enthalten, Null-Aktivierungswerten entsprechen.
  • Die Steuereinheit 302 kann bewirken, dass Eingangsaktivierungen in der Speicherbank 108 gespeichert werden. Im Allgemeinen werden Datenwerte, die in der Speicherbank 108 gespeichert sind, typischerweise jeweils in einen entsprechenden Speicheradressenort geschrieben. Auf den Adressenort in der Speicherbank 108 kann dann durch eine Beispiel-Steuervorrichtung (z. B. die Steuereinheit 302) zugegriffen werden, wenn ein Datenwert wie z. B. eine Eingangsaktivierung benötigt wird, um eine spezielle Berechnungsoperation auszuführen. Die Steuereinheit 302 kann die Bitmap 303 verwenden, um einen Index von Speicheradressenorten zu erzeugen, die Nichtnull-Eingangsaktivierungswerte enthalten.
  • In einigen Implementierungen verwendet die Steuereinheit 302 die Bitmap 303, um zu bestimmen, welche Eingangsaktivierungen in die Speicherbank 108 geschrieben werden sollen. Beispielsweise kann die Analyse der Bitmap 303 angeben, dass nur Aktivierungswerte, die den Bitmappositionen 1, 3, 5, 7 (Nichtnullwerten) entsprechen, in Adressenorte in der Speicherbank 108 geschrieben werden sollten. Außerdem können Datenwerte, die den Bitmappositionen 2, 4, 6, 8 (Nullwerten) zugeordnet sind, entweder verworfen oder in Speicheradressenorte geschrieben werden, auf die die Steuereinheit 302 zugreifen kann oder nicht, wenn Aktivierungswerte für den Eingangsbus 306 bereitgestellt werden. Somit kann die Bitmap 303 als eine Basis verwendet werden, um Null-Aktivierungswerte zu komprimieren, wobei Komprimierung auftritt, wenn Nullwert-Eingangsaktivierungen nicht in die Speicheradressenorte geschrieben werden, und dadurch werden die gesamte Speichernutzung reduziert und Adressenorte zum Speichern anderer Datenwerte freigegeben.
  • Die Steuereinheit 302 kann ein oder mehrere Steuersignale 310 für die Speicherbank 180 bereitstellen, um Eingangsaktivierungen aus der Speicherbank 108 auf den Eingangsaktivierungsbus 306 zu laden und die Werte für ein Array aus Berechnungseinheiten, die die MAC 304 enthalten, bereitzustellen. In einigen Implementierungen kann die Bitmap 303 oder der Nichtnull-Speicheradressenindex, der der Bitmap 303 entspricht, durch die Steuereinheit 302 referenziert werden, um zu bestimmen, auf welche Speicheradressenwerte zugegriffen werden sollte, um Nichtnull-Aktivierungswerte bereitzustellen. Die Aktivierungswerte werden durch die Steuereinheit 302 aus der Speicherbank 108 und auf den Datenbus 306 bereitgestellt.
  • In einigen Implementierungen werden die Eingangsaktivierungen wenigstens teilweise aus einem Speicheradressenort, der dem Index oder der Bitmap 303 zugeordnet ist, bereitgestellt. In anderen Implementierungen kann die Steuereinheit 302 basierend auf der Bitmap 302 oder dem Index detektieren oder bestimmen, ob eine Eingangsaktivierung, die bereitgestellt wird, einen Nullwert aufweist. In Reaktion auf dieses Bestimmen kann die Steuereinheit 302 dann ein Steuersignal für die Einheit oder die MAC 304 in dem Berechnungs-Array bereitstellen, um das Auftreten einer unnötigen Multiplizieroperation (z. B. eines Multiplizierens mit null) zu verhindern, anzuhalten oder auf andere Weise zu unterdrücken. Innerhalb des Berechnungssystems 300 können Energieeinsparungen durch das Bereitstellen eines Null-Aktivierungswerts und nachfolgendes oder gleichzeitiges Deaktivieren einer Berechnungsoperation, die dieser Aktivierung zugeordnet ist, realisiert werden.
  • Wie vorstehend diskutiert enthält der Index alle Speicheradressenorte, die Eingangsaktivierungen mit Nichtnullwerten aufweisen. Der Datenbus 306 ist durch eine oder mehrere Einheiten eines Berechnungs-Arrays zugreifbar. Die Einheiten des Berechnungs-Array können aus dem Datenbus 306 einen oder mehrere Nichtnull-Aktivierungswerte empfangen, um Berechnungen, die sich auf eine Matrixmultiplikation beziehen, basierend auf den empfangenen Aktivierungswerten auszuführen. In einigen Implementierungen wird das Berechnungssystem 300 nur Eingangsaktivierungen aus Speicheradressenorten bereitstellen, die den indexierten Adressen entsprechen. Somit werden keine Null-Aktivierungen für den Eingangsbus 306 bereitgestellt, und somit werden keine Berechnungsoperationen deaktiviert oder ihr Auftreten auf andere Weise verhindert. Wenn das Berechnungssystem 300 dieses Kommunikationsschema verwendet, kann die Berechnungseffizienz durch Eliminierung von Multiplikationen mit Null verbessert oder beschleunigt werden.
  • Für einen gegebenen Berechnungszyklus kann das Berechnungssystem 300 Zugriff auf ein Element der Aktivierungsstruktur 102 und der Parameterstruktur 104 erfordern, um Multiplikationsoperationen, die Inferenzberechnungen für eine Schicht eines neuronalen Netzes zugeordnet sind, auszuführen. Wie vorstehend erwähnt können spezielle Speicheradressenwerte für die Speicherbank 108 und die Speicherbank 110 Elementen der Aktivierungsstruktur 102 bzw. der Parameterstruktur 104 entsprechen.
  • Für einen Zyklus, in dem Berechnungen ausgeführt werden, wird die Steuereinheit 302 einen Eingangsaktivierungswert nach dem anderen bereitstellen, und das Array aus Berechnungseinheiten, das die MAC-Zelle 304 enthält, wird eine Aktivierung mit einem Gewicht multiplizieren, um unterschiedliche Ausgangsaktivierungen für eine gegebene Eingangsaktivierung zu produzieren. Jedes Element (vorstehend als eine Parameterstruktur beschrieben) oder jede MAC-Zelle des Array aus Berechnungseinheiten kann für unterschiedliche Ausgangstiefen einer Schicht eines neuronalen Netzes zuständig sein. Im Allgemeinen kann die Steuereinheit, wann immer die Steuereinheit 302 einen Null-Aktivierungswert detektiert, entweder: 1) diesen Aktivierungswert nicht in der Speicherbank 108 speichern; 2) den Aktivierungswert nicht bereitstellen, oder 3) den Wert bereitstellen und ein Steuersignal für eine spezielle Berechnungseinheit bereitstellen, um zu bewirken, dass die Einheit eine Multiplizieroperation, die diesem Null-Aktivierungswert entspricht, nicht ausführt.
  • Das Array aus Berechnungseinheiten wird vollständig durch die Steuereinheit 302 gesteuert, die basierend auf der Detektion eines Null-Aktivierungswerts bestimmen kann, wann eine Notwendigkeit vorhanden ist, eine spezielle Berechnung zu überspringen oder zu verhindern. Somit gibt es keinen Bedarf für zusätzliche komplexe Hardware-Strukturen innerhalb des Array aus Berechnungseinheiten, um eine spezielle Berechnung zu überspringen. Darüber hinaus können Eingangsaktivierungswerte bei ihrem Eintreffen an dem Berechnungssystem 300 zum Speichern in der Speicherbank 180 analysiert werden. In Reaktion auf das Analysieren der Eingangsaktivierungen kann die Steuereinheit 302 eine Anweisung ausführen, um effizient Aktivierungsdaten durch Speichern von nur Nichtnullwerten in dem Speicher 108 zu komprimieren, und dadurch werden Speicherplatz und entsprechende Bandbreite eingespart.
  • Wenn das Berechnungssystem 300 Eingangsaktivierungen und Gewichte empfängt, kann die Steuereinheit 302 beispielsweise eine oder mehrere Direktspeicherzugriffsoperationen ausführen. Die Ausführung dieser Speicherzugriffsoperationen enthält Speichern von Eingangsaktivierungen, die Dimensionselementen der Aktivierungsstruktur 102 entsprechen, in Adressenorten der Speicherbank 108. Ähnlich kann die Steuereinheit 302 außerdem in Adressenorten der Speicherbank 110 Parameter, die Dimensionselementen der Parameterstruktur 104 entsprechen, speichern. Zusätzlich zu der Bitmap 303 kann die Steuereinheit 302 ferner ein oder mehrere Adressenregister enthalten, die die Speicheradressen halten, aus denen eine spezielle Eingangsaktivierung (die z. B. einen Nullwert oder einen Nichtnullwert aufweist) geholt wird. Außerdem werden das eine oder die mehreren Register auch die Speicheradressen speichern, aus denen ein entsprechendes Gewicht geholt wird, um mit der speziellen Eingangsaktivierung multipliziert zu werden.
  • Wie vorstehend diskutiert identifiziert die Steuereinheit Speicheradressen für Nichtnull-Aktivierungswerte teilweise basierend auf der Bitmap 303. In einigen Implementierungen liest die Steuereinheit 302 die Bitmap 303 und bestimmt beispielsweise wenigstens zwei Speicheradressen, die Nichtnull-Aktivierungswerte aufweisen. Falls die Steuereinheit 302 konfiguriert ist, Null-Aktivierungswerte bereitzustellen und nachfolgend die Berechnungen dafür zu überspringen oder zu deaktivieren, dann kann die Steuereinheit 302 auch wenigstens eine Speicheradresse bestimmen, die einen Null-Aktivierungswert aufweist. In dieser Implementierung kann die Steuereinheit 302 die vorstehend genannten Register referenzieren, um ein entsprechendes Gewicht (und eine Speicheradresse) für die erste Eingangsaktivierung zu bestimmen und um ein entsprechendes Gewicht (und eine Speicheradresse) für die zweite Eingangsaktivierung zu bestimmen.
  • Wie vorstehen erwähnt hält die Steuereinheit 302 ein oder mehrere Adressenregister im Speicher. Somit, um jede potentielle Fehlausrichtung der Operanden (Eingangsaktivierung und Gewicht) zu vermindern oder zu verhindern, kann bei der Detektion des Nullwert-Eingangsaktivierung die Steuereinheit 302 die entsprechende Berechnungseinheit deaktivieren, das Laden eines speziellen Gewichts überspringen und das geeignete entsprechende Gewicht (und die Speicheradresse) für die nächste Nichtnull-Eingangsaktivierung abrufen, um das Berechnen von Ausgangsaktivierungen für eine gegebene Schicht eines neuronalen Netzes wiederaufzunehmen.
  • In einigen Implementierungen werden die auf einer ersten Schicht eines neuronalen Netzes berechneten Ausgangsaktivierungen als Eingangsaktivierungen für eine nächste zweite Schicht in dem Netz verwendet, z. B. eine nächste verdeckte Schicht oder die Ausgangsschicht des Netzes. Im Allgemeinen erzeugt jede Schicht des Netzes einen Ausgang aus einem empfangenen Eingang in Übereinstimmung mit aktuellen Werten einer jeweiligen Gruppe von Parametern. In einigen Fällen kann die Steuereinheit 302 programmierte Anweisungen (d. h. Ausgangslogik) ausführen, um Datenströme zu analysieren, die Ausgangsaktivierungen zugeordnet sind, die für den Ausgangsaktivierungsbus 308 bereitgestellt sind. Das Analysieren des Ausgangsaktivierungsdatenstroms kann es ermöglichen, dass die Steuereinheit 302 detektiert oder bestimmt, ob ein Wert, der jeder der Ausgangsaktivierungen zugeordnet ist, ein Nullwert oder ein Nichtnullwert ist. Die Steuereinheit 302 kann einen Beispiel-Ausgangsaktivierungsdatenstrom analysieren und jeden detektierten Nichtnull-Aktivierungswert auf die Bitmap 305 abbilden. Abgebildete Nichtnull-Aktivierungswerte in der Bitmap 305 können verwendet werden, um nur Nichtnullwerte als Eingangsaktivierungen für ein nachfolgendes Berechnungssystem 300 zuzuführen, das für Berechnungen zuständig ist, die der nächsten zweiten Schicht in dem Netz zugeordnet sind.
  • In alternativen Implementierungen können einige Berechnungsoperationen vorhanden sein, in denen eine einzelne Nichtnull-Eingangsaktivierung als ein Operand für mehrere Multiplizieroperationen verwendet wird, die eine Vielzahl von Gewichten für ein gegebenes Dimensionselement der Parameterstruktur 104 abdeckt (d. h. eine "x"- oder "y"-Dimension iterieren). Beispielsweise wenn die Steuereinheit 302 bewirkt, dass die Speicherbank 108 eine erste Eingangsaktivierung (z. B. einen Nichtnullwert) bereitstellt, empfängt die Parameterstruktur 104a die Aktivierung, und ein entsprechendes Gewicht an einer gegebenen Adresse wird ebenfalls in die Parameterstruktur 104a geladen. Die Parameterstruktur 104a wird fortfahren, eine spezielle Anzahl von Teilsummen (z. B. bezeichnet durch die Variable "K"), die die erste Eingangsaktivierung betrifft, über K Berechnungszyklen zu aktualisieren. Als ein Ergebnis wird für diese K Zyklen die Parameterstruktur 104a keine zusätzlichen Eingangsaktivierungen empfangen. Die Steuereinheit 302 kann dann ein Steuersignal für die Speicherbank 108 bereitstellen, um zu bewirken, dass die nächste Eingangsaktivierung für den Eingangsaktivierungsbus 306 bereitgestellt wird.
  • 4 stellt eine Beispielarchitektur dar, die eine Speicherbank 108 enthält, die Aktivierungen 404 über den Eingangsbus 306 für einen oder mehrere Multiplizier-Akkumulier-Operatoren (MAC-Operatoren) bereitstellt. Ein Schieberegister 404 kann eine Schiebefunktionalität bereitstellen, wodurch Aktivierungen 404 eine nach der anderen auf den Eingangsbus 306 zum Empfang durch einen oder mehrere MAC-Operatoren in einer MAC-Zelle 304 ausgesendet werden. Wie gezeigt kann in einer Implementierung die Aktivierung 406 einen Aktivierungswert von null aufweisen und kann deshalb nicht durch eine MAC-Zelle 304 verbraucht werden.
  • Im Allgemeinen sind MAC-Zellen 304, die MAC-Operatoren umfassen, als Berechnungseinheiten definiert, die eine Teilsumme berechnen, und sind in einigen Implementierungen konfiguriert, eine Teilsummen-Dateneinheit in den Ausgangsbus 308 zu schreiben. Wie gezeigt können die Zellen 304 aus einem oder mehreren MAC-Operatoren bestehen. In einer Implementierung ist die Anzahl von MAC-Operatoren in der MAC-Zelle 304 als die Ausgabebreite der Zelle bezeichnet. Als ein Beispiel bezieht sich eine Doppelausgabezelle auf eine Zelle mit zwei MAC-Operatoren, die die Multiplikation von zwei Aktivierungswerten (aus der Speicherbank 108) mit zwei Parametern (aus der Speicherbank 110) berechnen und eine Addition zwischen den Ergebnissen der zwei Multiplizierer und der aktuellen Teilsumme ausführen können.
  • Wie vorstehend beschrieben ist der Eingangsbus 306 ein Kommunikationsbus, der Eingangsaktivierungen für MAC-Operatoren der Lineareinheit (d. h. des MAC-Array 304) bereitstellt. In einigen Implementierungen wird derselbe Eingang durch alle MAC-Operatoren gemeinsam verwendet. Die Breite des Eingangsbusses 306 muss groß genug sein, um die Eingangsaktivierungen für die entsprechende Anzahl von Zellen für ein gegebenes MAC-Array 304 zuzuführen. Das folgende Beispiel wird betrachtet, um die Struktur des Eingangsbusses 306 darzustellen. Wenn die Anzahl von Zellen in der Lineareinheit gleich vier ist und die Aktivierungsbreite gleich acht Bits ist, kann der Eingangsbus 306 konfiguriert sein, bis zu vier Eingangsaktivierungen in jedem Zyklus bereitzustellen. In diesem Beispiel wird jede Zelle in dem MAC-Array 304 nur auf eine aus den vier bereitgestellten Aktivierungen zugreifen.
  • In einigen Beispielen können Anweisungsdaten 312 angeben, dass Zellen des MAC-Array 304 Berechnungen unter Verwendung derselben Eingangsaktivierung ausführen müssen. Das kann als Zout-Partitionierung innerhalb einer Zelle des MAC-Array 304 bezeichnet werden. Ähnlich tritt Zin-Partitionierung innerhalb einer Zelle auf, wenn Zellen des MAC-Array 304 unterschiedliche Aktivierungen benötigen, um Berechnungen auszuführen. In dem vorherigen Fall wird die einzige Eingangsaktivierung viermal repliziert, und vier Aktivierungen, die aus der Speicherbank 108 gelesen werden, werden über vier Zyklen bereitgestellt. In dem letzteren Fall ist ein Lesen der Speicherbank 108 in jedem Zyklus erforderlich.
  • 5 ist ein Beispielablaufplan eines Prozesses zum Reduzieren von Parameterberechnungen und Auswerten von Eingangsdatenseltenheit. Bei Block 502 empfängt das Berechnungssystem 300 Eingangsaktivierungen, die entweder einen Null-Aktivierungswert oder einen Nichtnull-Aktivierungswert aufweisen. Wie vorstehend diskutiert kann in einigen Implementierungen das Berechnungssystem 300 Eingangsaktivierungen von einer Host-Schnittstellenvorrichtung oder einer Steuereinheit höherer Ebene eines Beispiel-Hardware-Systems eines neuronalen Netzes empfangen.
  • Bei Block 504 bestimmt die Steuereinheit 302, ob jede aus den Eingangsaktivierungen ein Nullwert oder ein Nichtnullwert ist. In einigen Implementierungen analysiert die Steuereinheit 302 einen Eingangsaktivierungsdatenstrom und bildet jeden detektierten Nullwert und Nichtnullwert auf die Bitmap 303 ab, die Binärwerte enthält, die Null-Eingangsaktivierungswerten ("0") und Nichtnull-Eingangsaktivierungswerten ("1") entsprechen.
  • Bei Block 506 speichert die Steuereinheit 302 die empfangenen Eingangsaktivierungen in der Speicherbank 108. Das Speichern der Eingangsaktivierung kann enthalten, dass die Steuereinheit 302 einen Index eines oder mehrerer Adressenorte, die Eingangsaktivierungen aufweisen, die Nichtnullwerte enthalten, erzeugt. In einigen Implementierungen wird der Index basierend auf der Bitmap 303 erzeugt. Beispielsweise kann, weil jedes Bit der Bitmap 303 entweder einen Nichtnull-Aktivierungswert oder einen Null-Aktivierungswert angibt, die Bitmap 303 durch die Steuereinheit 302 referenziert werden, um einen Index von Speicheradressenorten, die Nichtnullwerte aufweisen, zu erzeugen, wenn die Eingangsaktivierungen in die Speicherbank 108 geschrieben werden.
  • Bei Block 508 stellt die Steuereinheit 302 aus der Speicherbank 108 wenigstens eine Eingangsaktivierung auf den Datenbus 306 bereit. In einigen Implementierungen werden die Eingangsaktivierungen wenigstens teilweise aus einem Speicheradressenort bereitgestellt, der in dem Index identifiziert ist. Wie vorstehend diskutiert identifiziert der Index alle Speicheradressenorte, die Eingangsaktivierungen mit Nichtnullwerten speichern. Der Datenbus 306 ist durch eine oder mehrere Einheiten eines Berechnungs-Array zugreifbar. Die Einheiten des Berechnungs-Array können aus dem Datenbus 306 einen oder mehrere Nichtnull-Aktivierungswerte empfangen, um Berechnungen auszuführen, die sich auf eine Matrixmultiplikation beziehen. In einigen Implementierungen wird das Berechnungssystem 300 nur Eingangsaktivierungen aus Speicheradressen bereitstellen, die den indexierten Adressen entsprechen. Wenn das Berechnungssystem 300 dieses Kommunikationsschema verwendet, kann die Berechnungseffizienz durch Eliminierung von Multiplikationen mit Null verbessert werden.
  • Bei Block 510 detektiert die Steuereinheit in Implementierungen, in denen alle Aktivierungswerte statt nur Eingangsaktivierungen aus indexierten Adressen bereitgestellt werden, dass eine Eingangsaktivierung aus einer Speicheradresse bereitgestellt ist, die nicht einer der indexierten Adressen zugeordnet ist, die Nichtnull-Aktivierungswerte enthalten. In Reaktion auf diesen Schritt zum Detektieren kann die Steuereinheit 302 dann ein Steuersignal für wenigstens eine Einheit des Berechnungs-Array bereitstellen, um eine Multiplizieroperation, die dem Nulleingang zugeordnet ist, zu verhindern. Wenn das Berechnungssystem 300 dieses Kommunikationsschema verwendet, können Energieeinsparungen durch Verhindern unnötiger oder unwirtschaftlicher Berechnungen, die keine nützlichen Ergebnisse liefern (z. B. nützliche Ergebnisse enthalten das Berechnen einer Teilsumme oder Ausgangsaktivierung), realisiert werden.
  • Ausführungsformen der Gegenstands und der funktionalen Operationen, die in dieser Beschreibung beschrieben sind, können in einer digitalen elektronischen Schaltungsanordnung oder in materiell ausgeführter Computer-Software oder Firmware, in Computer-Hardware, die die Strukturen, die in dieser Beschreibung offenbart sind, und ihre strukturellen Äquivalente enthalten, oder in Kombinationen aus einem oder mehreren daraus implementiert sein. Ausführungsformen des Gegenstands, der in dieser Beschreibung beschrieben ist, können als ein oder mehrere Computerprogramme implementiert sein, d. h. ein oder mehrere Module aus Computerprogrammanweisungen, die auf einem materiellen nichttransitorischen Programmträger zur Ausführung durch eine oder zur Steuerung des Betriebs einer Datenverarbeitungsvorrichtung codiert sind. Alternativ oder zusätzlich können die Programmanweisungen auf einem künstlich erzeugten verbreiteten Signal codiert sein, z. B. einem maschinenerzeugten elektrischen, optischen oder elektromagnetischen Signal, das erzeugt wird, um Informationen zur Übertragung zu geeigneten Empfängereinrichtungen zur Ausführung durch eine Datenverarbeitungseinrichtung zu codieren. Das Computerspeichermedium kann eine maschinenlesbare Speichervorrichtung, ein maschinenlesbares Speichersubstrat, eine Speichervorrichtung für Direktzugriff oder seriellen Zugriff oder eine Kombination aus einem oder mehreren daraus sein.
  • Die Prozesse und Logikabläufe, die in dieser Beschreibung beschrieben sind, können durch einen oder mehrere programmierbare Computer ausgeführt werden, die ein oder mehrere Computerprogramme ablaufen lassen, um Funktionen durch Arbeiten auf Eingabedaten und Erzeugen von Ausgabe(n) auszuführen. Die Prozesse und Logikabläufe können auch durch eine Spezial-Logikschaltungsanordnung, z. B. ein FPGA (feldprogrammierbares Gatter-Array), eine ASIC (anwendungsspezifische integrierte Schaltung), eine GPGPU (Allzweck-Grafikverarbeitungseinheit) oder eine andere Verarbeitungseinheit ausgeführt werden, und die Einrichtung kann auch als diese implementiert sein.
  • Computer, die für die Ausführung eines Computerprogramms geeignet sind, enthalten als Beispiel und können auf Allzweck- oder Spezial-Mikroprozessoren oder beiden oder irgendeiner anderen Art von zentraler Verarbeitungseinheit basieren. Allgemein wird eine zentrale Verarbeitungseinheit Anweisungen und Daten von einem Festwertspeicher oder einem Direktzugriffsspeicher oder beiden empfangen. Die wesentlichen Elemente eines Computers sind eine zentrale Verarbeitungseinheit zum Ausführen oder Ablaufen von Anweisungen und eine oder mehrere Speichervorrichtungen zum Speichern von Anweisungen und Daten. Allgemein wird ein Computer auch eine oder mehrere Massenspeichervorrichtungen zum Speichern von Daten, z. B. magnetische, magnetooptische Platten oder optische Platten, enthalten oder betriebstechnisch damit gekoppelt sein, um Daten von ihnen zu empfangen, zu ihnen zu übertragen oder beides. Ein Computer muss jedoch solche Vorrichtungen nicht aufweisen.
  • Computerlesbare Medien, die zum Speicher von Computerprogrammanweisungen und Daten geeignet sind, enthalten alle Formen von nichtflüchtigem Speicher, Medien und Speichervorrichtungen, die als Beispiel Halbleiterspeichervorrichtungen, z. B. EPROM, EEPROM und Flash-Speichervorrichtungen enthalten; Magnetplatten, z. B. interne Festplatten oder herausnehmbare Platten. Der Prozessor und der Speicher können durch eine Spezial-Logikschaltungsanordnung ergänzt oder darin integriert sein.
  • Obwohl diese Beschreibung viele spezifische Einzelheiten der Implementierung beinhaltet, sollten diese nicht als Einschränkungen für den Schutzbereich irgendeiner Erfindung oder dessen, das beansprucht sein kann, gedeutet werden, sondern vielmehr als Beschreibungen der Merkmale, die für spezielle Ausführungsformen spezieller Erfindungen spezifisch sein können. Spezielle Merkmale, die in dieser Beschreibung im Kontext getrennter Ausführungsformen beschrieben sind, können auch in Kombination in einer einzigen Ausführungsform implementiert sein. Umgekehrt können verschiedene Merkmale, die im Kontext einer einzigen Ausführungsform beschrieben sind, auch in mehreren Ausführungsformen getrennt oder in irgendeiner geeigneten Unterkombination implementiert sein. Außerdem können, obwohl Merkmale vorstehend als in speziellen Kombinationen arbeitend beschrieben und anfangs sogar als solche beansprucht sind, ein oder mehrere Merkmale aus einer beanspruchten Kombination in einigen Fällen aus der Kombination herausgenommen sein, und die beanspruchte Kombination kann sich auf eine Unterkombination oder eine Variation einer Unterkombination richten.
  • Ähnlich sollte, obwohl Operationen in den Zeichnungen in einer speziellen Reihenfolge abgebildet sind, das nicht so verstanden werden, dass es erforderlich ist, dass solche Operationen in der speziellen gezeigten Reihenfolge oder in sequentieller Reihenfolge ausgeführt werden oder dass alle dargestellten Operationen ausgeführt werden, um wünschenswerte Ergebnisse zu erreichen. Unter speziellen Umständen können Multitasking und Parallelverarbeitung vorteilhaft sein. Außerdem sollte die Trennung verschiedener Systemmodule und Komponenten in den vorstehend beschriebenen Ausführungsformen nicht so verstanden werden, dass eine solche Trennung in allen Ausführungsformen erforderlich ist, und es sollte verstanden werden, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen gemeinsam in einem einzigen Software-Produkt integriert oder in mehrere Software-Produkte paketiert sein können.
  • Weitere Implementierungen sind in den folgenden Beispielen zusammengefasst:
    Beispiel 1: Computerimplementiertes Verfahren, das umfasst: Empfangen mehrerer Eingangsaktivierungen durch eine Berechnungsvorrichtung, wobei die Eingangsaktivierungen wenigstens teilweise aus einer Quelle bereitgestellt werden, die extern zu der Berechnungsvorrichtung ist; Bestimmen durch eine Steuereinheit der Berechnungsvorrichtung, ob jede aus den mehreren Eingangsaktivierungen einen aus einem Nullwert oder einem Nichtnullwert aufweist; Speichern wenigstens einer aus den Eingangsaktivierungen in einer Speicherbank der Berechnungsvorrichtung; Erzeugen durch die Steuereinheit eines Index, der einen oder mehrere Speicheradressenorte umfasst, die Eingangsaktivierungswerte aufweisen, die Nichtnullwerte sind; und Bereitstellen durch die Steuereinheit und aus der Speicherbank wenigstens einer Eingangsaktivierung auf einen Datenbus, der durch eine oder mehrere Einheiten eines Berechnungs-Array zugreifbar ist, wobei die Aktivierungen wenigstens teilweise aus einem Speicheradressenort, der dem Index zugeordnet ist, bereitgestellt werden.
  • Beispiel 2: Verfahren nach Beispiel 1, wobei der Index basierend auf einer Bitmap, die mehrere Bits umfasst, erzeugt wird und wobei jedes Bit der Bitmap wenigstens eines aus einem Nichtnull-Eingangsaktivierungswert oder einem Null-Eingangsaktivierungswert angibt.
  • Beispiel 3: Verfahren nach Beispiel 1 oder 2, das ferner Bereitstellen einer ersten Eingangsaktivierung, die einen Nichtnullwert aufweist, um durch wenigstens eine Einheit eine Berechnung unter Verwendung des Nichtnullwerts auszuführen, und nachfolgend Bereitstellen einer zweiten Eingangsaktivierung, die einen Nullwert aufweist, und Verhindern in wenigstens einer Einheit der Berechnung, die andernfalls unter Verwendung des Nullwerts ausgeführt würde, enthält.
  • Beispiel 4: Verfahren nach Beispiel 3, wobei das Verhindern in Reaktion darauf stattfindet, dass die Steuereinheit bestimmt, dass die Eingangsaktivierung aus einem Speicheradressenort bereitgestellt ist, der dem Index nicht zugeordnet ist.
  • Beispiel 5: Verfahren nach Beispiel 4, das ferner Detektieren durch die Steuereinheit, dass die Eingangsaktivierung aus einem Speicheradressenort bereitgestellt ist, der nicht dem Index zugeordnet ist, und in Reaktion auf das Detektieren Bereitstellen eines Steuersignals für wenigstens eine Einheit des Berechnungs-Array, um eine Multiplizieroperation, die dem Null-Eingangsaktivierungswert zugeordnet ist, zu verhindern, enthält.
  • Beispiel 6: Verfahren nach einem der Beispiele 1 bis 5, wobei das Verfahren ferner Abbilden durch die Steuereinheit und auf eine erste Einheit eines ersten Abschnitts einer Tensorberechnung, die eine erste Eingangsaktivierung verwendet, und Abbilden auf eine zweite Einheit, die von der ersten Einheit verschieden ist, eines zweiten Abschnitts der Tensorberechnung, die auch die erste Eingangsaktivierung verwendet, umfasst.
  • Beispiel 7: Verfahren nach einem der Beispiele 1 bis 6, das ferner der Reihe nach Bereitstellen einer einzelnen Eingangsaktivierung auf den Datenbus umfasst, wobei auf die einzelne Eingangsaktivierung aus Speicheradressenorten, die dem Index zugeordnet sind, zugegriffen und ausgewählt wird.
  • Beispiel 8: Verfahren nach einem der Beispiele 1 bis 7, wobei das Bereitstellen ferner das nicht Bereitstellen von Eingangsaktivierungen, die einen Nullwert aufweisen, umfasst.
  • Beispiel 9: Eine oder mehrere maschinenlesbare Speichervorrichtungen, die Anweisungen speichern, die durch die eine oder die mehreren Verarbeitungsvorrichtungen ausführbar sind, um Operationen auszuführen, die umfassen: Empfangen durch eine Berechnungsvorrichtung von mehreren Eingangsaktivierungen, wobei die Eingangsaktivierungen wenigstens teilweise aus einer Quelle bereitgestellt werden, die extern zu der Berechnungsvorrichtung ist; Bestimmen durch eine Steuereinheit der Berechnungsvorrichtung, ob jede aus den mehreren Eingangsaktivierungen einen aus einem Nullwert oder einem Nichtnullwert aufweist; Speichern wenigstens eine aus den Eingangsaktivierungen in einer Speicherbank der Berechnungsvorrichtung; Erzeugen durch die Steuereinheit eines Index, der einen oder mehrere Speicheradressenorte umfasst, die Eingangsaktivierungswerte aufweisen, die Nichtnullwerte sind; und Bereitstellen durch die Steuereinheit und aus der Speicherbank wenigstens einer Eingangsaktivierung auf einen Datenbus, der durch eine oder mehrere Einheiten eines Berechnungs-Array zugreifbar ist, wobei die Aktivierungen wenigstens teilweise aus einem Speicheradressenort, der dem Index zugeordnet ist, bereitgestellt werden.
  • Beispiel 10: Maschinenlesbare Speichervorrichtungen nach Beispiel 9, wobei der Index basierend auf einer Bitmap, die mehrere Bits umfasst, erzeugt wird und wobei jedes Bit der Bitmap wenigstens eines aus einem Nichtnull-Eingangsaktivierungswert oder einem Null-Eingangsaktivierungswert angibt.
  • Beispiel 11: Maschinenlesbare Speichervorrichtungen nach Beispiel 9 oder 10, die ferner Bereitstellen einer ersten Eingangsaktivierung, die einen Nichtnullwert aufweist, um durch wenigstens eine Einheit eine Berechnung unter Verwendung des Nichtnullwerts auszuführen, und nachfolgend Bereitstellen einer zweiten Eingangsaktivierung, die einen Nullwert aufweist, und Verhindern in wenigstens einer Einheit der Berechnung, die andernfalls unter Verwendung des Nullwerts ausgeführt würde, enthält.
  • Beispiel 12: Maschinenlesbare Speichervorrichtungen nach Beispiel 11, wobei das Verhindern in Reaktion darauf stattfindet, dass die Steuereinheit bestimmt, dass die Eingangsaktivierung aus einem Speicheradressenort bereitgestellt ist, der dem Index nicht zugeordnet ist.
  • Beispiel 13: Maschinenlesbare Speichervorrichtungen nach Beispiel 12, die ferner Detektieren durch die Steuereinheit, dass die Eingangsaktivierung aus einem Speicheradressenort bereitgestellt ist, der nicht dem Index zugeordnet ist, und in Reaktion auf das Detektieren Bereitstellen eines Steuersignals für wenigstens eine Einheit des Berechnungs-Array, um eine Multiplizieroperation zu verhindern, die dem Null-Eingangsaktivierungswert zugeordnet ist, enthält.
  • Beispiel 14: Maschinenlesbare Speichervorrichtungen nach einem der Beispiele 9 bis 13, wobei die Operationen ferner Abbilden durch die Steuereinheit und auf eine erste Einheit eines ersten Abschnitts einer Tensorberechnung, die eine erste Eingangsaktivierung verwendet, und Abbilden auf eine zweite Einheit, die von der ersten Einheit verschieden ist, eines zweiten Abschnitts der Tensorberechnung, die auch die erste Eingangsaktivierung verwendet, umfassen.
  • Beispiel 15: Elektronisches System, das umfasst: eine Steuereinheit, die in einer Berechnungsvorrichtung angeordnet ist, wobei die Steuereinheit eine oder mehrere Verarbeitungsvorrichtungen enthält; und eine oder mehrere maschinenlesbare Speichervorrichtungen zum Speichern von Anweisungen, die durch die eine oder die mehreren Verarbeitungsvorrichtungen ausführbar sind, um Operationen auszuführen, die umfassen: Empfangen durch die Berechnungsvorrichtung von mehreren Eingangsaktivierungen, wobei die Eingangsaktivierungen wenigstens teilweise aus einer Quelle bereitgestellt werden, die extern zu der Berechnungsvorrichtung ist; Bestimmen durch die Steuereinheit, ob jede aus den mehreren Eingangsaktivierungen eines aus einem Nullwert oder einem Nichtnullwert aufweist; Speichern wenigstens einer aus den Eingangsaktivierungen in einer Speicherbank der Berechnungsvorrichtung; Erzeugen durch die Steuereinheit eines Index, der einen oder mehrere Speicheradressenorte umfasst, die Eingangsaktivierungswerte aufweisen, die Nichtnullwerte sind; und Bereitstellen durch die Steuereinheit und aus der Speicherbank wenigstens einer Eingangsaktivierung auf einen Datenbus, der durch eine oder mehrere Einheiten eines Berechnungs-Array zugreifbar ist, wobei die Aktivierungen wenigstens teilweise aus einem Speicheradressenort, der dem Index zugeordnet ist, bereitgestellt werden.
  • Beispiel 16: Elektronisches System nach Beispiel 15, wobei der Index basierend auf einer Bitmap, die mehrere Bits umfasst, erzeugt wird und wobei jedes Bit der Bitmap wenigstens eines aus einem Nichtnull-Eingangsaktivierungswert oder einem Null-Eingangsaktivierungswert angibt.
  • Beispiel 17: Elektronisches System nach Beispiel 15 oder 16, das ferner Bereitstellen einer ersten Eingangsaktivierung, die einen Nichtnullwert aufweist, um durch wenigstens eine Einheit eine Berechnung unter Verwendung des Nichtnullwerts auszuführen, und nachfolgend Bereitstellen einer zweiten Eingangsaktivierung, die einen Nullwert aufweist, und Verhindern in wenigstens einer Einheit der Berechnung, die andernfalls unter Verwendung des Nullwerts ausgeführt würde, enthält.
  • Beispiel 18: Elektronisches System nach Beispiel 17, wobei das Verhindern in Reaktion darauf stattfindet, dass die Steuereinheit bestimmt, dass die Eingangsaktivierung aus einem Speicheradressenort bereitgestellt ist, der dem Index nicht zugeordnet ist.
  • Beispiel 19: Elektronisches System nach Beispiel 17, das ferner Detektieren durch die Steuereinheit, dass die Eingangsaktivierung aus einem Speicheradressenort bereitgestellt ist, der nicht dem Index zugeordnet ist, und in Reaktion auf das Detektieren Bereitstellen eines Steuersignals für wenigstens eine Einheit des Berechnungs-Array, um eine Multiplizieroperation zu verhindern, die dem Null-Eingangsaktivierungswert zugeordnet ist, enthält.
  • Beispiel 20: Elektronisches System nach einem der Beispiele 15 bis 19, wobei die Operationen ferner Abbilden durch die Steuereinheit und auf eine erste Einheit eines ersten Abschnitts einer Tensorberechnung, die eine erste Eingangsaktivierung verwendet, und Abbilden auf eine zweite Einheit, die von der ersten Einheit verschieden ist, eines zweiten Abschnitts der Tensorberechnung, die auch die erste Eingangsaktivierung verwendet, umfassen.
  • Spezielle Ausführungsformen des Gegenstands sind beschrieben worden. Andere Ausführungsformen sind innerhalb des Schutzbereichs der folgenden Ansprüche. Beispielsweise können die Aktionen, die in den Ansprüchen vorgetragen sind, in einer anderen Reihenfolge ausgeführt werden und immer noch wünschenswerte Ergebnisse erreichen. Als ein Beispiel erfordern die in den begleitenden Figuren abgebildeten Prozesse nicht notwendigerweise die spezielle gezeigte Reihenfolge oder sequentielle Reihenfolge, um wünschenswerte Ergebnisse zu erreichen. In speziellen Implementierungen können Multitasking und Parallelverarbeitung vorteilhaft sein.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 15/335769 [0033, 0033]

Claims (14)

  1. Eine oder mehrere maschinenlesbare Speichervorrichtungen, die Anweisungen speichern, die durch die eine oder die mehreren Verarbeitungsvorrichtungen ausführbar sind, um Operationen auszuführen, die umfassen: Empfangen durch eine Berechnungsvorrichtung von mehreren Eingangsaktivierungen, wobei die Eingangsaktivierungen wenigstens teilweise aus einer Quelle bereitgestellt werden, die extern zu der Berechnungsvorrichtung ist; Bestimmen durch eine Steuereinheit der Berechnungsvorrichtung, ob jede aus den mehreren Eingangsaktivierungen einen aus einem Nullwert oder einem Nichtnullwert aufweist; Speichern wenigstens einer aus den Eingangsaktivierungen in einer Speicherbank der Berechnungsvorrichtung; Erzeugen durch die Steuereinheit eines Index, der einen oder mehrere Speicheradressenorte umfasst, die Eingangsaktivierungswerte aufweisen, die Nichtnullwerte sind; und Bereitstellen durch die Steuereinheit und aus der Speicherbank wenigstens einer Eingangsaktivierung auf einen Datenbus, der durch eine oder mehrere Einheiten eines Berechnungs-Array zugreifbar ist, wobei die Aktivierungen wenigstens teilweise aus einem Speicheradressenort, der dem Index zugeordnet ist, bereitgestellt werden.
  2. Maschinenlesbare Speichervorrichtungen nach Anspruch 1, wobei der Index basierend auf einer Bitmap, die mehrere Bits umfasst, erzeugt wird und wobei jedes Bit der Bitmap wenigstens eines aus einem Nichtnull-Eingangsaktivierungswert oder einem Null-Eingangsaktivierungswert angibt.
  3. Maschinenlesbare Speichervorrichtungen nach Anspruch 1 oder 2, die ferner Bereitstellen einer ersten Eingangsaktivierung, die einen Nichtnullwert aufweist, um durch wenigstens eine Einheit eine Berechnung unter Verwendung des Nichtnullwerts auszuführen, und nachfolgend Bereitstellen einer zweiten Eingangsaktivierung, die einen Nullwert aufweist, und Verhindern in wenigstens einer Einheit der Berechnung, die andernfalls unter Verwendung des Nullwerts ausgeführt würde, enthalten.
  4. Maschinenlesbare Speichervorrichtungen nach Anspruch 3, wobei das Verhindern in Reaktion darauf stattfindet, dass die Steuereinheit bestimmt, dass die Eingangsaktivierung aus einem Speicheradressenort bereitgestellt ist, der dem Index nicht zugeordnet ist.
  5. Maschinenlesbare Speichervorrichtungen nach Anspruch 4, die ferner Detektieren durch die Steuereinheit, dass die Eingangsaktivierung aus einem Speicheradressenort bereitgestellt ist, der nicht dem Index zugeordnet ist, und in Reaktion auf das Detektieren Bereitstellen eines Steuersignals für wenigstens eine Einheit des Berechnungs-Array, um eine Multiplizieroperation zu verhindern, die dem Null-Eingangsaktivierungswert zugeordnet ist, enthalten.
  6. Maschinenlesbare Speichervorrichtungen nach einem der Ansprüche 1 bis 5, wobei die Operationen ferner Abbilden durch die Steuereinheit und auf eine erste Einheit eines ersten Abschnitts einer Tensorberechnung, die eine erste Eingangsaktivierung verwendet, und Abbilden auf eine zweite Einheit, die von der ersten Einheit verschieden ist, eines zweiten Abschnitts der Tensorberechnung, die auch die erste Eingangsaktivierung verwendet, umfassen.
  7. Maschinenlesbare Speichervorrichtungen nach einem der Ansprüche 1 bis 6, wobei die Operationen ferner der Reihe nach Bereitstellen einer einzelnen Eingangsaktivierung auf den Datenbus umfassen, wobei auf die einzelne Eingangsaktivierung aus Speicheradressenorten, die dem Index zugeordnet sind, zugegriffen und sie ausgewählt wird.
  8. Maschinenlesbare Speichervorrichtungen nach einem der Ansprüche 1 bis 7, wobei das Bereitstellen ferner das nicht Bereitstellen von Eingangsaktivierungen, die einen Nullwert aufweisen, umfasst.
  9. Elektronisches System, das umfasst: eine Steuereinheit, die in einer Berechnungsvorrichtung angeordnet ist, wobei die Steuereinheit eine oder mehrere Verarbeitungsvorrichtungen enthält; und eine oder mehrere maschinenlesbare Speichervorrichtungen zum Speichern von Anweisungen, die durch die eine oder die mehreren Verarbeitungsvorrichtungen ausführbar sind, um Operationen auszuführen, die umfassen: Empfangen durch die Berechnungsvorrichtung mehrerer Eingangsaktivierungen, wobei die Eingangsaktivierungen wenigstens teilweise aus einer Quelle bereitgestellt werden, die extern zu der Berechnungsvorrichtung ist; Bestimmen durch die Steuereinheit, ob jede aus den mehreren Eingangsaktivierungen eines aus einem Nullwert oder einem Nichtnullwert aufweist; Speichern wenigstens einer aus den Eingangsaktivierungen in einer Speicherbank der Berechnungsvorrichtung; Erzeugen durch die Steuereinheit eines Index, der einen oder mehrere Speicheradressenorte umfasst, die Eingangsaktivierungswerte aufweisen, die Nichtnullwerte sind; und Bereitstellen durch die Steuereinheit und aus der Speicherbank wenigstens einer Eingangsaktivierung auf einen Datenbus, der durch eine oder mehrere Einheiten eines Berechnungs-Array zugreifbar ist, wobei die Aktivierungen wenigstens teilweise aus einem Speicheradressenort, der dem Index zugeordnet ist, bereitgestellt werden.
  10. Elektronisches System nach Anspruch 9, wobei der Index basierend auf einer Bitmap, die mehrere Bits umfasst, erzeugt wird und wobei jedes Bit der Bitmap wenigstens eines aus einem Nichtnull-Eingangsaktivierungswert oder einem Null-Eingangsaktivierungswert angibt.
  11. Elektronisches System nach Anspruch 9 oder 10, das ferner Bereitstellen einer ersten Eingangsaktivierung, die einen Nichtnullwert aufweist, um durch wenigstens eine Einheit eine Berechnung unter Verwendung des Nichtnullwerts auszuführen, und nachfolgend Bereitstellen einer zweiten Eingangsaktivierung, die einen Nullwert aufweist, und Verhindern in wenigstens einer Einheit der Berechnung, die andernfalls unter Verwendung des Nullwerts ausgeführt würde, enthält.
  12. Elektronisches System nach Anspruch 11, wobei das Verhindern in Reaktion darauf stattfindet, dass die Steuereinheit bestimmt, dass die Eingangsaktivierung aus einem Speicheradressenort bereitgestellt ist, der dem Index nicht zugeordnet ist.
  13. Elektronisches System nach Anspruch 11 oder 12, das ferner Detektieren durch die Steuereinheit, dass die Eingangsaktivierung aus einem Speicheradressenort bereitgestellt ist, der nicht dem Index zugeordnet ist, und in Reaktion auf das Detektieren Bereitstellen eines Steuersignals für wenigstens eine Einheit des Berechnungs-Array, um eine Multiplizieroperation zu verhindern, die dem Null-Eingangsaktivierungswert zugeordnet ist, enthält.
  14. Elektronisches System nach einem der Ansprüche 9 bis 13, wobei die Operationen ferner Abbilden durch die Steuereinheit und auf eine erste Einheit eines ersten Abschnitts einer Tensorberechnung, die eine erste Eingangsaktivierung verwendet, und Abbilden auf eine zweite Einheit, die von der ersten Einheit verschieden ist, eines zweiten Abschnitts der Tensorberechnung, die auch die erste Eingangsaktivierung verwendet, umfassen.
DE202017105363.6U 2016-10-27 2017-09-06 Auswerten von Eingangsdatenseltenheit in Berechnungseinheiten eines neuronalen Netzes Active DE202017105363U1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US15/336,066 2016-10-27
US15/336,066 US10360163B2 (en) 2016-10-27 2016-10-27 Exploiting input data sparsity in neural network compute units
US15/465,774 2017-03-22
US15/465,774 US9818059B1 (en) 2016-10-27 2017-03-22 Exploiting input data sparsity in neural network compute units

Publications (1)

Publication Number Publication Date
DE202017105363U1 true DE202017105363U1 (de) 2017-12-06

Family

ID=60256363

Family Applications (2)

Application Number Title Priority Date Filing Date
DE102017120452.0A Ceased DE102017120452A1 (de) 2016-10-27 2017-09-06 Auswerten von Eingangsdatenseltenheit in Berechnungseinheiten eines neuronalen Netzes
DE202017105363.6U Active DE202017105363U1 (de) 2016-10-27 2017-09-06 Auswerten von Eingangsdatenseltenheit in Berechnungseinheiten eines neuronalen Netzes

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE102017120452.0A Ceased DE102017120452A1 (de) 2016-10-27 2017-09-06 Auswerten von Eingangsdatenseltenheit in Berechnungseinheiten eines neuronalen Netzes

Country Status (9)

Country Link
US (4) US10360163B2 (de)
EP (2) EP3533003B1 (de)
JP (2) JP7134955B2 (de)
KR (3) KR20230061577A (de)
CN (2) CN108009626B (de)
DE (2) DE102017120452A1 (de)
HK (1) HK1254700A1 (de)
SG (1) SG11201903787YA (de)
WO (1) WO2018080624A1 (de)

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10175980B2 (en) 2016-10-27 2019-01-08 Google Llc Neural network compute tile
US10360163B2 (en) 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
US9959498B1 (en) 2016-10-27 2018-05-01 Google Llc Neural network instruction set architecture
US10685285B2 (en) * 2016-11-23 2020-06-16 Microsoft Technology Licensing, Llc Mirror deep neural networks that regularize to linear networks
WO2018113597A1 (zh) * 2016-12-20 2018-06-28 上海寒武纪信息科技有限公司 矩阵乘加运算装置、神经网络运算装置和方法
US11328037B2 (en) * 2017-07-07 2022-05-10 Intel Corporation Memory-size- and bandwidth-efficient method for feeding systolic array matrix multipliers
TWI680409B (zh) * 2017-07-08 2019-12-21 英屬開曼群島商意騰科技股份有限公司 適用於人工神經網路之矩陣及向量相乘的方法
US10790828B1 (en) 2017-07-21 2020-09-29 X Development Llc Application specific integrated circuit accelerators
US10879904B1 (en) * 2017-07-21 2020-12-29 X Development Llc Application specific integrated circuit accelerators
US10725740B2 (en) * 2017-08-31 2020-07-28 Qualcomm Incorporated Providing efficient multiplication of sparse matrices in matrix-processor-based devices
WO2019090325A1 (en) 2017-11-06 2019-05-09 Neuralmagic, Inc. Methods and systems for improved transforms in convolutional neural networks
US11551065B2 (en) * 2017-11-06 2023-01-10 Imagination Technologies Limited Neural network architecture using control logic determining convolution operation sequence
US20190156214A1 (en) 2017-11-18 2019-05-23 Neuralmagic Inc. Systems and methods for exchange of data in distributed training of machine learning algorithms
US10936942B2 (en) * 2017-11-21 2021-03-02 Google Llc Apparatus and mechanism for processing neural network tasks using a single chip package with multiple identical dies
US10553207B2 (en) * 2017-12-29 2020-02-04 Facebook, Inc. Systems and methods for employing predication in computational models
EP3750113A1 (de) * 2018-02-09 2020-12-16 DeepMind Technologies Limited Neuronale netze mit einem zusammenhängenden spärlichkeitsmuster
US20210004668A1 (en) * 2018-02-16 2021-01-07 The Governing Council Of The University Of Toronto Neural network accelerator
US10572568B2 (en) 2018-03-28 2020-02-25 Intel Corporation Accelerator for sparse-dense matrix multiplication
US10963787B2 (en) 2018-05-31 2021-03-30 Neuralmagic Inc. Systems and methods for generation of sparse code for convolutional neural networks
WO2021054990A1 (en) * 2019-09-16 2021-03-25 Neuralmagic Inc. Systems and methods for generation of sparse code for convolutional neural networks
US11449363B2 (en) 2018-05-31 2022-09-20 Neuralmagic Inc. Systems and methods for improved neural network execution
US11216732B2 (en) 2018-05-31 2022-01-04 Neuralmagic Inc. Systems and methods for generation of sparse code for convolutional neural networks
US10832133B2 (en) 2018-05-31 2020-11-10 Neuralmagic Inc. System and method of executing neural networks
US10599429B2 (en) * 2018-06-08 2020-03-24 Intel Corporation Variable format, variable sparsity matrix multiplication instruction
US20200019836A1 (en) * 2018-07-12 2020-01-16 International Business Machines Corporation Hierarchical parallelism in a network of distributed neural network cores
CN110796244B (zh) * 2018-08-01 2022-11-08 上海天数智芯半导体有限公司 用于人工智能设备的核心计算单元处理器及加速处理方法
CN109344964B (zh) * 2018-08-08 2020-12-29 东南大学 一种适用于神经网络的乘加计算方法和计算电路
CN110826707B (zh) * 2018-08-10 2023-10-31 北京百度网讯科技有限公司 应用于卷积神经网络的加速方法和硬件加速器
US20200065659A1 (en) * 2018-08-24 2020-02-27 Samsung Electronics Co., Ltd. Method of accelerating training process of neural network and neural network device thereof
JP6985997B2 (ja) * 2018-08-27 2021-12-22 株式会社日立製作所 機械学習システムおよびボルツマンマシンの計算方法
US11586417B2 (en) * 2018-09-28 2023-02-21 Qualcomm Incorporated Exploiting activation sparsity in deep neural networks
WO2020072274A1 (en) 2018-10-01 2020-04-09 Neuralmagic Inc. Systems and methods for neural network pruning with accuracy preservation
CN111026440B (zh) * 2018-10-09 2022-03-29 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
JP7115211B2 (ja) * 2018-10-18 2022-08-09 富士通株式会社 演算処理装置および演算処理装置の制御方法
CN111126081B (zh) * 2018-10-31 2023-07-21 深圳永德利科技股份有限公司 全球通用语言终端及方法
US10768895B2 (en) 2018-11-08 2020-09-08 Movidius Limited Dot product calculators and methods of operating the same
KR20200057814A (ko) * 2018-11-13 2020-05-27 삼성전자주식회사 뉴럴 네트워크를 이용한 데이터 처리 방법 및 이를 지원하는 전자 장치
US11361050B2 (en) 2018-11-20 2022-06-14 Hewlett Packard Enterprise Development Lp Assigning dependent matrix-vector multiplication operations to consecutive crossbars of a dot product engine
US10769527B2 (en) 2018-12-11 2020-09-08 Mipsology SAS Accelerating artificial neural network computations by skipping input values
EP3895071A1 (de) * 2018-12-11 2021-10-20 Mipsology SAS Beschleunigung der berechnung künstlicher neuronaler netze durch überspringen von eingabewerten
JP7189000B2 (ja) * 2018-12-12 2022-12-13 日立Astemo株式会社 情報処理装置、車載制御装置、車両制御システム
KR20200082613A (ko) 2018-12-31 2020-07-08 에스케이하이닉스 주식회사 프로세싱 시스템
US11544559B2 (en) 2019-01-08 2023-01-03 Neuralmagic Inc. System and method for executing convolution in a neural network
US11604958B2 (en) 2019-03-13 2023-03-14 Samsung Electronics Co., Ltd. Method and apparatus for processing computation of zero value in processing of layers in neural network
KR20200111939A (ko) 2019-03-20 2020-10-05 에스케이하이닉스 주식회사 신경망 가속 장치 및 그것의 동작 방법
US20210026686A1 (en) * 2019-07-22 2021-01-28 Advanced Micro Devices, Inc. Chiplet-integrated machine learning accelerators
WO2021026225A1 (en) 2019-08-08 2021-02-11 Neuralmagic Inc. System and method of accelerating execution of a neural network
US11635893B2 (en) * 2019-08-12 2023-04-25 Micron Technology, Inc. Communications between processors and storage devices in automotive predictive maintenance implemented via artificial neural networks
KR20210024865A (ko) * 2019-08-26 2021-03-08 삼성전자주식회사 데이터를 처리하는 방법 및 장치
KR20210045225A (ko) * 2019-10-16 2021-04-26 삼성전자주식회사 뉴럴 네트워크에서 연산을 수행하는 방법 및 장치
JP7462140B2 (ja) 2019-10-29 2024-04-05 国立大学法人 熊本大学 ニューラルネットワーク回路及びニューラルネットワーク演算方法
US11244198B2 (en) 2019-11-21 2022-02-08 International Business Machines Corporation Input partitioning for deep learning of large image data
FR3105659B1 (fr) * 2019-12-18 2022-06-24 Commissariat Energie Atomique Procédé et dispositif de codage binaire de signaux pour implémenter des opérations MAC numériques à précision dynamique
KR102268817B1 (ko) * 2019-12-19 2021-06-24 국민대학교산학협력단 분산 클라우드 환경에서의 기계 학습 성능 평가 방법 및 장치
KR20210086233A (ko) * 2019-12-31 2021-07-08 삼성전자주식회사 완화된 프루닝을 통한 행렬 데이터 처리 방법 및 그 장치
TWI727641B (zh) * 2020-02-03 2021-05-11 華邦電子股份有限公司 記憶體裝置及其操作方法
US11586601B2 (en) * 2020-02-05 2023-02-21 Alibaba Group Holding Limited Apparatus and method for representation of a sparse matrix in a neural network
US11604975B2 (en) 2020-04-09 2023-03-14 Apple Inc. Ternary mode of planar engine for neural processor
CN111445013B (zh) * 2020-04-28 2023-04-25 南京大学 一种针对卷积神经网络的非零探测器及其方法
KR102418794B1 (ko) * 2020-06-02 2022-07-08 오픈엣지테크놀로지 주식회사 하드웨어 가속기를 위한 파라미터를 메모리로부터 액세스하는 방법 및 이를 이용한 장치
CN113835675A (zh) * 2020-06-23 2021-12-24 深圳市中兴微电子技术有限公司 数据处理装置及数据处理方法
KR20220010362A (ko) 2020-07-17 2022-01-25 삼성전자주식회사 뉴럴 네트워크 장치 및 그의 동작 방법
US20230267310A1 (en) * 2020-07-17 2023-08-24 Sony Group Corporation Neural network processing apparatus, information processing apparatus, information processing system, electronic device, neural network processing method, and program
US20230273828A1 (en) * 2020-07-21 2023-08-31 The Governing Council Of The University Of Toronto System and method for using sparsity to accelerate deep learning networks
US11928176B2 (en) * 2020-07-30 2024-03-12 Arm Limited Time domain unrolling sparse matrix multiplication system and method
US20220075669A1 (en) * 2020-09-08 2022-03-10 Technion Research And Development Foundation Ltd. Non-Blocking Simultaneous MultiThreading (NB-SMT)
DE112021005190T5 (de) 2020-09-30 2023-09-14 Sony Semiconductor Solutions Corporation Signalverarbeitungsvorrichtung, bildaufnahmevorrichtung und signalverarbeitungsverfahren
KR20220049325A (ko) * 2020-10-14 2022-04-21 삼성전자주식회사 가속기 및 이를 포함한 전자 장치
US11861328B2 (en) * 2020-11-11 2024-01-02 Samsung Electronics Co., Ltd. Processor for fine-grain sparse integer and floating-point operations
US11861327B2 (en) * 2020-11-11 2024-01-02 Samsung Electronics Co., Ltd. Processor for fine-grain sparse integer and floating-point operations
US11556757B1 (en) 2020-12-10 2023-01-17 Neuralmagic Ltd. System and method of executing deep tensor columns in neural networks
KR102541461B1 (ko) 2021-01-11 2023-06-12 한국과학기술원 저전력 고성능 인공 신경망 학습 가속기 및 가속 방법
US20220222386A1 (en) * 2021-01-13 2022-07-14 University Of Florida Research Foundation, Inc. Decommissioning and erasing entropy in microelectronic systems
US11853717B2 (en) * 2021-01-14 2023-12-26 Microsoft Technology Licensing, Llc Accelerating processing based on sparsity for neural network hardware processors
US11940907B2 (en) * 2021-06-25 2024-03-26 Intel Corporation Methods and apparatus for sparse tensor storage for neural network accelerators
US11669489B2 (en) * 2021-09-30 2023-06-06 International Business Machines Corporation Sparse systolic array design
US11960982B1 (en) 2021-10-21 2024-04-16 Neuralmagic, Inc. System and method of determining and executing deep tensor columns in neural networks

Family Cites Families (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3754128A (en) 1971-08-31 1973-08-21 M Corinthios High speed signal processor for vector transformation
JPS4874139A (de) * 1971-12-29 1973-10-05
JPS5364439A (en) * 1976-11-20 1978-06-08 Agency Of Ind Science & Technol Linear coversion system
JPS58134357A (ja) 1982-02-03 1983-08-10 Hitachi Ltd ベクトルプロセッサ
DE3586692T2 (de) 1984-03-29 1993-02-18 Toshiba Kawasaki Kk Arithmetische konvolutionsschaltung fuer digitale signalverarbeitung.
US5267185A (en) 1989-04-14 1993-11-30 Sharp Kabushiki Kaisha Apparatus for calculating matrices
US5138695A (en) 1989-10-10 1992-08-11 Hnc, Inc. Systolic array image processing system
JPH03167664A (ja) 1989-11-28 1991-07-19 Nec Corp マトリクス演算回路
JPH05501317A (ja) 1990-05-30 1993-03-11 アダプティブ・ソリューションズ・インコーポレーテッド 仮想ゼロ値を用いるニューラル・ネットワーク
WO1991019267A1 (en) 1990-06-06 1991-12-12 Hughes Aircraft Company Neural network processor
US5287464A (en) 1990-10-24 1994-02-15 Zilog, Inc. Semiconductor multi-device system with logic means for controlling the operational mode of a set of input/output data bus drivers
JP3318753B2 (ja) 1991-12-05 2002-08-26 ソニー株式会社 積和演算装置および積和演算方法
AU658066B2 (en) * 1992-09-10 1995-03-30 Deere & Company Neural network based control system
JPH06139218A (ja) 1992-10-30 1994-05-20 Hitachi Ltd ディジタル集積回路を用いて神経回路網を完全に並列にシミュレートするための方法及び装置
US6067536A (en) * 1996-05-30 2000-05-23 Matsushita Electric Industrial Co., Ltd. Neural network for voice and pattern recognition
US5742741A (en) 1996-07-18 1998-04-21 Industrial Technology Research Institute Reconfigurable neural network
US5905757A (en) 1996-10-04 1999-05-18 Motorola, Inc. Filter co-processor
US6243734B1 (en) 1998-10-30 2001-06-05 Intel Corporation Computer product and method for sparse matrices
JP2001117900A (ja) 1999-10-19 2001-04-27 Fuji Xerox Co Ltd ニューラルネットワーク演算装置
US20020044695A1 (en) * 2000-05-05 2002-04-18 Bostrom Alistair K. Method for wavelet-based compression of video images
JP2003244190A (ja) 2002-02-19 2003-08-29 Matsushita Electric Ind Co Ltd データフロー制御スイッチ用プロセッサ及びデータフロー制御スイッチ
US7016529B2 (en) * 2002-03-15 2006-03-21 Microsoft Corporation System and method facilitating pattern recognition
US7493498B1 (en) * 2002-03-27 2009-02-17 Advanced Micro Devices, Inc. Input/output permission bitmaps for compartmentalized security
US7426501B2 (en) 2003-07-18 2008-09-16 Knowntech, Llc Nanotechnology neural network methods and systems
US7818729B1 (en) * 2003-09-15 2010-10-19 Thomas Plum Automated safe secure techniques for eliminating undefined behavior in computer software
WO2005067572A2 (en) 2004-01-13 2005-07-28 New York University Method, system, storage medium, and data structure for image recognition using multilinear independent component analysis
GB2436377B (en) 2006-03-23 2011-02-23 Cambridge Display Tech Ltd Data processing hardware
CN101441441B (zh) * 2007-11-21 2010-06-30 新乡市起重机厂有限公司 起重机智能防摇控制系统的设计方法
JP4513865B2 (ja) 2008-01-25 2010-07-28 セイコーエプソン株式会社 並列演算装置および並列演算方法
WO2009141789A1 (en) 2008-05-21 2009-11-26 Nxp B.V. A data handling system comprising memory banks and data rearrangement
US8321652B2 (en) * 2008-08-01 2012-11-27 Infineon Technologies Ag Process and method for logical-to-physical address mapping using a volatile memory device in solid state disks
EP2290563B1 (de) * 2009-08-28 2017-12-13 Accenture Global Services Limited Inhaltszugriff in einem Netzwerk
US8589600B2 (en) 2009-12-14 2013-11-19 Maxeler Technologies, Ltd. Method of transferring data with offsets
US8595467B2 (en) 2009-12-29 2013-11-26 International Business Machines Corporation Floating point collect and operate
US8676874B2 (en) 2010-12-06 2014-03-18 International Business Machines Corporation Data structure for tiling and packetizing a sparse matrix
US8457767B2 (en) * 2010-12-31 2013-06-04 Brad Radl System and method for real-time industrial process modeling
US8977629B2 (en) 2011-05-24 2015-03-10 Ebay Inc. Image-based popularity prediction
US8806171B2 (en) 2011-05-24 2014-08-12 Georgia Tech Research Corporation Systems and methods providing wear leveling using dynamic randomization for non-volatile memory
US8812414B2 (en) 2011-05-31 2014-08-19 International Business Machines Corporation Low-power event-driven neural computing architecture in neural networks
US8909576B2 (en) 2011-09-16 2014-12-09 International Business Machines Corporation Neuromorphic event-driven neural computing architecture in a scalable neural network
JP5501317B2 (ja) 2011-09-21 2014-05-21 株式会社半導体理工学研究センター 時間差増幅回路
US9201828B2 (en) 2012-10-23 2015-12-01 Analog Devices, Inc. Memory interconnect network architecture for vector processor
US9606797B2 (en) 2012-12-21 2017-03-28 Intel Corporation Compressing execution cycles for divergent execution in a single instruction multiple data (SIMD) processor
KR101772299B1 (ko) 2012-12-28 2017-08-28 인텔 코포레이션 스트라이딩된 액세스 패턴을 가진 벡터 레지스터에서 성분들을 축소하기 위한 명령어
US9477628B2 (en) 2013-09-28 2016-10-25 Intel Corporation Collective communications apparatus and method for parallel systems
US9323525B2 (en) 2014-02-26 2016-04-26 Intel Corporation Monitoring vector lane duty cycle for dynamic optimization
CN106471526B (zh) * 2014-08-29 2019-03-08 谷歌有限责任公司 用于处理图像的方法和系统
CN104463209B (zh) * 2014-12-08 2017-05-24 福建坤华仪自动化仪器仪表有限公司 一种基于bp神经网络的pcb板上数字代码识别方法
US9666257B2 (en) 2015-04-24 2017-05-30 Intel Corporation Bitcell state retention
US10013652B2 (en) * 2015-04-29 2018-07-03 Nuance Communications, Inc. Fast deep neural network feature transformation via optimized memory bandwidth utilization
US10489703B2 (en) 2015-05-20 2019-11-26 Nec Corporation Memory efficiency for convolutional neural networks operating on graphics processing units
US10509765B2 (en) 2015-10-08 2019-12-17 Via Alliance Semiconductor Co., Ltd. Neural processing unit that selectively writes back to neural memory either activation function output or accumulator value
US9875104B2 (en) 2016-02-03 2018-01-23 Google Llc Accessing data in multi-dimensional tensors
US10552119B2 (en) 2016-04-29 2020-02-04 Intel Corporation Dynamic management of numerical representation in a distributed matrix processor architecture
CN106023065B (zh) * 2016-05-13 2019-02-19 中国矿业大学 一种基于深度卷积神经网络的张量型高光谱图像光谱-空间降维方法
CN106127297B (zh) 2016-06-02 2019-07-12 中国科学院自动化研究所 基于张量分解的深度卷积神经网络的加速与压缩方法
US10360163B2 (en) 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
US10175980B2 (en) 2016-10-27 2019-01-08 Google Llc Neural network compute tile
US9959498B1 (en) 2016-10-27 2018-05-01 Google Llc Neural network instruction set architecture
US10733505B2 (en) 2016-11-10 2020-08-04 Google Llc Performing kernel striding in hardware
US10037490B2 (en) 2016-12-13 2018-07-31 Google Llc Performing average pooling in hardware
CN106529511B (zh) 2016-12-13 2019-12-10 北京旷视科技有限公司 图像结构化方法及装置
US20180189675A1 (en) 2016-12-31 2018-07-05 Intel Corporation Hardware accelerator architecture and template for web-scale k-means clustering
US11164071B2 (en) 2017-04-18 2021-11-02 Samsung Electronics Co., Ltd. Method and apparatus for reducing computational complexity of convolutional neural networks
US10572409B1 (en) 2018-05-10 2020-02-25 Xilinx, Inc. Sparse matrix processing circuitry

Also Published As

Publication number Publication date
CN108009626B (zh) 2022-03-01
JP2020500365A (ja) 2020-01-09
JP2022172258A (ja) 2022-11-15
CN108009626A (zh) 2018-05-08
US10360163B2 (en) 2019-07-23
EP3533003A1 (de) 2019-09-04
US20220083480A1 (en) 2022-03-17
JP7134955B2 (ja) 2022-09-12
KR20190053262A (ko) 2019-05-17
KR102397415B1 (ko) 2022-05-12
US20200012608A1 (en) 2020-01-09
CN114595803A (zh) 2022-06-07
EP3533003B1 (de) 2022-01-26
DE102017120452A1 (de) 2018-05-03
SG11201903787YA (en) 2019-05-30
KR20230061577A (ko) 2023-05-08
KR102528517B1 (ko) 2023-05-04
US20180121377A1 (en) 2018-05-03
EP4044071A1 (de) 2022-08-17
US11106606B2 (en) 2021-08-31
WO2018080624A1 (en) 2018-05-03
HK1254700A1 (zh) 2019-07-26
KR20220065898A (ko) 2022-05-20
JP7469407B2 (ja) 2024-04-16
US11816045B2 (en) 2023-11-14
US9818059B1 (en) 2017-11-14

Similar Documents

Publication Publication Date Title
DE202017105363U1 (de) Auswerten von Eingangsdatenseltenheit in Berechnungseinheiten eines neuronalen Netzes
DE112019000336T5 (de) Massiv parallele neuronale inferenz-datenverarbeitungselemente
DE102017121825A1 (de) Rechenkachel für neuronale Netze
DE202018104609U1 (de) Neuronalnetzbeschleuniger mit Parametern, die sich auf einem Chip befinden
DE202017105729U1 (de) Kerndurchschreiten in Hardware
DE112016002292T5 (de) Stapel-verarbeitung in einem neuronalen netzwerkprozessor
DE202017105528U1 (de) Ausführen von Mittelwert-Poolbildung in Hardware
DE102017120588A1 (de) Befehlssatzarchitektur für neuronale Netze
DE112020003128T5 (de) Dilatierte faltung mit systolischem array
DE112017005651T5 (de) Vorrichtung zur Klassifizierung von Daten
DE102005033274B4 (de) Mustervergleichsarchitektur
DE112019000676T5 (de) Zentraler scheduler und anweisungszuteiler für einen neuronalen inferenzprozessor
DE112019006156T5 (de) Erkennung und behandlung von unsachgemässen eingaben durch neuronale netzwerke
EP3590078B1 (de) Neuronalnetzsystem
DE112014003591T5 (de) Detektionseinheit, Detektionsverfahren und Programm
CN115803752A (zh) 深度卷积神经网络中的归一化
DE102014225039A1 (de) Verfahren und Vorrichtung zum Bereitstellen von spärlichen Gauß-Prozess-Modellen zur Berechnung in einem Motorsteuergerät
Tian A criterion for parameter identification in structural equation models
DE102017117381A1 (de) Beschleuniger für dünnbesetzte faltende neuronale Netze
DE102022105808A1 (de) Effiziente quantisierung für eine bereitstellung und ausführung von neuronalen netzen
DE112021004537T5 (de) Speicherorientierter beschleuniger für neuronale netze für bereitstellbare inferenzsysteme
DE112020005055T5 (de) Prozessoreinheit für multiplizier- und akkumulieroperationen
DE112020005140T5 (de) Dreidimensionale faltung im prozessor eines neuronalen netzwerks
GB2556413A (en) Exploiting input data sparsity in neural network compute units
Bakken et al. Principal feature visualisation in convolutional neural networks

Legal Events

Date Code Title Description
R207 Utility model specification
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R150 Utility model maintained after payment of first maintenance fee after three years
R151 Utility model maintained after payment of second maintenance fee after six years