TensorFlow 2.x - 3.5 简体中文

Vitis AI 用户指南 (UG1414)

Document ID
UG1414
Release Date
2023-09-28
Version
3.5 简体中文

量化 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 的幂值比例量化器中经过训练的阈值,可生成更好的 QAT 结果。fs 是 Vitis AI 2.5 中引入的量化策略,它为 Conv2D、DepthwiseConv2D、Conv2DTranspose 和 Dense 层的输入和权重执行浮点比例量化。另一方面,相比于 fs 量化策略,fsx 能将量化策略扩展到更多类型的层,包括 Add、MaxPooling2D 和 AveragePooling2D,并且还在量化中引入了偏差和激活。
注释:
  • pof2s_tqt 只能用于 init_quant=True 的 QAT,以获得最佳性能。
  • fs 和 fsx 策略是专为具有浮点支持的目标器件设计的。DPU 当前不支持浮点,因此以这些量化策略进行量化的模型无法部署到 DPU。
custom_quantize_strategy
string 对象。表示定制量化策略 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 实例且 steps 为 None,校准会运行到数据集耗尽为止。阵列输入不支持此实参。
calib_batch_size
int 对象。表示用于校准的每批次样本数。如果 calib_dataset 为数据集、生成器或 keras.utils.Sequence 实例形式,则批次大小由数据集本身控制。如果 calib_dataset 采用 numpy.array 对象形式,那么默认批次大小设为 32。
save_path
string 对象。量化模型的保存目录。
verbose
int 对象。表示日志记录的详细程度。详细程度值越大,生成的 log 日志记录越详细。默认值为 0。
add_shape_info
bool 对象。用于判定是否要为定制层添加形状推断信息。对于含有定制层的模型,其值必须设为 True。
dump
用于启用或禁用转储的标志。如果 dump=False,则禁用转储,如果 dump=True,则启用转储。
dump_output_dir
string 对象。表示转储结果的保存目录。

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