-
Die vorliegende Erfindung betrifft die Berechnung der Faltung von Eingabedaten mit einem Faltungskern mittels eines Hardwarebeschleunigers.
-
Stand der Technik
-
Faltende neuronale Netzwerke (englisch „convolutional neural network“, CNN) haben sich vor allem für die Verarbeitung von Bilddaten und Audiodaten durchgesetzt. Auswertungsverfahren für derartige Daten, die CNNs verwenden, haben im Vergleich zu Verfahren, die nicht auf künstlicher Intelligenz basieren, ein deutlich höheres Leistungspotential. Allerdings ist hierfür auch ein deutlich höherer Rechenaufwand erforderlich. Selbst kleinere CNNs können aus mehreren Millionen Parametern bestehen und mehrere Milliarden Rechenoperationen benötigen, um einen Satz Eingangsgrößen zu einem Satz Ausgangsgrößen verarbeiten.
-
Einen großen Anteil dieses Aufwands nehmen Faltungen von Daten mit Faltungskernen ein. Im Rahmen dieser Faltungen werden Summen von Daten berechnet, die mit Gewichten aus den Faltungskernen gewichtet sind. Es werden also sehr viele Produkte aus Daten und Gewichten berechnet, und diese Produkte werden summiert. Im weitesten Sinne werden also innere Produkte von Daten und Faltungskernen berechnet.
-
Für diese Grundaufgabe werden zunehmend dedizierte Hardwarebeschleuniger verwendet, wie beispielsweise Inneres-Produkt-Recheneinheiten. Diese Einheiten sind dafür ausgelegt, ein komplettes inneres Produkt zweier Vektoren einer festen Länge in einem Taktzyklus zu berechnen.
-
Offenbarung der Erfindung
-
Im Rahmen der Erfindung wurde ein Verfahren zur Berechnung einer Faltung eines Eingabetensors von Eingabedaten mit einem tensoriellen Faltungskern entwickelt.
-
Bei dieser Faltung wird der Faltungskern in einem vorgegebenen Raster von Positionen innerhalb des Eingabetensors geführt. Der Abstand zwischen benachbarten Positionen dieses Rasters wird auch als „stride“ bezeichnet. In jeder der Positionen wird der Faltungskern angewendet, indem aus den Eingabedaten in dem durch den Faltungskern an seiner aktuellen Position abgedeckten Bereich des Eingabetensors eine mit den Werten des Faltungskerns gewichtete Summe gebildet wird. In der Faltung wird diese gewichtete Summe der aktuellen Position des Faltungskerns zugeordnet.
-
Wenn beispielsweise der Faltungskern dazu dient, ein bestimmtes gesuchtes Merkmal in den Eingabedaten zu erkennen, dann ist die gewichtete Summe für diejenigen Positionen des Faltungskerns am größten, an denen die größte Übereinstimmung zwischen dem in diesem Faltungskern verkörperten gesuchten Merkmal und den Eingabedaten besteht. Daher wird das Ergebnis der Faltung mit einem Faltungskern auch als Merkmalskarte („feature map“) in Bezug auf diesen Faltungskern bezeichnet.
-
Die gewichtete Summe wird mit mindestens einem Hardwarebeschleuniger berechnet. Dieser Hardwarebeschleuniger weist einen Eingangsspeicher und eine feste Anzahl von Multiplizierern auf, die ihre Operanden, hier also Eingabedaten und Werte des Faltungskerns, von vorgegebenen Speicherstellen des Eingangsspeichers abrufen. So enthält beispielsweise eine Inneres-Produkt-Recheneinheit, die das innere Produkt zweier Vektoren mit einer festen Länge berechnet, typischerweise so viele Multiplizierer wie die Vektoren jeweils Elemente aufweisen. Damit können alle für die Berechnung des inneren Produkts erforderlichen Multiplikationen gleichzeitig ausgeführt werden. Die hierbei entstehenden Produkte müssen dann nur noch mit Addierern kumuliert werden. Insgesamt kann so das innere Produkt in weniger Taktzyklen berechnet werden.
-
Im Rahmen der Berechnung von Faltungen werden solche Hardwarebeschleuniger üblicherweise so betrieben, dass in jedem Arbeitsgang maximal so viele Summanden verarbeitet werden, wie es einer Tiefe des Eingabetensors entspricht, also der in der Anzahl Elemente gemessenen Ausdehnung des Eingabetensors in einer Dimension. Wenn beispielsweise die Eingabedaten RGB-Bilddaten umfassen, hat der Eingabetensor eine Tiefe von 3, da jedem Bildpixel drei Intensitätswerte für Rot, Grün und Blau zugeordnet werden. Bei der Faltung mit dem Faltungskern werden dann immer diese drei Intensitätswerte, die einem bestimmten Pixel zugeordnet sind, mit Werten des Faltungskerns gewichtet aufsummiert. Diese Berechnung wird für alle aktuell vom Faltungskern abgedeckten Pixel wiederholt, und anschließend werden alle erhaltenen inneren Produkte addiert.
-
Diese Vorgehensweise wird im Rahmen des Verfahrens dahingehend abgeändert, dass in mindestens einem Arbeitsgang des Hardwarebeschleunigers mehr Summanden verarbeitet werden als es der Tiefe des Eingabetensors entspricht.
-
Im genannten Beispiel des RGB-Bildes können also etwa nicht nur die Intensitätswerte und Werte des Faltungskerns für ein einziges Pixel, sondern auch bereits die entsprechenden Daten für weitere Pixel in den Eingangsspeicher des Hardwarebeschleunigers geladen werden, so dass der Hardwarebeschleuniger idealerweise mit einem komplett gefüllten Eingangsspeicher betrieben wird. Da die bisher berechneten pixelweisen Zwischenergebnisse ohnehin alle addiert werden, um das Endergebnis der Faltung zu erhalten, ist es für das Ergebnis unerheblich, wenn die Berechnung für mehrere oder idealerweise alle Pixel in einem Arbeitsgang des Hardwarebeschleunigers zusammengefasst wird. Jedoch wird dieses Ergebnis erheblich schneller geliefert, weil insgesamt wesentlich weniger Arbeitsgänge des Hardwarebeschleunigers erforderlich sind.
-
Hierhinter steckt die Erkenntnis, dass jeder Arbeitsgang des Hardwarebeschleunigers unabhängig vom Inhalt des Eingangsspeichers immer gleich lange dauert, da alle benötigten Multiplikationen gleichzeitig ausgeführt werden.
-
Die Zeitersparnis ist besonders groß, wenn eine Faltung in einer Schicht eines CNN berechnet wird, die eine große laterale Ausdehnung bei zugleich geringer Tiefe aufweist. So kann etwa das besagte RGB-Bild eine Auflösung von Full-HD (1.920 × 1.080 Pixel) aufweisen bei einer Tiefe von lediglich 3. Wenn nun beispielsweise eine Inneres-Produkt-Recheneinheit für Vektoren mit einer Länge von 128 Elementen genutzt wird, werden nach der herkömmlichen Betriebsweise pro Arbeitsgang dieser Recheneinheit lediglich drei statt 128 Multiplikationen ausgeführt. Es liegen also fast 98 % der zur Verfügung stehenden Rechenkapazität brach. Gemäß dem hier vorgeschlagenen Verfahren wird der Hardwarebeschleuniger wesentlich besser ausgelastet.
-
Hierbei ist es auf Grund der üblicherweise festen Zuordnung zwischen den Operanden der Multiplizierer und den Speicherstellen im Eingangsspeicher des Hardwarebeschleunigers nicht damit getan, lediglich die Rechenoperationen umzuorganisieren.
-
Nur in dem Spezialfall, in dem die Positionen, an denen der Faltungskern angewendet wird, immer um die Ausdehnung des Faltungskerns auseinanderliegen, überlappen sich die an im Raster benachbarten Positionen des Faltungskerns jeweils verarbeiteten Bereiche des Eingabetensors nicht. Damit geht ein jeder Wert im Eingabetensor auch nur für eine Position des Filterkerns in die Berechnung der Faltung ein. In diesem Spezialfall können also die Eingabedaten nach einer für alle Positionen des Faltungskerns gleichen Vorschrift in den Eingangsspeicher des Hardwarebeschleunigers geladen werden, und diese bloße Umorganisation reicht aus, um das gleiche Ergebnis wie bisher wesentlich schneller zu erhalten.
-
Im allgemeinen Fall geht jedoch ein und derselbe Wert der Eingabedaten an verschiedenen Positionen des Faltungskerns mehrfach in die Berechnung der Faltung ein, wobei er jedes Mal mit einem anderen Wert des Faltungskerns gewichtet werden muss. Mit anderen Worten, der Wert der Eingabedaten muss in der Liste der Eingabedaten im Eingabespeicher des Hardwarebeschleunigers an derjenigen Position stehen, an der der dazu passende Wert des Faltungskerns in der Liste von Werten des Faltungskerns im Eingabespeicher steht. Das Verfahren stellt zwei Möglichkeiten bereit, dies sicherzustellen, so dass das bislang unter sehr geringer Auslastung des Hardwarebeschleunigers erhaltene Ergebnis der Faltung nun auch mit stark verbesserter Auslastung exakt reproduziert werden kann.
-
Die erste Möglichkeit besteht darin, die Zuordnung zwischen Operanden und Speicherstellen mindestens eines Eingangsspeichers, und/oder die Zuordnung zwischen Operanden und Speicherstellen mindestens eines Parameterspeichers, für Werte des Faltungskerns, während der Berechnung der Faltung zu variieren. Zu diesem Zweck kann insbesondere beispielsweise ein Multiplexer zwischen mindestens einen Multiplizierer und mindestens einen Eingangsspeicher geschaltet werden. Alternativ oder auch in Kombination hierzu kann beispielsweise ein Multiplexer zwischen mindestens einen Multiplizierer und mindestens einen Parameterspeicher für Werte des Faltungskerns geschaltet werden. Es kann auch beispielsweise ein und derselbe Multiplexer sowohl Zugriff auf den mindestens einen Eingangsspeicher als auch Zugriff auf den mindestens einen Parameterspeicher haben. Auf diese Weise kann ein bestimmter Operand für eine konkrete Multiplikation wahlweise von einer von mehreren möglichen Speicherstellen gelesen werden. Damit kann der Hardwarebeschleuniger zumindest eingeschränkt wahlfrei auf den Eingangsspeicher, und/oder auf den Parameterspeicher, zugreifen. Die Wahlfreiheit reicht aus, um Eingabedaten, die für eine erste Position des Faltungskerns an der richtigen Stelle im Eingangsspeicher des Hardwarebeschleunigers stehen, auch bei den für eine zweite während der Faltung auftretende Position des Faltungskerns wiederverwenden zu können. Zugleich ist der schaltungstechnische Aufwand noch deutlich geringer als beispielsweise für ein Bussystem oder ein „Network on Chip“. Insbesondere ein 4:1-Multiplexer hat sich in Untersuchungen der Erfinder als optimaler Kompromiss zwischen Wahlfreiheit und damit Effizienz einerseits und Hardwarekosten andererseits herausgestellt. Das Multiplexen kann auf die Eingabedaten, auf die Werte des Faltungskerns oder auch sowohl auf die Eingabedaten als auch auf die Werte des Faltungskerns angewendet werden.
-
Die zweite, alternativ oder auch in Kombination einsetzbare Möglichkeit besteht darin, Eingabedaten und/oder Werte des Faltungskerns mehrfach in dem Eingangsspeicher zu hinterlegen. Es kann dann beispielsweise für jede im Verlauf der Faltung beabsichtigte Verwendung eines bestimmten Werts aus den Eingabedaten eine eigene Kopie im Eingangsspeicher abgelegt werden. Beispielsweise kann im Eingangsspeicher für jeden beabsichtigten Arbeitsgang des Hardwarebeschleunigers die Sammlung der Werte aus den Eingabedaten, die in diesem Arbeitsgang zu verarbeiten ist, in der richtigen Reihenfolge abgelegt werden. Wenn die Faltung dann zu dem jeweiligen Arbeitsgang voranschreitet, können diese Werte en bloc von den Multiplizierern des Hardwarebeschleunigers abgerufen werden.
-
Beispielsweise kann ein Eingangsspeicher mit mindestens einem separaten Speicher oder Speicherbereich, auch Partition oder Bank genannt, für jeden Multiplizierer gewählt werden. In diesen Speicher oder Speicherbereich können dann diejenigen Eingabedaten bzw. Werte des Faltungskerns geladen werden, die der jeweilige Multiplizierer im Verlauf der Berechnung der Faltung benötigt. Beim Wechsel von einer Position des Faltungskerns zur nächsten muss dann immer nur der jeweils nächste Wert aus jeder Partition abgerufen und dem Multiplizierer zugeführt werden. Hierfür ist kein wahlfreier Zugriff des Hardwarebeschleunigers auf den Eingangsspeicher notwendig, sondern es reicht beispielsweise aus, die Partitionen jeweils als Schieberegister auszugestalten.
-
Hierbei ist es freigestellt, ob die Eingabedaten und/oder die Werte des Faltungskerns repliziert werden. Die Wirkung ist jeweils die gleiche, nämlich, dass an den Multiplizierern des Hardwarebeschleunigers jeweils diejenigen Werte der Eingabedaten und Werte des Faltungskerns zusammenkommen, deren Produkt tatsächlich in der gesuchten Faltung enthalten ist. Speziell das Replizieren der Werte des Faltungskerns, also der Gewichte, kann in solchen Schichten von neuronalen Netzwerken sinnvoll sein, die Eingabedaten mit geringer Tiefe verarbeiten und nur wenige Filter aufweisen. Gerade in diesen Schichten sind die zur Verfügung stehenden Hardware-Speichereinheiten für die Gewichte häufig nicht ausgelastet, so dass das Replizieren der Gewichte mit geringeren oder gar keinen Zusatzkosten für weitere Hardware-Speichereinheiten möglich ist.
-
Die vorangegangenen Ausführungen zeigen, dass die Möglichkeit, dem Hardwarebeschleuniger in jedem Arbeitsgang mehr Summanden zuzuführen und ihn somit besser auszulasten, nicht in naheliegender Weise kostenlos zu haben ist. Vielmehr ist zunächst Vorkasse zu leisten in Form zusätzlicher Hardware für den zumindest eingeschränkt wahlfreien Zugriff auf den Eingangsspeicher und/oder in Form eines erhöhten Speicherbedarfs im Eingangsspeicher.
-
In einer besonders vorteilhaften Ausgestaltung wird eine Inneres-Produkt-Recheneinheit für Vektoren mit einer Länge zwischen 16 und 128 Elementen als Hardwarebeschleuniger gewählt. Je größer die Anzahl der Elemente ist, desto mehr Daten können mit jedem Arbeitsgang verarbeitet werden und desto größer ist der Geschwindigkeitsgewinn bei einer optimierten Auslastung dieser Recheneinheit. Jedoch wächst auch der besagte Aufwand für das Bereitstellen der richtigen Eingabedaten an den richtigen Multiplizierern an. Der Bereich zwischen 16 und 128 Elementen hat sich in Untersuchungen der Erfinder als optimaler Kompromiss herausgestellt.
-
Eine Hauptanwendung für CNNs ist die Verarbeitung von Messdaten zu für die jeweilige Anwendung relevanten Ausgangsgrößen. So hat beispielsweise im Kontext des zumindest teilweise automatisierten Fahrens die bessere Auslastung der Hardwarebeschleuniger zur Folge, dass geringere Kosten für die Hardware eines entsprechenden Auswertungssystems anfallen und auch der Energieverbrauch entsprechend sinkt.
-
Daher bezieht sich die Erfindung allgemein auch auf ein Verfahren zur Auswertung von mit mindestens einem Sensor aufgenommenen Messdaten, und/oder von realistischen synthetischen Messdaten dieses mindestens einen Sensors, zu einer oder mehreren Ausgangsgrößen mit mindestens einem neuronalen Netzwerk. Realistische synthetische Messdaten können beispielsweise an Stelle von oder in Kombination mit tatsächlich physikalisch aufgenommenen Messdaten verwendet werden, um das Auswertungssystem zu trainieren. Typischerweise ist ein Datensatz mit realistischen synthetischen Messdaten eines Sensors schwer von tatsächlich mit diesem Sensor physikalisch aufgenommenen Messdaten zu unterscheiden.
-
Das neuronale Netzwerk weist mindestens eine Faltungsschicht auf. In dieser Faltungsschicht wird eine Faltung eines Tensors von Eingabedaten mit mindestens einem vorgegebenen Faltungskern ermittelt. Diese Faltung wird mit dem zuvor beschriebenen Verfahren berechnet. Wie zuvor erläutert, führt dies dazu, dass die gesuchten Ausgangsgrößen bei gegebenen Hardwareressourcen besonders schnell aus den Eingangsgrößen ausgewertet werden können. Bei vorgegebener Verarbeitungsgeschwindigkeit kann die Auswertung mit geringerem Einsatz an Hardwareressourcen, und damit auch mit geringerem Energieverbrauch, erfolgen.
-
In einer besonders vorteilhaften Ausgestaltung wird die Faltung in der ersten Faltungsschicht, die die Messdaten durchlaufen, mit dem zuvor beschriebenen Verfahren berechnet, während dieses Verfahren in mindestens eine später durchlaufenen Faltungsschicht nicht zum Einsatz kommt. Wie zuvor erläutert, ist der Geschwindigkeitsgewinn durch das zuvor beschriebene Verfahren am größten in solchen Schichten des CNN, die lateral stark ausgedehnt sind, jedoch nur eine geringe Tiefe aufweisen. Die entsprechenden schaltungstechnischen Mittel für den zumindest eingeschränkt wahlfreien Zugriff des Hardwarebeschleunigers auf den Eingangsspeicher, bzw. der entsprechende Speicherplatz im Eingangsspeicher des Hardwarebeschleunigers, sollten daher bevorzugt auf solche Schichten verwendet werden.
-
In einer besonders vorteilhaften Ausgestaltung umfassen die Messdaten Bilddaten mindestens einer optischen Kamera oder Thermalkamera, und/oder Audiodaten, und/oder Messdaten, die durch Abfrage eines räumlichen Gebiets mit Ultraschall, Radarstrahlung oder LIDAR erhalten wurden. Gerade diese Daten sind in dem Zustand, in dem sie in das CNN eingegeben werden, lateral sehr ausgedehnt und hoch aufgelöst, jedoch von vergleichsweise geringer Tiefe. Die laterale Auflösung wird durch die Faltung von Schicht zu Schicht sukzessive vermindert, während die Tiefe zunehmen kann.
-
Die gesuchten Ausgangsgrößen können insbesondere beispielsweise
- • mindestens eine Klasse einer vorgegebenen Klassifikation, und/oder
- • mindestens einen Regressionswert einer gesuchten Regressionsgröße, und/oder
- • eine Detektion mindestens eines Objekts, und/oder
- • eine semantische Segmentierung der Messdaten in Bezug auf Klassen und/oder Objekte
umfassen. Dies sind Ausgangsgrößen, zu deren Gewinnung aus hochdimensionalen Eingangsgrößen bevorzugt CNNs genutzt werden.
-
In einer weiteren besonders vorteilhaften Ausgestaltung wird aus der oder den Ausgangsgrößen ein Ansteuersignal gebildet. Ein Roboter, und/oder ein Fahrzeug, und/oder ein Klassifikationssystem, und/oder ein System für die Überwachung von Bereichen, und/oder ein System für die Qualitätskontrolle von in Serie gefertigten Produkten, und/oder ein System für die medizinische Bildgebung, mit diesem Ansteuersignal angesteuert. Der Einsatz des zuvor beschriebenen Verfahrens für die Berechnung der Faltung führt dazu, dass diese Systeme bei gegebenen Hardwareressourcen für die Auswertung schneller eine Reaktion auf sensorisch aufgenommene Messdaten ausführen. Ist hingegen die Reaktionszeit vorgegeben, können Hardwareressourcen eingespart werden.
-
Die Verfahren können insbesondere ganz oder teilweise computerimplementiert sein. Daher bezieht sich die Erfindung auch auf ein Computerprogramm mit maschinenlesbaren Anweisungen, die, wenn sie auf einem oder mehreren Computern ausgeführt werden, den oder die Computer dazu veranlassen, eines der beschriebenen Verfahren auszuführen. In diesem Sinne sind auch Steuergeräte für Fahrzeuge und Embedded-Systeme für technische Geräte, die ebenfalls in der Lage sind, maschinenlesbare Anweisungen auszuführen, als Computer anzusehen.
-
Ebenso bezieht sich die Erfindung auch auf einen maschinenlesbaren Datenträger und/oder auf ein Downloadprodukt mit dem Parametersatz, und/oder mit dem Computerprogramm. Ein Downloadprodukt ist ein über ein Datennetzwerk übertragbares, d.h. von einem Benutzer des Datennetzwerks downloadbares, digitales Produkt, das beispielsweise in einem Online-Shop zum sofortigen Download feilgeboten werden kann.
-
Weiterhin kann ein Computer mit dem Computerprogramm, mit dem maschinenlesbaren Datenträger bzw. mit dem Downloadprodukt ausgerüstet sein.
-
Weitere, die Erfindung verbessernde Maßnahmen werden nachstehend gemeinsam mit der Beschreibung der bevorzugten Ausführungsbeispiele der Erfindung anhand von Figuren näher dargestellt.
-
Ausführungsbeispiele
-
Es zeigt:
- 1 Ausführungsbeispiel des Verfahrens 100 zur Berechnung einer Faltung 4;
- 2 Veranschaulichung des grundsätzlichen Wirkmechanismus, der die Berechnung beschleunigt;
- 3 Änderung der Zuordnung von Operanden 52a, 52b zu Speicherstellen 51a-51h im Eingangsspeicher 51 eines Hardwarebeschleunigers 5 mit einem Multiplexer 53,
- 4 Mehrfaches Hinterlegen von Eingabedaten 1a und/oder Werten 2a eines Faltungskerns 2 im Eingangsspeicher 51 für die effizientere Abarbeitung;
- 5 Ausführungsbeispiel des Verfahrens 200 zur Auswertung von Messdaten 61, 62.
-
1 ist ein schematisches Ablaufdiagramm eines Ausführungsbeispiels des Verfahrens 100, mit dem die Faltung 4 eines Eingabetensors 1 von Eingabedaten 1a mit einem tensoriellen Faltungskern 2 berechnet wird. In Schritt 110 wird der Faltungskern in einem vorgegebenen Raster von Positionen 21, 22 innerhalb des Eingabetensors 1 geführt. In Schritt 120 wird der Faltungskern 2 in jeder dieser Positionen 21, 22 angewendet, indem aus den Eingabedaten 1a in dem durch den Faltungskern 2 an seiner aktuellen Position 21, 22 abgedeckten Bereich des Eingabetensors 1 eine mit den Werten 2a des Faltungskerns 2 gewichtete Summe 3 gebildet wird. In Schritt 130 wird diese gewichtete Summe 3 in der Faltung 4 der aktuellen Position 21, 22 des Faltungskerns 2 zugeordnet. Durch sukzessives Abarbeiten aller Positionen 21, 22 des Faltungskerns 2 wird das Gesamtergebnis der Faltung 4 erhalten.
-
Beim Anwenden 120 des Faltungskerns 2 kommt gemäß Block 121 ein Hardwarebeschleuniger 5 zum Einsatz, wobei hier gemäß Block 125 insbesondere beispielsweise eine Inneres-Produkt-Recheneinheit für Vektoren mit einer Länge zwischen 16 und 128 Elementen gewählt wird. Gemäß Block 122 werden in mindestens einem Arbeitsgang des Hardwarebeschleunigers 5 mehr Summanden verarbeitet als es einer Tiefe 11 des Eingabetensors 1 entspricht. Je mehr Arbeitsgänge des Hardwarebeschleunigers 5 in dieser Weise besser ausgelastet werden können, desto schneller wird das Gesamtergebnis der Faltung 4 erhalten.
-
Innerhalb des Kastens 122 ist aufgeschlüsselt, wie beim Einsatz des Hardwarebeschleunigers 5 sichergestellt wird, dass an allen Positionen 21, 22 des Faltungskerns 2 in den Multiplizierern 52 des Hardwarebeschleunigers 5 die richtigen Eingabedaten 1a mit den richtigen Werten 2a des Faltungskerns 2 als Operanden 52a, 52b von Multiplikationen zusammengeführt werden.
-
Gemäß Block 123 kann, wie zuvor erläutert, die Zuordnung zwischen Operanden 52a, 52b und Speicherstellen 51a-51h des Eingangsspeichers 51 während der Berechnung der Faltung 4 variiert werden, um den Multiplizierern 52 zumindest eingeschränkt wahlfreien Zugriff auf den Eingangsspeicher 51 zu geben. Hierzu kann gemäß Block 123a ein Multiplexer 53 genutzt werden, was in 3 näher erläutert ist.
-
Gemäß Block 124 können Eingabedaten 1a und/oder Werte 2a des Faltungskerns 2 mehrfach in dem Eingangsspeicher 51 hinterlegt werden. Damit können dem Hardwarebeschleuniger die Eingabedaten 1a und Werte 2a an jeder Position 21, 22 des Faltungskerns 2 in einer Anordnung zueinander zugeführt werden, die sicherstellt, dass der Hardwarebeschleuniger 5 tatsächlich in der gewichteten Summe 3 vorkommende Summanden berechnet. Dies ist in 4 näher erläutert.
-
Beispielsweise kann gemäß Block 124a ein Eingangsspeicher 51 mit mindestens einem separaten Speicher oder Speicherbereich für jeden Multiplizierer 52 gewählt werden. Es können dann gemäß Block 124b in diesen Speicher oder Speicherbereich diejenigen Eingabedaten 1a und Werte 2a des Faltungskerns 2 geladen werden, die der jeweilige Multiplizierer 52 im Verlauf der Berechnung der Faltung 4 benötigt.
-
2 erläutert das grundlegende Prinzip der verbesserten Auslastung eines Hardwarebeschleunigers 5. In dem in 2 gezeigten illustrativen Beispiel ist im Rahmen einer Faltung 4 die gewichtete Summe aus den schattierten Eingabedaten 1a im Eingabetensor 1 zu berechnen, wobei die schattierten Werte 2a des Faltungstensors 2 als Gewichte dienen. Der Eingabetensor 1 hat in diesem Beispiel eine Tiefe 11 von 3.
-
Beim herkömmlichen Einsatz des Hardwarebeschleunigers 5 würden in jedem Arbeitsgang des Hardwarebeschleunigers 5 immer nur so viele Eingabedaten 1a und Werte 2a des Faltungstensors 2 verarbeitet wie entlang der Tiefe 11 jeweils übereinander liegen. Um die schattierten Werte 1a, 2a insgesamt zu verarbeiten, wären also drei Arbeitsgänge des Hardwarebeschleunigers 5 erforderlich. Wenn nun aber alle zu verarbeitenden Werte 1a bzw. 2a im Eingangsspeicher 51 des Hardwarebeschleunigers 5 jeweils in einem Vektor zusammengefasst werden, kann die gewichtete Summe der schattierten Werte 1a, 2a mit nur einem Arbeitsgang des Hardwarebeschleunigers 5 berechnet werden.
-
Wie zuvor erläutert, müssen zu diesem Zweck an jeder Position 21, 22 des Faltungskerns 2 die richtigen Eingabedaten 1a aus dem Eingabetensor 1 mit den richtigen Werten 2a des Faltungskerns 2 multipliziert werden, damit insgesamt die gewichtete Summe 3 nur solche Summanden enthält, die auch wirklich in der Faltung 4 vorkommen. Die 3 und 4 veranschaulichen die zuvor erläuterten Wege, auf denen dies sichergestellt werden kann.
-
3 veranschaulicht die Verwendung eines Multiplexers 53, um einem Multiplizierer 52 in einem Hardwarebeschleuniger 5 zumindest eingeschränkt wahlfreien Zugriff auf den Eingangsspeicher 51 des Hardwarebeschleunigers 5 zu geben. Von dem Eingangsspeicher 51 sind in diesem illustrativen Beispiel acht Speicherstellen 51a-51h dargestellt. Mit dem 4:1-Multiplexer 53 kann ausgewählt werden, ob ein Wert 1a aus der Speicherstelle 51a, 51c, 51e oder 51g des Eingangsspeichers 51 abgerufen und dem Multiplizierer 52 als erster Operand 52a zugeführt wird. In 3 sind zwei beispielhafte mögliche Quellen eingezeichnet, aus denen der zweite Operand 52b stammen kann. Der zweite Operand 52b kann dem Multiplizierer 52 beispielsweise aus der Speicherstelle 51b des Eingangsspeicher 51 zugeführt werden. Der Multiplexer 53, oder ein weiterer Multiplexer, kann aber auch beispielsweise Zugriff auf verschiedene Speicherstellen 55a-55d des Parameterspeichers 55 haben, die jeweils verschiedene Werte 2a des Faltungskerns 2 speichern. Der Multiplexer 53 kann dann wahlweise einen dieser Werte 2a als zweiten Operanden 52b an den Multiplizierer 52 liefern. Diese Option ist in 3 gestrichelt eingezeichnet.
-
Der Multiplizierer 52 multipliziert die beiden Operanden 52a und 52b und liefert das Produkt 52c als Ergebnis. Auch ein beispielhaft eingezeichneter weiterer Multiplizierer 52' liefert ein solches Produkt 52c, das er aus anderen Operanden 52a und 52b multipliziert hat. Produkte 52c, die von verschiedenen Multiplizierern 52 geliefert wurden, werden mit Addierern 54 zu Zwischenergebnissen 54a addiert. Die Zwischenergebnisse 54a werden wiederum mit weiteren (in 4 nicht eingezeichneten) Addierern 54 aufkumuliert, bis schließlich die gewichtete Summe 3, oder zumindest ein Teil hiervon, berechnet ist. Die maximale Effizienzsteigerung ergibt sich, wenn für eine Position 21, 22 des Faltungskerns 2 die komplette gewichtete Summe 3 mit nur einem Arbeitsgang des Hardwarebeschleunigers 5 berechnet werden kann. Jedoch beginnt eine Effizienzsteigerung bereits, sobald im Verlauf der Berechnung einer gewichteten Summe 3 auch nur ein solcher Arbeitsgang eingespart werden kann. Über die Anzahl der Multiplikatoren 52, 52' im Hardwarebeschleuniger 5 kann ein beliebiger Kompromiss zwischen Hardwarekosten und Effizienzsteigerung eingestellt werden.
-
4 veranschaulicht das Replizieren von Eingabedaten 1a im Eingangsspeicher 51 des Hardwarebeschleunigers 5 mit dem Ziel, für jede Position 21, 22 des Faltungskerns 2 die richtigen Eingabedaten 1a als Operanden 2a für die Multiplizierer 52 abrufen zu können. Der Eingabetensor 1 umfasst in diesem illustrativen Beispiel drei Ebenen, hat also eine Tiefe 11 von 3. Einige unterschiedliche Positionen von Eingabedaten 1a in diesen Ebenen sind durch unterschiedliche Schraffuren gekennzeichnet.
-
In dem Eingangsspeicher 51 sind für die Positionen 21 und 22 jeweils einige Werte 1a aus dem Eingangstensor 1 in der Reihenfolge untereinander geschrieben, in der sie für Multiplikationen mit Werten 2a des Faltungstensors 2 benötigt werden. Hierbei ist zur Veranschaulichung ein Wert 1a herausgegriffen und mit dem Bezugszeichen 1a bezeichnet. An der ersten Position 21 des Faltungskerns 2 steht dieser Wert 1a im Eingangsspeicher 51 an vierter Stelle von oben, da zunächst ausgehend von der linken oberen Ecke der Ebenen des Eingangstensors 1 eine „Säule“ in Richtung der Tiefe 11 des Eingangstensors 11 abgearbeitet wird und der Wert 1a den Beginn der zweiten derartigen „Säule“ bildet. Wenn nun aber der Faltungskern 2 zur Position 22 voranschreitet, muss der Wert 1a mit dem ersten Wert 2a des Faltungskerns 2 multipliziert werden. Der Wert 1a wird also für diese Position 22 an erster Stelle im Eingangsspeicher 51 benötigt. Zu diesem Zweck werden die Eingangsdaten 1a im Eingangsspeicher 51 repliziert wie in 4 gezeichnet.
-
5 ist ein schematisches Ablaufdiagramm eines Ausführungsbeispiels des Verfahrens 200 zum Auswerten von Messdaten. Hierbei kann es sich um eine beliebige Mischung aus Messdaten 61, die mit mindestens einem Sensor 6 physikalisch erfasst wurden, und realistischen synthetischen Messdaten 62 dieses mindestens einen Sensors 6 handeln.
-
In Schritt 210 werden die Messdaten 61, 62 mit einem neuronalen Netzwerk 8 zu Ausgangsgrößen 7 verarbeitet. Das neuronale Netzwerk 8 umfasst eine Mehrzahl von Faltungsschichten 81-83, die von den Messdaten 61, 62 nacheinander durchlaufen werden. Das heißt, die Messdaten 61, 62 werden von der Schicht 81 zu einem Zwischenergebnis („feature map“) verarbeitet, das dann von der Schicht 82 zu einem weiteren Zwischenergebnis und von der Schicht 83 zu den letztendlichen Ausgangsgrößen 7 verarbeitet wird.
-
In jeder Faltungsschicht 81-83 wird jeweils eine Faltung 4 eines Tensors 1 von Eingabedaten 1a mit mindestens einem vorgegebenen Faltungskern 2 ermittelt. Dabei wird gemäß Block 210a mindestens eine solche Faltung 4 mit dem zuvor beschriebenen Verfahren 100 berechnet.
-
Insbesondere kann gemäß Block 210b die Faltung 4 in der ersten Faltungsschicht 81, die die Messdaten 61, 62 durchlaufen, mit dem Verfahren 100 berechnet werden, während dieses Verfahren in mindestens einer später durchlaufenen Faltungsschicht 82, 83 nicht zum Einsatz kommt. Wie zuvor erläutert, kann auf diese Weise der für das Zusammenfassen vieler Berechnungen in einem Arbeitsgang des Hardwarebeschleunigers 5 erforderliche Zusatzaufwand bevorzugt auf diejenigen Faltungsschichten konzentriert werden, in denen auf Grund ihrer vergleichsweise geringen Tiefe der Effizienzgewinn besonders groß ist.
-
Aus den Ausgangsgrößen 7 wird in Schritt 220 ein Ansteuersignal 220a gebildet. In Schritt 230 wird mit diesem Ansteuersignal ein Roboter 91, und/oder ein Fahrzeug 92, und/oder ein Klassifikationssystem 93, und/oder ein System 94 für die Überwachung von Bereichen, und/oder ein System 95 für die Qualitätskontrolle von in Serie gefertigten Produkten, und/oder ein System 96 für die medizinische Bildgebung, angesteuert.