Google I/O to frajda! Nadrobić zaległości w sesjach TensorFlow Zobacz sesje

Kwantyzacja potreningowa

Kwantyzacja potreningowa obejmuje ogólne techniki zmniejszania opóźnienia procesora i akceleratora sprzętowego, przetwarzania, mocy i rozmiaru modelu przy niewielkim pogorszeniu dokładności modelu. Techniki te można wykonać na już wyszkolonym modelu pływakowym TensorFlow i zastosować podczas konwersji TensorFlow Lite. Techniki te są włączone jako opcje w konwerterze TensorFlow Lite .

Aby przejść od razu do kompleksowych przykładów, zapoznaj się z następującymi samouczkami:

Odważniki kwantyzujące

Wagi można konwertować na typy o zmniejszonej precyzji, takie jak 16-bitowe liczby zmiennoprzecinkowe lub 8-bitowe liczby całkowite. Ogólnie zalecamy 16-bitowe liczby zmiennoprzecinkowe do akceleracji GPU i 8-bitowe liczby całkowite do wykonywania na CPU.

Na przykład, oto jak określić 8-bitową kwantyzację wagi liczb całkowitych:

import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_quant_model = converter.convert()

Wnioskując, najbardziej krytyczne części są obliczane za pomocą 8 bitów zamiast liczb zmiennoprzecinkowych. Istnieje pewien narzut wydajności w czasie wnioskowania, w odniesieniu do kwantyzacji zarówno wag, jak i aktywacji poniżej.

Aby uzyskać więcej informacji, zobacz przewodnik po kwantyzacji TensorFlow Lite po treningu .

Pełna kwantyzacja liczb całkowitych wag i aktywacji

Popraw opóźnienia, przetwarzanie i zużycie energii oraz uzyskaj dostęp do akceleratorów sprzętowych obsługujących tylko liczby całkowite, upewniając się, że zarówno wagi, jak i aktywacje są kwantowane. Wymaga to małego reprezentatywnego zestawu danych.

import tensorflow as tf

def representative_dataset_gen():
  for _ in range(num_calibration_steps):
    # Get sample input data as a numpy array in a method of your choosing.
    yield [input]

converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.representative_dataset = representative_dataset_gen
tflite_quant_model = converter.convert()

Wynikowy model będzie nadal przyjmował dane wejściowe i wyjściowe typu float dla wygody.

Aby uzyskać więcej informacji, zobacz przewodnik po kwantyzacji TensorFlow Lite po treningu .