DE102018101166A1 - AUTOMATED METHOD FOR CONVERTING TO A DATA FORMAT OF LESS ACCURACY - Google Patents

AUTOMATED METHOD FOR CONVERTING TO A DATA FORMAT OF LESS ACCURACY Download PDF

Info

Publication number
DE102018101166A1
DE102018101166A1 DE102018101166.0A DE102018101166A DE102018101166A1 DE 102018101166 A1 DE102018101166 A1 DE 102018101166A1 DE 102018101166 A DE102018101166 A DE 102018101166A DE 102018101166 A1 DE102018101166 A1 DE 102018101166A1
Authority
DE
Germany
Prior art keywords
data
histogram
candidate
classes
format
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102018101166.0A
Other languages
German (de)
Inventor
Szymon Migacz
Hao Wu
Dilip Sequeira
Ujval Kapasi
Maxim Milakov
Slawomir Kierat
Zacky Zhou
Yilin Zhang
Alex Fit-Florea
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.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/838,273 external-priority patent/US10997492B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102018101166A1 publication Critical patent/DE102018101166A1/en
Pending legal-status Critical Current

Links

Images

Classifications

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

Abstract

Die Aspekte der vorliegenden Erfindung richten sich auf computerimplementierte Techniken zum Durchführen einer Datenkomprimierung und -umwandlung zwischen Datenformaten verschiedener Genauigkeitsgrade und insbesondere zum Verbessern der Inferenz (Anwendung) von künstlichen neuronalen Netzen unter Verwendung eines Datenformats mit verringerter Genauigkeit (z. B. INT8). Die Ausführungsformen der vorliegenden Erfindung erzeugen Kandidatenumwandlungen einer Datenausgabe und nutzen dann ein relatives Qualitätsmaß zum Identifizieren der Kandidatenumwandlung mit der größten Genauigkeit (d. h. kleinsten Divergenz von den ursprünglichen Werten höherer Genauigkeit). Die Darstellung kann dann während der Interferenz zum Durchführen von Berechnungen an den sich ergebenden Ausgabedaten verwendet werden.Aspects of the present invention are directed to computer-implemented techniques for performing data compression and conversion between data formats of different degrees of accuracy, and more particularly for improving the inference (application) of artificial neural networks using a reduced accuracy data format (e.g., INT8). The embodiments of the present invention generate candidate conversions of a data output and then use a relative quality measure to identify the candidate conversion with the greatest accuracy (i.e., least divergence from the original higher-accuracy values). The representation may then be used during the interference to perform calculations on the resulting output data.

Description

GEGENSTAND DER ERFINDUNGSCOPE OF THE INVENTION

Die Ausführungsformen der vorliegenden Erfindung betreffen im Allgemeinen computerimplementierte Techniken zur Datenkomprimierung und Aufzeichnung von Informationen. Im Besonderen richten sich die Ausführungsformen der vorliegenden Erfindung auf ein System zum verbesserten Inferenzieren von tiefgehendem Lernen (Deep Learning) bei neuronalen und faltenden (convolutional) Netzen.The embodiments of the present invention generally relate to computer-implemented techniques for data compression and information recording. In particular, the embodiments of the present invention are directed to a system for improved inferencing of deep learning in neural and convolutional networks.

ALLGEMEINER STAND DER TECHNIKGENERAL PRIOR ART

Beim maschinellen Lernen handelt es sich um das Gebiet der Informatik, das sich auf die Verwendung von computerimplementierten Algorithmen zur Problemlösung durch Mustererkennung und adaptive Verarbeitung eines Datensatzes richtet. Im Gegensatz zur regulären „statischen“ Programmierung sind Anwendungen zum maschinellen Lernen dadurch gekennzeichnet, dass sie dazu in der Lage sind, prädiktive Datenmodelle durch eine iterative Verfeinerung von Modellen aus einem Datensatz ohne explizite Programmierung zu erzeugen. Künstliche neuronale Netze zählen zu den bekanntesten Algorithmen für maschinelles Lernen und verwenden verteilte Parallelprozessoren, um parametrisierte Berechnungen an Eingabedaten an mehreren miteinander verbundenen „Neuronen“ (Verarbeitungseinheiten) durchzuführen, die über eine oder mehrere interne oder „verdeckte“ Schichten zwischen einer Eingabeschicht und einer Ausgabeschicht verteilt sind, um eine Ausgabe zu berechnen, die mit einer Ziel- oder Referenzausgabe verglichen wird. Künstliche neuronale Netze sind durch Gewichtungen parametrisiert, die den Verbindungen zwischen Neuronen angrenzender Schichten zugeordnet sind. Die Parameter des Netzes werden ständig aktualisiert, um den Unterschied in der Ausgabe zu verringern und schließlich zu beseitigen, bis ein korrektes Datenmodell erzielt wird. „Tiefe“ neuronale Netze beziehen sich auf neuronale Netze, die aus 3 oder mehr Schichten bestehen.Machine learning is the field of computer science, which focuses on the use of computer-implemented algorithms for problem solving by pattern recognition and adaptive processing of a data set. Unlike regular "static" programming, machine learning applications are characterized by being able to generate predictive data models by iteratively refining models from a data set without explicit programming. Artificial neural networks are among the best-known machine learning algorithms and use distributed parallel processors to perform parametric calculations on input data to a plurality of interconnected "neurons" (processing units) that have one or more internal or "hidden" layers between an input layer and an output layer are distributed to calculate an output which is compared to a target or reference output. Artificial neural networks are parameterized by weights associated with the connections between neurons of adjacent layers. The parameters of the network are constantly updated to reduce and eventually eliminate the difference in the output until a correct data model is achieved. "Deep" neural networks refer to neural networks consisting of 3 or more layers.

Ein bekanntes Trainingsverfahren für künstliche neuronale Netze wird als Fehlerrückführung (oder Backpropagation) bezeichnet. Ausgehend von einem vorgegebenen (oftmals zufälligen) Satz von Gewichtungen, werden die Gewichtungen verfeinert, indem wiederholt ein zweistufiger Zyklus von Operationen angewandt wird, der einen Vorwärtsdurchlauf mit einer anschließenden stufenweisen Rückpropagationsphase („Fehlerrückführungsphase“) in Verbindung mit einer Optimierungsphase beinhaltet. Während der Vorwärtspropagationsphase wird eine Eingabe vorwärts durch das neuronale Netz propagiert, wobei eine Berechnung an jedem Neuron Schicht für Schicht durchgeführt wird, bis die Ausgabeschicht erreicht ist. Nichtlineare Aktivierungsfunktionen können ebenfalls auf ein oder mehrere Neuronen angewandt werden, um die Ausgabe weiter auf diskrete Werte zu lenken. Die Ausgabe wird dann mit der Zielausgabe mittels einer Verlustfunktion verglichen und ein Fehlerwert wird für jedes der Elemente in der Ausgabeschicht berechnet. Während der Fehlerrückführungsphase werden die Gradienten der Fehlerfunktion berechnet und dann rückwärts durch die Schichten propagiert, um Gradienten zu bestimmen, die jedem Neuron entsprechen. Diese Gradienten werden dann verwendet, um den Gradienten der Verlustfunktion in Bezug auf jede der Gewichtungen in dem Netz zu berechnen. In der letzten Phase wird der berechnete Gradient verwendet, um die angewandten Gewichtungen in einem Versuch zu aktualisieren, die Verlustfunktion zu minimieren. Sobald sich die Ist-Ausgabe der Soll-Ausgabe im Wesentlichen annähert (z. B. innerhalb eines Genauigkeitsschwellenwerts) wird das Datenmodell als abgeschlossen angesehen und kann das weitere Lernen beendet werden.One known training method for artificial neural networks is called error return (or backpropagation). Starting from a given (often random) set of weights, the weights are refined by repeatedly applying a two-stage cycle of operations involving a forward pass followed by a stepwise backpropagation phase ("error recovery phase") in conjunction with an optimization phase. During the forward propagation phase, an input is propagated forward through the neural network, performing a computation on each neuron layer by layer until the output layer is reached. Non-linear activation functions can also be applied to one or more neurons to further direct the output to discrete values. The output is then compared to the target output by means of a loss function, and an error value is calculated for each of the elements in the output layer. During the error recovery phase, the gradients of the error function are calculated and then propagated backwards through the layers to determine gradients corresponding to each neuron. These gradients are then used to calculate the gradient of the loss function with respect to each of the weights in the network. In the last phase, the calculated gradient is used to update the applied weights in an attempt to minimize the loss function. Once the actual output substantially approaches the target output (eg, within an accuracy threshold), the data model is considered complete and further learning can be terminated.

