手工通道稀疏算法
AMCT使用的通道稀疏算法为BalancedL2Norm,该算法通过计算权重各个filter(输出维度通道)的L2范数(各元素的平方和然后求平方根),对输出通道进行重要性排序并裁剪重要性较低的通道,即重要性低的通道优先被稀疏,原理下图所示:
图1 通道稀疏算法原理
稀疏配置文件中通过BalancedL2NormFilterPruner字段(以PyTorch框架为例,参数解释请参见量化感知训练简易配置文件说明)来控制BalancedL2Norm算法。
- prune_ratio:稀疏率,是被稀疏的filter数量与filter总数量的比值,稀疏化的程度由稀疏率控制,例如0.3的稀疏率表示30%的输出通道将被裁剪。
- ascend_optimized:昇腾亲和优化,当前使用的为16对齐的优化方案,开启16对齐后,稀疏后保留的通道数将向16的倍数对齐。例如原始通道有20个,配置稀疏率为0.25并不开启16对齐时,稀疏后保留通道数为15;若相同稀疏率但开启16对齐,则稀疏后保留通道数为16;该配置可以提高稀疏后的模型在昇腾AI处理器上的推理性能。
父主题: 稀疏算法