使用modelslim工具label_free量化时,校验输入数据失败
2023/06/25
77
问题信息
问题来源 | 产品大类 | 关键字 |
---|---|---|
官方 | 模型推理 | label_free、calib_data格式 |
问题现象描述
使用modelslim工具label_free量化校验输入数据失败,所有数据都无法被识别。
图1 报错截图
![点击放大](https://www.hiascend.com/doc_center/source/zh/case/7a1c4f1e88c343aab8b3cdf9f262f835/figure/zh-cn_image_0000001559043148.png)
原因分析
可能是输入数据calib_data格式有误导致。
排查方法
1. 排查是否为双层list结构。由于calib_data可以输入多个batch的数据,因此需提供两层list。
2. 排查数据是否为numpy格式。
解决措施
修改后,样例代码如下,能够跑通量化。
from modelslim.onnx.post_training_quant import QuantConfig, run_quantize from modelslim import set_logger_level set_logger_level("info") #根据实际情况配置 import numpy as np input_model_path="superglue_1201_mask.onnx" #根据实际路径配置 output_model_path="superglue_1201_mask_slim.onnx" #根据实际情况配置 def custom_read_data(): calib_data = [] # TODO 读取数据集,进行数据预处理,将数据存入calib_data import torch pad_length = 1000 input_tensor = ( torch.randn((1, pad_length, 2)), ) calib_data = [[i.numpy().astype(np.float32) for i in input_tensor]] return calib_data calib_data = custom_read_data() quant_config = QuantConfig(calib_data=calib_data, amp_num=0) run_quantize(input_model_path,output_model_path,quant_config)
本页内容