DE102018212297A1 - Verwendung von programmierbaren Switching-Chips als künstliche neuronale Netzwerk Module - Google Patents

Verwendung von programmierbaren Switching-Chips als künstliche neuronale Netzwerk Module Download PDF

Info

Publication number
DE102018212297A1
DE102018212297A1 DE102018212297.0A DE102018212297A DE102018212297A1 DE 102018212297 A1 DE102018212297 A1 DE 102018212297A1 DE 102018212297 A DE102018212297 A DE 102018212297A DE 102018212297 A1 DE102018212297 A1 DE 102018212297A1
Authority
DE
Germany
Prior art keywords
packet
switching chip
stage
bnn
header
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.)
Granted
Application number
DE102018212297.0A
Other languages
English (en)
Other versions
DE102018212297B4 (de
Inventor
Roberto Bifulco
Giuseppe Siracusano
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.)
NEC Corp
Original Assignee
NEC Laboratories Europe GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Laboratories Europe GmbH filed Critical NEC Laboratories Europe GmbH
Publication of DE102018212297A1 publication Critical patent/DE102018212297A1/de
Application granted granted Critical
Publication of DE102018212297B4 publication Critical patent/DE102018212297B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Ein Verfahren zum Ausführen eines binärisierten neuronalen Netzwerks (BNN) unter Verwendung eines Switching-Chips umfasst das Beschreiben einer Anwendung eines künstlichen neuronalen Netzwerks in einer binärisierten Form, um das BNN bereitzustellen; das Konfigurieren eines Parsers des Switching-Chips zum Codieren eines Eingabevektors des BNN in einen Paket-Header; das Konfigurieren einer Mehrzahl von Match-Action-Tabellen (MATs) des Switching-Chips, so dass sie auf dem in den Paket-Header codierten Eingabevektor eine oder mehrere der Operationen einschließlich XNOR, Bitzählung und Vorzeichenoperationen ausführen, so dass die Mehrzahl von MATs konfiguriert ist: eine bitweise XNOR-Operation zwischen dem Eingabevektor und einer Gewichtungsmatrix zu implementieren, um eine Vielzahl von Vektoren erster Stufe zu erzeugen, einen Algorithmus zum Zählen einer Anzahl von Bits zu implementieren, die in der Vielzahl von Vektoren der ersten Stufe auf 1 gesetzt wurden, um eine Vielzahl von Vektoren zweiter Stufe zu erzeugen, und eine Vorzeichenoperation auf den Vektoren der zweiten Stufe zu implementieren.

