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; |
|
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等。 |