量化工具包 API [English]
Calibrator(quantization_bit, granularity='per-tensor', calib_method='minmax')
实参
- quantization_bit (string):
- 'int8' 代表全 8 位整数量化。
- 'int16' 代表全 16 位整数量化。
- granularity (string):
- 若 granularity = 'per-tensor'(默认),则整个张量只有一个指数。
- 若 granularity = 'per-channel',则卷积层的每个通道都有一个指数。
- calib_method (string):
- 若 calib_method = 'minmax'(默认),则阈值得自校准数据集每层输出的最小值和最大值。
- 若 calib_method = 'entropy',则阈值得自 KL 散度。
Calibrator.check_model(model_proto)
检查模型的适配性。
实参
- model_proto (ModelProto):一个 FP32 ONNX 模型。
返回值
- -1:模型不适配。
Calibrator.set_method(granularity, calib_method)
配置量化。
实参
- granularity (string):
- 若 granularity = 'per-tensor',则整个张量只有一个指数。
- 若 granularity = 'per-channel',则卷积层的每个通道都有一个指数。
- calib_method (string):
- 若 calib_method = 'minmax',则阈值得自校准数据集每层输出的最小值和最大值。
- 若 calib_method = 'entropy',则阈值得自 KL 散度。
Calibrator.set_providers(providers)
配置 ONNX Runtime 的运行环境提供方。
实参
- providers (list of strings):列表中的运行环境提供方,如 'CPUExecutionProvider'、'CUDAExecutionProvider'。
Calibrator.generate_quantization_table(model_proto, calib_dataset, pickle_file_path)
生成量化表。
实参
- model_proto (ModelProto):一个 FP32 ONNX 模型。
- calib_dataset (ndarray):用于计算阈值的校准数据集。数据集越大,生成量化表的时间越长。
- pickle_file_path (string):存储量化参数的 pickle 文件路径。
Calibrator.export_coefficient_to_cpp(model_proto, pickle_file_path, target_chip, output_path, file_name, print_model_info=False)
导出量化参数。
Arguments
- model_proto (ModelProto): 一个 FP32 ONNX 模型。
- pickle_file_path (string): 存储量化参数的 pickle 文件路径。
- target_chip (string): 目前支持 'esp32'、'esp32s2'、'esp32c3' 、'esp32s3'。
- output_path (string): 存储输出文件的路径。
- file_name (string): 输出文件的名称。
- print_model_info(bool):
- False (default): 不打印任何信息。
- True: 打印模型的相关信息。
Evaluator(quantization_bit, granularity, target_chip)
实参
- quantization_bit (string):
- 'int8' 代表全 8 位整数量化。
- 'int16' 代表全 16 位整数量化。
- granularity (string):
- 若 granularity = 'per-tensor',则整个张量只有一个指数。
- 若 granularity = 'per-channel',则卷积层的每个通道都有一个指数。
- target_chip (string):默认是 'esp32s3'。
Evaluator.check_model(model_proto)
检查模型的适配性。
实参
- model_proto (ModelProto):一个 FP32 ONNX 模型。
Return
- -1:模型不适配。
Evaluator.set_target_chip(target_chip)
配置模拟芯片环境。
实参
- target_chip (string):目前仅支持 'esp32s3'。
Evaluator.set_providers(providers)
配置 ONNX Runtime 的运行环境提供方。
实参
- providers (list of strings):列表中的运行环境提供方,如 'CPUExecutionProvider'、'CUDAExecutionProvider'。
Evaluator.generate_quantized_model(model_proto, pickle_file_path)
生成量化后的模型。
实参
- model_proto (ModelProto):一个 FP32 ONNX 模型。
- pickle_file_path (string):存储 FP32 ONXX 模型所有量化参数的 pickle 文件路径。该 pickle 文件必须包含模型计算图所有输入和输出节点的量化参数。
Evaluator.evaluate_quantized_model(batch_fp_input, to_float=False)
获取量化模型的输出。
实参
- batch_fp_input (ndarray):批量浮点输入。
- to_float (bool):
- False(默认):直接返回输出。
- True:输出转换为浮点值。
返回值
outputs 和 output_names 组成的元组:
- outputs (list of ndarray):量化模型的输出。
- output_names (list of strings):输出名称。