record记录文件【免费下载链接】amctAMCT是CANN提供的昇腾AI处理器亲和的模型压缩工具仓。项目地址: https://gitcode.com/cann/amctrecord文件为基于protobuf协议的序列化数据结构文件记录量化场景量化因子scale/offset稀疏场景各稀疏层间的级联关系等通过该文件、压缩配置文件以及原始网络模型文件生成压缩后的模型文件。record原型定义record文件对应的protobuf原型定义为或查看_AMCT安装目录_/amct_pytorch/proto/scale_offset_record_pytorch.proto文件syntax proto2; import amct_pytorch/proto/basic_info.proto; message SingleLayerRecord { optional float scale_d 1; optional int32 offset_d 2; repeated float scale_w 3; repeated int32 offset_w 4; repeated uint32 shift_bit 5; repeated float tensor_balance_factor 6; optional bool skip_fusion 9 [default true]; optional string dst_type 10 [default INT8]; optional string act_type 11 [default INT8]; optional string wts_type 12 [default INT8]; } message SingleLayerKVCacheRecord { repeated float scale 1; repeated int32 offset 2; } message MapFiledEntry { optional string key 1; optional SingleLayerRecord value 2; optional SingleLayerKVCacheRecord kv_cache_value 3; } message ScaleOffsetRecord { repeated MapFiledEntry record 1; repeated PruneRecord prune_record 2; } message PruneRecord { repeated PruneNode producer 1; repeated PruneNode consumer 2; optional PruneNode selective_prune 3; } message PruneNode { required string name 1; repeated AMCTProto.AttrProto attr 2; }参数说明如下消息是否必填类型字段说明SingleLayerRecord---包含了量化层所需要的所有量化因子记录信息。optionalfloatscale_d数据量化scale因子仅支持对数据进行统一量化。optionalint32offset_d数据量化offset因子仅支持对数据进行统一量化。repeatedfloatscale_w权重量化scale因子支持标量对当前层的权重进行统一量化向量对当前层的权重按channel_wise方式进行量化两种模式仅支持Conv2d类型进行channel_wise量化模式。repeatedint32offset_w权重量化offset因子同scale_w一样支持标量和向量两种模式且需要同scale_w维度一致当前不支持权重带offset量化模式offset_w仅支持0。repeateduint32shift_bit移位因子。保留参数shift_bit参数不会写入record文件。optionalboolskip_fusion配置当前层是否要跳过ConvBN融合默认为false即当前层要做上述融合。optionalstringdst_type量化位宽包括INT8和INT4两种量化类型。该字段仅量化感知训练场景使用且当前仅支持INT8量化。repeatedfloattensor_balance_factor均衡量化因子。该字段仅量化数据均衡预处理场景使用。optionalstringact_type数据量化位宽包括INT8和INT16两种量化类型。当前版本仅支持INT8量化。optionalstringwts_type权重量化位宽。当前INT6、INT7量化后的量化因子仍保存为INT8类型。SingleLayerKVCacheRecord---kv-cache量化因子配置。repeatedfloat32scalescale量化因子。repeatedint32offsetoffset量化因子。ScaleOffsetRecord---map结构为保证兼容性采用离散的map结构。repeatedMapFiledEntryrecord每个record对应一个量化层的量化因子记录record包括两个成员key为所记录量化层的layer name。value对应SingleLayerRecord定义的具体量化因子。repeatedPruneRecordprune_record稀疏信息的记录。MapFiledEntryoptionalstringkey层名。optionalSingleLayerRecordvalue量化因子配置。optionalSingleLayerKVCacheRecordkv_cache_valuekv-cache量化因子配置。PruneRecord---稀疏信息的记录。repeatedPruneNodeproducer稀疏的producer可稀疏结点间级联关系的根节点。例如conv1bnreluconv2都可以稀疏且bn、relu、conv2都会受到conv1稀疏的影响则bn、relu、conv2是conv1的consumerconv1是bn、relu、conv2的producer。repeatedPruneNodeconsumer稀疏的consumer可稀疏结点间级联关系的下游节点。例如conv1bnreluconv2都可以稀疏且bn、relu、conv2都会受到conv1稀疏的影响则bn、relu、conv2是conv1的consumerconv1是bn、relu、conv2的producer。optionalPruneNodeselective_prune4选2结构化稀疏节点。PruneNode---稀疏的节点。requiredstringname节点名称。repeatedAMCTProto.AttrProtoattr节点属性。对于optional字段由于protobuf协议未对重复出现的值报错而是采用覆盖处理因此出现重复配置的optional字段内容时会默认保留最后一次配置的值需要用户自己保证文件的正确性。record记录文件最终生成的record文件格式为_record.txt_文件内容根据特性不同划分如下。量化特性record文件对于一般量化层配置需要包含scale_d、offset_d、scale_w、offset_w参数文件内容示例如下record { key: conv1 value { scale_d: 0.0798481479 offset_d: 1 scale_w: 0.00297622895 offset_w: 0 skip_fusion: true dst_type: INT8 } } record { key: layer1.0.conv1 value { scale_d: 0.00392156886 offset_d: -128 scale_w: 0.00106807391 scale_w: 0.00104224426 offset_w: 0 offset_w: 0 dst_type: INT8 } }量化数据均衡预处理特性record文件内容示例如下record { key: linear_1 value { scale_d: 0.00784554612 offset_d: -1 scale_w: 0.00778095098 offset_w: 0 tensor_balance_factor: 0.948409557 tensor_balance_factor: 0.984379828 } } record { key: conv_1 value { scale_d: 0.00759239076 offset_d: -4 scale_w: 0.0075149606 offset_w: 0 tensor_balance_factor: 1.04744744 tensor_balance_factor: 1.44586647 } }通道稀疏record文件记录各稀疏层间的级联关系文件内容示例如下:prune_record { producer { name: conv1 attr { name: type type: STRING s: Conv2d } attr { name: begin type: INT i: 0 } attr { name: end type: INT i: 64 } } consumer { name: BN_1 attr { name: type type: STRING s: FusedBatchNormV3 } attr { name: begin type: INT i: 0 } attr { name: end type: INT i: 64 } } }结构化稀疏record文件内容示例如下prune_record { selective_prune { name: conv1 attr { name: mask_shape type: INTS ints: 3 ints: 3 ints: 3 ints: 32 } } }【免费下载链接】amctAMCT是CANN提供的昇腾AI处理器亲和的模型压缩工具仓。项目地址: https://gitcode.com/cann/amct创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
CANN/AMCT记录文件详解
record记录文件【免费下载链接】amctAMCT是CANN提供的昇腾AI处理器亲和的模型压缩工具仓。项目地址: https://gitcode.com/cann/amctrecord文件为基于protobuf协议的序列化数据结构文件记录量化场景量化因子scale/offset稀疏场景各稀疏层间的级联关系等通过该文件、压缩配置文件以及原始网络模型文件生成压缩后的模型文件。record原型定义record文件对应的protobuf原型定义为或查看_AMCT安装目录_/amct_pytorch/proto/scale_offset_record_pytorch.proto文件syntax proto2; import amct_pytorch/proto/basic_info.proto; message SingleLayerRecord { optional float scale_d 1; optional int32 offset_d 2; repeated float scale_w 3; repeated int32 offset_w 4; repeated uint32 shift_bit 5; repeated float tensor_balance_factor 6; optional bool skip_fusion 9 [default true]; optional string dst_type 10 [default INT8]; optional string act_type 11 [default INT8]; optional string wts_type 12 [default INT8]; } message SingleLayerKVCacheRecord { repeated float scale 1; repeated int32 offset 2; } message MapFiledEntry { optional string key 1; optional SingleLayerRecord value 2; optional SingleLayerKVCacheRecord kv_cache_value 3; } message ScaleOffsetRecord { repeated MapFiledEntry record 1; repeated PruneRecord prune_record 2; } message PruneRecord { repeated PruneNode producer 1; repeated PruneNode consumer 2; optional PruneNode selective_prune 3; } message PruneNode { required string name 1; repeated AMCTProto.AttrProto attr 2; }参数说明如下消息是否必填类型字段说明SingleLayerRecord---包含了量化层所需要的所有量化因子记录信息。optionalfloatscale_d数据量化scale因子仅支持对数据进行统一量化。optionalint32offset_d数据量化offset因子仅支持对数据进行统一量化。repeatedfloatscale_w权重量化scale因子支持标量对当前层的权重进行统一量化向量对当前层的权重按channel_wise方式进行量化两种模式仅支持Conv2d类型进行channel_wise量化模式。repeatedint32offset_w权重量化offset因子同scale_w一样支持标量和向量两种模式且需要同scale_w维度一致当前不支持权重带offset量化模式offset_w仅支持0。repeateduint32shift_bit移位因子。保留参数shift_bit参数不会写入record文件。optionalboolskip_fusion配置当前层是否要跳过ConvBN融合默认为false即当前层要做上述融合。optionalstringdst_type量化位宽包括INT8和INT4两种量化类型。该字段仅量化感知训练场景使用且当前仅支持INT8量化。repeatedfloattensor_balance_factor均衡量化因子。该字段仅量化数据均衡预处理场景使用。optionalstringact_type数据量化位宽包括INT8和INT16两种量化类型。当前版本仅支持INT8量化。optionalstringwts_type权重量化位宽。当前INT6、INT7量化后的量化因子仍保存为INT8类型。SingleLayerKVCacheRecord---kv-cache量化因子配置。repeatedfloat32scalescale量化因子。repeatedint32offsetoffset量化因子。ScaleOffsetRecord---map结构为保证兼容性采用离散的map结构。repeatedMapFiledEntryrecord每个record对应一个量化层的量化因子记录record包括两个成员key为所记录量化层的layer name。value对应SingleLayerRecord定义的具体量化因子。repeatedPruneRecordprune_record稀疏信息的记录。MapFiledEntryoptionalstringkey层名。optionalSingleLayerRecordvalue量化因子配置。optionalSingleLayerKVCacheRecordkv_cache_valuekv-cache量化因子配置。PruneRecord---稀疏信息的记录。repeatedPruneNodeproducer稀疏的producer可稀疏结点间级联关系的根节点。例如conv1bnreluconv2都可以稀疏且bn、relu、conv2都会受到conv1稀疏的影响则bn、relu、conv2是conv1的consumerconv1是bn、relu、conv2的producer。repeatedPruneNodeconsumer稀疏的consumer可稀疏结点间级联关系的下游节点。例如conv1bnreluconv2都可以稀疏且bn、relu、conv2都会受到conv1稀疏的影响则bn、relu、conv2是conv1的consumerconv1是bn、relu、conv2的producer。optionalPruneNodeselective_prune4选2结构化稀疏节点。PruneNode---稀疏的节点。requiredstringname节点名称。repeatedAMCTProto.AttrProtoattr节点属性。对于optional字段由于protobuf协议未对重复出现的值报错而是采用覆盖处理因此出现重复配置的optional字段内容时会默认保留最后一次配置的值需要用户自己保证文件的正确性。record记录文件最终生成的record文件格式为_record.txt_文件内容根据特性不同划分如下。量化特性record文件对于一般量化层配置需要包含scale_d、offset_d、scale_w、offset_w参数文件内容示例如下record { key: conv1 value { scale_d: 0.0798481479 offset_d: 1 scale_w: 0.00297622895 offset_w: 0 skip_fusion: true dst_type: INT8 } } record { key: layer1.0.conv1 value { scale_d: 0.00392156886 offset_d: -128 scale_w: 0.00106807391 scale_w: 0.00104224426 offset_w: 0 offset_w: 0 dst_type: INT8 } }量化数据均衡预处理特性record文件内容示例如下record { key: linear_1 value { scale_d: 0.00784554612 offset_d: -1 scale_w: 0.00778095098 offset_w: 0 tensor_balance_factor: 0.948409557 tensor_balance_factor: 0.984379828 } } record { key: conv_1 value { scale_d: 0.00759239076 offset_d: -4 scale_w: 0.0075149606 offset_w: 0 tensor_balance_factor: 1.04744744 tensor_balance_factor: 1.44586647 } }通道稀疏record文件记录各稀疏层间的级联关系文件内容示例如下:prune_record { producer { name: conv1 attr { name: type type: STRING s: Conv2d } attr { name: begin type: INT i: 0 } attr { name: end type: INT i: 64 } } consumer { name: BN_1 attr { name: type type: STRING s: FusedBatchNormV3 } attr { name: begin type: INT i: 0 } attr { name: end type: INT i: 64 } } }结构化稀疏record文件内容示例如下prune_record { selective_prune { name: conv1 attr { name: mask_shape type: INTS ints: 3 ints: 3 ints: 3 ints: 32 } } }【免费下载链接】amctAMCT是CANN提供的昇腾AI处理器亲和的模型压缩工具仓。项目地址: https://gitcode.com/cann/amct创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考