GLM-5.3-Flash-w8a8

13.2K downloads 31 likes on ModelScope updated

Model card

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 部署侧使能,无需额外量化配置。