量化感知训练简易配置文件
retrain_config_pytorch.proto文件参数说明如表1所示,该文件所在目录为:AMCT安装目录/amct_pytorch/proto/retrain_config_pytorch.proto。
该文件可以配置出量化感知训练简易配置文件、稀疏简易配置文件,组合压缩简易配置文件,用户根据场景进行配置。
表 1 retrain_config_pytorch.proto参数说明
按层名跳过哪些层不做压缩。全局参数,方便后续拓展其他特性场景下可同时跳过的层,比如下述拓展的quant_skip_layers参数、regular_prune_skip_layers参数,则通过skip_layers参数可以同时配置两个特性场景下需要跳过的层。而无需在quant_skip_layers和regular_prune_skip_layers参数中分别配置。 若同时配置了skip_layers和quant_skip_layers参数,或skip_layers和regular_prune_skip_layers参数,则取两者并集。 |
||||
按层类型跳过哪些层不做压缩。全局参数,方便后续拓展其他特性场景下可同时跳过的层,比如下述拓展的quant_skip_types参数、regular_prune_skip_types参数,则通过skip_layer_types参数可以同时配置两个特性场景下需要跳过的层。而无需在quant_skip_types和regular_prune_skip_types参数中分别配置。 若同时配置了skip_layer_types和quant_skip_types参数,或skip_layer_types和regular_prune_skip_types参数,则取两者并集。 |
||||
|
例如全局量化配置参数配置的量化位宽为INT8,可以通过该参数对部分层进行差异化量化,可以配置为INT4量化。当前版本仅支持INT8量化。
|
||||
|
例如全局量化配置参数配置的量化位宽为INT8,可以通过该参数对部分层进行差异化量化,可以配置为INT4量化。当前版本仅支持INT8量化。
|
||||
fakequant模型中quant自定义算子的scale_d数值精度模式。
|
||||
|
参数优先级为:override_layer_configs>override_layer_types>retrain_data_quant_config/retrain_weight_quant_config |
||||
|
参数优先级为:override_layer_configs>override_layer_types>retrain_data_quant_config/retrain_weight_quant_config |
||||
|
参数优先级为:override_layer_configs>override_layer_types>prune_config |
||||
ULQ数据量化算法配置。算法介绍请参见ULQ数据量化算法。 |
||||
|
||||
|
该参数会在计算缩放因子中使用,后续在该初始值基础上做训练调优,建议初始值与实际推理数据上下限保持一致性,否则可能会导致量化后精度较差。 |
||||
ARQ权重量化算法配置。算法介绍请参见ARQ权重量化算法。 |
||||
ULQ权重量化算法配置。算法介绍请参见ULQ数据量化算法。 |
||||
BalancedL2NormFilterPruner(简称BCP)算法,算法介绍请参见手工通道稀疏算法。 |
||||
L1SelectivePrune算法,算法介绍请参见4选2结构化稀疏算法。 |
||||
更新4选2稀疏的间隔。update_freq=0时仅在第一个batch更新4选2稀疏的选择,update_freq=2时每2个batch更新一次,以此类推。默认为0。 |
-
基于该文件构造的量化感知训练简易配置文件quant.cfg样例如下所示:
# global quantize parameter retrain_data_quant_config: { ulq_quantize: { clip_max_min: { clip_max: 6.0 clip_min: -6.0 } fixed_min: true dst_type: INT8 } } retrain_weight_quant_config: { arq_retrain: { channel_wise: true dst_type: INT8 } } skip_layers: "Opname" skip_layer_types: "Optype" override_layer_types : { layer_type: "Optype" retrain_weight_quant_config: { arq_retrain: { channel_wise: false dst_type: INT8 } } } override_layer_configs : { layer_name: "Opname" retrain_data_quant_config: { ulq_quantize: { clip_max_min: { clip_max: 3.0 clip_min: -3.0 } dst_type: INT8 } } } -
基于该文件构造的通道稀疏简易配置文件prune.cfg样例如下所示:
# global prune parameter prune_config{ filter_pruner { balanced_l2_norm_filter_prune { prune_ratio: 0.3 ascend_optimized: True } } } # skip layers regular_prune_skip_layers: "Opname" regular_prune_skip_layers: "Opname" # overide specific layers override_layer_configs: { layer_name: "Opname" prune_config : { filter_pruner: { balanced_l2_norm_filter_prune: { prune_ratio: 0.5 ascend_optimized: True } } } } -
基于该文件构造的4选2结构化稀疏简易配置文件selective_prune.cfg样例如下所示:
# global prune parameter prune_config{ n_out_of_m_pruner { l1_selective_prune { n_out_of_m_type: M4N2 update_freq: 0 } } } # skip layers regular_prune_skip_layers: "Opname" regular_prune_skip_layers: "Opname" # overide specific layers override_layer_configs: { layer_name: "Opname" prune_config : { n_out_of_m_pruner: { l1_selective_prune: { n_out_of_m_type: M4N2 update_freq: 1 } } } } -
基于该文件构造的组合压缩(通道稀疏+INT8量化)简易配置文件compressed1.cfg样例如下所示:
prune_config : { filter_pruner : { balanced_l2_norm_filter_prune : { prune_ratio : 0.3 ascend_optimized: True } } } # skip_layers: "skip_layers_name_0" skip_layer_types: "Optype" quant_skip_layers: "Opname" quant_skip_types: "Optype" retrain_weight_quant_config: { arq_retrain: { channel_wise: true dst_type: INT8 } } override_layer_types : { layer_type: "Optype" retrain_weight_quant_config: { arq_retrain: { channel_wise: false dst_type: INT8 } } retrain_data_quant_config : { ulq_quantize : { clip_max_min : { clip_max : 6.0 clip_min : -6.0 } } } prune_config : { filter_pruner : { balanced_l2_norm_filter_prune : { prune_ratio : 0.5 ascend_optimized: True } } } } -
基于该文件构造的组合压缩(4选2结构化稀疏+INT8量化)简易配置文件compressed2.cfg样例如下所示:
prune_config{ n_out_of_m_pruner { l1_selective_prune { n_out_of_m_type: M4N2 update_freq: 0 } } } # skip_layers: "skip_layers_name_0" skip_layer_types: "Optype" quant_skip_layers: "quant_skip_layers_name_0" quant_skip_types: "Optype" retrain_weight_quant_config: { arq_retrain: { channel_wise: true dst_type: INT8 } } override_layer_types : { layer_type: "Optype" retrain_weight_quant_config: { arq_retrain: { channel_wise: false dst_type: INT8 } } retrain_data_quant_config : { ulq_quantize : { clip_max_min : { clip_max : 6.0 clip_min : -6.0 } } } prune_config{ n_out_of_m_pruner { l1_selective_prune { n_out_of_m_type: M4N2 update_freq: 1 } } } }