Nachdem das Training eines neuronalen Netzes abgeschlossen ist, können die Netze im Feld zur „Inferenz“ eingesetzt werden, bei der Eingabedaten durch die Ausgabe des Netzes eingestuft werden, um ein Ergebnis „abzuleiten“. Herkömmliche Computerimplementierungen zum Trainieren von neuronalen Netzen (wie z. B. Fehlerrückführung) nutzen typischerweise Darstellungen reeller Zahlen als 32-Bit-Gleitkommazahl (auch Gleitkommazahl einfacher Genauigkeit oder FP32 genannt) zur Datenspeicherung und -bearbeitung beim Durchführen von Datenberechnungen. Natürlich werden bei einer an diesen Modellen durchgeführten Inferenz ebenfalls FP32-Darstellungen verwendet. Zur Speicherung und Berechnung von 32-Bit-Werten werden jedoch erhebliche Speicher- und Verarbeitungsressourcen benötigt. Infolgedessen wurden neue Techniken entwickelt, die stattdessen ein Format mit verringerter Genauigkeit nutzen. Anstelle der vollen 32 Bits können diese Lösungen stattdessen eine Darstellung als 16-Bit-Gleitkommazahl (Float16) oder eine Darstellung als 8-Bit-Ganzzahl (INT8) verwenden.After the training of a neural network is completed, the nets can be used in the field for "inference" in which input data is classified by the output of the network to "derive" a result. Conventional computer implementations for training neural networks (such as error feedback) typically use real-number representations as a 32-bit floating-point number (also called a single-precision floating-point number or FP32) for data storage and processing when performing data calculations. Of course, an inference made on these models will also use FP32 representations. However, storing and computing 32-bit values requires significant memory and processing resources. As a result, new techniques have been developed that use a reduced-precision format instead. Instead of the full 32 bits, these solutions may instead use a representation as a 16-bit floating-point number (Float16) or a representation as an 8-bit integer (INT8).

Die Verwendung von Formaten mit verringerter Datengenauigkeit zum Inferenzieren von neuronalen (insbesondere faltenden) Netzen bietet mehrere Vorteile gegenüber herkömmlichen Formaten mit einer Gleitkommazahl einfacher Genauigkeit. Insbesondere können diese Berechnungen in einem geringeren Format bei rechenintensiven Schichten in dem neuronalen Netz (potenziell) wesentlich schneller durchgeführt werden als bei einer Gleitkommazahl einfacher Genauigkeit. Zum Speichern der Werte mit verringerter Datengenauigkeit ist wesentlich weniger Speicher erforderlich. Durch die Speicherung von Daten in dem Format mit verringerter Datengenauigkeit verbessert sich zudem die Leistung bei Schichten begrenzter Bandbreite aufgrund der verringerten Zeit, die zum Übertragen von Daten erforderlich ist. Schließlich ermöglicht die Speicherung unter Verwendung des Formats mit verringerter Datengenauigkeit zudem eine Verkleinerung des Netzes und Verkürzung der Zeit, die zum Kommunizieren in Mehrprozessorsystemen (z. B. Multi-GPU-Systemen) nötig ist.The use of reduced data accuracy formats to infer neuronal (especially convolutional) networks offers several advantages over conventional single-precision floating point formats. In particular, these computations in a smaller format can be performed much faster (potentially) in computationally intensive layers in the neural network than with a floating-point number of single precision. Saving the data with reduced data accuracy requires significantly less memory. Also, by storing data in the reduced data accuracy format, the performance of limited bandwidth layers improves due to the reduced time required to transfer data. Finally, storage using the format with reduced data accuracy also enables downsizing of the network and shortening of the time required to communicate in multiprocessor systems (eg, multi-GPU systems).

Leider weisen Zahlen mit verringerter Datengenauigkeit einen signifikant engeren Zahlenbereich auf als Darstellungen als Gleitkommazahl einfacher Genauigkeit. Infolgedessen kann es zu einem Überlauf oder Unterlauf kommen, wenn Berechnungen durchgeführt werden, aus denen Zahlenwerte außerhalb des vorgeschriebenen Bereichs hervorgehen. Bei vorangehenden Lösungsversuchen war die Anwendung von Beschränkungen beim Training erforderlich oder wurde ein komplexeres oder schwierigeres mathematisches Modell verwendet, bei dem etwas Feineinstellung nötig ist. Ein weiterer Nachteil dieser vorbekannten Verfahren besteht darin, dass eine Quantisierung aus größeren Sätzen von Werten (z. B. aus einer Gleitkommazahl einfacher Genauigkeit in ein Format mit verringerter Genauigkeit) dynamisch durchgeführt wird und damit zusätzlichen Verarbeitungsaufwand während der Berechnung erfordert.Unfortunately, numbers with reduced data accuracy have a significantly narrower number range than representations as a single-precision floating-point number. As a result, an overflow or underflow may occur when computations are performed that yield numbers outside the prescribed range. Previous attempts to solve the problem required training limitations or a more complex or difficult mathematical model that required some fine tuning. Another disadvantage of these prior art methods is that quantization from larger sets of values (eg, from a single-precision floating-point number into a reduced-precision format) is performed dynamically, requiring additional processing overhead during the computation.

KURZDARSTELLUNG DER ERFINDUNGBRIEF SUMMARY OF THE INVENTION

Diese Kurzdarstellung wird bereitgestellt, um eine Auswahl an Konzepten in vereinfachter Form vorzustellen, die nachfolgend in der detaillierten Beschreibung näher beschrieben sind. Diese Kurzdarstellung ist weder dazu vorgesehen, Schlüsselmerkmale oder wesentliche Merkmale der Erfindung zu nennen, noch ist sie dazu vorgesehen, den Umfang der Erfindung einzuschränken.This summary is provided to introduce a selection of concepts in a simplified form, which are described in more detail below in the detailed description. This summary is not intended to identify key features or essential features of the invention, nor is it intended to limit the scope of the invention.

Die Ausführungsformen der vorliegenden Erfindung richten sich auf computerimplementierte Prozeduren zum Verbessern der Interferenz (Anwendung) künstlicher neuronaler Netze unter Verwendung eines Datenformats mit verringerter Genauigkeit (z. B. INT8). Die Ausführungsformen der vorliegenden Erfindung erzeugen Kandidatenumwandlungen einer Datenausgabe und nutzen dann ein relatives Qualitätsmaß zum Identifizieren der Kandidatenumwandlung mit der größten Genauigkeit (z. B. kleinste Divergenz von den ursprünglichen Werten höherer Genauigkeit). Die Darstellung kann dann während der Interferenz zum Berechnen der sich ergebenden Ausgabedaten verwendet werden.The embodiments of the present invention are directed to computer-implemented procedures for improving the interference (application) of artificial neural networks using a reduced precision data format (e.g., INT8). The embodiments of the present invention generate candidate conversions of a data output and then use a relative quality measure to identify the candidate conversion with the greatest accuracy (eg, least divergence from the original higher-accuracy values). The representation may then be used during the interference to compute the resulting output data.

Gemäß einer Ausführungsform der vorliegenden Erfindung wird ein computerimplementiertes Verfahren zum Automatisieren einer Umwandlung von Datenformaten höherer Genauigkeit in Datenformate geringerer Genauigkeit bereitgestellt. Das Verfahren wird z. B. durch Referenzieren vorgespeicherter Aktivierungsdaten, Erstellen eines Histogramms für die Aktivierungsdaten, Erzeugen von Verteilungen mit verringerter Genauigkeit für das Histogramm mit verschiedenen Sättigungsschwellenwerten, Messen von Verteilungen auf Divergenz gegenüber einer Referenzverteilung höherer Genauigkeit und Identifizieren der Verteilung mit der kleinsten Divergenz von der Referenzverteilung durchgeführt. In einer oder mehreren Ausführungsformen kann das Verfahren für jede Schicht eines neuronalen Netzes durchgeführt werden. In wieder anderen Ausführungsformen wird das Verfahren für jede Schicht unabhängig in Bezug auf eine jede andere Schicht des neuronalen Netzes durchgeführt.In accordance with one embodiment of the present invention, there is provided a computer-implemented method for automating conversion of higher-precision data formats to lower-precision data formats. The method is z. For example, by referencing pre-stored activation data, creating a histogram for the activation data, generating reduced-precision distributions for the histogram with different saturation thresholds, measuring distributions for divergence versus a reference distribution of higher accuracy, and identifying the distribution having the smallest divergence from the reference distribution. In one or more embodiments, the method may be performed for each layer of a neural network. In still other embodiments, the method for each layer is performed independently with respect to each other layer of the neural network.

In einer oder mehreren Ausführungsformen können die Aktivierungsdaten Daten einschließen, die durch Anwenden eines neuronalen Netzes auf wenigstens einen Abschnitt eines Kalibrierungsdatensatzes erzeugt werden, um einen oder mehrere Skalierungsfaktoren zum Umwandeln von Daten von einem Format höherer Genauigkeit in ein Format geringerer Genauigkeit zu bestimmen. Die Kalibrierung kann offline (z. B. vor Laufzeit-Inferenz) durchgeführt werden, um die Skalierungsfaktoren statisch zu bestimmen. Aktivierungsdaten werden für eine oder mehrere Schichten des neuronalen Netzes erzeugt. Die Aktivierungsdaten (Ausgabedaten) werden dann erfasst und gespeichert und anschließend wird ein Histogramm der Daten erstellt.In one or more embodiments, the activation data may include data generated by applying a neural network to at least a portion of a calibration data set to determine one or more scale factors for converting data from a higher-accuracy format to a lower-accuracy format. The calibration can be performed offline (eg, prior to runtime inference) to statically determine the scaling factors. Activation data is generated for one or more layers of the neural network. The activation data (output data) is then captured and stored, and then a histogram of the data is created.

