news 2026/5/9 17:52:48

CANN/amct量化校准算子

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/amct量化校准算子

QuantCalibrationOp

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

产品支持情况

产品

是否支持

Ascend 950PR/Ascend 950DT

Atlas A3 训练系列产品 / Atlas A3 推理系列产品

Atlas A2 训练系列产品 / Atlas A2 推理系列产品

注:标记“x”的产品,调用接口不会报错,但是获取不到性能收益。

功能说明

KV Cache量化接口,用于用户构图,在前向传播时,根据用户的量化算法配置调用IFMR/HFMG量化算法对输出做校准,校准后,将量化因子依据对应格式输出到record_file文件指定层名中。

在进行前向传播时,算子对原始输出会做透传,不修改activation输入信息:

  • 若当前传入数据个数小于batch_num时,使用IFMR/HFMG算子中的积攒数据方法,将数据集进行保存。
  • 若当前传入数据个数等于batch_num时,会调用IFMR/HFMG算法计算量化因子,根据quant_method参数进行区分写出来的量化因子格式,按照格式写入对应record文件;quant_method目前仅支持“kv_cache_quant”方式。

写入时,对record文件进行增量写入,如果进行了覆盖写入,则会提示哪个层哪些参数被覆盖。

函数原型

QuantCalibrationOp (record_file,quant_algo_params, quant_method)

参数说明

参数名

输入/输出

说明

record_file

输入

含义:保存量化因子的record文件路径。

数据类型:string

quant_algo_params

输入

含义:指定量化使用的量化算法,以及添加对应量化配置,格式如下:

{ "act_algo": "hfmg", "num_bits": 8, "quant_granularity": "1", "with_offset": true, "batch_num": 1 }

act_algo配置的算法不同,配置的字段不同,算法支持字段和解释如表1所示。

数据类型:dict

quant_method

输入

含义:量化方式。默认为'kv_cache_quant',用于指定输出量化因子的格式。

数据类型:string

表 1quant_algo_params参数支持配置的字段

字段

含义

IFMR算法支持配置的字段

HFMG算法支持配置的字段

act_algo

数据量化算法,支持如下两种:

  • IFMR数据量化算法:ifmr,默认为ifmr。
  • HFMG数据量化算法:hfmg。

-

-

num_bits

量化位宽,当前仅支持配置为8,表示采用INT8量化位宽。

IFMR/HFMG两种算法都支持。

支持

支持

with_offset

控制数据量化是对称量化还是非对称量化,全局配置参数。

  • true:数据量化时为非对称量化,默认为true.
  • false:数据量化时为对称量化。

若配置文件中同时存在with_offset和asymmetric参数,asymmetric参数优先级>with_offset参数。

IFMR/HFMG两种算法都支持。

支持

支持

batch_num

控制量化使用多少个batch的数据。取值范围大于0,默认为1。

IFMR/HFMG两种算法都支持。

支持

支持

asymmetric

控制数据量化是对称量化还是非对称量化,用于控制逐层量化算法的选择。

  • true:非对称量化,默认为true。
  • false:对称量化。

IFMR/HFMG两种算法都支持。

支持

支持

quant_granularity

量化粒度,支持如下两种方式:

  • 0:per_tensor,默认为per_tensor。
  • 1:per_channel。

IFMR/HFMG两种算法都支持。

支持

支持

max_percentile

IFMR数据量化算法中,最大值搜索位置参数。

取值范围为(0.5,1],默认为0.999999。

仅IFMR算法支持。

支持

不支持

min_percentile

IFMR数据量化算法中,最小值搜索位置参数。

取值范围为(0.5,1],默认为0.999999。

仅IFMR算法支持。

支持

不支持

search_range

IFMR数据量化算法中,控制量化因子的搜索范围[search_range_start, search_range_end]。

取值范围为0<search_range_start<search_range_end,推荐配置为[0.7,1.3]。

仅IFMR算法支持。

支持

不支持

search_step

IFMR数据量化算法中,控制量化因子的搜索步长。

取值范围为(0, (search_range_end-search_range_start)],默认为0.01。

仅IFMR算法支持。

支持

不支持

num_of_bins

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

仅HFMG算法支持。

不支持

支持

返回值说明

调用示例

import amct_pytorch as amct from amct_pytorch.nn.module.quantization.quant_calibration_op import QuantCalibrationOp class LinearNet(nn.Module): def __init__(self, quant_algo_params): super(LinearNet,self).__init__() self.quant_algo_params = quant_algo_params self.layer1 = nn.Linear(28, 1024, bias=False) self.ptq_1 = QuantCalibrationOp(record_file, quant_algo_params=self.quant_algo_params, quant_method="kv_cache_quant") def forward(self, layer_name, x): x = self.layer1(x) x = self.ptq_1(layer_name, x) # 保存量化因子的record文件路径 temp_folder = "./" record_file = os.path.join(temp_folder, 'kv_cache.txt') input_data = torch.randn((2, 2, 28, 28)) quant_algo_params = {"act_algo": "hfmg"} model = LinearNet(quant_algo_params).to(torch.device("cpu")) model.eval() ans_2 = model("qat_1", input_data)

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

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

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

RPGMakerMZ 物品 经验丹 增加经验物品 如何制作

个人记录保存 Project1论坛 小圈子 人才 不得学习我的技术 退出去 物品内无法直接增加经验值 需要用到脚本代码 直接上代码 //=======================================================================//=====================使用经验值增加等物品====================…

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

从代码复用到能力复用:探索技能化开发平台的设计与实践

1. 项目概述&#xff1a;一个面向开发者的技能复用与协作平台最近在和一些独立开发者朋友交流时&#xff0c;大家普遍提到一个痛点&#xff1a;很多项目里用到的功能模块、工具函数、甚至是完整的业务逻辑&#xff0c;其实在不同项目中是高度重复的。每次新开一个项目&#xff…

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

OpenClaw Install Tools:基于AI与WebRTC的智能部署工具实战

1. 项目概述与核心价值最近在折腾一个叫 OpenClaw 的开源项目&#xff0c;想把它部署到自己的电脑上当个私人 AI 助手&#xff0c;结果发现它的安装过程有点“劝退”。官方文档虽然详细&#xff0c;但步骤分散&#xff0c;涉及环境配置、依赖安装、飞书插件对接等多个环节&…

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

Cortex-M0+内存屏障指令原理与应用详解

1. Cortex-M0内存访问顺序问题解析在嵌入式系统开发中&#xff0c;我们常常假设处理器会严格按照代码顺序执行内存访问操作。然而现实情况要复杂得多——现代处理器为了提高效率会采用多种优化手段&#xff0c;这可能导致实际内存操作顺序与程序代码顺序不一致。以Cortex-M0为例…

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

Godot游戏开发瑞士军刀:bitbrain/godot-gamejam工具集深度解析与应用指南

1. 项目概述&#xff1a;一个为Godot游戏开发者准备的“瑞士军刀”如果你是一位使用Godot引擎的游戏开发者&#xff0c;尤其是热衷于参加Game Jam&#xff08;游戏开发极限挑战&#xff09;的创作者&#xff0c;那么你肯定对“时间紧、任务重”这句话有切肤之痛。在48或72小时的…

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

AI学习路线图深度解析:从零到精通的系统化学习指南

1. 项目概述&#xff1a;一份为AI学习者量身定制的导航图最近几年&#xff0c;人工智能领域的热度居高不下&#xff0c;无论是想转行的开发者、在校学生&#xff0c;还是希望提升业务洞察力的产品经理&#xff0c;几乎所有人都想在这个浪潮里分一杯羹。但问题也随之而来&#x…

作者头像 李华