Квантование после обучения

Квантование после обучения включает в себя общие методы, позволяющие уменьшить задержку процессора и аппаратного ускорителя, обработку, мощность и размер модели с небольшим ухудшением точности модели. Эти методы можно реализовать на уже обученной модели TensorFlow с плавающей запятой и применить во время преобразования TensorFlow Lite. Эти методы включены в качестве опций в конвертере TensorFlow Lite .

Чтобы сразу перейти к комплексным примерам, см. следующие руководства:

Квантование весов

Веса можно преобразовать в типы с пониженной точностью, например, в 16-битные числа с плавающей запятой или 8-битные целые числа. Обычно мы рекомендуем 16-битные числа с плавающей запятой для ускорения графического процессора и 8-битные целые числа для выполнения процессора.

Например, вот как задать 8-битное целочисленное весовое квантование:

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()

При выводе наиболее критически интенсивные части вычисляются с использованием 8 бит вместо чисел с плавающей запятой. Существуют некоторые издержки производительности, связанные со временем вывода, по сравнению с квантованием весов и активаций ниже.

Для получения дополнительной информации см. руководство по квантованию после обучения TensorFlow Lite.

Полное целочисленное квантование весов и активаций

Улучшите задержку, обработку и энергопотребление, а также получите доступ к аппаратным ускорителям, работающим только с целыми числами, обеспечив квантование как весов, так и активаций. Для этого требуется небольшой репрезентативный набор данных.

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()

Для удобства полученная модель по-прежнему будет принимать входные и выходные данные с плавающей запятой.

Для получения дополнительной информации см. руководство по квантованию после обучения TensorFlow Lite.