In einer oder mehreren Ausführungsformen wird das Erzeugen der Verteilungen mit verringerter Genauigkeit (Kandidatenumwandlungen) für ein jeweiliges Histogramm iterativ über eine Vielzahl von verschiedenen Sättigungsgraden durchgeführt, die der Anzahl von Kandidatenumwandlungen entsprechen. Die genaue Anzahl von Kandidatenumwandlungen kann selbst dem Bereich von Werten zwischen 0 und dem höchsten (maximalen) Wert entsprechen, der in den Aktivierungsdaten festzustellen ist, wobei jede Kandidatenumwandlung einen anderen Sättigungsgrad zwischen 0 und dem höchsten festgestellten Absolutwert aufweist. Bei jeder jeweiligen Kandidatenumwandlung werden die Werte in den Klassen des Histogramms über dem Sättigungsgrad, welcher der Kandidatenumwandlung entspricht, auf den Sättigungsgrad eingegrenzt. Anschließend werden die Klassen des Histogramms für den Satz von aktivierten Datenwerten für eine Schicht dann anteilig für alle Klassen unter dem Sättigungsschwellenwert, welcher der Kandidatenumwandlung entspricht, zusammengeführt, bis die verbleibende Anzahl von Klassen dem maximalen positiven Wert für ein ausgewähltes Datenformat geringer Genauigkeit entspricht. Die Kandidatenumwandlungen werden dann unter Verwendung einer Divergenzmetrik mit den ursprünglichen Datenwerten verglichen, um die Kandidatenumwandlung mit der größten Genauigkeit zu bestimmen.In one or more embodiments, producing the reduced-precision distributions (candidate conversions) for a respective histogram is iteratively performed over a plurality of different saturation degrees corresponding to the number of candidate conversions. The exact number of candidate conversions may itself correspond to the range of values between 0 and the highest (maximum) value found in the activation data, with each candidate conversion having a different saturation level between 0 and the highest absolute value detected. At each respective candidate conversion, the values in the classes of the histogram above the saturation level corresponding to the candidate conversion are limited to the saturation level. Then, the classes of the histogram for the set of enabled data values for a shift then become proportionally for all classes below the saturation threshold corresponding to the candidate conversion, until the remaining number of classes equals the maximum positive value for a selected low-precision data format. The candidate conversions are then compared to the original data values using a divergence metric to determine candidate conversion with the greatest accuracy.

Gemäß einer wieder anderen Ausführungsform der vorliegenden Erfindung wird ein programmierte Anweisungen beinhaltendes computerlesbares Medium bereitgestellt, das Anweisungen zum Durchführen des oben beschriebenen Verfahrens zum automatischen Umwandeln von Daten von einem Datenformat höherer Genauigkeit in ein Datenformat geringerer Genauigkeit beinhaltet, und wird ein Computersystem bereitgestellt, das einen Prozessor und einen Speicher beinhaltet, wobei Datenwerte, die als Ausgabe bei Interferenzoperationen erzeugt werden, in dem Speicher gespeichert, automatisch umgewandelt und unter Verwendung eines Formats mit verringerter Genauigkeit verarbeitet werden.According to yet another embodiment of the present invention, there is provided a computer-readable medium containing programmed instructions that includes instructions for performing the above-described method of automatically converting data from a higher-precision data format to a lower-precision data format, and providing a computer system that includes a Processor and a memory, wherein data values generated as output in interference operations are stored in the memory, automatically converted and processed using a format with reduced accuracy.

Anders als bei herkömmlichen Techniken ist bei der von Ausführungsform der vorliegenden Erfindung durchgeführten Inferenz ein erneutes Training oder eine Feineinstellung des ursprüngliches FP32-Netzes oder die Anwendung von Beschränkungen während des Trainings nicht erforderlich. Weiterhin können Datenformatumwandlungen automatisch und statisch durch Ausführen eines Trainingskalibrierungssatzes durchgeführt werden, wodurch die zusätzlichen Verarbeitungsanforderungen zur dynamischen Quantisierung von vorherigen Lösungsversuchen entfallen, während Ergebnisse erzielt werden, die mit denen des ursprünglichen FP32-Netzes vergleichbar sind.Unlike conventional techniques, the inference made by embodiment of the present invention does not require re-training or fine tuning of the original FP32 network or the application of constraints during training. Furthermore, data format conversions can be performed automatically and statically by executing a training calibration set, thereby eliminating the additional processing requirements for dynamically quantizing previous solve attempts while achieving results comparable to those of the original FP32 network.

Figurenlistelist of figures

Die beigefügten Zeichnungen sind in diese Beschreibung aufgenommen und bilden einen Bestandteil davon. Die Zeichnungen veranschaulichen Ausführungsformen. Zusammen mit der Beschreibung dienen die Zeichnungen der Erläuterung der Prinzipien der Ausführungsformen:

  • 1 veranschaulicht ein beispielhaftes computerimplementiertes Verfahren zum automatischen Umwandeln von Werten von einem Datenformat höherer Genauigkeit in ein Datenformat geringerer Genauigkeit gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung.
  • 2 veranschaulicht ein beispielhaftes computerimplementiertes Verfahren zum Erzeugen von Aktivierungsdaten während einer Kalibrierungsoperation in einem künstlichen neuronalen Netz gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung.
  • 3 veranschaulicht ein beispielhaftes computerimplementiertes Verfahren zum Erzeugen von Kandidatenumwandlungen in ein Datenformat geringerer Genauigkeit von Werten eines Datenformats höherer Genauigkeit gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung.
  • 4 veranschaulicht ein beispielhaftes Rechensystem, auf dem Ausführungsformen der vorliegenden Erfindung implementiert werden können, gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung.
The accompanying drawings are incorporated in and constitute a part of this specification. The drawings illustrate embodiments. Together with the description, the drawings serve to explain the principles of the embodiments:
  • 1 FIG. 12 illustrates an example computer-implemented method for automatically converting values from a higher-precision data format to a lower-precision data format according to various embodiments of the present invention.
  • 2 FIG. 12 illustrates an example computer-implemented method for generating activation data during a calibration operation in an artificial neural network according to various embodiments of the present invention. FIG.
  • 3 FIG. 12 illustrates an example computer-implemented method for generating candidate conversions into a lower-precision data format of higher-precision data format values according to various embodiments of the present invention. FIG.
  • 4 FIG. 12 illustrates an example computing system on which embodiments of the present invention may be implemented, according to various embodiments of the present invention.

DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION

Nun wird auf die bevorzugten Ausführungsformen der Erfindung genauer Bezug genommen. Während die Erfindung in Verbindung mit den bevorzugten Ausführungsformen beschrieben wird, versteht sich, dass sie nicht auf diese Ausführungsformen beschränkt sind. Die Erfindung soll hingegen Alternativen, Modifikationen und Äquivalente abdecken, die im Geist und Umfang, wie er in den beigefügten Ansprüchen definiert ist, eingeschlossen sein können.Reference will now be made to the preferred embodiments of the invention. While the invention will be described in conjunction with the preferred embodiments, it will be understood that they are not limited to these embodiments. By contrast, the invention is intended to cover alternatives, modifications, and equivalents, which may be included within the spirit and scope as defined in the appended claims.

Weiterhin sind in den folgenden detaillierten Beschreibungen von Ausführungsformen der Erfindung zahlreiche konkrete Details aufgeführt, um ein umfassendes Verständnis der Erfindung zu vermitteln. Für den Durchschnittsfachmann liegt jedoch auf der Hand, dass die Erfindung ohne diese konkreten Details ausgeführt werden kann. In anderen Fällen wurden allgemein bekannte Verfahren, Prozeduren, Komponenten und Schaltungen nicht näher beschrieben, um Aspekte der Erfindung nicht unnötig zu verschleiern.Furthermore, in the following detailed descriptions of embodiments of the invention, numerous specific details are set forth in order to provide a thorough understanding of the invention. However, it will be apparent to one of ordinary skill in the art that the invention may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail so as not to unnecessarily obscure aspects of the invention.

Einige Abschnitte der folgenden detaillierten Beschreibungen sind im Zusammenhang mit Prozeduren, Schritten, Logikblöcken, Verarbeitung und anderen symbolischen Darstellungen von Operationen an Datenbits aufgeführt, die auf einem Computerspeicher durchgeführt werden können. Diese Beschreibungen und Darstellungen sind die Mittel, die vom Fachmann auf dem Gebiet der Datenverarbeitung verwendet werden, um den Gegenstand seiner Arbeit einem anderen Fachmann am wirksamsten zu vermitteln. Eine Prozedur, ein computererzeugter Schritt, ein Logikblock, ein Verfahren usw. wird hier und allgemein als selbstkonsistente Abfolge von Schritten oder Anweisungen verstanden, die zu einem gewünschten Ergebnis führt. Die Schritte sind diejenigen, die physikalische Manipulationen physikalischer Größen erfordern. Normalerweise, jedoch nicht zwangsläufig, nehmen diese Größen die Form von elektrischen oder magnetischen Signalen an, die dazu in der Lage sind, gespeichert, übertragen, kombiniert, verglichen und anderweitig in einem Computersystem manipuliert zu werden. Es hat sich vor allem aus Gründen des allgemeinen Gebrauchs mitunter als praktisch erwiesen, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen oder dergleichen zu bezeichnen.Some portions of the following detailed descriptions are in the context of procedures, steps, logic blocks, processing, and other symbolic representations of operations on data bits that may be performed on computer memory. These descriptions and representations are the means used by those skilled in the data processing arts to communicate the object of his work most effectively to another professional. A procedure, a computer-generated step, a logic block, a method, etc. are here and generally understood to be a self-consistent sequence of steps or instructions that result in a desired result. The steps are those that require physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated in a computer system. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.

