create_quant_retrain_config
功能说明
量化感知训练接口,根据图的结构找到所有可量化的层,自动生成量化配置文件,并将可量化层的量化配置信息写入配置文件。
函数原型
create_quant_retrain_config(config_file, model, input_data, config_defination=None)
参数说明
参数名 |
输入/返回值 |
含义 |
使用限制 |
|---|---|---|---|
config_file |
输入 |
待生成的量化感知训练配置文件存放路径及名称。 如果存放路径下已经存在该文件,则调用该接口时会覆盖已有文件。 |
数据类型:string |
model |
输入 |
待进行量化感知训练的模型,已加载权重。 |
数据类型:torch.nn.module |
input_data |
输入 |
模型的输入数据。一个torch.tensor会被等价为tuple(torch.tensor)。 |
数据类型:tuple |
config_defination |
输入 |
简易配置文件。 基于retrain_config_pytorch.proto文件生成的简易配置文件quant.cfg, retrain_config_pytorch.proto文件所在路径为:昇腾模型压缩工具安装目录/amct_pytorch/proto/retrain_config_pytorch.proto。 retrain_config_pytorch.proto文件参数解释以及生成的quant.cfg简易量化配置文件样例请参见量化感知训练简易配置文件说明。 |
默认值:None。 数据类型:string 使用约束:当取值为None时,使用输入参数生成配置文件;否则,根据量化感知训练简易配置文件参数config_defination生成json格式的配置文件。 |
返回值说明
无。
函数输出
输出一个json格式的量化感知训练配置文件(重新执行量化感知训练时,该接口输出的配置文件将会被覆盖)。样例如下(如下为INT8量化场景下的配置文件):
{
"version":1,
"batch_num":1,
"conv1":{
"retrain_enable":true,
"retrain_data_config":{
"algo":"ulq_quantize",
"dst_type":"INT8"
},
"retrain_weight_config":{
"algo":"arq_retrain",
"channel_wise":true,
"dst_type":"INT8"
}
},
"layer1.0.conv1":{
"retrain_enable":true,
"retrain_data_config":{
"algo":"ulq_quantize",
"dst_type":"INT8"
},
"retrain_weight_config":{
"algo":"arq_retrain",
"channel_wise":true,
"dst_type":"INT8"
}
},
"fc":{
"retrain_enable":true,
"retrain_data_config":{
"algo":"ulq_quantize",
"dst_type":"INT8"
},
"retrain_weight_config":{
"algo":"arq_retrain",
"channel_wise":false,
"dst_type":"INT8"
}
}
...
}
调用示例
import amct_pytorch as amct
# 建立待量化的网络图结构
model = build_model()
model.load_state_dict(torch.load(state_dict_path))
input_data = tuple([torch.randn(input_shape)])
# 生成量化配置文件
amct.create_quant_retrain_config(config_file="./configs/config.json",
model=model,
input_data=input_data)