news 2026/5/9 15:03:32

CANN/AMCT训练后量化配置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/AMCT训练后量化配置

训练后量化简易配置文件

【免费下载链接】amctAMCT是CANN提供的昇腾AI处理器亲和的模型压缩工具仓。项目地址: https://gitcode.com/cann/amct

calibration_config_pytorch.proto文件参数说明如表1所示,该文件所在目录为:AMCT安装目录/amct_pytorch/proto/calibration_config_pytorch.proto。

表 1calibration_config_pytorch.proto参数说明

消息

是否必填

类型

字段

说明

AMCTConfig

-

-

-

AMCT训练后量化的简易量化配置。

optional

uint32

batch_num

量化使用的batch数量。

optional

bool

activation_offset

数据量化是否带offset。全局配置参数。

  • true:带offset,数据量化时为非对称量化。
  • false:不带offset,数据量化时为对称量化。

repeated

string

skip_layers

不需要量化层的层名。

repeated

string

skip_layer_types

不需要量化的层类型。

optional

FakequantPrecisionMode

fakequant_precision_mode

fakequant模型中quant自定义算子的scale_d数值精度模式。

  • FORCE_FP16_QUANT:scale_d参数的数值转换为float16精度,数值类型是float32。
  • 空,即不配置,默认为空。scale_d参数的数值保持float32精度。

optional

CalibrationConfig

common_config

通用的量化配置,全局量化配置参数。若某层未被override_layer_types或者override_layer_configs重写,则使用该配置。

参数优先级:override_layer_configs>override_layer_types>common_config

repeated

OverrideLayerType

override_layer_types

重写某一类型层的量化配置,即对哪些层进行差异化量化。

例如全局量化配置参数配置的量化因子搜索步长为0.01,可以通过该参数对部分层进行差异化量化,可以配置搜索步长为0.02。

参数优先级:override_layer_configs>override_layer_types>common_config

repeated

OverrideLayer

override_layer_configs

重写某一层的量化配置,即对哪些层进行差异化量化。

例如全局量化配置参数配置的量化因子搜索步长为0.01,可以通过该参数对部分层进行差异化量化,可以配置搜索步长为0.02。

参数优先级:override_layer_configs>override_layer_types>common_config

optional

bool

do_fusion

是否开启BN融合功能,默认为true,表示开启该功能。

repeated

string

skip_fusion_layers

跳过BN融合的层,配置之后这些层不会进行BN融合。

OverrideLayerType

-

-

-

重置某层类型的量化配置。

required

string

layer_type

支持量化的层类型的名字。

required

CalibrationConfig

calibration_config

重置的量化配置。

OverrideLayer

-

-

-

重置某层量化配置。

required

string

layer_name

被重置层的层名。

required

CalibrationConfig

calibration_config

重置的量化配置。

CalibrationConfig

-

-

-

Calibration量化的配置。

-

ARQuantize

arq_quantize

权重量化算法配置。

arq_quantize:ARQ量化算法配置。

-

ADAquantize

ada_quantize

权重量化算法配置。

ada_quantize:Adaptive rounding (AdaRound) ,自适应舍入量化算法配置。

-

FMRQuantize

ifmr_quantize

数据量化算法配置。

ifmr_quantize:IFMR量化算法配置。

-

HFMGQuantize

hfmg_quantize

数据量化算法配置。

hfmg_quantize:HFMG量化算法配置。

-

DMQBalancer

dmq_balancer

均衡量化算法配置。

dmq_balancer:DMQBalancer均衡算法配置。

ARQuantize

-

-

-

ARQ量化算法配置。算法介绍请参见ARQ权重量化算法。

该算法与ADAquantize、NUQuantize算法不能同时配置,若同时配置,则以配置文件中最后配置的量化算法为准。

optional

bool

channel_wise

是否对每个channel采用不同的量化因子。

  • true:每个channel独立量化,量化因子不同。
  • false:所有channel同时量化,共享量化因子。

optional

uint32

quant_bits

权重量化位宽。支持配置为INT6、INT7、INT8。

默认为INT8量化。

该字段配置为INT6、INT7仅支持Conv2d类型算子。

如果在common_config中配置quant_bits为INT6、INT7,则只对Conv2d算子生效,其他算子改为默认INT8。

ADAquantize

-

-

-

AdaRound自适应舍入量化算法,算法介绍请参见ADA权重量化算法。

该算法与ARQuantize、NUQuantize算法不能同时配置,若同时配置,则以配置文件中最后配置的量化算法为准。