Es sollte jedoch beachtet werden, dass all diese und ähnliche Ausdrücke mit den geeigneten physikalischen Größen in Verbindung gebracht werden müssen und lediglich zweckdienliche Bezeichnungen sind, die für diese Größen angewandt werden. Sofern nicht ausdrücklich anders angegeben, versteht sich, wie aus den folgenden Erörterungen ersichtlich, dass sich in der vorliegenden Erfindung Erörterungen, bei denen Ausdrücke wie „Speichern“, „Erstellen“, „Schützen“, „Empfangen“, „Verschlüsseln“, „Entschlüsseln“, „Zerstören“ oder dergleichen verwendet werden, auf die Tätigkeit und Prozesse eines Computersystems oder einer integrierten Schaltung oder ähnlichen elektronischen Rechenvorrichtung beziehen, das bzw. die ein eingebettetes System beinhaltet, das Daten, die in den Registern und Speichern des Computersystems als physikalische (elektronische) Größen dargestellt sind, manipuliert und in andere Daten umwandelt, die auf ähnliche Weise als physikalische Größen in den Speichern oder Registern des Computersystems oder anderer derartiger Informationsspeicher-, Übertragungs- oder Anzeigevorrichtungen dargestellt sind.It should be noted, however, that all of these and similar terms must be associated with the appropriate physical quantities and are merely convenient terms used for those quantities. Unless otherwise stated, it will be understood from the following discussions that in the present invention, discussions are made in which expressions such as "save", "create", "protect", "receive", "encrypt", "decrypt , "Destroy" or the like, refer to the operation and processes of a computer system or integrated circuit or similar electronic computing device incorporating an embedded system that stores data stored in the registers and memories of the computer system as physical (e.g. electronic) quantities, manipulated and converted into other data, similarly represented as physical quantities in the memories or registers of the computer system or other such information storage, transmission or display devices.

AUTOMATISIERTE UMWANDLUNG ZWISCHEN DATENFORMATEN HOHER UND GERINGER GENAUIGKEITAUTOMATED CONVERSION BETWEEN DATA FORMATS HIGH AND LOW ACCURACY

1 ist ein Ablaufschema 100, das ein beispielhaftes computerimplementiertes Verfahren zum Automatisieren einer Umwandlung von Datenformaten höherer Genauigkeit in Datenformate geringerer Genauigkeit gemäß Ausführungsformen der vorliegenden Erfindung veranschaulicht. Die Schritte 101-109 beschreiben beispielhafte Schritte des Ablaufschemas 100 gemäß den verschiedenen hier beschriebenen Ausführungsformen. Wie in 1 dargestellt, beginnt eine automatisierte Umwandlung typischerweise bei Schritt 101 durch Referenzieren von Aktivierungsdaten, die aus einer Ausführung einer oder mehrerer Schichten eines neuronalen Netzes erzeugt werden. Die Aktivierungsdaten können Aktivierungsdaten umfassen, die den Ausgabewerten einer einzigen Schicht des neuronalen Netzes entsprechen, und das Referenzieren der zuvor erzeugten Aktivierungsdaten kann aus einem Zugreifen auf die Aktivierungsdaten in einer Speichervorrichtung oder Erzeugen der Aktivierungsdaten während Schritt 101 bestehen. In einer oder mehreren Ausführungsformen kann das im Ablaufschema 100 dargestellte Verfahren unabhängig für mehrere (alle) Schichten des neuronalen Netzes durchgeführt werden. 1 is a flowchart 100 , which illustrates an exemplary computer-implemented method for automating conversion of higher-precision data formats to lower-precision data formats in accordance with embodiments of the present invention. The steps 101 - 109 describe exemplary steps of the flowchart 100 according to the various embodiments described herein. As in 1 As shown, an automated conversion typically begins at step 101 by referencing activation data generated from execution of one or more layers of a neural network. The activation data may include activation data corresponding to the output values of a single layer of the neural network, and the referencing of the previously generated activation data may be from accessing the activation data in a storage device or generating the activation data during step 101 consist. In one or more embodiments, this may be in the flowchart 100 illustrated methods are performed independently for multiple (all) layers of the neural network.

Bei Schritt 103 werden die in Schritt 101 referenzierten Aktivierungsdaten erfasst und wird ein Histogramm erstellt, das ähnliche Werte in mehreren Klassen erfasst. Die Histogrammklassen sind zwischen dem Wertebereich von 0 und dem höchsten festgestellten Absolutwert der Aktivierungswerte gleichmäßig beabstandet, wobei die Aktivierungswerte in der Histogrammklasse mit dem nächstliegenden Wert erfasst werden. In einer oder mehreren Ausführungsformen kann die Anzahl von Histogrammklassen selbst einer vorgegebenen Anzahl entsprechen. In wieder anderen Ausführungsformen kann die vorgegebene Anzahl empirisch auf Grundlage historischer Daten entsprechend dem neuronalen Netz und/oder entsprechend dem Genauigkeitsgrad von oder zwischen den Datenformaten, aus denen und/oder in die umgewandelt wird, bestimmt werden. In einer konkreten Ausführungsform kann das Histogramm aus 2048 Klassen oder einer Anzahl von Klassen, die ungefähr 2048 Klassen entspricht, bestehen.At step 103 will be in step 101 The captured activation data captures and creates a histogram that captures similar values across multiple classes. The histogram classes are evenly spaced between the value range of 0 and the highest absolute value of the activation values detected, the activation values being detected in the histogram class with the closest value. In one or more embodiments, the number of histogram classes may themselves correspond to a predetermined number. In yet other embodiments, the predetermined number may be determined empirically based on historical data corresponding to the neural network and / or according to the degree of accuracy of or between the data formats from and / or to which is converted. In a particular embodiment, the histogram may consist of 2048 classes or a number of classes corresponding to approximately 2048 classes.

Eine Vielzahl von Verteilungen geringerer Genauigkeit (z. B. Kandidatenumwandlungen) wird für die Werte in dem Histogramm bei Schritt 105 erzeugt. Im Allgemeinen basiert die Erzeugung der Anzahl von Kandidatenumwandlungen sowohl auf der Anzahl von Klassen in dem Histogramm als auch auf dem konkreten Datenformat geringerer Genauigkeit, für das die Umwandlung durchgeführt wird. Jede Kandidatenumwandlung wird mit einem eindeutigen (im Verhältnis zu anderen Kandidatenumwandlungen) Sättigungsschwellenwert erzeugt, der den im Histogramm erfassten Datenwerten entspricht. Datenwerte für eine Kandidatenumwandlung in dem Histogramm, die den Schwellenwert für die Kandidatenumwandlung überschreiten, werden auf den Schwellwert eingegrenzt. Damit weist jede der Kandidatenumwandlungen einen anderen Bereich von Datenwerten auf. Die Erzeugung der Kandidatenumwandlungen wird nachfolgend unter Bezugnahme auf Figur 3 näher beschrieben. Bei Schritt 107 wird die Divergenz zwischen jeder Kandidatenumwandlung und einem Kalibrierungsdatensatz (z. B. den Ausgangswerten des Datenformats höherer Genauigkeit) gemäß einer Metrik gemessen, um die Kandidatenumwandlung mit der kleinsten Divergenz zu bestimmen. In einer oder mehreren Ausführungsformen entspricht die angewandte Metrik der Kullback-Leibler-Divergenz. Bei Schritt 109 wird die Kandidatenumwandlung mit der kleinsten Divergenz (gemäß der in Schritt 107 angewandten Metrik) ausgewählt und werden die aus der Kandidatenumwandlung hervorgehenden Datenwerte für Inferenzanwendungen, wie z. B. Daten-/Bildeinstufung, Gesichts- oder Objekterkennung usw., verwendet.A variety of lower precision distributions (eg, candidate conversions) become the values in the histogram at step 105 generated. In general, the generation of the number of candidate conversions is based on both the number of classes in the histogram and the particular lower accuracy data format for which the conversion is being performed. Each candidate transformation is generated with a unique (relative to other candidate transformations) saturation threshold corresponding to the data values acquired in the histogram. Data values for candidate conversion in the histogram that exceed the candidate conversion threshold are limited to the threshold. Thus, each of the candidate conversions has a different range of data values. The generation of the candidate conversions will be described below with reference to FIG 3 described in more detail. At step 107 the divergence between each candidate conversion and a calibration data set (eg, the output values of the higher-precision data format) is determined according to a metric measured to determine the candidate divergence with the smallest divergence. In one or more embodiments, the applied metric corresponds to the Kullback-Leibler divergence. At step 109 the candidate divergence is selected (according to the metric used in step 107), and the candidate conversion data values for inference applications such As data / picture classification, face or object recognition, etc., used.

ERFASSUNG VON AKTIVIERUNGSDATENRECORDING OF ACTIVATION DATA

