
Quantisierung
Quantisierung ist der Prozess der Reduzierung der Auflösungsgenauigkeit von Modellparametern. Standardmäßig sind die Gewichte von neuronalen Netzen in 32-Bit aufgelöst. Ziel der Quantisierung ist, die 32-Bit Darstellung auf eine niedrigere Bit-Darstellung umzuwandeln. Gewichte und Bias werden dementsprechend von hochpräzisen Darstellungen (z. B. 32-Bit-Gleitkommazahlen) in Darstellungen mit niedrigerer Genauigkeit (z. B. 8-Bit-Ganzzahlen) umgewandelt. Dies reduziert den benötigten Speicherplatz und verbessert die Inferenz-Effizienz. Ein Beispiel einer Quantisierung ist in Abbildung 41 dargestellt.
Im folgenden Abschnitt werden die Vor- und Nachteile von Quantisierung ausführlich erläutert:
Vorteile:
Reduzierter Speicherbedarf: Die Quantisierung reduziert die Präzision der Modellparameter (z. B. von 32-Bit-Floats auf 8-Bit-Integer), was den Speicherbedarf für das Modell erheblich verringert.
Schnellere Inferenz auf Edge-Geräten: Kleinere Modelle und die reduzierte Präzision führen zu weniger Rechenaufwand, was die Inferenzzeiten auf Edge-Geräten beschleunigt.
Effizientere Nutzung von Hardwarebeschleunigern: Quantisierte Modelle sind oft besser auf spezialisierte Hardwarebeschleuniger (wie NPUs, TPUs) abgestimmt, die für niedrige Präzision optimiert sind, was zu einer effizienteren Nutzung führt.
Nachteile:
Geringere Modellgenauigkeit: Die Reduzierung der Präzision kann zu einem Verlust an Modellgenauigkeit führen, insbesondere bei komplexen Modellen oder wenn die Quantisierung nicht sorgfältig durchgeführt wird.
Erfordert zusätzlichen Implementierungsaufwand: Die Implementierung von Quantisierung erfordert zusätzlichen Entwicklungsaufwand, einschließlich der Notwendigkeit, das Modell nach der Quantisierung neu zu kalibrieren und zu testen, um Genauigkeitsverluste zu minimieren.
Jede der folgenden Quantisierungsarten kann auf verschiedene Weisen verwendet werden wie beispielsweise:
Lineare Skalierung: Übersetzt kontinuierliche Werte in diskrete Ebenen.
Wird häufig verwendet, wenn eine gleichmäßige Verteilung der quantisierten Werte bevorzugt wird.
Nützlich, wenn eine feine Abstufung der Werte benötigt wird, um die Genauigkeit des Modells zu erhalten, speziell, wenn die Eingangsdaten eine breite Spannweite aufweisen.
Nicht lineare Skalierung: Passt die Werte anhand einer nicht linearen Funktion an.
Erlaubt eine flexible Anpassung der Quantisierungsgrenzen je nach Bedarf.
Kann dazu beitragen, die Genauigkeit in Bereichen mit erhöhtem Informationsgehalt zu verbessern.
Mehr erfahren: All About Circuits/Neural Network Quantization: What Is It and How Does It Relate to TinyML?, deci/The Ultimate Guide to Deep Learning Model Quantization and Quantization-Aware Training, Datature/Introducing Post-Training Model Quantization Feature and Mechanics Explained
Statische Quantisierung (Post-training quantization, PTQ)
Die Modellparameter (Gewichte und Bias) werden vor der Inferenz quantisiert und bleiben während der Inferenz fest. Dies beinhaltet die Zuordnung von Gleitkommawerten zu einer festen Anzahl von diskreten Stufen oder ganzzahligen Darstellungen. Sie reduziert den Speicherverbrauch und beschleunigt die Inferenz, kann jedoch aufgrund der begrenzten Präzision der quantisierten Darstellungen zu einem Verlust an Modellgenauigkeit führen. Abbildung 42 zeigt, welche Teile in der PTQ beinhaltet sind.
Hier wird ein TensorFlow-Modell in ein TensorFlow Lite-Modell konvertiert, wobei die Quantisierung auf int8-Basis durchgeführt werden kann, um die Modellgröße zu reduzieren und die Inferenzgeschwindigkeit zu verbessern.
Mehr erfahren: TensorFlow/Post-training quantization, PyTorch/Post Training Quantization (PTQ)
Dynamische Quantisierung
Die Modellparameter werden dynamisch während der Inferenz quantisiert, ohne vorherige Quantisierung der Gewichte. Die Quantisierung erfolgt während der Ausführung des Modells und passt sich den Eingabedaten an. Sie erreicht nahezu dieselben Vorteile hinsichtlich Speicher- und Recheneffizienz wie die statische Quantisierung, während der Verlust der Modellgenauigkeit geringer ausfallen kann.
Mehr erfahren: Google AI/Post-training dynamic range quantization, PyTorch/Dynamic Quantization
Quantisierungs-bewusstes Training (Quantization-Aware Training, QAT)
Eine Technik, um Modelle so zu trainieren, dass sie die Effekte der Quantisierung während des Trainings simulieren. Hilft den Modellen, unter reduzierter Präzision gut zu performen, indem während des Trainings quantisierungsbezogene Effekte berücksichtigt werden. Beinhaltet die Verwendung von quantisierten Operationen und simulierter Quantisierung, um das Modell toleranter gegenüber durch Quantisierung verursachten Fehlern zu machen. Abbildung 43 visualisiert, wo das QAT eingeordnet wird.
In diesem Code wird das Modell durch QAT optimiert, was dazu beiträgt, die Genauigkeit des Modells zu verbessern und gleichzeitig die Modellgröße zu reduzieren.
Mehr erfahren: ResearchGate/Quantization and Deployment of Deep Neural Networks on Microcontrollers, TensorFlow/Quantization aware training
Last updated