convert_model
功能说明
根据用户自己计算得到的量化因子以及Caffe模型,适配成可以在昇腾AI处理器上做在线推理的Deploy量化部署模型和可以在Caffe环境下进行精度仿真的Fakequant量化模型。
约束说明
- 用户模型需要保证和量化因子记录文件配套,例如用户对Conv+BN+Scale结构先进行融合再计算得到融合Conv的量化因子,则所提供用于转换的原始caffe模型中Conv+BN+Scale结构也需要预先进行融合。
- 量化因子记录文件格式及记录内容需要严格符合昇腾模型压缩工具定义要求,详细信息请参见量化因子记录文件。
- 仅支持对昇腾模型压缩工具支持量化的层:全连接层(InnerProduct:transpose属性为true或axis!=1都不进行量化)、卷积层(Convolution:filter维度为4)、反卷积层(Deconvolution:group为1、dilation为1、filter维度为4)、平均下采样层(Pooling:下采样方式为AVE,且非global pooling)。
- 该接口支持对用户模型中的Conv+BN+Scale结构进行融合,且可逐层配置是否做融合。
- 仅支持输入原始浮点数模型进行适配,不支持用户对已量化模型(包含量化工具插入的Quant、DeQuant、AntiQuant层,或参数已量化为int8, int32类型)进行二次量化。
函数原型
convert_model(model_file,weights_file,scale_offset_record_file,save_path)
参数说明
参数名 |
输入/返回值 |
含义 |
使用限制 |
---|---|---|---|
model_file |
输入 |
用户Caffe模型的定义文件,格式为.prototxt。 |
数据类型:string 使用约束:model_file中包含的用于推理的层,LayerParameter设置满足推理要求,比如BatchNorm层的use_global_stats必须设置为1。 |
weights_file |
输入 |
用户训练好的Caffe模型权重文件,格式为.caffemodel。 |
数据类型:string |
scale_offset_record_file |
输入 |
用户计算得到的量化因子记录文件,格式为.txt。 |
数据类型:string |
save_path |
输入 |
模型存放路径。该路径需要包含模型名前缀,例如./quantized_model/*model。 |
数据类型:string |
返回值说明
无。
函数输出
- 精度仿真模型文件:一个模型定义文件,一个模型权重文件,文件名中包含fake_quant;模型可在Caffe环境下做推理实现量化精度仿真。
- 部署模型文件:一个模型定义文件,一个模型权重文件,文件名中包含deploy;模型经过ATC工具转换后可部署到昇腾AI处理器上。
- 量化信息文件 :该文件记录了昇腾模型压缩工具插入的量化算子位置以及算子融合信息,用于量化后的模型进行精度比对使用。
重新执行适配时,该接口输出的上述文件将会被覆盖。
调用示例
from amct_caffe import convert_model convert_model(model_file='ResNet-50-deploy.prototxt', weights_file='ResNet-50-weights.caffemodel', scale_offset_record_file='record.txt', save_path='./quantized_model/model')
父主题: 模型适配