2 ist ein Ablaufschema 200, das ein beispielhaftes computerimplementiertes Verfahren zum Erfassen von Aktivierungsdaten aus einer Schicht eines neuronalen Netzes zur automatisierten Umwandlung von Datenwerten von einem Datenformat höherer Genauigkeit in ein Datenformat geringerer Genauigkeit gemäß Ausführungsformen der vorliegenden Erfindung veranschaulicht. Die Schritte 201-207 beschreiben beispielhafte Schritte des Ablaufschemas 200 gemäß den verschiedenen hier beschriebenen Ausführungsformen. In einer oder mehreren Ausführungsformen können ein oder mehrere Schritte 201-207 während Schritt 101 des im Ablaufschema 100 dargestellten und oben in Bezug auf 1 beschriebenen Verfahrens durchgeführt werden. In weiteren Ausführungsformen können ein oder mehrere Schritte des Ablaufschemas 200 vor Beginn eines beliebigen der Schritte des Ablaufschemas 100 durchgeführt werden, um einen oder mehrere Skalierungsfaktoren zu bestimmen, die zum Umwandeln von Daten von einem Format höherer Genauigkeit in ein Format geringerer Genauigkeit verwendet werden. Die Kalibrierung kann offline (z. B. vor Laufzeit-Inferenz) durchgeführt werden, um die Skalierungsfaktoren statisch zu bestimmen. 2 is a flowchart 200 , which illustrates an exemplary computer-implemented method for acquiring activation data from a neural network layer for automated conversion of data values from a higher-precision data format to a lower-precision data format in accordance with embodiments of the present invention. The steps 201 - 207 describe exemplary steps of the flowchart 200 according to the various embodiments described herein. In one or more embodiments, one or more steps may be taken 201 - 207 during step 101 of the flowchart 100 shown and above with respect to 1 be performed described method. In further embodiments, one or more steps of the flowchart 200 before beginning any of the steps of the flowchart 100 to determine one or more scaling factors used to convert data from a higher-precision format to a lower-precision format. The calibration can be performed offline (eg, prior to runtime inference) to statically determine the scaling factors.

Wie in 2 abgebildet, beginnt die Erfassung von Aktivierungsdaten bei Schritt 201 durch Anwenden eines neuronalen Netzes auf einen Kalibrierungsdatensatz oder einen Abschnitt davon. Die Aktivierungsdaten werden bei Schritt 203 während der routinemäßigen Ausführung programmierter Operationen in einer oder mehreren Schichten eines neuronalen Netzes erzeugt. Das neuronale Netz kann ein faltendes neuronales Netz gemäß verschiedenen Ausführungsformen umfassen. Gemäß weiteren Ausführungsformen kann das neuronale Netz ferner (oder stattdessen) ein tiefes neuronales Netz mit drei oder mehr Schichten umfassen. Die Aktivierungsdaten können Aktivierungsdaten umfassen, die den Ausgabewerten einer einzigen Schicht des neuronalen Netzes entsprechen.As in 2 As shown, the acquisition of activation data begins at step 201 by applying a neural network to a calibration data set or a portion thereof. The activation data will be at step 203 during routine execution of programmed operations in one or more layers of a neural network. The neural network may include a convolutional neural network according to various embodiments. According to further embodiments, the neural network may further (or instead) comprise a deep neural network having three or more layers. The activation data may include activation data corresponding to the output values of a single layer of the neural network.

Bei Schritt 205 werden die Aktivierungsdaten (Ausgabedaten) dann (z. B. in einem Verarbeitungszwischenspeicher) erfasst und bei Schritt 207 (z. B. in einer Speichervorrichtung) gespeichert. In einer oder mehreren Ausführungsformen können die Aktivierungsdaten zum Erstellen eines Histogramms der Aktivierungsdaten oder in Vorbereitung der Erstellung eines Histogramms der Daten zu Zwecken einer Datenformatumwandlung verwendet werden.At step 205 the activation data (output data) are then detected (eg in a processing buffer) and in step 207 stored (eg in a storage device). In one or more embodiments, the activation data may be used to create a histogram of the activation data or in preparation for creating a histogram of the data for data format conversion purposes.

ERZEUGUNG VON KANDIDATENUMWANDLUNGENGENERATION OF CANDIDATE CONVERSIONS

3 ist ein Ablaufschema 300, das ein beispielhaftes computerimplementiertes Verfahren zum Erzeugen von Kandidatenumwandlungen in Datenwerte geringerer Genauigkeit zur automatisierten Umwandlung von Datenwerten von einem Datenformat höherer Genauigkeit in ein Datenformat geringerer Genauigkeit gemäß Ausführungsformen der vorliegenden Erfindung veranschaulicht. Die Schritte 301-307 beschreiben beispielhafte Schritte des Ablaufschemas 300 gemäß den verschiedenen hier beschriebenen Ausführungsformen. In einer oder mehreren Ausführungsformen können ein oder mehrere Schritte 301-307 während Schritt 105 des im Ablaufschema 100 dargestellten und oben in Bezug auf 1 beschriebenen Verfahrens durchgeführt werden. 3 is a flowchart 300 , which illustrates an exemplary computer-implemented method for generating candidate conversions into lower-precision data values for automated conversion of data values from a higher-precision data format to a lower-precision data format in accordance with embodiments of the present invention. The steps 301 - 307 describe example steps of the flowchart 300 according to the various embodiments described herein. In one or more embodiments, one or more steps may be taken 301 - 307 during step 105 of the flowchart 100 shown and above with respect to 1 be performed described method.

Bei Schritt 301 wird die Anzahl von Kandidatenumwandlungen bestimmt und iterativ erzeugt. In einer oder mehreren Ausführungsformen kann die Anzahl von Kandidatenumwandlungen der Anzahl von Klassen in dem Histogramm entsprechen. In wieder anderen Ausführungsformen entspricht die Anzahl von Kandidatenumwandlungen der Anzahl von Klassen in dem Histogramm, abzüglich der höchsten festgestellten absoluten Anzahl des Wertebereichs, der vom Datenformat geringerer Genauigkeit ausdrückbar ist, für das die Umwandlung durchgeführt wird. So liegt, wenn es sich bei dem für eine Umwandlung ausgewählten Datenformat geringerer Genauigkeit um ein 8-Bit-Ganzzahl(Int8)-Format handelt, der typische Wertebereich, der mit Int8 ausdrückbar ist, zwischen -127 und 127. Gemäß solchen Ausführungsformen würde die Anzahl von Kandidatenumwandlungen eine Anzahl zwischen der Anzahl von Histogrammklassen minus 127 umfassen. Wenn das Histogramm z. B. aus 2048 Klassen besteht, kann die Anzahl von Kandidatenumwandlungen gleich 1921 (2048 - 127) sein.At step 301 the number of candidate conversions is determined and generated iteratively. In one or more embodiments, the number of candidate conversions may correspond to the number of classes in the histogram. In yet other embodiments, the number of candidate conversions equals the number of classes in the histogram minus the highest absolute number of the range of values that can be expressed by the lower precision data format for which the conversion is being performed. Thus, if the lower precision data format selected for conversion is an 8-bit integer (Int8) format, the typical range of values expressible with Int8 is between -127 and 127. According to such embodiments, the Number of candidate conversions comprises a number between the number of histogram classes minus 127. If the histogram z. B. 2048 classes, the number of candidate conversions can be equal to 1921 ( 2048 - 127 ) be.

In einer oder mehreren Ausführungsformen weist jede Kandidatenumwandlung einen entsprechenden Sättigungsschwellenwert auf, sodass jeder Wert über dem Schwellenwert auf den Schwellenwert eingegrenzt wird. Bei Schritt 303 wird ein Sättigungsschwellenwert für jede Kandidatenumwandlung ausgewählt. Jede Kandidatenumwandlung kann somit durch iteratives Eingrenzen von Datenwerten zwischen 2048 und 127 nacheinander erzeugt werden. Bei Schritt 305 werden die verbleibenden Klassen für jede Kandidatenumwandlung nacheinander zu einer Vielzahl von Verteilungsintervallen komprimiert (zusammengeführt). In einer oder mehreren Ausführungsformen entspricht die Anzahl von Verteilungsintervallen dem höchsten festgestellten Absolutwert, der vom Datenformat geringerer Genauigkeit ausdrückbar ist (z. B. 127 bei Int8), und werden Datenwerte innerhalb jedes Intervalls aus dem Histogramm zwischen 0 und dem Sättigungsschwellenwert mit den anderen Datenwerten in demselben Intervall zusammengeführt, bis die verbleibende Anzahl von Klassen gleich dem höchsten festgestellten Absolutwert (z. B. 127) ist. In one or more embodiments, each candidate transformation has a corresponding saturation threshold, such that any value above the threshold is constrained to the threshold. At step 303 a saturation threshold is selected for each candidate conversion. Each candidate conversion can thus be generated successively by iteratively narrowing data values between 2048 and 127. At step 305, the remaining classes for each candidate conversion are successively compressed (merged) into a plurality of distribution intervals. In one or more embodiments, the number of distribution intervals corresponds to the highest detected absolute value expressible by the lower precision data format (e.g., 127 at Int8), and data values within each interval from the histogram are between 0 and the saturation threshold with the other data values at the same interval until the remaining number of classes equals the highest absolute value found (eg, 127).