Description

  • FACHGEBIET
  • Die vorliegende Erfindung betrifft künstliche neuronale Netze, und insbesondere Systeme und Verfahren zur Ausführung binärisierter neuronaler Netze.
  • HINTERGRUND
  • Das Ausführen von künstlichen neuronalen Netzen (NN) wird zunehmend für eine Anzahl von Anwendungen benötigt. Die Fähigkeit, Arbeitslasten großer NN in kurzer Zeit zu verarbeiten, ermöglicht mehrere Anwendungsfälle. Tatsächlich sollte ein NN Exekutor eine geringe Verarbeitungslatenz und einen hohen Durchsatz garantieren, während er wirtschaftlich rentabel ist.
  • Neueste Arbeiten haben binärisierte (oder bitweise) neuronale Netze (BNN) als ein NN Modell vorgeschlagen, das effizientere Exekutoren ermöglicht. Ein BNN verwendet nur binäre Eingaben und binäre Gewichtungen für seine Neuronen, wobei das Eingabe-Gewichtungs-Produkt durch eine bitweise XNOR-Funktion ersetzt wird. Darüber hinaus verwendet die Aktivierungsfunktion des Neurons Bit-Zählung und die Vorzeichenfunktion.
  • Unter Berücksichtigung ihrer Eigenschaften werden BNN zur Ausführung in eingebetteten und eingeschränkten Geräten oder für die Implementierung von sehr schnellen Algorithmen, wenn leistungsfähigere Universal-Server verwendet werden, in Betracht gezogen.
  • ZUSAMMENFASSUNG
  • In einer Ausführungsform stellt die vorliegende Erfindung ein Verfahren zum Ausführen eines binärisierten neuronalen Netzwerks (BNN) unter Verwendung eines Switching-Chips bereit. Das Verfahren umfasst das Beschreiben einer Anwendung eines künstlichen neuronalen Netzes in einer binärisierten Form, um das BNN bereitzustellen; das Konfigurieren eines Parsers des Switching-Chips zum Codieren eines Eingabevektors des BNN in einen Paket-Header; das Konfigurieren einer Mehrzahl von Match-Action-Tabellen (MATs) des Switching-Chips, so dass sie auf dem in den Paket-Header codierten Eingabevektor eine oder mehrere der Operationen einschließlich XNOR, Bit-Zählung und Vorzeichenoperationen ausführen, so dass die Mehrzahl von MATs konfiguriert ist: in einer ersten Stufe eine bitweise XNOR-Operation zwischen dem in den Paket-Header codierten Eingabevektor und einer Gewichtungsmatrix des neuronalen Netzes zu implementieren, um eine Vielzahl von Vektoren erster Stufe zu erzeugen, in einer oder mehreren zweiten Stufen einen Algorithmus zum Zählen einer Anzahl von Bits zu implementieren, die in der Vielzahl von Vektoren der ersten Stufe auf 1 gesetzt wurden, um eine Vielzahl von Vektoren zweiter Stufe zu erzeugen, und in einer letzten Stufe eine Vorzeichenoperation auf der Mehrzahl von Vektoren der zweiten Stufe zu implementieren.
  • Figurenliste
  • Die vorliegende Erfindung wird nachfolgend ausführlicher basierend auf den beispielhaften Figuren beschrieben. Die Erfindung ist nicht auf die beispielhaften Ausführungsformen beschränkt. Alle hierin beschriebenen und/oder illustrierten Merkmale können einzeln oder kombiniert in unterschiedlichen Zusammenstellungen in Ausführungsformen der Erfindung verwendet werden. Die Merkmale und Vorteile der verschiedenen Ausführungsformen der vorliegenden Erfindung werden deutlich anhand der folgenden ausführlichen Beschreibung mit Verweis auf die beiliegenden Zeichnungen, die Folgendes illustrieren:
    • 1 ist ein Blockdiagramm eines Switching-Chips, der gemäß einer Ausführungsform der Erfindung konfiguriert ist, ein binärisiertes neuronales Netzwerk (BNN) auszuführen;
    • 2 ist ein Blockdiagramm einer Stufe eines Switching-Chips, der konfiguriert ist, ein BNN gemäß einer Ausführungsform der Erfindung auszuführen;
    • 3 ist ein Flussdiagramm eines Verfahrens zum Ausführen eines BNN gemäß einer Ausführungsform der Erfindung;
    • 4 zeigt ein Beispiel eines Algorithmus, der eine Hamming-Gewichtungsberechnung durchführen kann; und
    • 5 zeigt einen ersten Schritt eines Algorithmus, der so angepasst ist, dass die Hamming-Gewichtsberechnung in mehrere Schritte aufgeteilt werden kann.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Ausführungsformen der vorliegenden Erfindung stellen Systeme und Verfahren zum Ausführen eines binärisierten oder bitweisen neuronalen Netzwerks (BNN) bereit. Ausführungsformen der vorliegenden Erfindung nutzen Switching-Chips eines programmierbaren Routers.
  • Gemäß Ausführungsformen der vorliegenden Erfindung verwendet das BNN nur Bitdarstellungen für Eingaben und Gewichtungen, führt XNOR-Operationen zwischen dem Eingabevektor und einem Gewichtungsvektor eines Neurons durch und stellt eine Ausgabe 1 für ein Neuron bereit, wenn die Zählung des Bit des Eingabevektors größer oder gleich der Hälfte der Gesamtzahl der Bits in der Vektorgröße ist.
  • Ausführungsformen der vorliegenden Erfindung codieren den Eingabevektor des künstlichen neuronalen Netzwerks in einen Paket-Headerfeld, wiederholen das Paket-Headerfeld im Paket-Header so oft wie die maximale Anzahl von Neuronen, die parallel verarbeitet werden können, teilen einen Algorithmus zum Zählen der Anzahl von Bits, die in einem Vektor auf 1 gesetzt sind, in eine Anzahl von Schritte auf, die von den Stufen der Pipeline eines Switching-Chips ausgeführt werden können, führen den Vergleich zwischen zwei Zahlen unter Verwendung einer Booleschen Funktion aus, welche in der Pipeline-Stufe eines Switching-Chips ausgeführt wird, und codieren das Ergebnis der Berechnung gemäß vorherigen Schritten in den Header des Pakets.
  • Ausführungsformen der vorliegenden Erfindung verwenden den Teil eines Switching-Chips, der Paket-Header bearbeitet. Der Switching-Chip kann die Header lesen und modifizieren und dann das entsprechende Netzwerkpaket mit den modifizierten Headern an einen ausgewählten Ausgabe-Port senden.
  • Die Architektur eines Switching-Chips kann als eine Pipeline dargestellt werden, d.h. als eine Reihe von verbundenen Modulen, die jeweils so konfiguriert sind, dass sie eine bestimmte Funktion ausführen. Bei einem ersten Modul, bei dem es sich um einen programmierbaren Parser handelt, wird ein Header eines empfangenen Pakets geparst. Die Ausgestaltung des Parsers ist implementationsspezifisch, weist jedoch in einem allgemeinen Fall ein Header-Identifizierungsmodul, eine Beschreibung eines endlichen Automaten, z.B. in Form einer Übergangstabelle, und ein Feldextraktionsmodul auf. Normalerweise verwendet der Parser eine Kombination aus schnellem RAM, beispielsweise einem statischen RAM, und ternärem Matching-Speicher, wie beispielsweise TCAMs, um die Parsing-Logik zu speichern. Das Header-Identifizierungsmodul und die Feldextraktionsmodule sind beispielsweise integrierte Schaltungen, Mikroprozessoren oder ein Teil davon. In ähnlicher Weise kann jedes der Module in der verbundenen Reihe von Modulen beispielsweise integrierte Schaltungen, Mikroprozessoren oder ein Teil davon sein.
  • Das Ergebnis des Parsings ist eine strukturierte Repräsentation des Paket-Headers, wobei die strukturierte Repräsentation verschiedene Protokoll-Header und Felder mit ihren Werten umfasst. Da der Parser programmierbar ist, kann der Programmierer des Switching-Chips sowohl die Protokoll-Header als auch ihre Felder unter Verwendung einer geeigneten Programmiersprache spezifizieren. Geeignete Programmiersprachen umfassen Sprachen zum Programmieren von Paketprozessoren, zum Beispiel zum Programmieren von protokollunabhängigen Paketprozessoren (P4) - welches eine höhere Sprache zum Programmieren von protokollunabhängigen Paketprozessoren ist, die in Verbindung mit SDN-Steuerungsprotokollen (Software-defined Networking) wie OpenFlow arbeitet. Die Programmierung des programmierbaren Parsers kann zur Konfigurations-Zeit, d.h. vor dem Beginn von Schaltvorgängen bzw. Switching Operationen, ausgeführt werden.
  • Nach dem ersten Modul, d.h. dem programmierbaren Parser, enthält die Pipeline eine Reihe von Stufen. Die Anzahl von Stufen kann abhängig von der speziellen Implementierung des Switching-Chips variieren. Jede Stufe kann z.B. eine Match-Action Tabelle (MAT) implementieren. Eine MAT-Tabelle enthält in einem Übereinstimmungsteil (der ,match portion‘) eine Liste von Definitionen von Netzwerkflüssen. Jede Definition eines Netzwerkflusses wird in Form eines Wertes eines Header-Feldes angegeben. Die MAT-Tabelle enthält zusätzlich in einem Aktionsteil (der ,action portion‘) eine Aktion, die auf ein Paket angewendet werden soll, das einen Headerfeld-Wert hat, der mit dem entsprechenden Eintrag des Übereinstimmungsteils der MAT übereinstimmt. Wann immer ein Netzwerkpaket mit einem Eintrag in dem Übereinstimmungsteil der MAT übereinstimmt, d.h. „matcht“, wird (bzw. werden) daher die in dem Aktionsteil der MAT aufgeführte Aktion (bzw. aufgeführten Aktionen), die dem übereinstimmenden Eintrag in dem Übereinstimmungsteil entspricht (bzw. entsprechen), auf das Paket angewendet. Die Aktionen werden von einem Array von Aktionseinheiten angewendet. Die Aktionseinheiten arbeiten parallel, sind jedoch auf einen exklusiven Zugriff auf die Paket-Headerfelder beschränkt. Das heißt, nur eine Aktionseinheit in einer Stufe kann den Header eines gegebenen Pakets lesen. Zudem können Aktionseinheiten nur einfache Operationen ausführen, wie beispielsweise logische bitweise Operationen (UND, ODER, XOR, usw.), und einfache Arithmetik (Inkrement, Addieren, usw.). Die Einträge in der MAT, die von jeder Stufe implementiert werden, werden zur Laufzeit durch einen Programmierer des Switching-Chips konfiguriert. Sowohl die Übereinstimmungsteile als auch die Aktionsteile haben Zugriff auf die Headerfelder, wie sie im Kontext der Parser/Deparser-Programmierung definiert sind.
  • Die MAT-Tabelle kann entweder unter Verwendung eines statischen RAMs, der zum Implementieren einer Hash-Tabelle organisiert ist, beispielsweise basierend auf Kuckucks-Hashing, oder unter Verwendung eines ternären inhaltsadressierbaren Speichers (TCAM), der zum Implementieren einer ternären Übereinstimmungstabelle mit einer Bitmaske verwendet wird, implementiert werden. Die implementierte Tabelle ist auch mit einem zweiten Speicherbereich assoziiert, typischerweise einem statischen RAM, das eine oder mehrere Anweisungen speichert, die von der Aktionseinheit angewendet werden müssen. Die Aktionseinheit besteht typischerweise aus einer Anzahl von Very-Long-Instruction-Word (VLIW)-Prozessoren. Solche Prozessoren können auf (eine Teilmenge von) Paket-Headerfeldern zugreifen und deren Werte modifizieren.
  • Nach der Reihe von Stufen baut ein Deparser einen neuen Paket-Header auf, wobei alle Modifikationen berücksichtigt werden, die von den verschiedenen Stufen der Pipeline an dem ursprünglichen Paket-Header vorgenommen wurden. Wie der Parser ist auch der Deparser programmierbar und seine interne Architektur ist ähnlich der eines Parsers. Tatsächlich wird die Deparser-Programmierung normalerweise implizit spezifiziert, da das Deparser-Programm direkt von dem Parser-Programm abgeleitet werden kann, z.B. ausgedrückt unter Verwendung der P4-Sprache.
  • Ausführungsformen der vorliegenden Erfindung können ein binärisiertes (oder bitweises) neuronales Netzwerk (BNN) mit K Eingaben (repräsentiert durch einen Vektor X), Q Neuronen der nächsten Schicht (repräsentiert durch einen Vektor H) und Q Ausgaben (repräsentiert durch ein Vektor Y) ausführen. Die physikalischen Beschränkungen des Switching-Chips bestimmen die tatsächliche Größe der Vektoren X, H und Y. Insbesondere die Anzahl der Stufen in der Pipeline des Switching-Chips, die maximale Größe S des von dem Switching-Chip zur Speicherung der Werte der Headerfelder intern verwendeten Paket-Header-Vektors, die verfügbare Anzahl von Aktionseinheiten Z und die Art der Operationen, die sie ausführen, beschränken die tatsächliche Größe von X, H und Y. Typische Werte sind N = 32, S = 512B, Z = 200, während die Art der Operationen Bitbewegungen, boolesche bitweise Operationen, Verschiebungen, Inkremente und Additionen umfassen.
  • Gemäß einer Ausführungsform der Erfindung werden die Eingaben eines BNN durch einen Vektor X = (x1, x2, ..., xK} repräsentiert, und die Neuronen der nächsten Schicht werden durch einen Vektor H = {h1, h2, ..., hQ} repräsentiert, wobei für jedes hj ∈ H ein Vektor Wj = {wj1, wj2, ..., wjK} von mit der Eingabe X assoziierten Gewichtungen existiert. Ein ankommender Paket-Header wird verwendet, um den Vektor X zu codieren, und die Switching-Pipeline ist konfiguriert, den Paket-Header zu modifizieren, um den Y-Vektor zu erzeugen, der dann in einen ausgehenden Paket-Header codiert wird.
  • Gemäß einer Ausführungsform der vorliegenden Erfindung wird der Vektor X in ein benutzerdefiniertes Headerfeld codiert, d.h. in ein BNN-Feld (BNF). Das BNF-Feld ist 2K Bits groß, wobei X in die ersten K Bits kopiert wird. Das BNF wird Q-mal in den Paket-Header kopiert.
  • In der ersten Pipeline-Stufe S1 konfiguriert der Aktionseintragsteil eines MAT Aktionseinheiten, um Q XNOR-Operationen (O11 ... O1Q ) durchzuführen, d.h. eine XNOR-Operation für jedes j-te BNF, wobei Qi,j die j-te Operation in der i-ten Stufe darstellt (i = 1, ..., Anzahl der Stufen des Switching-Chips), um Q Vektoren zu erzeugen, d.h. XXNORj für j = 1, ..., Q. In der Tat werden für jede j-te Kopie des BNF, die ersten K Bits als Eingabe für ein j-tes Neuron verwendet. Die Vektoren Wj werden als Parameter der Aktionseintragsoperationen der MAT eingefügt. Das heißt, der Aktionsteil des Eintrags enthält die Q-Operationen O11 ... O1Q , und der Parameter von jedem Q1j ist Wj . Das Ergebnis der XNOR-Operationen wird in die jeweiligen BNF-Headerfelder zurückgespeichert (j-te Operation speichert das j-te BNF). Ferner wird das Ergebnis sowohl in den ersten K Bits eines BNF als auch in den letzten K Bits gespeichert, d.h. in dem BNF ist das gleiche Ergebnis zweimal enthalten.
  • Sobald die Stufe S1 ausgeführt ist, wird die nächste Stufe S2 die Q-Vektoren (XXNORQj ) als Eingabe haben. Die vorliegende Erfindung führt eine Hamming-Gewichtungsberechnung, d.h. Bitzählen, für jeden derartigen Vektor durch. Es ist zu beachten, dass die Hamming-Gewichtung die Anzahl der von Null verschiedenen Elemente in einem gegebenen Vektor ist und deren Berechnung wird üblicherweise als Populationszähloperation bezeichnet. Im allgemeinsten Fall stellt ein Switching-Chip jedoch keine Populationszähloperation in den Aktionseinheiten einer Stufe bereit. Daher wird gemäß einer Ausführungsform der Erfindung ein Algorithmus, der die Addition von Teilzählungen in einer Baumstruktur durchführt, angepasst, um die Populationszähloperation unter Verwendung einer Anzahl von Stufen nach der Stufe S1 zu implementieren. In einer letzten Stufe S3 ist eine Vorzeichenfunktion implementiert.
  • 1 ist ein Blockdiagramm eines Switching-Chips, der konfiguriert ist, ein binärisiertes neuronales Netzwerk (BNN) gemäß einer Ausführungsform der Erfindung auszuführen. Der Switching-Chip 100 umfasst einen Parser 101, eine Vielzahl von Stufen 103A, 103B, ..., 103N und einen Deparser 105. Der Parser 101 empfängt ein Netzwerkpaket mit einem nicht geparsten Netzwerkpaket-Header 107 und parst den nicht geparsten Netzwerkpaket-Header 107, um einen geparsten Netzwerkpaket-Header 109 zu erzeugen. Der geparste Netzwerkpaket-Header umfasst eine Vielzahl von unterschiedlichen Protokoll-Headern, die jeweils ein Feld enthalten, d.h. H1, H2, H3, ....
  • 2 ist ein Blockdiagramm einer Stufe eines Switching-Chips, der zum Ausführen eines BNN gemäß einer Ausführungsform der Erfindung konfiguriert ist. Die Stufe 103 umfasst eine Vielzahl von Aktionseinheiten 104.1, 104.2, 104.3, .... Jede der Vielzahl von Aktionseinheiten ist konfiguriert, eine Aktion auf ein Paket anzuwenden, das mit einem entsprechenden Eintrag in einem Übereinstimmungs („match“)-Teil einer in die Stufe 103 des Switching-Chips 100 programmierten Match-Action Tabelle (MAT) übereinstimmt.
  • Figure 3 ist ein Flussdiagramm eines Verfahrens zum Ausführen eines BNN gemäß einer Ausführungsform der Erfindung. Bei 301 wird eine Anwendung eines künstlichen neuronalen Netzwerks in einer binärisierten Form beschrieben, um das BNN bereitzustellen. Bei 303 wird der Parser 101 des Switching-Chips 100 konfiguriert, einen Eingabevektor des BNN in einen Paket-Header zu codieren. Der Parser 101 kann z.B. von einem SDN-Controller unter Verwendung einer Sprache zum Programmieren von Paketprozessoren, bspw. zum Programmieren von protokollunabhängigen Paketprozessoren (P4), konfiguriert werden. Bei 305 werden eine Vielzahl von Match-Action-Tabellen (MATs) des Switching-Chips 100 konfiguriert, auf dem in den Paket-Header codierten Eingabevektor eine oder mehrere Operationen einschließlich XNOR, Bitzählung und Vorzeichenoperationen auszuführen. Als ein Ergebnis des Konfigurierens bei 305 sind die mehreren MATs so konfiguriert, dass sie (i) in einer ersten Stufe eine bitweise XNOR-Operation zwischen dem in den Paket-Header codierten Eingabevektor und einer Gewichtungsmatrix des neuronalen Netzwerks implementieren, um eine Vielzahl von Vektoren erster Stufe zu erzeugen, (ii) in einer oder mehreren zweiten Stufen einen Algorithmus zum Zählen einer Anzahl von Bits implementieren, welche in der Vielzahl von Vektoren erster Stufe auf 1 gesetzt wurden, und (iii) in einer letzten Stufe eine bitweise UND-Operation implementieren, die aus der vorherigen Stufe und einer Variable resultiert, deren Wert von der Kardinalität des Eingabevektors abhängt. Der Algorithmus zum Zählen der Anzahl von in der Vielzahl von Vektoren erster Stufe auf 1 gesetzten Bits kann ein Algorithmus sein, der eine Addition von Teilzählungen in einer Baumstruktur durchführt und angepasst ist, um die Populationszähloperation zu implementieren und eine Hamming-Gewichtungsberechnung bereitzustellen.
  • Bei 307 wird ein Eingabevektor in einen Header eines Netzwerkpakets codiert. Der Eingabevektor ist ein Vektor X = {x1, x2, ..., xK}. Bei 309 wird das Paket als ein ankommendes Paket an den Switching-Chip 100 gesendet. Bei 311 modifiziert der Switching-Chip den Paket-Header, um den Y-Vektor zu erzeugen, der dann in einen Header eines ausgehenden Pakets codiert wird. Bei 313 wird das ausgehende Paket von dem Switching-Chip 100 empfangen. Bei 315 wird der Ausgabevektor Y aus einem Header des ausgehenden Pakets gelesen.
  • Gemäß Ausführungsformen der Erfindung kann die Hamming-Gewichtungsberechnung implementiert werden, indem ein Algorithmus angepasst wird, der das Addieren von Teilzählungen in einer Baumstruktur durchführt. 4 zeigt ein Beispiel eines Algorithmus, der eine Hamming-Gewichtungsberechnung ausführen kann. Das Beispiel des in 4 gezeigten Algorithmus entspricht einem 64-Bit-Eingabevektor und umfasst insgesamt 6 Schritte und 24 Operationen. Der Algorithmus verwendet nur UND-, Schiebe- und Additionsoperationen und ist daher gut geeignet für eine Implementierung durch die Aktionseinheiten einer Stufe. Jede Aktionseinheit kann jedoch nur eine Operation pro Stufe implementieren. Daher wird der Algorithmus gemäß den Ausführungsformen der Erfindung so angepasst, dass die Hamming-Gewichtsberechnung in mehrere Schritte aufgeteilt werden kann. Jeder der Schritte wird in einer Stufe der Pipeline ausgeführt.
  • 5 zeigt einen ersten Schritt eines Algorithmus, der so angepasst ist, dass die Hamming-Gewichtungsberechnung in mehrere Schritte aufgeteilt werden kann. Jedes XXNORj wird zweimal in einem BNF-Feld gespeichert. Bspw. kann XXNOR1 durch Einträge x1 und x1' dargestellt werden. Jeder Teil eines BNF wird von einer anderen Aktionseinheit verarbeitet. Somit kann der erste Schritt des Algorithmus in lediglich zwei Stufen implementiert werden (Stufe i und Stufe i + 1 in 5). Die erste Stufe führt die UND-Operation und die Verschiebung, UND-Operation durch (es wird angenommen, dass die Verschiebung und die bitweise UND-Verknüpfung in einer einzigen Operation durchgeführt werden können). Die beiden Operationen speichern ihre Ergebnisse erneut in den BNFs. Daher kann die nächste Stufe (Stufe i + 1) die Additionsoperation ausführen. Für jede Addition wird das Ergebnis zweimal in dem jeweiligen BNF-Feld gespeichert, so dass eine nächste Stufe (Stufe i + 2) die verbleibenden Schritte des Algorithmus unter Verwendung derselben Technik durchführen kann.
  • Sobald die Populationszählung nach einer Anzahl von Stufen, die von K abhängt, abgeschlossen ist, wird jedes BNF-Feld die Anzahl der Bits enthalten, deren Wert im ursprünglichen XXNORj Vektor 1 war. Eine letzte Stufe kann leicht die Vorzeichenfunktion implementieren, indem ein MAT-Eintrag konfiguriert wird, der Q-Operationen ausführt. Jede Operation ist eine einfache bitweise UND-Verknüpfung zwischen den oberen K-Bits des BNF-Feldes und dem Wert K/2. Tatsächlich kann die Vorzeichenfunktion implementiert werden, was sicherstellt, dass die Anzahl von Einsen (,1') in dem Vektor größer ist als die Anzahl von Nullen (,0'). Da die obersten K Bits eines BNF-Felds die Anzahl von Einsen (,1') enthalten, gab es mehr Einsen (,1') als Nullen (,0'), wenn eine solche Anzahl größer ist als die Hälfte der Gesamtzahl von Bits. Nach der letzten Stufe enthalten die obersten K Bits jeder BNF jeweils einen Wert, der entweder 1 oder 0 ist. Solche Werte bilden den Vektor Y.
  • Stufen können mehrere Male in dem Switch wiederholt werden, um mehr neuronale Netzwerkschichten zu implementieren, oder damit ein Paket in der Pipeline zu demselben Zweck rezirkuliert werden kann. In solchen Fällen kann der Match-Teil einer MAT dazu verwendet werden, zwischen Paketen zu unterscheiden, die zu verschiedenen Schichten gehörende Daten tragen. Dies würde erfordern, einige Bits des Headers zu reservieren, um Informationen bzgl. der aktuellen Schicht festzuhalten. Ein ähnlicher Ansatz könnte auch verwendet werden, um verschiedene BNN-Modelle gleichzeitig auszuführen.
  • Angesichts der allgemeinen Fähigkeit, BNN-Modelle zu implementieren, kann das System verwendet werden, um allgemeine Approximationen irgendeiner Funktion abzuleiten.
  • Die Erfindung ist zwar in den Zeichnungen und der vorhergehenden Beschreibung detailliert veranschaulicht und beschrieben, dennoch sind diese Veranschaulichung und Beschreibung als veranschaulichend bzw. beispielhaft und nicht als einschränkend anzusehen. Es versteht sich, dass innerhalb des Umfangs der nachfolgenden Ansprüche seitens des Fachmanns Änderungen und Abwandlungen vorgenommen werden können. Insbesondere umfasst die vorliegende Erfindung weitere Ausgestaltungen mit jeder beliebigen Kombination von Merkmalen der verschiedenen zuvor und im Folgenden beschriebenen Ausgestaltungen.
  • Die in den Ansprüchen verwendeten Begriffe sind so auszulegen, dass ihnen in Übereinstimmung mit der vorhergehenden Beschreibung die weiteste angemessene Interpretation zukommt. Zum Beispiel ist die Verwendung des unbestimmten oder bestimmten Artikels bei der Einführung eines Elements nicht so auszulegen, dass eine Vielzahl von Elementen ausgeschlossen wird. Ebenso ist die Angabe von „oder“ als einschließend auszulegen, und zwar so, dass die Angabe „A oder B“ „A und B“ nicht ausschließt, außer wenn es aus dem Kontext oder der vorhergehenden Beschreibung klar hervorgeht, dass nur eines von A und B gemeint ist. Ferner ist die Angabe „wenigstens eines von A, B und C“ als eines oder mehrere aus einer aus A, B und C bestehenden Gruppe von Elementen auszulegen und ist nicht dahingehend zu interpretieren, dass wenigstens eines des jeweils aufgeführten Elements A, B und C erforderlich ist, unabhängig davon, ob A, B und C als Kategorien oder anderweitig betroffen sind. Darüber hinaus ist die Angabe „A, B und/oder C“ bzw. „wenigstens eines von A, B oder C“ so auszulegen, dass sie jegliche singuläre Einheit aus den aufgeführten Elementen, z.B. A, eine Untermenge der aufgeführten Elemente, z.B. A und B, oder die gesamte Liste der Elemente A, B und C einschließt.

Claims (18)

  1. Verfahren zum Ausführen eines binärisierten neuronalen Netzes (BNN) unter Verwendung eines Switching-Chips, wobei das Verfahren umfasst: Beschreiben einer Anwendung eines künstlichen neuronalen Netzes in einer binärisierten Form, um das BNN bereitzustellen; Konfigurieren eines Parsers des Switching-Chips zum Codieren eines Eingabevektors des BNN in einen Paket-Header; Konfigurieren von mehreren Match-Action-Tabellen (MATs) des Switching-Chips, so dass sie auf dem in den Paket-Header codierten Eingabevektor eine oder mehrere der Operationen einschließlich XNOR, Bitzählung und Vorzeichenoperationen ausführen, so dass die mehreren MATs konfiguriert sind: in einer ersten Stufe eine bitweise XNOR-Operation zwischen dem in den Paket-Header codierten Eingabevektor und einer Gewichtungsmatrix des neuronalen Netzes zu implementieren, um eine Vielzahl von Vektoren erster Stufe zu erzeugen, in einer oder mehreren zweiten Stufen einen Algorithmus zum Zählen einer Anzahl von Bits zu implementieren, die in der Vielzahl von Vektoren der ersten Stufe auf 1 gesetzt wurden, um eine Vielzahl von Vektoren zweiter Stufe zu erzeugen, und in einer letzten Stufe eine Vorzeichenfunktionsoperation auf der Vielzahl von Vektoren der zweiten Stufe zu implementieren.
  2. Verfahren nach Anspruch 1, weiterhin umfassend: Codieren des Eingabevektors in einen Header eines Netzwerkpakets; Senden des Pakets an den Switching-Chip als ein ankommendes Paket; Empfangen des Pakets von dem Switching-Chip als ein ausgehendes Paket, nachdem das Paket den Switching-Chip durchlaufen hat; und Lesen eines Ergebnisvektors aus dem Paket-Header.
  3. Verfahren nach Anspruch 1 oder 2, wobei die Vorzeichenfunktionsoperation unter Verwendung einer bitweisen UND-Verknüpfung zwischen der Vielzahl von Vektoren der zweiten Stufe und einer Variablen, deren Wert von der Kardinalität des Eingabevektors abhängt, implementiert wird.
  4. Verfahren nach einem der Ansprüche 1 bis 3, wobei das Konfigurieren des Parsers des Switching-Chips zum Codieren eines Eingabevektors des BNN in einen Paket-Header von einem SDN (Software-defined Networking)-Controller ausgeführt wird.
  5. Verfahren nach Anspruch 4, wobei der SDN-Controller den Parser des Switching-Chips unter Verwendung eines Programmierens von protokollunabhängigen Paketprozessoren (P4) konfiguriert.
  6. Verfahren nach einem der Ansprüche 1 bis 5, wobei der Algorithmus zum Zählen einer in der Vielzahl von Vektoren der ersten Stufe auf 1 gesetzten Anzahl von Bits eine Hamming-Gewichtungsberechnung ist.
  7. Verfahren nach Anspruch 6, wobei die Hamming-Gewichtungsberechnung nur unter Verwendung von UND-, Verschiebungs- und Additionsoperationen durchgeführt wird.
  8. Verfahren nach einem der Ansprüche 1 bis 7, wobei die Populationszähloperation von einem Algorithmus ausgeführt wird, der die Addition von Teilzählungen in einer Baumstruktur durchführt.
  9. Verfahren nach einem der Ansprüche 1 bis 8, wobei der Switching-Chip den Header des ankommenden Pakets modifiziert, um das ausgehende Paket zu erzeugen.
  10. Verfahren nach einem der Ansprüche 1 bis 9, wobei das Codieren des Eingabevektors in einen Header eines Netzwerkpakets das Q-malige Wiederholen des Eingabevektors in dem Header des Netzwerkpakets umfasst, wobei Q eine Anzahl von Neuronen in dem BNN ist.
  11. System zum Ausführen eines binärisierten neuronalen Netzes (BNN) unter Verwendung eines Switching-Chips, wobei das BNN als binärisierte Form einer Anwendung eines künstlichen neuronalen Netzes bereitgestellt wird, wobei das System umfasst: einen Parser des Switching-Chips, der zum Codieren eines Eingabevektors des BNN in einen Paket-Header konfiguriert ist; eine Vielzahl von Stufen des Switching-Chips mit Match-Action-Tabellen (MATs), die konfiguriert sind, auf dem in den Paket-Header codierten Eingabevektor eine oder mehrere der Operationen einschließlich XNOR, Bitzählung und Vorzeichenoperationen auszuführen, so dass die Vielzahl von MATs konfiguriert ist: in einer ersten Stufe eine bitweise XNOR-Operation zwischen dem in den Paket-Header codierten Eingabevektor und einer Gewichtungsmatrix des neuronalen Netzes zu implementieren, um eine Vielzahl von Vektoren erster Stufe zu erzeugen, in einer oder mehreren zweiten Stufen einen Algorithmus zum Zählen einer Anzahl von Bits zu implementieren, die in der Vielzahl von Vektoren der ersten Stufe auf 1 gesetzt wurden, um eine Vielzahl von Vektoren zweiter Stufe zu erzeugen, und in einer letzten Stufe eine Vorzeichenfunktionsoperation auf der Vielzahl von Vektoren der zweiten Stufe zu implementieren, und einen Deparser, der konfiguriert ist, einen neuen Paket-Header unter Verwendung des Ergebnisses der Vorzeichenoperation zu konstruieren.
  12. System nach Anspruch 11, wobei die Vorzeichenfunktionsoperation unter Verwendung einer bitweisen UND-Verknüpfung zwischen der Vielzahl von Vektoren der zweiten Stufe und einer Variablen, deren Wert von der Kardinalität des Eingabevektors abhängt, implementiert ist.
  13. System nach Anspruch 11 oder 12, wobei der Parser des Switching-Chips durch einen SDN (Software-defined Networking)-Controller konfiguriert ist, einen Eingabevektor des BNN in einen Paket-Header zu codieren.
  14. System nach Anspruch 13, wobei der Parser des Switching-Chips von dem SDN-Controller unter Verwendung eines Programmierens von protokollunabhängigen Paketprozessoren (P4) konfiguriert ist.
  15. System nach einem der Ansprüche 11 bis 14, wobei der Algorithmus zum Zählen einer in der Vielzahl von Vektoren der ersten Stufe auf 1 gesetzten Anzahl von Bits eine Hamming-Gewichtungsberechnung ist.
  16. System nach Anspruch 15, wobei die Hamming-Gewichtungsberechnung nur unter Verwendung von UND-, Verschiebungs- und Additionsoperationen durchgeführt wird.
  17. System nach einem der Ansprüche 11 bis 16, wobei der Algorithmus, der die Populationszähloperation ausführt, eine Addition von Teilzählungen in einer Baumstruktur durchführt.
  18. System nach einem der Ansprüche 11 bis 17, wobei der Deparser konfiguriert ist, einen Header eines ausgehenden Pakets zu erzeugen.
DE102018212297.0A 2017-10-04 2018-07-24 Verwendung von programmierbaren Switching-Chips als künstliche neuronale Netzwerk Module Active DE102018212297B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/724,281 US11301751B2 (en) 2017-10-04 2017-10-04 Using programmable switching chips as artificial neural networks engines
US15/724,281 2017-10-04

Publications (2)

Publication Number Publication Date
DE102018212297A1 true DE102018212297A1 (de) 2019-04-04
DE102018212297B4 DE102018212297B4 (de) 2023-09-14

Family

ID=65728091

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018212297.0A Active DE102018212297B4 (de) 2017-10-04 2018-07-24 Verwendung von programmierbaren Switching-Chips als künstliche neuronale Netzwerk Module

Country Status (2)

Country Link
US (1) US11301751B2 (de)
DE (1) DE102018212297B4 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11068775B2 (en) * 2017-03-29 2021-07-20 British Cayman Islands Intelligo Technology Inc. Processing apparatus and method for artificial neuron
US20210150313A1 (en) * 2019-11-15 2021-05-20 Samsung Electronics Co., Ltd. Electronic device and method for inference binary and ternary neural networks
US20210092069A1 (en) * 2020-12-10 2021-03-25 Intel Corporation Accelerating multi-node performance of machine learning workloads
CN113687995B (zh) * 2021-10-27 2022-01-04 成都嘉纳海威科技有限责任公司 一种基于神经网络的芯片筛测方法

Also Published As

Publication number Publication date
US20190102672A1 (en) 2019-04-04
US11301751B2 (en) 2022-04-12
DE102018212297B4 (de) 2023-09-14

Similar Documents

Publication Publication Date Title
DE102018212297B4 (de) Verwendung von programmierbaren Switching-Chips als künstliche neuronale Netzwerk Module
DE60318722T2 (de) Eine programmierbare regelverarbeitungsvorrichtung für hochgeschwindigkeits-kontextsuchen und -erkennung von mustern in daten
DE60026229T2 (de) Verfahren und Vorrichtung für Klassifizierung von Datenpaketen
DE112016005536T5 (de) Bestimmen von reihenfolgen einer ausführung eines neuronalen netzes
DE60300333T2 (de) Verfahren und Vorrichtung für ein flexibles Rahmenverarbeitungs und Klassifikationssystem
DE60305035T2 (de) Anpassen des längsten präfix unter verwendung von baumartigen "bitmap" datenstrukturen
DE112017000855B4 (de) Energiesparender zeitlich gemultiplexter neurosynaptischer Kern zum Implementieren neuronaler Netze
DE112013006309T5 (de) Funktionseinheit mit Baumstruktur zur Unterstützung eines Vektorsortieralgorithmus und anderer Algorithmen
DE112011103561T5 (de) Netzwerkprozessor und Verfahren zum Beschleunigen der Datenpaket-Syntaxanalyse
DE10058443A1 (de) Verfahren zum Klassifizieren von Datenpaketen
DE2234867A1 (de) Anordnung in datenverarbeitungsanlagen zum steuern der verarbeitung zweier voneinander unabhaengiger programme
EP3684015B1 (de) Vorrichtung und verfahren zur klassifizierung von daten insbesondere für ein controller area netzwerk oder ein automotive ethernet netzwerk
DE102019126719A1 (de) Energieeffiziente Speichersysteme und Verfahren
DE2548720C2 (de) Mikroprogramm-Steuerwerk
DE19821004C2 (de) Sequenzgenerator
DE112019005382T5 (de) Auslegung und durchführung einer zeichenmustererkennung in einer schaltung auf datenebene
DE102016102590A1 (de) Datenverarbeitungseinrichtungen und verfahren zum rekonstruieren eines puf-werts
EP0257362A1 (de) Addierer
DE2165730A1 (de) Rechensystem
DE60102230T2 (de) Mehrfacheintragsvergleich in einem inhaltsadressierbaren speicher
DE2121490A1 (de) Orthogonaler Datenspeicher
DE202022100124U1 (de) Ein paralleler Webverzeichniskonstruktor (PWDC) zur automatischen Erstellung von Webverzeichnissen
DE102021203777A1 (de) Flexibles lenken
DE102023201557A1 (de) Effiziente speichernutzung für kartesische produkte von regeln
DE2159884A1 (de) Verfahren zur maschinellen Erkennung von Zeichen

Legal Events

Date Code Title Description
R083 Amendment of/additions to inventor(s)
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R081 Change of applicant/patentee

Owner name: NEC CORPORATION, JP

Free format text: FORMER OWNER: NEC LABORATORIES EUROPE GMBH, 69115 HEIDELBERG, DE