# 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.
representative_dataset
Итератор, возвращающий словарь {input_key: input_value} или отображение ключа сигнатуры в словарь {input_key: input_value}, который предоставляет данные калибровки для квантования модели. Для модели PTQ необходимо указать representative_dataset. Его можно передать либо через этот параметр, либо через поле representative_datasets в QuantizationOptions.
overwrite_output_directory
Если задано значение true, выходной каталог перезаписывается, только если он не пуст. Значение по умолчанию — false.
Возвращает
Объект SavedModel с примененным квантованием TF или None, если квантование не выполняется.
Вызывает исключения
ValueError
Если: 1) для модели без QAT не указан representative_dataset, необходимый для статического квантования диапазона; 2) указано недопустимое значение метода квантования; или 3) набор representative dataset передан и через аргумент, и через QuantizationOptions.
ValueError
Если указанный метод квантования пока не поддерживается.