Wenn z. B. der Sättigungswert für eine bestimmte Kandidatenumwandlung gleich 1000 ist, dann werden die Histogrammklassen zwischen 0 und 1000 in den maximalen ausdrückbaren positiven Wert (z. B. 127 bei Int8) aufgeteilt, um die nächstliegende ganze Zahl zum Quotienten (z. B. 8) zu bestimmen. Diskrete Folgen von aufeinanderfolgenden Histogrammklassen zwischen 0 und dem Sättigungsschwellenwert (z. B. 1000) werden dann nacheinander komprimiert (z. B. zusammengeführt), bis die verbleibende Anzahl von Histogrammklassen dem höchsten festgestellten Absolutwert entspricht. Im obengenannten Beispiel für 8-Bit-Ganzzahlen wird jede Folge von 8 (Quotient) Histogrammklassen zusammengeführt, sodass die verbleibende Klassenanzahl 127 ist. Jeder Wert über 1000 wird auf den Sättigungsschwellenwert eingegrenzt. Ebenso wird, wenn der Sättigungsschwellenwert für eine Kandidatenumwandlung 2000 ist, jede diskrete Folge von 16 aufeinanderfolgenden Histogrammklassen zusammengeführt; und wird, wenn der Sättigungsschwellenwert für eine Kandidatenumwandlung 500 ist, jede diskrete Folge von 4 aufeinanderfolgenden Histogrammklassen zusammengefasst.If z. For example, if the saturation value for a particular candidate conversion is 1000, then the histogram classes between 0 and 1000 are divided into the maximum expressible positive value (eg, 127 at Int8) to give the nearest integer to the quotient (eg, 8 ). Discrete sequences of consecutive histogram classes between 0 and the saturation threshold (eg, 1000) are then sequentially compressed (e.g., merged) until the remaining number of histogram classes equals the highest absolute value detected. In the above example for 8-bit integers, each sequence of 8 (quotient) histogram classes is merged so that the remaining class number 127 is. Any value greater than 1000 is limited to the saturation threshold. Likewise, when the saturation threshold for a candidate conversion 2000 is, each discrete sequence of 16 consecutive histogram classes merged; and becomes, if the saturation threshold for a candidate conversion 500 is summarized each discrete sequence of 4 consecutive histogram classes.

Die sich ergebenden zusammengeführten und/oder eingegrenzten Datenwerte werden bei Schritt 307 erfasst und als die Kandidatenumwandlungen gespeichert. Danach können verschiedene Metriken angewandt werden, um die Genauigkeit (umgekehrt proportional zur Divergenz) jeder Kandidatenumwandlung gegenüber ursprünglichen Datenwerten aus dem Kalibrierungsdatensatz gemäß verschiedenen Ausführungsformen zu messen.The resulting merged and / or bounded data values are returned at step 307 recorded and saved as the candidate transformations. Thereafter, various metrics may be applied to measure the accuracy (inversely proportional to the divergence) of each candidate transformation against original data values from the calibration data set, according to various embodiments.

Nachfolgend ist ein Abschnitt von beispielhaftem Pseudocode aufgeführt. Gemäß Ausführungsformen der Erfindung kann ein computerlesbares Medium, das programmierte Anweisungen enthält, welche die nachstehend aufgeführten programmierten Anweisungen bei Ausführung durch einen Prozessor (zumindest) im Wesentlichen durchführen, verwendet werden, um eine Datenkomprimierung und -aufzeichnung von Datenformaten höherer Genauigkeit in Datenformate geringerer Genauigkeit im Allgemeinen und im Besonderen für einzelne Schichten eines künstlichen neuronalen Netzes durchzuführen. i P ( i ) l o g ( P ( i ) Q ( i ) )

Figure DE102018101166A1_0001
Below is a section of exemplary pseudocode. In accordance with embodiments of the invention, a computer-readable medium containing programmed instructions that substantially execute (at least) the programmed instructions listed below when executed by a processor may be used to facilitate data compression and recording of higher-precision data formats in lower-precision data formats In general and in particular for individual layers of an artificial neural network. Σ i P ( i ) l O G ( P ( i ) Q ( i ) )
Figure DE102018101166A1_0001

Beispielhafter PseudocodeExemplary pseudocode

       

 Eingabe: „Klassen“ (Bins) eines Histogramms bei FP32-Ausführung, enthält 2048 Klassen
 bins[0] = bins[1]
 divergences = empty list
 For i in range(128, 2048):
       candidate_distribution_Q = take bins from bins[0], ... ,
       bins [i-1] and quantize into 128 levels
       reference_distribution_P = bins[0] , ... , bins[i-1]
       outliers_count = sum(bins[i], bins[i+1], ... , bins[2047])
       reference_distribution_P[ i-1 ] += outliers_count
       normalize reference_distribution_P (sum equal to 1)
       normalize candidate_distribution_Q (sum equal to 1)
       divergences[i] = KL_divergence(reference_distribution_P,
 candidate_distribution_Q)
 Find index ‚i‘ for which divergences[i] is minimal
 Return i
 Later this index is transformed into activation value:
 max_estimated_value = (i + 0.5) * bins.width_of_a_single_binInput: "classes" (bins) of a histogram in FP32 execution, contains 2048 classes bins [0] = bins [1] divergences = empty list For i in range (128, 2048): candidate_distribution_Q = take bins from bins [0] , ..., bins [i-1] and quantize into 128 levels reference_distribution_P = bins [0], ..., bins [i-1] outliers_count = sum (bins [i], bins [i + 1],. .., bins [2047]) reference_distribution_P [i-1] + = outliers_count normalize reference_distribution_P (sum equal to 1) normalize candidate_distribution_Q (sum equal to 1) divergences [i] = KL_divergence (reference_distribution_P,  candidate_distribution_Q) Find index, i for which divergences [i] is minimal Return i Later this index is transformed into activation value: max_estimated_value = (i + 0.5) * bins.width_of_a_single_bin
    

Beispielexample

Eingabeverteilung: [5 5 4 0 2 4 7 3 1 4 6 0 3 2 1 3], Größe: 16 Klassen
Ausgehend von i: 8
Quantisierung der Eingangsverteilung in 4 Klassen

Figure DE102018101166A1_0002
Figure DE102018101166A1_0003
Figure DE102018101166A1_0004
Figure DE102018101166A1_0005
Figure DE102018101166A1_0006
Jetzt Iterationen: 11, 12, 13, 14, 15, 16Input distribution: [5 5 4 0 2 4 7 3 1 4 6 0 3 2 1 3], size: 16 classes
Starting from i: 8
Quantization of the input distribution into 4 classes
Figure DE102018101166A1_0002
Figure DE102018101166A1_0003
Figure DE102018101166A1_0004
Figure DE102018101166A1_0005
Figure DE102018101166A1_0006
Now iterations: 11, 12, 13, 14, 15, 16

BEISPIELHAFTE RECHENVORRICHTUNG EXAMPLE APPENDIX

Wie in 4 dargestellt, schließt ein beispielhaftes Computersystem, auf dem Ausführungsformen der vorliegenden Erfindung implementiert werden können, ein Universalrechensystem mit einer oder mehreren integrierten Schaltungen, wie z. B. ein Rechensystem 400, ein. In seiner elementarsten Ausgestaltung beinhaltet das Rechensystem 400 typischerweise wenigstens eine Verarbeitungseinheit 401 und einen Speicher sowie einen Adress-/Datenbus 409 (oder eine andere Schnittstelle) zum Übermitteln von Informationen. Je nach der genauen Ausgestaltung und Art von Rechensystemumgebung kann ein Speicher flüchtig (wie z. B. RAM 402), nichtflüchtig (wie z. B. ROM 403, Flash-Speicher usw.) oder eine Kombination der beiden sein. In einer oder mehreren Ausführungsformen kann die Verarbeitungseinheit 401 verwendet werden, um die oben mit Bezug auf die 1-3 beschriebenen Operationen oder Berechnungen und die oben aufgeführten beispielhaften computerimplementierten Verfahren und Pseudocodes und Beispiele (ganz oder teilweise) durchzuführen.As in 4 As illustrated, an example computer system on which embodiments of the present invention may be implemented includes a general-purpose computing system having one or more integrated circuits, such as an integrated circuit. B. a computing system 400 , one. In its most elementary embodiment, the computing system includes 400 typically at least one processing unit 401 and a memory and an address / data bus 409 (or another interface) for transmitting information. Depending on the exact design and type of computing system environment, memory may become volatile (such as RAM 402 ), non-volatile (such as ROM 403 , Flash memory, etc.) or a combination of the two. In one or more embodiments, the processing unit 401 used to be the one above with respect to the 1 - 3 described operations or calculations and the above-mentioned exemplary computer-implemented methods and pseudo-codes and examples (in whole or in part) to perform.

Das Computersystem 400 kann ferner ein optionales Grafikteilsystem 405 zum Darstellen von Informationen an den Computerbenutzer, z. B. durch Anzeigen von Informationen auf einer zugehörigen Anzeigevorrichtung 410, die über ein Videokabel 411 verbunden ist, umfassen. Gemäß Ausführungsformen der vorliegenden beanspruchten Erfindung kann das Grafikteilsystem 405 direkt an die Anzeigevorrichtung 410 über das Videokabel 411 gekoppelt sein. In alternativen Ausführungsformen kann die Anzeigevorrichtung 410 in das Rechensystem integriert sein (z. B. ein Laptop- oder Netbook-Anzeigefeld) und erfordert kein Videokabel 411. In einer Ausführungsform können die in den Ablaufschemata 100, 200 und 300 abgebildeten Verfahren ganz oder teilweise durch das Grafikteilsystem 405 in Verbindung mit dem Prozessor 401 und dem Speicher 402 durchgeführt werden. In einer oder mehreren Ausführungsformen kann das Umwandeln von Aktivierungsdaten in unabhängigen Schichten eines neuronalen Netzes durch Erzeugen von Kandidatenumwandlungen unabhängig und gleichzeitig durch mehrere Prozessoren von wenigstens einem aus dem Prozessor 401 und dem Grafikteilsystem 405 durchgeführt werden.The computer system 400 may also include an optional graphics subsystem 405 to present information to the computer user, e.g. By displaying information on an associated display device 410 that have a video cable 411 is connected. According to embodiments of the present claimed invention, the graphics subsystem 405 directly to the display device 410 over the video cable 411 be coupled. In alternative embodiments, the display device 410 integrated into the computing system (eg a laptop or netbook display) and does not require a video cable 411 , In one embodiment, in the flowcharts 100 . 200 and 300 Illustrated methods in whole or in part by the graphics subsystem 405 in connection with the processor 401 and the memory 402 be performed. In one or more embodiments, converting activation data to independent layers of a neural network may be accomplished independently by generating candidate conversions and concurrently by multiple processors of at least one of the processor 401 and the graphics subsystem 405 be performed.

