蒸馏简易配置文件
distill_config_pytorch.proto文件参数说明如表1所示,该文件所在目录为:AMCT安装目录/amct_pytorch/proto/distill_config_pytorch.proto。
消息 |
是否必填 |
类型 |
字段 |
说明 |
|---|---|---|---|---|
AMCTDistillConfig |
- |
- |
- |
AMCT蒸馏的简易配置。 |
optional |
uint32 |
batch_num |
蒸馏batch数量,用于ifmr积累数据计算量化因子。 |
|
optional |
uint32 |
group_size |
蒸馏block中最小蒸馏单元个数。 |
|
optional |
bool |
data_dump |
teacher网络block输入输出dump开关。 |
|
repeated |
DistillGroup |
distill_group |
用户自定义蒸馏结构。 |
|
optional |
DistillDataQuantConfig |
distill_data_quant_config |
蒸馏数据量化配置参数。 |
|
optional |
DistillWeightQuantConfig |
distill_weight_quant_config |
蒸馏权重量化配置参数。 |
|
repeated |
DistillOverrideLayer |
distill_override_layers |
重写某一层的量化配置。 |
|
repeated |
DistillOverrideLayerType |
distill_override_layer_types |
重写某一类型层的量化配置。 |
|
repeated |
string |
quant_skip_layers |
不需要量化的层,仍然做蒸馏。 |
|
repeated |
string |
quant_skip_layer_types |
不需要量化的算子类型,仍然需要做蒸馏。 |
|
DistillGroup |
- |
- |
- |
用户自定义蒸馏结构。蒸馏结构中仅支持torch.nn.Module类型的算子。 |
required |
string |
start_layer_name |
用户自定义蒸馏结构起始层。 |
|
required |
string |
end_layer_name |
用户自定义蒸馏结构结束层。 |
|
DistillDataQuantConfig |
- |
- |
- |
蒸馏数据量化配置。 |
- |
ActULQquantize |
ulq_quantize |
数据量化的算法,目前仅支持ulq。 |
|
ActULQquantize |
- |
- |
- |
ULQ数据量化算法配置。算法介绍请参见xx |
optional |
ClipMaxMin |
clip_max_min |
初始化的上下限值,如果不配置,默认用ifmr进行初始化。 |
|
optional |
bool |
fixed_min |
是否下限不学习且固定为0。默认ReLu后为true,其他为false。 |
|
optional |
DataType |
dst_type |
用以选择INT8或INT4量化位宽,默认为INT8。 |
|
ClipMaxMin |
- |
- |
- |
初始上下限。 |
required |
float |
clip_max |
初始上限值。 |
|
required |
float |
clip_min |
初始下限值。 |
|
DistillWeightQuantConfig |
- |
- |
- |
蒸馏权重量化配置。 |
- |
ARQDistill |
arq_distill |
ARQ权重量化算法。 |
|
- |
WtsULQDistill |
ulq_distill |
ULQ权重量化算法。 |
|
ARQDistill |
- |
- |
- |
ARQ权重量化算法配置。算法介绍请参见ARQ权重量化算法。 |
optional |
DataType |
dst_type |
用以选择INT8或INT4量化位宽,默认为INT8。 |
|
optional |
bool |
channel_wise |
是否做channel wise的arq。 |
|
WtsULQDistill |
- |
- |
- |
ULQ权重量化算法配置。算法介绍请参见ULQ数据量化算法。 |
optional |
DataType |
dst_type |
用以选择INT8或INT4量化位宽,默认为INT8。 |
|
optional |
bool |
channel_wise |
是否做channel wise的ulq。 |
|
DistillOverrideLayer |
- |
- |
- |
重写的层配置。 |
required |
string |
layer_name |
层名。 |
|
optional |
DistillDataQuantConfig |
distill_data_quant_config |
重写的数据层量化参数。 |
|
optional |
DistillWeightQuantConfig |
distill_weight_quant_config |
重写的权重层量化参数。 |
|
DistillOverrideLayerType |
- |
- |
- |
重写的层类型配置。 |
required |
string |
layer_type |
层类型。 |
|
optional |
DistillDataQuantConfig |
distill_data_quant_config |
重写的数据层量化参数。 |
|
optional |
DistillWeightQuantConfig |
distill_weight_quant_config |
重写的权重层量化参数。 |
batch_num: 1
group_size: 1
data_dump: true
distill_group: {
start_layer_name: "layer1"
end_layer_name: "layer2"
}
distill_data_quant_config: {
ulq_quantize: {
clip_max_min: {
clip_max: 6.0
clip_min: -6.0
}
fixed_min: true
dst_type: INT8
}
}
distill_weight_quant_config: {
arq_distill: {
channel_wise: true
dst_type: INT8
}
}
quant_skip_layers: "layer3"
quant_skip_layer_types: "type1"
distill_override_layers : {
layer_name: "layer4"
distill_data_quant_config: {
ulq_quantize: {
clip_max_min: {
clip_max: 3.0
clip_min: -3.0
}
fixed_min: true
dst_type: INT4
}
}
distill_weight_quant_config: {
arq_distill: {
channel_wise: false
dst_type: INT4
}
}
}
distill_override_layer_types : {
layer_type: "type2"
distill_data_quant_config: {
ulq_quantize: {
clip_max_min: {
clip_max: 3.0
clip_min: -3.0
}
fixed_min: true
dst_type: INT4
}
}
distill_weight_quant_config: {
ulq_distill: {
channel_wise: false
dst_type: INT4
}
}
}