4.2.3.7. QAT经验总结

4.2.3.7.1. 超参

除下述表格中的超参之外,其它参数建议在QAT阶段和浮点阶段保持一致。

超参

推荐配置

高级配置(如果推荐配置无效请尝试)

备注

LR

从0.001开始,搭配StepLR做2次scale=0.1的lr decay

1. 调整lr在0.0001->0.001之间,配合1-2的lr decay;
2. LR 更新策略也可以尝试把 StepLR 替换为 CosLR;
3. QAT使用AMP,适当调小lr,过大导致nan。

Epoch

浮点epoch的10%

根据loss和metric的收敛情况,考虑是否需要适当延长epoch。

Weight decay

与浮点一致

建议在4e-5附近做适当调整。weight decay过小导致weight方差过大,过大导致输出较大的任务输出层weight方差过大。

optimizer

与浮点一致

有问题时,推荐尝试SGD

transforms(数据增强)

与浮点一致

QAT阶段可以适当减弱,比如分类的颜色转换可以去掉,RandomResizeCrop的比例范围可以适当缩小

数据增强减弱对浮点模型可能也会有收益

4.2.3.7.2. 量化参数

QAT阶段可调参数如下:

量化相关参数 推荐配置 高级配置(如果推荐配置无效请尝试)
网络输出层 统一使用高精度输出
averaging_constant(qconfig_params) 1. 不用calibration时,使用默认即可;
2. 使用calibration时,weight averaging_constant=1.0, activation averaging_constant=0.0
1. calibration的精度和浮点差距较大时:activation averaging_constant不要设置成0.0;
2. weight averaging_constant一般不需要设置成0.0,实际情况可以在(0,1.0]之间调整
ReLU 与浮点一致 某些feature map数值巨大的情况,可以尝试使用带有上界的ReLU,比如ReLU6,ReLU8等。