AMCT-LLM 如何打通大模型低比特量化全流程
引言
在 AI 大模型时代,模型部署时会遇到容量压力、带宽与吞吐压力和工程适配压力。同时,本可以收敛成一条工具链的工作被分散在各个流程中,进而导致在适配不同模型时做重复工作。如何低成本的部署模型,如何把模型量化收敛成一条统一的工作流,是这个时代需要解决的问题。
AMCT-LLM 是一款面向大语言模型低比特量化的模型压缩工具,将模型适配、精度评估、量化优化与部署导出收敛为统一工作流。相比针对不同模型和量化方案重复编写定制脚本,AMCT-LLM 通过统一的工作流支持多种模型架构、量化格式及 PTQ 算法,大幅降低了大模型量化的开发与调优门槛,帮助开发者更高效地完成模型量化和昇腾平台部署。
本文将系统介绍 AMCT-LLM 工具的全流程,并展示 Qwen-3.6-MoE 的全流程样例以及 DeepSeek-V4-Flash 的 PTQ 样例,帮助开发者更好的了解 AMCT-LLM 的使用方式。
1. 模式适配:把结构差异收敛到统一接口
1.1 LLM 共性
当前主流大语言模型大多采用 decoder-only 架构。如下图所示,AMCT-LLM 利用这一共性,将推理过程拆为三个阶段:
-
Decoder Layer 之前完成 embedding,并准备 hidden states、attention mask、position ids 等输入;
-
中间按层执行 Decoder block,前一层输出作为后一层输入;
-
全部 Decoder Layer 完成后执行 norm 和 lm head,得到最终输出并计算 PPL。
分阶段执行不仅是代码组织方式,也是节省计算资源的策略。对于参数规模巨大的模型,如果一次性把完整网络加载到单张卡上,显存压力很高;按 block 逐层执行并传递中间结果,可以在不改变原始计算逻辑的前提下,用单卡完成旗舰级模型的精度评估与量化分析。

1.2 通用模块拆解
如图所示的拆解,模型适配阶段,AMCT-LLM 将量化对象集中在 Decoder Layer 内,并按照模型结构进一步拆分为 MLP、MoE Expert、Attention Linear 和 Attention Cache 等量化模块。开发者可以通过 quant_target 灵活指定量化范围,并为不同模块配置独立的量化方案;同时,工具提供统一的 Quant Block 构建与前向接口,新模型只需完成少量接口映射和模块替换,即可复用已有量化能力,从而降低不同大模型架构的适配成本。

2. 精度评估:用三条通路把问题分层定位
使用模型困惑度(PPL)作为评定量化方案好坏的基础指标,相较于 benchmark 验证,测算 PPL 更加节省计算资源和时间成本。 为了保证通路的正确性,如下图,AMCT-LLM 采用三步评估方法:

2.1 BF16 基线
直接复用原模型 Decoder Layer,不替换模块,也不开启量化,使用 WikiText 计算 PPL,这一步的作用是保证当前仓上的原模型通路正常,为后续的工作提供一个基准数值。
2.2 浮点等价通路
确认原模型通路正确后,将原模块替换为 AMCT-LLM 内定义好的量化类,但通过 16 bit 配置关闭量化开关,本质还是维持 B16 的推理。如果结果与 baseline 基本一致,说明模型拆分、权重加载和模块替换是正确的;若差异明显,应优先回到适配层排查。
2.3 直转量化评估
打开量化开关,按照指定的 `quant_target`、`quant_dtype` 和 `bit_config` 再次计算 PPL,并比较量化前后的变化。 PPL 的价值不是替代所有任务评测,而是提供一个轻量、稳定、适合反复执行的早期信号。直转精度达标时,可以减少不必要的算法训练;不达标时,再进入 PTQ 优化,并在最终阶段补充 benchmark 验证。
3. 量化格式:支持多类型、多位宽、多策略
AMCT-LLM 并不局限于单一的整数定点量化,而是面向不同模型结构、精度要求和硬件执行特征,统一支持 INT4/INT8、FP8、MXFP4/MXFP8 以及 HiFP4/HiFP8 等多种低比特数据格式,不同格式的现状如下图所示:

