convert_model
功能说明
根据用户自己计算得到的量化因子以及Caffe模型,适配成可以在昇腾AI处理器上做在线推理的Deploy量化部署模型和可以在Caffe环境下进行精度仿真的Fakequant量化模型。
约束说明
- 用户模型需要保证和量化因子记录文件配套,例如用户对Conv+BN+Scale结构先进行融合再计算得到融合Conv的量化因子,则所提供用于转换的原始caffe模型中Conv+BN+Scale结构也需要预先进行融合。
- 量化因子记录文件格式及记录内容需要严格符合AMCT定义要求,详细信息请参见record记录文件。
- 仅支持对AMCT支持量化的层:全连接层(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处理器上。
- 量化信息文件 :该文件记录了AMCT插入的量化算子位置以及算子融合信息,用于量化后的模型进行精度比对使用。
重新执行适配时,该接口输出的上述文件将会被覆盖。
调用示例
1 2 3 4 5 |
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') |
父主题: 模型适配