DE102020201182A1 - Hardware-accelerated calculation of convolutions - Google Patents
Hardware-accelerated calculation of convolutions Download PDFInfo
- Publication number
- DE102020201182A1 DE102020201182A1 DE102020201182.6A DE102020201182A DE102020201182A1 DE 102020201182 A1 DE102020201182 A1 DE 102020201182A1 DE 102020201182 A DE102020201182 A DE 102020201182A DE 102020201182 A1 DE102020201182 A1 DE 102020201182A1
- Authority
- DE
- Germany
- Prior art keywords
- convolution
- input
- memory
- convolution kernel
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Image Analysis (AREA)
Abstract
Verfahren (100) zur Berechnung einer Faltung (4) eines Eingabetensors (1) von Eingabedaten (1a) mit einem tensoriellen Faltungskern (2), wobei• der Faltungskern (2) in einem vorgegebenen Raster von Positionen (21, 22) innerhalb des Eingabetensors (1) geführt wird (110),• in jeder dieser Positionen (21, 22) der Faltungskern (2) angewendet wird, 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 (120) und• diese gewichtete Summe (3) in der Faltung (4) der aktuellen Position (21, 22) des Faltungskerns (2) zugeordnet wird (130), wobei• die gewichtete Summe (3) mit mindestens einem Hardwarebeschleuniger (5) berechnet wird (121), welcher einen Eingangsspeicher (51) und eine feste Anzahl von Multiplizierern (52) aufweist, die ihre Operanden (52a, 52b) jeweils von vorgegebenen Speicherstellen (51a-51h) des Eingangsspeichers (51) abrufen und• in mindestens einem Arbeitsgang des Hardwarebeschleunigers (5) mehr Summanden verarbeitet werden als es einer Tiefe (11) des Eingabetensors (1) entspricht (122), wobei• die Zuordnung zwischen Operanden (52a, 52b) und Speicherstellen (51a-51h) des Eingangsspeichers (51) während der Berechnung der Faltung (4) variiert wird (123), und/oder Eingabedaten (1a) und/oder Werte (2a) des Faltungskerns (2) mehrfach in dem Eingangsspeicher (51) hinterlegt werden (124).Method (100) for calculating a convolution (4) of an input sensor (1) of input data (1a) with a tensile convolution kernel (2), wherein • the convolution kernel (2) in a predetermined grid of positions (21, 22) within the input sensor (1) is guided (110), • the convolution kernel (2) is applied in each of these positions (21, 22) by using the input data (1a) in the by the convolution kernel (2) at its current position (21, 22 ) covered area of the input sensor (1) a sum (3) weighted with the values (2a) of the convolution kernel (2) is formed (120) and • this weighted sum (3) in the convolution (4) of the current position (21, 22) of the convolution kernel (2) is assigned (130), where • the weighted sum (3) is calculated (121) with at least one hardware accelerator (5) which has an input memory (51) and a fixed number of multipliers (52) which their operands (52a, 52b) each from predetermined memory locations (51a-51h) of the input memory chers (51) and • more summands are processed in at least one operation of the hardware accelerator (5) than corresponds to a depth (11) of the input sensor (1) (122), where • the assignment between operands (52a, 52b) and memory locations (51a-51h) of the input memory (51) is varied (123) during the calculation of the convolution (4), and / or input data (1a) and / or values (2a) of the convolution kernel (2) are stored several times in the input memory (51) deposited (124).
Description
Die vorliegende Erfindung betrifft die Berechnung der Faltung von Eingabedaten mit einem Faltungskern mittels eines Hardwarebeschleunigers.The present invention relates to the computation of the convolution of input data with a convolution kernel by means of a hardware accelerator.
Stand der TechnikState of the art
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.Convolutional neural networks (CNN) have established themselves primarily for processing image data and audio data. Evaluation methods for such data that use CNNs have a significantly higher performance potential compared to methods that are not based on artificial intelligence. However, this also requires a significantly higher computational effort. Even smaller CNNs can consist of several million parameters and require billions of arithmetic operations to process a set of input quantities into a set of output quantities.
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.A large proportion of this effort is made up of convolutions of data with convolution kernels. In the context of these convolutions, sums of data are calculated which are weighted with weights from the convolution kernels. So a great many products are calculated from data and weights, and these products are totaled. In the broadest sense, inner products of data and convolution kernels are calculated.
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.Dedicated hardware accelerators, such as inner product computing units, are increasingly being used for this basic task. These units are designed to compute a complete inner product of two vectors of fixed length in one clock cycle.
Offenbarung der ErfindungDisclosure of the invention
Im Rahmen der Erfindung wurde ein Verfahren zur Berechnung einer Faltung eines Eingabetensors von Eingabedaten mit einem tensoriellen Faltungskern entwickelt.In the context of the invention, a method for calculating a convolution of an input sensor of input data with a tensorial convolution kernel was developed.
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.With this folding, the folding core is guided in a predetermined grid of positions within the input sensor. The distance between adjacent positions in this grid is also known as the “stride”. The convolution kernel is used in each of the positions by forming a sum weighted with the values of the convolution kernel from the input data in the area of the input sensor covered by the convolution kernel at its current position. In the convolution, this weighted sum is assigned to the current position of the convolution kernel.
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.If, for example, the convolution kernel is used to identify a certain searched feature in the input data, then the weighted sum is greatest for those positions of the convolution kernel at which there is the greatest correspondence between the searched feature embodied in this convolution kernel and the input data. The result of the convolution with a convolution kernel is therefore also referred to as a feature map in relation to this convolution kernel.
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. The weighted sum is calculated using at least one hardware accelerator. This hardware accelerator has an input memory and a fixed number of multipliers which call up their operands, that is to say here input data and values of the convolution kernel, from predetermined storage locations in the input memory. For example, an inner product arithmetic unit that calculates the inner product of two vectors with a fixed length typically contains as many multipliers as the vectors each have elements. This means that all the multiplications required to calculate the inner product can be carried out at the same time. The resulting products then only have to be cumulated with adders. Overall, the inner product can be calculated in fewer clock cycles.
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.In the context of the calculation of convolutions, such hardware accelerators are usually operated in such a way that a maximum of as many summands are processed in each operation as corresponds to a depth of the input sensor, i.e. the extension of the input sensor measured in the number of elements in one dimension. For example, if the input data comprises RGB image data, the input sensor has a depth of 3, since three intensity values for red, green and blue are assigned to each image pixel. During the convolution with the convolution kernel, these three intensity values, which are assigned to a specific pixel, are then always summed up, weighted with values of the convolution kernel. This calculation is repeated for all pixels currently covered by the convolution kernel, and then all inner products obtained are added.
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.This procedure is modified within the scope of the method so that more summands are processed in at least one work step of the hardware accelerator than corresponds to the depth of the input sensor.
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.In the example of the RGB image mentioned, not only the intensity values and values of the convolution kernel for a single pixel, but also the corresponding data for other pixels can be loaded into the input memory of the hardware accelerator, so that the hardware accelerator can ideally be loaded with a complete filled input memory is operated. Since the pixel-wise intermediate results calculated up to now are all added anyway in order to obtain the final result of the convolution, it is irrelevant for the result if the calculation for several or ideally all pixels is combined in one operation of the hardware accelerator. However, this result is delivered much faster because, overall, significantly fewer hardware accelerator operations are required.
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.This is based on the knowledge that every work step of the hardware accelerator always takes the same length of time, regardless of the content of the input memory, since all the necessary multiplications are carried out at the same time.
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.The time saving is particularly great if a fold is calculated in a layer of a CNN that has a large lateral extent and, at the same time, a shallow depth. For example, the aforementioned RGB image can have a resolution of Full HD (1,920 × 1,080 pixels) with a depth of just 3. If, for example, an inner product computing unit is used for vectors with a length of 128 elements, according to the conventional mode of operation per operation of this arithmetic unit only three instead of 128 multiplications carried out. So almost 98% of the available computing capacity is idle. According to the method proposed here, the hardware accelerator is utilized much better.
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.Due to the usually fixed assignment between the operands of the multipliers and the storage locations in the input memory of the hardware accelerator, it is not enough to simply reorganize the arithmetic operations.
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.Only in the special case in which the positions at which the convolution kernel is used are always apart by the extent of the convolution kernel do the areas of the input sensor processed at adjacent positions of the convolution kernel in the grid not overlap. Each value in the input tensor is therefore only included in the calculation of the convolution for one position of the filter core. In this special case, the input data can be loaded into the input memory of the hardware accelerator according to a rule that is the same for all positions of the convolution kernel, and this mere reorganization is sufficient to obtain the same result much faster than before.
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.In the general case, however, one and the same value of the input data at different positions of the convolution kernel is used several times in the calculation of the convolution, each time having to be weighted with a different value of the convolution kernel. In other words, the value of the input data must be in the list of input data in the input memory of the hardware accelerator at the position at which the matching value of the convolution kernel is in the list of values of the convolution kernel in the input memory. The method provides two options for ensuring this, so that the result of the convolution, which was previously obtained with very little utilization of the hardware accelerator, can now also be reproduced exactly with a greatly improved utilization.
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. The first possibility is to vary the assignment between operands and storage locations of at least one input memory and / or the assignment between operands and storage locations of at least one parameter memory for values of the convolution kernel during the calculation of the convolution. For this purpose, for example, a multiplexer can in particular be connected between at least one multiplier and at least one input memory. Alternatively or in combination with this, a multiplexer, for example, can be connected between at least one multiplier and at least one parameter memory for values of the convolution kernel. For example, one and the same multiplexer can have both access to the at least one input memory and access to the at least one parameter memory. In this way, a specific operand for a specific multiplication can optionally be read from one of several possible memory locations. This means that the hardware accelerator can access the input memory and / or the parameter memory at least to a limited extent. The freedom of choice is sufficient to be able to reuse input data that are in the correct place in the input memory of the hardware accelerator for a first position of the convolution kernel, also for the position of the convolution kernel that occurs during the convolution. At the same time, the circuitry effort is significantly lower than, for example, for a bus system or a “Network on Chip”. In particular, a 4: 1 multiplexer has turned out to be an optimal compromise between freedom of choice and thus efficiency on the one hand and hardware costs on the other. The multiplexing can be applied to the input data, to the values of the convolution kernel or also to both the input data and the values of the convolution kernel.
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.The second possibility, which can be used alternatively or in combination, is to store input data and / or values of the convolution kernel multiple times in the input memory. For each intended use of a certain value from the input data in the course of the convolution, for example, a separate copy in the Input memory. For example, the collection of the values from the input data to be processed in this work step can be stored in the correct order in the input memory for each intended work step of the hardware accelerator. When the convolution then progresses to the respective operation, these values can be retrieved en bloc from the multipliers of the hardware accelerator.
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.For example, an input memory with at least one separate memory or memory area, also called a partition or bank, can be selected for each multiplier. Those input data or values of the convolution kernel that the respective multiplier needs in the course of the calculation of the convolution can then be loaded into this memory or memory area. When changing from one position of the convolution kernel to the next, only the next value in each case has to be retrieved from each partition and fed to the multiplier. No random access of the hardware accelerator to the input memory is necessary for this, but it is sufficient, for example, to design the partitions as shift registers.
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.It is up to you whether the input data and / or the values of the convolution kernel are replicated. The effect is always the same, namely that those values of the input data and values of the convolution kernel come together at the multipliers of the hardware accelerator, the product of which is actually contained in the desired convolution. In particular, replicating the values of the convolution kernel, i.e. the weights, can be useful in layers of neural networks that process input data with little depth and only have a few filters. It is precisely in these layers that the hardware storage units available for the weights are often not fully utilized, so that the weights can be replicated with little or no additional costs for additional hardware storage units.
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.The preceding explanations show that the possibility of adding more summands to the hardware accelerator in each work step and thus better utilizing it is not obviously available free of charge. Rather, advance payment must first be made in the form of additional hardware for at least limited random access to the input memory and / or in the form of increased memory requirements in the input memory.
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.In a particularly advantageous embodiment, an inner product arithmetic unit for vectors with a length between 16 and 128 elements is selected as the hardware accelerator. The greater the number of elements, the more data can be processed with each operation and the greater the gain in speed with an optimized utilization of this processing unit. However, the said effort for providing the correct input data to the correct multipliers also increases. The inventors' investigations have shown that the range between 16 and 128 elements is an optimal compromise.
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.A main application for CNNs is the processing of measurement data into output variables relevant for the respective application. For example, in the context of at least partially automated driving, better utilization of the hardware accelerator means that lower costs are incurred for the hardware of a corresponding evaluation system and energy consumption is also reduced accordingly.
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.The invention therefore generally also relates to a method for evaluating measurement data recorded with at least one sensor, and / or realistic synthetic measurement data from this at least one sensor, for one or more output variables with at least one neural network. Realistic synthetic measurement data can be used, for example, instead of or in combination with actually physically recorded measurement data in order to train the evaluation system. Typically, a data set with realistic, synthetic measurement data from a sensor is difficult to distinguish from measurement data actually recorded physically with this sensor.
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.The neural network has at least one convolution layer. In this convolution layer, a convolution of a tensor of input data with at least one predefined convolution kernel is determined. This convolution is calculated using the method described above. As explained above, this means that the desired output variables can be evaluated particularly quickly from the input variables given the hardware resources. With a given processing speed, the evaluation can be carried out with less use of hardware resources and thus also with less energy consumption.
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 a particularly advantageous embodiment, the convolution in the first convolution layer through which the measurement data pass is calculated using the method described above, while this method is not used in at least one convolution layer passed through later. As explained above, the gain in speed through the method described above is greatest in those layers of the CNN which are laterally greatly expanded, but only have a shallow depth. The corresponding circuitry for the at least restricted random access of the hardware accelerator to the input memory, or the corresponding storage space in the input memory of the hardware accelerator, should therefore preferably be used on such layers.
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.In a particularly advantageous embodiment, the measurement data include image data of at least one optical camera or thermal camera, and / or audio data, and / or measurement data obtained by querying a spatial area with ultrasound, radar radiation or LIDAR. It is precisely these data in the state in which they are entered into the CNN, laterally very extensive and highly resolved, but of comparatively shallow depth. The lateral resolution is successively reduced by the folding from layer to layer, while the depth can increase.
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
- • at least one class of a given classification, and / or
- • at least one regression value of a regression variable you are looking for, and / or
- • a detection of at least one object, and / or
- • a semantic segmentation of the measurement data in relation to classes and / or objects
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.In a further particularly advantageous embodiment, a control signal is formed from the output variable or variables. A robot, and / or a vehicle, and / or a classification system, and / or a system for monitoring areas, and / or a system for quality control of mass-produced products, and / or a system for medical imaging, controlled with this control signal. The use of the previously described method for calculating the convolution means that these systems, given the hardware resources for the evaluation, react more quickly to measurement data recorded by sensors. If, on the other hand, the response time is specified, hardware resources can be saved.
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.In particular, the methods can be implemented in whole or in part by a computer. The invention therefore also relates to a computer program with machine-readable instructions which, when they are executed on one or more computers, cause the computer or computers to carry out one of the described methods. In this sense, control devices for vehicles and embedded systems for technical devices, which are also able to execute machine-readable instructions, are to be regarded as computers.
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.The invention also relates to a machine-readable data carrier and / or to a download product with the parameter set and / or with the computer program. A download product is a digital product that can be transmitted via a data network, i.e. that can be downloaded by a user of the data network and that can be offered for immediate download in an online shop, for example.
Weiterhin kann ein Computer mit dem Computerprogramm, mit dem maschinenlesbaren Datenträger bzw. mit dem Downloadprodukt ausgerüstet sein.Furthermore, a computer can be equipped with the computer program, with the machine-readable data carrier or with the download product.
Weitere, die Erfindung verbessernde Maßnahmen werden nachstehend gemeinsam mit der Beschreibung der bevorzugten Ausführungsbeispiele der Erfindung anhand von Figuren näher dargestellt.Further measures improving the invention are illustrated in more detail below together with the description of the preferred exemplary embodiments of the invention with reference to figures.
AusführungsbeispieleEmbodiments
Es zeigt:
-
1 Ausführungsbeispiel des Verfahrens 100 zur Berechnung einer Faltung4 ; -
2 Veranschaulichung des grundsätzlichen Wirkmechanismus, der die Berechnung beschleunigt; -
3 Änderung derZuordnung von Operanden 52a ,52b zu Speicherstellen 51a- 51h im Eingangsspeicher 51 einesHardwarebeschleunigers 5 mit einemMultiplexer 53 , -
4 MehrfachesHinterlegen von Eingabedaten 1a und/oder Werten 2a eines Faltungskerns2 im Eingangsspeicher 51 für die effizientere Abarbeitung; -
5 Ausführungsbeispiel des Verfahrens 200 zurAuswertung von Messdaten 61 ,62 .
-
1 Embodiment of themethod 100 to calculate a convolution4th ; -
2 Illustration of the basic mechanism of action that accelerates the calculation; -
3 Change of the assignment ofoperands 52a ,52b tostorage locations 51a-51h in theinput memory 51 ahardware accelerator 5 with amultiplexer 53 , -
4th Multiple storage ofinput data 1a and / orvalues 2a a convolution kernel2 in theinput memory 51 for more efficient processing; -
5 Embodiment of themethod 200 for the evaluation ofmeasurement data 61 ,62 .
Beim Anwenden
Innerhalb des Kastens
Gemäß Block
Gemäß Block
Beispielsweise kann gemäß Block
Beim herkömmlichen Einsatz des Hardwarebeschleunigers
Wie zuvor erläutert, müssen zu diesem Zweck an jeder Position
Der Multiplizierer
In dem Eingangsspeicher
In Schritt
In jeder Faltungsschicht
Insbesondere kann gemäß Block
Aus den Ausgangsgrößen
Claims (13)
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102020201182.6A DE102020201182A1 (en) | 2020-01-31 | 2020-01-31 | Hardware-accelerated calculation of convolutions |
PCT/EP2021/051143 WO2021151749A1 (en) | 2020-01-31 | 2021-01-20 | Hardware-accelerated calculation of convolutions |
JP2022546527A JP2023513064A (en) | 2020-01-31 | 2021-01-20 | Computing Convolutions with Hardware Acceleration |
EP21701465.3A EP4097646A1 (en) | 2020-01-31 | 2021-01-20 | Hardware-accelerated calculation of convolutions |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102020201182.6A DE102020201182A1 (en) | 2020-01-31 | 2020-01-31 | Hardware-accelerated calculation of convolutions |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102020201182A1 true DE102020201182A1 (en) | 2021-08-05 |
Family
ID=74215928
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102020201182.6A Pending DE102020201182A1 (en) | 2020-01-31 | 2020-01-31 | Hardware-accelerated calculation of convolutions |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP4097646A1 (en) |
JP (1) | JP2023513064A (en) |
DE (1) | DE102020201182A1 (en) |
WO (1) | WO2021151749A1 (en) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10546211B2 (en) * | 2016-07-01 | 2020-01-28 | Google Llc | Convolutional neural network on programmable two dimensional image processor |
EP3523751A4 (en) * | 2016-10-04 | 2020-05-06 | Magic Leap, Inc. | Efficient data layouts for convolutional neural networks |
US10175980B2 (en) * | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
CN110050267B (en) * | 2016-12-09 | 2023-05-26 | 北京地平线信息技术有限公司 | System and method for data management |
GB2568776B (en) * | 2017-08-11 | 2020-10-28 | Google Llc | Neural network accelerator with parameters resident on chip |
US11386644B2 (en) * | 2017-10-17 | 2022-07-12 | Xilinx, Inc. | Image preprocessing for generalized image processing |
US11644834B2 (en) * | 2017-11-10 | 2023-05-09 | Nvidia Corporation | Systems and methods for safe and reliable autonomous vehicles |
CN107844827B (en) * | 2017-11-28 | 2020-05-26 | 南京地平线机器人技术有限公司 | Method and apparatus for performing operations on convolutional layers in convolutional neural networks |
-
2020
- 2020-01-31 DE DE102020201182.6A patent/DE102020201182A1/en active Pending
-
2021
- 2021-01-20 WO PCT/EP2021/051143 patent/WO2021151749A1/en unknown
- 2021-01-20 JP JP2022546527A patent/JP2023513064A/en active Pending
- 2021-01-20 EP EP21701465.3A patent/EP4097646A1/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
JP2023513064A (en) | 2023-03-30 |
EP4097646A1 (en) | 2022-12-07 |
WO2021151749A1 (en) | 2021-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE202017105729U1 (en) | Core penetration in hardware | |
DE112016002298T5 (en) | PREVIEW OF WEIGHTS FOR USE IN A NEURONAL NETWORK PROCESSOR | |
DE102019115060A1 (en) | METHOD AND DEVICE FOR MEMORY ACCESS MANAGEMENT FOR DATA PROCESSING | |
DE112016002292T5 (en) | STACK PROCESSING IN A NEURONAL NETWORK PROCESSOR | |
DE102017113859A1 (en) | Block operations for an image processor having a two-dimensional execution path matrix and a two-dimensional shift register | |
DE202016107443U1 (en) | Compute convolutions using a neural network processor | |
DE112005000804T5 (en) | Multi-label image segmentation with GPU | |
DE112019002981T5 (en) | PARALLEL COMPUTATION ARCHITECTURE WITH RECONFIGURABLE CORE LEVEL AND VECTOR LEVEL PARALLELITY | |
DE102017113867A1 (en) | Core processes for block operations on an image processor with a two-dimensional runway matrix and a two-dimensional shift register | |
WO2019206775A1 (en) | Method and device for determining a network configuration of a neural network | |
DE19814422A1 (en) | Process for obtaining solution to a constraint problem | |
DE3632639C2 (en) | Device for high-speed processing of image data by folding | |
DE102018118330A1 (en) | Simulation device and simulation method for robot system | |
DE102019209644A1 (en) | Method for training a neural network | |
DE112019000676T5 (en) | CENTRAL SCHEDULER AND INSTRUCTION ASSIGNMENT FOR A NEURAL INFERENCE PROCESSOR | |
EP1154369A2 (en) | Method for cyclic, interactive image analysis , computer system and program for carrying out the method | |
DE102020201182A1 (en) | Hardware-accelerated calculation of convolutions | |
DE112019001959T5 (en) | SEGMENTING IRREGULAR SHAPES IN PICTURES USING DEEP AREA GROWTH | |
DE102019112186A1 (en) | Double load command | |
DE4417932A1 (en) | Parallel data processing system | |
WO2008034862A1 (en) | Mixing of differently processed x-ray image data | |
DE4238772C1 (en) | Procedure for evaluating a set of linguistic rules | |
EP3327672B1 (en) | Method and device for determining an association between a matrix element of a matrix and a comparison matrix element of a comparison matrix by writing in multiple correspondence tables | |
EP0195281A2 (en) | Circuit arrangement for picture processing | |
DE202021102832U1 (en) | Device for training neural networks with regard to hardware and energy requirements |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R079 | Amendment of ipc main class |
Free format text: PREVIOUS MAIN CLASS: G06F0017160000 Ipc: G06F0017150000 |
|
R163 | Identified publications notified |