GLM-5.3-Flash-w8a8 量化模型
1. 基本信息
| 项目 |
信息 |
| 原始模型名 |
GLM-5.3-Flash(BF16) |
| 原始模型链接 |
https://www.modelscope.cn/models/ZhipuAI/GLM-5.3-Flash-BF16 |
| 量化工具 |
msModelSlim |
| 量化配置 |
lab_practice/glm_5_next/glm_5_next_w8a8_v1.yaml |
| 量化方案说明 |
https://gitcode.com/Ascend/msmodelslim/pull/1065 |
| 落盘格式 |
AscendV1(safetensors,单分片 4 GB) |
| 测试机型 |
Atlas A3 系列 |
| 验证环境 |
vLLM-Ascend |
2. 本次更新说明
本次更新采用 msModelSlim 新增的 glm_5_next_w8a8_v1 量化配置,相对经典版 W8A8 方案(仅量化 MLP)的核心变化:
| 处理对象 |
经典版 w8a8 |
本次更新 |
| MLP(dense / 共享专家 / MoE 专家) |
W8A8 INT8 |
W8A8 INT8(不变) |
MLA 注意力压缩投影(q_a_proj / q_b_proj / kv_a_proj_with_mqa) |
保留 BF16 |
W8A8 INT8 |
注意力 O 投影(DSA 层 {3,7,11,15,19,23,27,31,35,39,43} 及 MTP 层 45 的 o_proj) |
保留 BF16 |
W8A8 INT8 |
- 量化范围与官方 FP8 权重方案对齐,压缩比更高,精度基线可比;
- 路由
gate、KDA 线性注意力层投影、kv_b_proj、indexer、embedding / lm_head / norm / vision tower 等敏感模块仍保留高精度(详见 3.3);
- 仓库权重已全量替换:84 个分片(约 4 GB/片),共 308.98 GiB,发布前后经过逐文件 SHA256 校验(详见 4)。
3. 量化方案
3.1 量化配置
| 项 |
配置 |
| 权重 |
INT8,per_channel,对称 minmax |
| 激活 |
INT8,per_token,对称 minmax(动态,逐 token 计算 scale,无需离线固定) |
| 量化类型 |
W8A8_DYNAMIC |
3.2 量化范围
| 处理对象 |
include |
exclude |
精度 |
| MLP(dense / 共享专家 / MoE 专家) |
*mlp* |
*gate |
W8A8 INT8 |
| MLA 注意力压缩投影 |
*self_attn.q_a_proj、*self_attn.q_b_proj、*self_attn.kv_a_proj_with_mqa |
- |
W8A8 INT8 |
| 注意力 O 投影 |
*layers.{3,7,11,15,19,23,27,31,35,39,43,45}.self_attn.o_proj |
- |
W8A8 INT8 |
3.3 保留高精度的模块(保护对象)
gate(MoE 路由):保证专家路由稳定;
- KDA 线性注意力层投影(
q/k/v/f/b/g_proj、conv1d、dt_bias 等,34 层):保留 BF16;
kv_b_proj(MLA 值投影)、indexer(稀疏注意力索引):避免长序列检索精度劣化;
- embedding / lm_head / 各类 norm / vision tower:保留浮点。
实测产物中:113,449 个 tensor 里 112,014 个为 W8A8_DYNAMIC、1,434 个为 FLOAT(上述保护对象)、另含 1 个 QuaRot 旋转矩阵。
3.4 处理流水
quarot → flex_smooth_quant(norm-linear) → linear_quant
- QuaRot 正交旋转:对权重左旋、激活右旋(W′ = QᵀW,X′ = XQ,QᵀQ = I,计算严格等价),将集中在少数通道的激活离群值分散到多通道,为 INT8 量化提供平滑分布;旋转信息随产物发布(
rot.safetensors、optional/quarot.safetensors);
- Flex SmoothQuant:在 norm-linear 子图上引入互逆缩放(X′ = X/s,W′ = W·s),将激活幅度等价迁移到权重侧,压平激活峰值;
- Linear Quant:minmax 线性量化(权重 per_channel、激活 per_token 动态)。
3.5 落盘
以 ascendv1_saver 保存,单分片 4 GB(part_file_size: 4),共 84 片;quant_model_description.json 记录逐 tensor 量化类型,供部署侧加载。
4. 产物实测校验
| 校验项 |
结果 |
| 文件构成 |
98 文件 / 308.98 GiB(84 分片 + index + description + 旋转矩阵 + tokenizer/config) |
| tensor 总数 |
113,449(W8A8_DYNAMIC 112,014 + FLOAT 1,434 + 旋转矩阵 1) |
| 量化参数组 |
37,338 组,每组 weight(INT8) + weight_scale(F32) + weight_offset(F32) 三件套完整,无缺失 |
| dtype 分布 |
INT8 37,338 / F32 74,719 / BF16 1,392 |
| 与 BF16 原始权重对比 |
38,770 个 tensor 全覆盖(38,364 同名 + 406 统一重命名),逐层核对无缺失 |
| safetensors 结构 |
逐文件 header / data_offsets / 文件大小校验通过,无截断、无损坏 |
| 发布校验 |
上传后远端与本地逐文件 SHA256 完全一致(98/98) |
tensor 重命名说明:量化工具链对部分 tensor 做了统一重命名(如 hc_attn_base/fn/scale → attn_hc.base/fn/scale、self_attn.A_log → self_attn.forget_gate.A_log 等,共 406 个),属预期行为,部署框架按新命名加载。
5. 量化复现
5.1 安装 msModelSlim
git clone https://gitcode.com/Ascend/msmodelslim.git
cd msmodelslim
bash install.sh
# GLM-5.3-Flash 需指定 transformers 版本(5.16.0 不支持)
pip install transformers==5.16.1
5.2 执行量化(8 卡 NPU)
msmodelslim quant \
--model_path ${MODEL_PATH} \
--save_path ${SAVE_PATH} \
--device npu \
--device_id 0 1 2 3 4 5 6 7 \
--model_type GLM-5.3-Flash \
--config ${CONFIG_PATH}/glm_5_next/glm_5_next_w8a8_v1.yaml \
--trust_remote_code true
${MODEL_PATH}:GLM-5.3-Flash BF16 权重路径;${SAVE_PATH}:量化产物保存路径;
${CONFIG_PATH}:msModelSlim 安装目录下的 lab_practice 路径;
- 校准数据
mix_calib.jsonl 由配置自动匹配(与配置同目录),无需手动指定;
- v1 与经典版
glm_5_next_w8a8.yaml 的 verified tags 相同,需显式指定 --config 以区分。
6. 部署
(待补充)
7. 精度测试结果
| 模型名 |
量化格式 |
数据集 |
测试精度 (%) |
| GLM-5.3-Flash |
w8a8 |
(待补充) |
(待补充) |
8. 注意事项
gate、kv_b_proj、indexer 为保护对象,请勿在自定义配置中将其纳入量化范围;
- 如自定义量化层范围(include/exclude),平滑参数与量化器、位宽强耦合,调整后建议重新执行参数搜索;
- W8A8C8(KV Cache INT8)场景由 vLLM-Ascend 部署侧使能,无需额外量化配置。