TensorFlow 2.x - 3.0 简体中文

Vitis AI 用户指南 (UG1414)

Document ID
UG1414
Release Date
2023-02-24
Version
3.0 简体中文

量化 API

vitis_vai.quantize(
input_float, 
quantize_strategy = 'pof2s', 
custom_quantize_strategy = None,
calib_dataset = None, 
calib_steps = None, 
calib_batch_size = None, 
save_path = './vai_wego/quantized.h5', 
verbose = 0, 
add_shape_info = False, 
dump = False, 
dump_output_dir = './vai_dump/') 

此函数执行浮点模型的训练后量化 (PTQ),包括模型最优化、权重量化和激活量化校准。

参数

input_float
要量化的 tf.keras.Model 浮点对象。
quantize_strategy
表示量化策略类型的字符串对象。可用值包括:pof2s、pof2s_tqt、fs 和 fsx。pof2s 是默认策略,使用 2 的幂值比例的量化器和 Straight-Through-Estimator(直通式估算器)。pof2s_tqt 是 Vitis AI 1.4 中引入的策略,在 2 的幂值比例的量化器中使用 Trained-Threshold(经训练的阈值),这样可能会为 QAT 生成更好的结果。fs 是 Vitis AI 2.5 中引入的新量化策略,它使用浮点比例量化来计算 Conv2D、DepthwiseConv2D、Conv2DTranspose 和 Dense 层的输入和权重。相比于 fs 量化策略,fsx 量化策略会对更多类型的层执行量化,例如,Add、MaxPooling2D 和 AveragePooling2D。此外,它还会量化偏差和激活。
注释:
  • pof2s_tqt 策略只能用于 QAT,并且应与 init_quant=True 一起使用以获得最佳性能。
  • fs 和 fsx 策略是专为具有浮点支持的目标器件设计的。DPU 当前不支持浮点,因此以这些量化策略进行量化的模型无法部署到 DPU。
custom_quantize_strategy
字符串对象,表示定制量化策略 JSON 文件的路径。
calib_dataset
tf.data.Dataset、keras.utils.Sequence 或 np.numpy 对象,表示用于校准的代表性数据集。您可以将 eval_dataset、train_dataset 或其它数据集整体或其中一部分用作 calib_dataset。
calib_steps
int 对象,表示校准步骤总数。可忽略,默认值为 None。如果 calib_dataset 是 tf.data 数据集、生成器或 keras.utils.Sequence 实例且步骤数为 None,校准将运行到数据集耗尽为止。此实参不支持阵列输入。
calib_batch_size
int 对象,表示用于校准的每批次样本数。如果“calib_dataset”为数据集、生成器或 keras.utils.Sequence 实例形式,则批次大小由数据集本身控制。如果“calib_dataset”为 numpy.array 对象形式,则默认批次大小为 32。
save_path
该字符串对象表示量化模型的保存目录。
verbose
int 对象,表示日志记录的详细程度。详细程度值越大,生成的 log 日志记录越详细。默认值为 0。
add_shape_info
bool 对象,表示是否要为定制层添加形状推断信息。对于含有定制层的模型,必须设为 True。
dump
用于启用或禁用转储的标志。如果 dump=False,则禁用转储,如果 dump=True ,则启用转储。
dump_output_dir
该字符串对象表示转储结果的保存目录。

如需了解有关如何在 WeGO TensorFlow 2.x 中使用即时量化的更多信息,请参阅 WeGO 示例