Quantisierungsbewusstes Training

Verwaltet von TensorFlow Model Optimization

Es gibt zwei Formen der Quantisierung: Quantisierung nach dem Training und quantisierungsbewusstes Training. Beginnen Sie mit der Quantisierung nach dem Training, da diese einfacher zu verwenden ist, obwohl quantisierungsbewusstes Training für die Modellgenauigkeit oft besser ist.

Diese Seite bietet einen Überblick über quantisierungsbewusstes Training, damit Sie feststellen können, wie es zu Ihrem Anwendungsfall passt.

Überblick

Das quantisierungsbewusste Training emuliert die Inferenzzeit-Quantisierung und erstellt ein Modell, das nachgeschaltete Tools verwenden, um tatsächlich quantisierte Modelle zu erstellen. Die quantisierten Modelle verwenden eine niedrigere Genauigkeit (zB 8-Bit statt 32-Bit-Float), was zu Vorteilen bei der Bereitstellung führt.

Bereitstellung mit Quantisierung

Die Quantisierung bringt Verbesserungen durch Modellkompression und Latenzreduktion. Mit den API-Standardeinstellungen schrumpft die Modellgröße um das Vierfache, und wir sehen in den getesteten Backends normalerweise zwischen 1,5 und 4 Mal Verbesserungen der CPU-Latenz. Schließlich sind Latenzverbesserungen bei kompatiblen Beschleunigern für maschinelles Lernen wie EdgeTPU und NNAPI zu sehen.

Die Technik wird in der Produktion in Sprach-, Bild-, Text- und Übersetzungsanwendungsfällen verwendet. Der Code unterstützt derzeit eine Teilmenge dieser Modelle .

Experimentieren Sie mit Quantisierung und zugehöriger Hardware

Benutzer können die Quantisierungsparameter (zB Anzahl der Bits) und bis zu einem gewissen Grad die zugrunde liegenden Algorithmen konfigurieren. Beachten Sie, dass es mit diesen Änderungen gegenüber den API-Standardeinstellungen derzeit keinen unterstützten Pfad für die Bereitstellung in einem Back-End gibt. Beispielsweise unterstützen die TFLite-Konvertierung und Kernel-Implementierungen nur die 8-Bit-Quantisierung.

APIs, die für diese Konfiguration spezifisch sind, sind experimentell und unterliegen nicht der Abwärtskompatibilität.

API-Kompatibilität

Benutzer können die Quantisierung mit den folgenden APIs anwenden:

  • Modellbau: tf.keras nur mit sequentiellen und funktionalen Modellen.
  • TensorFlow-Versionen: TF 2.x für tf-nightly.
    • tf.compat.v1 mit einem TF 2.X-Paket wird nicht unterstützt.
  • TensorFlow-Ausführungsmodus: Eifrige Ausführung

Es steht auf unserer Roadmap, Unterstützung in den folgenden Bereichen hinzuzufügen:

  • Modellerstellung: Klären Sie, wie untergeordnete Modelle auf keine Unterstützung beschränkt sind
  • Verteiltes Training: tf.distribute

Allgemeine Support-Matrix

Unterstützung gibt es in folgenden Bereichen:

  • Modellabdeckung : Modelle, die zugelassene Layer verwenden , BatchNormalization, wenn es auf Conv2D- und DepthwiseConv2D-Layer folgt, und in begrenzten Fällen Concat .
  • Hardwarebeschleunigung: Unsere API-Standardeinstellungen sind unter anderem mit der Beschleunigung auf EdgeTPU-, NNAPI- und TFLite-Backends kompatibel. Siehe den Vorbehalt in der Roadmap.
  • Bereitstellung mit Quantisierung: Derzeit wird nur die Quantisierung pro Achse für Faltungsschichten, nicht die Quantisierung pro Tensor unterstützt.

Es steht auf unserer Roadmap, Unterstützung in den folgenden Bereichen hinzuzufügen:

  • Modellabdeckung: erweitert um RNN/LSTMs und allgemeine Concat-Unterstützung.
  • Hardwarebeschleunigung: Stellen Sie sicher, dass der TFLite-Konverter vollständig ganzzahlige Modelle erzeugen kann. Weitere Informationen finden Sie in dieser Ausgabe .
  • Experimentieren Sie mit Anwendungsfällen der Quantisierung:
    • Experimentieren Sie mit Quantisierungsalgorithmen, die sich über Keras-Ebenen erstrecken oder den Trainingsschritt erfordern.
    • APIs stabilisieren.

Ergebnisse

Bildklassifizierung mit Tools

Modell Nicht quantisierte Top-1-Genauigkeit 8-Bit-quantisierte Genauigkeit
MobilenetV1 224 71,03 % 71,06%
Resnet v1 50 76,3% 76,1%
MobilenetV2 224 70,77% 70,01 %

Die Modelle wurden auf Imagenet getestet und sowohl in TensorFlow als auch in TFLite ausgewertet.

Bildklassifizierung für Technik

Modell Nicht quantisierte Top-1-Genauigkeit 8-Bit-quantisierte Genauigkeit
Nasnet-Mobile 74 % 73%
Resnet-v2 50 75,6% 75%

Die Modelle wurden auf Imagenet getestet und in TensorFlow und TFLite ausgewertet.

Beispiele

Sehen Sie sich neben dem quantisierungsbewussten Trainingsbeispiel die folgenden Beispiele an:

  • CNN-Modell auf der MNIST-Aufgabe zur handschriftlichen Ziffernklassifizierung mit Quantisierung: Code

Hintergrundinformationen zu etwas Ähnlichem finden Sie im Papier Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference . In diesem Whitepaper werden einige Konzepte vorgestellt, die dieses Tool verwendet. Die Implementierung ist nicht genau die gleiche, und in diesem Tool werden zusätzliche Konzepte verwendet (zB Quantisierung pro Achse).