该量化算法支持的激活函数为:ReLU、RReLU、LeakyReLU、PReLU、GELU、ReLU6、Sigmoid、Tanh。

上述激活函数对应的ONNX算子为:Relu、LeakyRelu、LeakyRelu、PRelu、Gelu、Clip、Sigmoid、Tanh。

AMCT工具获取量化配置中的可量化层(该特性支持的量化层为torch.nn.Linear、torch.nn.Conv2d、torch.nn.ConvTranspose2d),按照导出的ONNX模型中的拓扑顺序获取可量化模块,若量化模块后为上述激活函数,将量化模块和激活函数作为一个整体。

说明:

将上述激活函数导出为ONNX算子时,需要torch 2.1版本torch.onnx.export接口,且Gelu算子需要Opset版本为v20,其他算子Opset版本为v17。

optional

uint32

num_iteration

迭代次数,取值范围>=0,默认值为10000。

optional

float

reg_param

正则化参数,取值范围为(0,1),默认值为0.01。

optional

float

beta_range_start

beta起始参数,默认值为20,beta_range_start>beta_range_end>0。

optional

float

beta_range_end

beta终止参数,默认值为2。

optional

float

warm_start

预热因子,取值范围为(0,1),默认值为0.2。

optional

bool

channel_wise

是否对每个channel采用不同的量化因子。

  • true:每个channel独立量化,量化因子不同。
  • false:所有channel同时量化,共享量化因子。

DMQBalancer

-

-

-

DMQ均衡算法配置。算法介绍请参见DMQ均衡算法。

optional

float

migration_strength

迁移强度,代表将activation数据上的量化难度迁移至weight权重的程度。支持的范围为[0.2, 0.8],默认值0.5,数据分布的离群值越大迁移强度应设置较小。

FMRQuantize

-

-

-

FMR数据量化算法配置。算法介绍请参见IFMR数据量化算法。

该算法与HFMGQuantize算法不能同时配置,若同时配置,则以配置文件中最后配置的量化算法为准。

optional

float

search_range_start

量化因子搜索范围左边界。

optional

float

search_range_end

量化因子搜索范围右边界。

optional

float

search_step

量化因子搜索步长。

optional

float

max_percentile

最大值搜索位置。

optional

float

min_percentile

最小值搜索位置。

optional

bool

asymmetric

是否进行对称量化。用于控制逐层量化算法的选择。

  • true:非对称量化
  • false:对称量化

如果override_layer_configs、override_layer_types、common_config配置项都配置该参数,或者配置了

activation_offset参数,则生效优先级为:

override_layer_configs>override_layer_types>common_config>activation_offset

optional

CalibrationDataType

dst_type

量化位宽,数据量化是采用INT8量化还是INT16量化,默认为INT8量化。当前版本仅支持INT8量化。

HFMGQuantize

-

-

-

HFMG数据量化算法配置。算法介绍请参见HFMG数据量化算法。

该算法与FMRQuantize算法不能同时配置,若同时配置,则以配置文件中最后配置的量化算法为准。

optional

uint32

num_of_bins

直方图的bin(直方图中的一个最小单位直方图形)数目,支持的范围为{1024, 2048, 4096, 8192}。

默认值为4096。

optional

bool

asymmetric

是否进行对称量化。用于控制逐层量化算法的选择。

  • true:非对称量化
  • false:对称量化

如果override_layer_configs、override_layer_types、common_config配置项都配置该参数,或者配置了

activation_offset参数,则生效优先级为:

override_layer_configs>override_layer_types>common_config>activation_offset

optional

CalibrationDataType

dst_type