Zudem kann das Rechensystem 400 ferner zusätzliche Merkmale/Funktionalität aufweisen. Beispielsweise kann das Rechensystem 400 ferner zusätzlichen Speicher (entfernbar und/oder nicht entfernbar) wie etwa u. a. magnetische oder optische Platten oder Bänder beinhalten. Ein solcher zusätzlicher Speicher wird in 4 durch die Datenspeichervorrichtung 407 veranschaulicht. Computerspeichermedien schließen flüchtige und nichtflüchtige, entfernbare und nicht entfernbare Medien ein, die mit einem beliebigen Verfahren oder einer beliebigen Technik zum Speichern von Informationen, wie z. B. computerlesbaren Anweisungen, Datenstrukturen, Programmmodulen oder anderen Daten, umgesetzt werden. Der RAM 402, der ROM 403 und die Datenspeichervorrichtung 407 sind allesamt Beispiele für Computerspeichermedien.In addition, the computing system 400 also have additional features / functionality. For example, the computing system 400 and additional memory (removable and / or non-removable) such as, inter alia, magnetic or optical disks or tapes. Such additional memory will be in 4 through the data storage device 407 illustrated. Computer storage media include volatile and nonvolatile, removable and non-removable media, which may be stored by any method or technique for storing information, such as information. As computer-readable instructions, data structures, program modules or other data to be implemented. The RAM 402 , the ROM 403 and the data storage device 407 are all examples of computer storage media.

Das Computersystem 400 umfasst ferner eine optionale alphanumerische Eingabevorrichtung 406, eine optionale Cursorsteuerungs- oder Zeigevorrichtung 407 und eine oder mehrere Signalübertragungsschnittstellen (Eingabe-/Ausgabevorrichtungen, z. B. eine Netzschnittstellenkarte) 408. Die optionale alphanumerisch Eingabevorrichtung 406 kann Informationen und Befehlsauswahlen an den Zentralprozessor 401 übermitteln. Die optionale Cursorsteuerungs- oder Zeigevorrichtung 407 ist an den Bus 409 zum Übermitteln von Benutzereingabeinformationen und Befehlsauswahlen an den Zentralprozessor 401 gekoppelt. Die Signalübertragungsschnittstelle (Eingabe-/Ausgabevorrichtung) 408, die ebenfalls an den Bus 409 gekoppelt ist, kann eine serielle Schnittstelle sein. Die Kommunikationsschnittstelle 409 kann ferner drahtlose Kommunikationsmechanismen beinhalten. Unter Verwendung der Kommunikationsschnittstelle 409 kann das Computersystem 400 kommunikativ an andere Computersysteme über ein Kommunikationsnetz, wie z. B. das Internet oder ein Intranet (z. B. ein lokales Netzwerk), gekoppelt sein oder kann Daten (z. B. ein digitales Fernsehsignal) empfangen.The computer system 400 Also includes an optional alphanumeric input device 406, an optional cursor control or pointing device 407 and one or more signal transmission interfaces (input / output devices, eg, a network interface card) 408. The optional alphanumeric input device 406 can send information and command selections to the central processor 401 to transfer. The optional cursor control or pointing device 407 is on the bus 409 for transmitting user input information and command selections to the central processor 401 coupled. The signal transmission interface (input / output device) 408 who also went to the bus 409 can be a serial interface. The communication interface 409 may further include wireless communication mechanisms. Using the communication interface 409 can the computer system 400 communicatively to other computer systems via a communications network, such. For example, the Internet or an intranet (eg, a local area network) may be coupled or may receive data (eg, a digital television signal).

Obwohl der Gegenstand in für Strukturmerkmale und/oder Verfahrenshandlungen spezifischer Sprache beschrieben wurde, versteht sich, dass der in den beigefügten Ansprüchen definierte Gegenstand nicht unbedingt auf die oben beschriebenen konkreten Merkmale oder Handlungen beschränkt ist. Die oben beschriebenen konkreten Merkmale und Handlungen werden vielmehr als beispielhafte Formen zur Umsetzung der Ansprüche offenbart.Although the subject matter has been described in language specific to structural features and / or procedures, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the particular features or acts described above. Rather, the specific features and acts described above are disclosed as exemplary forms for implementing the claims.

In der vorstehenden Beschreibung wurden Ausführungsformen in Bezug auf zahlreiche konkrete Details beschrieben, die von Umsetzung zu Umsetzung variieren können. Somit ist der einzige und ausschließliche Indikator dafür, was die Erfindung ist und vom Anmelder als die Erfindung vorgesehen ist, der Satz von Ansprüchen, der aus dieser Anmeldung hervorgeht, in der konkreten Form, in dem diese Ansprüche hervorgehen, einschließlich nachfolgender Berichtigungen. Folglich wird der Umfang eines Anspruchs durch Einschränkungen, Elemente, Eigenschaften, Merkmale, Vorteile oder Attribute, die nicht ausdrücklich in diesem Anspruch genannt sind, in keiner Weise eingeschränkt. Demnach sind die Beschreibung und die Zeichnungen in einem veranschaulichenden und nicht einschränkenden Sinne zu verstehen.In the foregoing description, embodiments have been described in terms of numerous specific details that may vary from implementation to implementation. Thus, the sole and exclusive indication of what the invention is and intended by the Applicant to be the invention is the phrase set forth in this application in the specific form in which these claims appear, including any subsequent adjustments. Consequently, the scope of a claim is in no way limited by any limitations, elements, features, features, advantages or attributes not expressly stated in this claim. Accordingly, the description and drawings are to be considered in an illustrative and non-limiting sense.

Claims (15)