不同格式在数值表示、缩放因子和量化粒度上各有侧重:INT 量化采用 FP32 Scale,支持 per-token、per-channel 和 per-block 等粒度,计算规则清晰且便于精细控制;FP8 提供 E4M3FN、E5M2 等数据类型,能够兼顾动态范围与表示精度;MXFP 采用共享指数机制,以较细的分组粒度对数据进行缩放,更贴合硬件原生低精度计算;HiFP 则通过自定义浮点编码和分级缩放,在扩大数值动态范围的同时提升低比特表示精度。 开发者只需通过 `--quant_dtype` 选择量化数据类型,并在 `--bit_config` 指定的 YAML 文件中配置各层位宽,即可针对 MLP、MoE、Attention Linear 和 Attention Cache 等模块设置差异化量化方案。
4. PTQ算法:针对不同误差来源选择合适算法进行精度优化
真实模型的权重和激活通常不是均匀分布的。少量 outlier 会拉大量化范围,使主体数值只能挤在有限的量化等级中,这在 W4 或 A4 场景尤其明显。 针对这一问题,SmoothQuant、OmniQuant 等算法通过缩放或可学习变换,在激活与权重之间重新分配量化难度;Hadamard、FlatQuant 等结构变换方法则进一步调整数据分布,使量化区间得到更充分的利用。 如下图所示,在激活值的绝对值中存在明显大于其他元素的元素,这种值成为异常值(outlier),异常值的存在会导致在量化时,大部分正常数值挤在同一个区间内,进而劣化量化效果。通过结构型算法,调整激活和权重的数值分布,进而得到了两个更适合量化的数值分布。

5. 实操案例:LWC 如何改善 DeepSeek-V4-Flash 的 INT4 量化误差
本次直播将展示 DeepSeek-V4-Flash 的量化实践。以权重分部入手,如下图所示,原始 BF16 Expert 权重主体集中在零附近,但两侧存在少量 outlier。直接进行 INT4 量化时,为覆盖极端值,有限的量化等级被迫分配给较宽的范围,主体权重被压缩到少量离散点,导致量化后的误差变大。引入 LWC 后,算法通过校准数据学习裁剪范围,对少量 outlier 进行适度截断。如下图最右所示,经过 LWC 优化后的 INT4 量化权重分布更加贴近 BF16 时的分布,进而优化量化后的模型性能。

如下图所示,引入 LWC 后,最终 MoE-W4A8-INT 量化方案在多项任务上与 BF16 基线保持接近:

6. 部署导出:从量化结果导出成框架侧可部署的模型
Deploy 阶段会把验证通过的结果转换为真正的离线权重,包括量化权重、Scale、PTQ 参数和更新后的配置文件;必要时,还会按照推理算子的要求完成 pack。 导出逻辑如下图所示,INT8 权重可使用 `torch.int8` 保存并配套 FP32 Scale;INT4 和 MXFP4 需要将多个低比特值打包;FP8/MXFP8 可使用硬件支持的浮点编码;HiFloat 则需要保存对应编码权重和缩放参数。导出的权重可以继续交给 CANN-RECIPES-INFER 等下游仓进行部署适配。
7. Agent 助力:用 Agent 把经验变成可复用工作流
AMCT-LLM 进一步引入 Agent 工作流,使用 Agent 帮助开发者进行模型适配、方案推荐、量化评测、算法优化和部署导出。Workflow Agent 首先检查目标模型的适配状态,并结合 Casebook 中沉淀的历史案例,判断任务应进入新模型接入还是模型量化阶段;对于尚未支持的模型,由 Model Adapter 完成模型注册、BF16 基线测试、关闭量化后的浮点等价验证以及最小 PTQ 冒烟测试;进入量化阶段后,Model Quantization 会依次调用 Scheme Recommendation、Direct Quant Eval、Algorithm Recommendation、Algorithm Validation 和 Deploy Export 等 Quant Tools,完成量化方案推荐、直转精度评测、PTQ 算法选择与验证,以及量化权重和方案文档的导出。每次任务产生的模型特征、量化配置与实验结果还会继续回写 Casebook,形成可复用的经验闭环。

欢迎各位访问 AMCT 仓以及 CANN-RECIPES-INFER 仓来尝试我们提供的一站式样例。
相关资源
AMCT:https://gitcode.com/cann/amct
CANN-RECIPES-INFER:https://gitcode.com/cann/cann-recipes-infer
更多推荐




所有评论(0)