数据量化位宽,数据量化是采用INT8量化还是INT16量化,默认为INT8量化。当前版本仅支持INT8量化。

  • 基于该文件构造的训练后量化简易配置文件quant.cfg样例如下所示:

    # global quantize parameter batch_num : 2 activation_offset : true skip_layers : "Opname" skip_layer_types:"Optype" do_fusion: true skip_fusion_layers : "Opname" common_config : { arq_quantize : { channel_wise : true quant_bits : 7 } ifmr_quantize : { search_range_start : 0.7 search_range_end : 1.3 search_step : 0.01 max_percentile : 0.999999 min_percentile : 0.999999 asymmetric : true } dmq_balancer : { migration_strength : 0.5 } } override_layer_types : { layer_type : "Conv2d" calibration_config : { arq_quantize : { channel_wise : false quant_bits : 6 } ifmr_quantize : { search_range_start : 0.8 search_range_end : 1.2 search_step : 0.02 max_percentile : 0.999999 min_percentile : 0.999999 asymmetric : false } dmq_balancer : { migration_strength : 0.5 } } } override_layer_configs : { layer_name : "Opname" calibration_config : { arq_quantize : { channel_wise : true } ifmr_quantize : { search_range_start : 0.8 search_range_end : 1.2 search_step : 0.02 max_percentile : 0.999999 min_percentile : 0.999999 asymmetric : false } dmq_balancer : { migration_strength : 0.5 } } }

    如果数据量化算法使用HFMG,则上述配置文件中加粗部分可以替换成如下参考参数信息,举例如下(如下配置信息只是样例,请根据实际情况进行修改):

    # global quantize parameter activation_offset : true batch_num : 2 ... common_config : { hfmg_quantize : { num_of_bins : 4096 asymmetric : false } ... }
  • 基于该文件构造的自适应舍入简易配置文件_ada_round.cfg_样例如下所示:

    common_config : { ada_quantize : { num_iteration : 10000 warm_start : 0.2 reg_param : 0.01 beta_range_start : 20 beta_range_end : 2 channel_wise : false } }
  • 基于该文件构造的量化数据均衡预处理简易配置文件dmq_balancer.cfg样例如下所示:

    # global quantize parameter batch_num : 2 activation_offset : true skip_layers : "Opname" skip_layer_types:"Optype" do_fusion: true skip_fusion_layers : "Opname" common_config : { arq_quantize : { channel_wise : true } ifmr_quantize : { search_range_start : 0.7 search_range_end : 1.3 search_step : 0.01 max_percentile : 0.999999 min_percentile : 0.999999 asymmetric : true } dmq_balancer : { migration_strength : 0.5 } } override_layer_types : { layer_type : "Optype" calibration_config : { arq_quantize : { channel_wise : false } ifmr_quantize : { search_range_start : 0.8 search_range_end : 1.2 search_step : 0.02 max_percentile : 0.999999 min_percentile : 0.999999 asymmetric : false } dmq_balancer : { migration_strength : 0.5 } } } override_layer_configs : { layer_name : "Opname" calibration_config : { arq_quantize : { channel_wise : true } ifmr_quantize : { search_range_start : 0.8 search_range_end : 1.2 search_step : 0.02 max_percentile : 0.999999 min_percentile : 0.999999 asymmetric : false } dmq_balancer : { migration_strength : 0.5 } } }

【免费下载链接】amctAMCT是CANN提供的昇腾AI处理器亲和的模型压缩工具仓。项目地址: https://gitcode.com/cann/amct

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 15:03:31

基于MCP协议连接AI与Telegram:构建智能通讯自动化工作流

1. 项目概述:一个连接AI与即时通讯的桥梁最近在折腾AI应用集成时,发现了一个挺有意思的项目:dryeab/mcp-telegram。简单来说,这是一个实现了Model Context Protocol (MCP)协议的Telegram服务器。它的核心价值在于,能让…

作者头像 李华
网站建设 2026/5/9 15:00:31

JVM 深度调优实战:从 JDK 8 到 JDK 21 的演进与中间件落地

一、JVM 内存模型与核心原理 1.1 运行时数据区(Runtime Data Area) JVM 在执行 Java 程序时会将其管理的内存划分为若干个不同的数据区域 : 区域线程属性作用常见异常程序计数器(PC)私有记录当前线程执行的字节码行…

作者头像 李华
网站建设 2026/5/9 14:59:18

CATCCOS动态Tiling测试介绍

动态Tiling测试介绍 【免费下载链接】catccos CATCCOS昇腾计算-通信融合算子模板库,是一个聚焦于提供高性能计算通信融合类算子基础模板的代码库。 项目地址: https://gitcode.com/cann/catccos 1. 功能说明 支持多卡场景下的精度测试和批量性能测试&#x…

作者头像 李华
网站建设 2026/5/9 14:58:17

开源内存数据引擎 openclaw-membase:架构解析与高性能实践指南

1. 项目概述与核心价值最近在开源社区里,一个名为aristoapp/openclaw-membase的项目引起了我的注意。乍一看这个标题,它像是一个技术栈的拼接体,openclaw和membase这两个词组合在一起,透着一股“既要开源灵活,又要内存…

作者头像 李华
网站建设 2026/5/9 14:56:33

CANN/ATVOSS乘法运算API文档

Mul 【免费下载链接】atvoss ATVOSS(Ascend C Templates for Vector Operator Subroutines)是一套基于Ascend C开发的Vector算子库,致力于为昇腾硬件上的Vector类融合算子提供极简、高效、高性能、高拓展的编程方式。 项目地址: https://gi…

作者头像 李华