Verfahren zum Komprimieren von Daten, wobei das Verfahren umfasst: Referenzieren von Aktivierungsdaten für eine Schicht eines neuronalen Netzes; Erstellen eines Aktivierungshistogramms, wobei das Histogramm eine Vielzahl von Klassen umfasst, wobei die Aktivierungsdaten auf die Vielzahl von Klassen verteilt werden; Erzeugen einer Vielzahl von Kandidatenumwandlungen auf Grundlage des Histogramms, wobei jede Umwandlung der Vielzahl von Kandidatenumwandlungen einen anderen Sättigungsschwellenwert aufweist; Bestimmen einer Divergenz für jede Umwandlung der Vielzahl von Kandidatenumwandlungen gegenüber einem Kalibrierungsdatensatz; und Auswählen des Sättigungsschwellenwerts, welcher der Umwandlung mit der kleinsten Divergenz von der Referenzverteilung höherer Genauigkeit entspricht, wobei die Vielzahl von Kandidatenumwandlungen in einem Format geringerer Genauigkeit ausgedrückt wird, wobei ferner wenigstens eines aus dem Kalibrierungsdatensatz und den Aktivierungsdaten in dem Format höherer Genauigkeit ausgedrückt wird.A method of compressing data, the method comprising: Referencing activation data for a layer of a neural network; Creating an activation histogram, the histogram comprising a plurality of classes, the activation data being distributed among the plurality of classes; Generating a plurality of candidate conversions based on the histogram, each conversion of the plurality of candidate conversions having a different saturation threshold; Determining a divergence for each conversion of the plurality of candidate conversions against a calibration data set; and Selecting the saturation threshold corresponding to the lowest divergence conversion from the higher accuracy reference distribution, wherein the plurality of candidate conversions is expressed in a lesser accuracy format, further wherein at least one of the calibration data set and the activation data is expressed in the higher accuracy format. Verfahren nach Anspruch 1, wobei das Erstellen, das Erzeugen, das Bestimmen und das Auswählen für jede Schicht des neuronalen Netzes durchgeführt werden.Method according to Claim 1 wherein the creating, generating, determining and selecting are performed for each layer of the neural network. Verfahren nach Anspruch 1 oder 2, wobei das Bestimmen der Divergenz Anwenden einer Metrik zum Messen einer gerichteten Divergenz zwischen der Vielzahl von Kandidatenumwandlungen und der Referenzverteilung höherer Genauigkeit umfasst.Method according to Claim 1 or 2 wherein determining the divergence comprises applying a metric to measuring a directional divergence between the plurality of candidate conversions and the higher accuracy reference distribution. Verfahren nach Anspruch 3, wobei die Metrik Bestimmen einer Kullback-Leibler-Divergenz umfasst.Method according to Claim 3 wherein the metric comprises determining a Kullback-Leibler divergence. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Vielzahl von Kandidatenumwandlungen eine Vielzahl von quantisierten Verteilungen von Aktivierungen für die Schicht des neuronalen Netzes umfasst, die einem Wertebereich zwischen 0 und einem maximalen Absolutwert, der in den Aktivierungsdaten umfasst ist, entspricht.The method of any one of the preceding claims, wherein the plurality of candidate conversions comprises a plurality of quantized distributions of neural network layer activations corresponding to a range of values between 0 and a maximum absolute value included in the activation data. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Referenzieren von Aktivierungsdaten Referenzieren von Aktivierungsdaten aus einer Speichervorrichtung umfasst, wobei die Aktivierungsdaten Ausgabedaten umfassen, die durch Anwenden eines neuronalen Netzes auf einen repräsentativen Abschnitt des Kalibrierungsdatensatzes erzeugt werden.The method of claim 1, wherein the referencing of activation data comprises referencing activation data from a storage device, the activation data comprising output data generated by applying a neural network to a representative portion of the calibration data set. Verfahren nach Anspruch 6, wobei das Referenzieren von Aktivierungsdaten aus einer Speichervorrichtung umfasst: Anwenden des neuronalen Netzes auf einen repräsentativen Abschnitt des Kalibrierungsdatensatzes; Erzeugen von Aktivierungsdaten, die einer Ausgabe entsprechen, die durch Anwenden des neuronalen Netzes auf den repräsentativen Abschnitt erzeugt wird, wobei die Ausgabe in dem Format höherer Genauigkeit ausgedrückt wird; Erfassen der Aktivierungsdaten; und Speichern der Aktivierungsdaten in einer Speichervorrichtung.Method according to Claim 6 wherein referencing activation data from a memory device comprises: applying the neural network to a representative portion of the calibration data set; Generating activation data corresponding to an output generated by applying the neural network to the representative portion, the output being expressed in the higher accuracy format; Capture the activation data; and storing the activation data in a storage device. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Erzeugen der Vielzahl von Kandidatenumwandlungen umfasst: Bestimmen einer Anzahl von Kandidatenumwandlungen für die Vielzahl von Kandidatenumwandlungen; iteratives Auswählen eines bestimmten Schwellenwerts aus einer Vielzahl von Sättigungsschwellenwerten, um einer bestimmten Kandidatenumwandlung der Vielzahl von Kandidatenumwandlungen zu entsprechen; Zusammenführen von Datenwerten aus einer zusammenhängenden Folge von Klassen aus dem Histogramm, bis eine verbleibende Anzahl von Klassen in dem Histogramm einem höchsten Absolutwert des Datenformats geringerer Genauigkeit entspricht; und Erfassen der Vielzahl von Kandidatenumwandlungen.The method of any one of the preceding claims, wherein generating the plurality of candidate conversions comprises: Determining a number of candidate conversions for the plurality of candidate conversions; iteratively selecting a particular threshold from a plurality of saturation thresholds to correspond to a particular candidate conversion of the plurality of candidate conversions; Merging data values from a contiguous sequence of classes from the histogram until a remaining number of classes in the histogram corresponds to a highest absolute value of the lower accuracy data format; and Capture the multitude of candidate conversions. Verfahren nach Anspruch 8, wobei bei einem bestimmten Schwellenwert alle Werte aus dem Histogramm über dem bestimmten Sättigungsschwellenwert auf den bestimmten Sättigungsschwellenwert eingegrenzt werden.Method according to Claim 8 in which, at a particular threshold, all values from the histogram above the determined saturation threshold are constrained to the particular saturation threshold. Verfahren nach Anspruch 8 oder 9, wobei das Zusammenführen von Datenwerten Zusammenführen zusammenhängender Folgen von Klassen aus dem Histogramm unter dem bestimmten Sättigungsschwellenwert in im Wesentlichen gleichmäßigen Intervallen umfasst. Method according to Claim 8 or 9 wherein merging data values comprises merging contiguous sequences of classes from the histogram below the determined saturation threshold at substantially uniform intervals. Verfahren nach Anspruch 10, wobei das Zusammenführen zusammenhängender Werte umfasst: Teilen der Klassen des Histogramms durch eine Vielzahl von Verteilungsintervallen; Bestimmen eines Quotientenwerts auf Grundlage der Teilung; und aufeinanderfolgendes Zusammenführen für jedes Verteilungsintervall der Vielzahl von Verteilungsintervallen einer Anzahl N von Werten aus den Klassen des Histogramms, wobei N gleich dem Quotientenwert ist.Method according to Claim 10 wherein merging contiguous values comprises: dividing the classes of the histogram by a plurality of distribution intervals; Determining a quotient value based on the division; and sequentially merging for each distribution interval the plurality of distribution intervals of a number N of values from the classes of the histogram, where N equals the quotient value. Verfahren nach Anspruch 10 oder 11, wobei die Vielzahl von Verteilungsintervallen einem Absolutwert entspricht, der mit dem Format geringerer Genauigkeit ausgedrückt wird.Method according to Claim 10 or 11 wherein the plurality of distribution intervals corresponds to an absolute value expressed with the lesser accuracy format. Verfahren nach einem der Ansprüche 10 bis 12, wobei das Format geringerer Genauigkeit ein 8-Bit-Ganzzahl(INT8)-Datenformat umfasst.Method according to one of Claims 10 to 12 where the lower precision format comprises an 8-bit integer (INT8) data format. Verfahren nach einem der Ansprüche 10 bis 13, wobei die Vielzahl von Verteilungsintervallen 127 Verteilungsintervalle umfasst.Method according to one of Claims 10 to 13 wherein the plurality of distribution intervals comprises 127 distribution intervals. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Erstellen des Histogramms Erstellen des Histogramms mit einer vorgegebenen Anzahl von Klassen umfasst.The method of any one of the preceding claims, wherein creating the histogram comprises creating the histogram having a predetermined number of classes.
DE102018101166.0A 2017-01-20 2018-01-19 AUTOMATED METHOD FOR CONVERTING TO A DATA FORMAT OF LESS ACCURACY Pending DE102018101166A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762448909P 2017-01-20 2017-01-20
US62/448,909 2017-01-20
US15/838,273 US10997492B2 (en) 2017-01-20 2017-12-11 Automated methods for conversions to a lower precision data format
US15/838,273 2017-12-11

Publications (1)

Publication Number Publication Date
DE102018101166A1 true DE102018101166A1 (en) 2018-07-26

Family

ID=62813072

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018101166.0A Pending DE102018101166A1 (en) 2017-01-20 2018-01-19 AUTOMATED METHOD FOR CONVERTING TO A DATA FORMAT OF LESS ACCURACY

Country Status (1)

Country Link
DE (1) DE102018101166A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111401518A (en) * 2020-03-04 2020-07-10 杭州嘉楠耘智信息科技有限公司 Neural network quantization method and device and computer readable storage medium
CN112434781A (en) * 2019-08-26 2021-03-02 上海寒武纪信息科技有限公司 Method, apparatus and related product for processing data

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112434781A (en) * 2019-08-26 2021-03-02 上海寒武纪信息科技有限公司 Method, apparatus and related product for processing data
CN111401518A (en) * 2020-03-04 2020-07-10 杭州嘉楠耘智信息科技有限公司 Neural network quantization method and device and computer readable storage medium

Similar Documents

Publication Publication Date Title
US10997492B2 (en) Automated methods for conversions to a lower precision data format
DE102017113232A1 (en) TENSOR PROCESSING USING A FORMAT WITH LOW ACCURACY
CN110135580B (en) Convolution network full integer quantization method and application method thereof
DE102018130084A1 (en) Dynamic quantization of neural networks
DE112018004693T5 (en) IMPROVE THE EFFICIENCY OF A NEURONAL NETWORK
DE112019003529T5 (en) Data representation for dynamic accuracy in the cores of neural networks
DE102018128080A1 (en) Method and device for quantizing an artificial neural network
DE102020125207A1 (en) UNATTENDED TRAINING FROM NEURONAL NETWORK TO IMAGE COMPRESSION WITH HIGH DYNAMIC SCOPE
CN104008538A (en) Super-resolution method based on single image
DE102013213397A1 (en) Method and apparatus for providing support point data for a data-based function model
DE112019001799T5 (en) EXTENDED FORMATTING OF BINARY FLOATING COMMA NUMBERS WITH LOWER ACCURACY
DE112020003600T5 (en) MACHINE LEARNING HARDWARE WITH PARAMETER COMPONENTS WITH REDUCED ACCURACY FOR EFFICIENT PARAMETER UPDATE
DE112020004031T5 (en) SYSTEM-RELATED SELECTIVE QUANTIZATION FOR PERFORMANCE OPTIMIZED DISTRIBUTED DEEP LEARNING
DE112019005048T5 (en) Hyperparameter optimization method, device and program
DE102022119386A1 (en) METHOD AND APPARATUS FOR PERFORMING DENSE PREDICTION USING TRANSFORMER BLOCKS
DE112020000448T5 (en) CAMERA SELF CALIBRATION NETWORK
DE202019006019U1 (en) Techniques for analyzing vehicle design deviations using deep learning with neural networks
DE112020004471T5 (en) Inference device, training device, inference method and training method
DE202011110226U1 (en) Coupling method or simulation device for non-iterative co-simulation
DE112023000011T5 (en) A primary frequency modulation control system of the thermal power generation unit with small disturbances
EP1437685A2 (en) Method for segmenting three-dimensional structures
DE102018101166A1 (en) AUTOMATED METHOD FOR CONVERTING TO A DATA FORMAT OF LESS ACCURACY
DE102022113243A1 (en) Score-based generative modeling in latent space
DE102014225039A1 (en) Method and apparatus for providing sparse Gaussian process models for calculation in an engine control unit
DE102020103414A1 (en) COMPRESSION METHODS FOR DATA STRUCTURES SUITABLE FOR ARTIFICIAL NEURAL NETWORKS

Legal Events

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