# Quantizing a model trained with QAT.
quantization_options = tf.quantization.experimental.QuantizationOptions(
signature_keys=['your_signature_key'],
)
tf.quantization.experimental.quantize_saved_model(
'/tmp/input_model',
'/tmp/output_model',
quantization_options=quantization_options,
)
# When quantizing a model trained without QAT (Post-Training Quantization),
# a representative dataset is required.
representative_dataset = [{"input": tf.random.uniform(shape=(3, 3))}
for _ in range(256)]
tf.quantization.experimental.quantize_saved_model(
'/tmp/input_model',
'/tmp/output_model',
quantization_options=quantization_options,
representative_dataset={'your_signature_key': representative_dataset},
)
# In addition to preset quantization methods, fine-grained control of
# quantization for each component is also supported.
_QuantizationComponentSpec = (
tf.quantization.experimental.QuantizationComponentSpec
)
quantization_options = tf.quantization.experimental.QuantizationOptions(
signature_keys=['your_signature_key'],
quantization_method=tf.quantization.experimental.QuantizationMethod(
quantization_component_specs=[
_QuantizationComponentSpec(
quantization_component=(
_QuantizationComponentSpec.COMPONENT_ACTIVATION
),
tensor_type=_QuantizationComponentSpec.TENSORTYPE_INT_8,
)
]
)
)
tf.quantization.experimental.quantize_saved_model(
'/tmp/input_model',
'/tmp/output_model',
quantization_options=quantization_options,
)
Аргументы
saved_model_path
Путь к сохранённой модели. Если representative_dataset не предоставлен, это должна быть модель, обученная с помощью QAT.
output_directory
Путь для сохранения выходной SavedModel. Установите overwrite_output_directory в True, чтобы перезаписать любое существующее содержимое в каталоге, если он не пуст.
quantization_options
Набор опций для квантования. Если None, используется статическое квантование диапазона с пост-тренингом и XLA opset по умолчанию.
representative_dataset
Итератор, возвращающий словарь {input_key: input_value} или отображение от ключа подписи к словарю {input_key: input_value}, который предоставляет калибровочные данные для квантования модели. Представитель должен быть предоставлен, когда модель является PTQ моделью. Его можно предоставить либо через этот параметр, либо через поле representative_datasets в QuantizationOptions.
overwrite_output_directory
Если установлено в true, перезаписывает выходной каталог, если он не пуст. Значение по умолчанию - false.
Возвращаемое значение
Объект SavedModel с применённым квантованием TensorFlow или None, если квантование не выполнено.
Исключения
ValueError
Когда 1) representative_dataset не предоставлен для модели без QAT для включения статического квантования диапазона, 2) предоставлено неверное значение в качестве метода квантования или 3) предоставлены калибровочные данные как через аргумент, так и через QuantizationOptions.
ValueError
Когда указанный метод квантования ещё не поддерживается.