Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Quantisierungsbewusstes Training

Verwaltet durch TensorFlow-Modelloptimierung

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 häufig besser ist.

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

Überblick

Quantisierungsbewusstes Training emuliert die Inferenzzeitquantisierung und erstellt ein Modell, mit dem nachgeschaltete Tools tatsächlich quantisierte Modelle erstellen. Die quantisierten Modelle verwenden eine geringere Genauigkeit (z. B. 8-Bit anstelle von 32-Bit-Float), was zu Vorteilen während der Bereitstellung führt.

Mit Quantisierung bereitstellen

Die Quantisierung bringt Verbesserungen durch Modellkomprimierung und Latenzreduzierung. Mit den API-Standardeinstellungen verringert sich die Modellgröße um das Vierfache, und in den getesteten Backends werden in der Regel 1,5 bis 4 Mal Verbesserungen der CPU-Latenz festgestellt. Letztendlich können Latenzverbesserungen bei kompatiblen Beschleunigern für maschinelles Lernen wie EdgeTPU und NNAPI festgestellt werden.

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 (z. B. Anzahl der Bits) und bis zu einem gewissen Grad die zugrunde liegenden Algorithmen konfigurieren. Mit diesen Änderungen aus den API-Standardeinstellungen gibt es keinen unterstützten Pfad zur Bereitstellung.

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

API-Kompatibilität

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

  • tf.keras : tf.keras mit nur 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 folgenden Bereichen hinzuzufügen:

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

Allgemeine Unterstützungsmatrix

Support ist in folgenden Bereichen verfügbar:

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

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

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

Ergebnisse

Bildklassifizierung mit Werkzeugen

Modell Nicht quantisierte Top-1-Genauigkeit Quantisierte 8-Bit-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 bewertet.

Bildklassifizierung für Technik

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

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

Beispiele

Zusätzlich zum quantisierungsbewussten Trainingsbeispiel finden Sie die folgenden Beispiele:

  • CNN-Modell auf der handgeschriebenen MNIST-Ziffernklassifizierungsaufgabe mit Quantisierung: Code

Hintergrundinformationen zu etwas ähnlichem finden Sie in die Quantisierung und die Ausbildung von neuronalen Netzen für effizientes Integer-Arithmetik-Only Inference Papier . In diesem Dokument werden einige Konzepte vorgestellt, die von diesem Tool verwendet werden. Die Implementierung ist nicht genau dieselbe, und in diesem Tool werden zusätzliche Konzepte verwendet (z. B. Quantisierung pro Achse).