大模型稀疏量化工具包括稀疏、量化和压缩三个部分:
- 稀疏:模型稀疏工具通过算法判断模型权重中每个元素对精度结果的重要性,并将模型权重中对最终精度影响小的权重值置零。
- 量化:对权重和激活值都做量化,将高位浮点数转为8bit,可以直接降低权重体积,带来性能收益。
- 压缩:权重压缩工具将模型权重通过压缩算法进一步编码压缩,最大程度地降低权重体积,生成压缩后权重和索引文件。
[object Object]
稀疏+量化后权重目录结构:
- 量化后产物包含:权重文件quant_model_weight_w8a8s.safetensors和权重描述文件quant_model_description.json。
- 目录中的其余文件为推理时所需的配置文件,不同模型略有差异。
以下展示了量化后权重描述文件quant_model_description.json中的部分内容:
量化后的MatMul权重,新增input_scale、input_offset、quant_bias和deq_scale。其中input_scale和input_offset用于对激活值进行量化。MatMul使用量化后的激活值和量化权重进行计算。quant_bias和deq_scale用于对MatMul的计算结果进行反量化。
压缩后权重目录结构:
压缩前会先加载权重,并进行多卡切分,压缩算法需在切分后的权重上执行。
以下展示了量化后权重描述文件part0-of-4/quant_model_description.json中的部分内容:
压缩后的MatMul权重相比量化新增了index,压缩信息用于复原权重。
图 1 量化权重推理时流程[object Object][object Object]
表 1 float16权重量化后dtype及shape信息(假设原始权重的shape为[n, k])
在使用稀疏量化脚本之前,需要安装压缩工具msModelSlim,安装步骤参见《msModelSlim工具》的“”章节。
以Qwen3-8B为例:
使用以下指令生成W8A8S量化权重。
[object Object]- 以上指令包含生成Qwen3-8B W8A8S稀疏量化权重的最优参数配置,不同模型的参数配置不同,请参考模型Readme文件。
- 生成权重后需将浮点权重下的special_tokens_map.json文件复制到W8A8S量化权重路径
使用以下指令设置msModelSlim工具所在的Python路径环境变量,{Python Lib Path}为安装msModelSlim时编译步骤中所在的Python路径。
[object Object]使用以下指令对量化权重进行压缩,生成W8A8SC量化权重。
[object Object]TP数为张量并行个数,需和权重运行时的张量并行个数保持一致。
以Qwen3-8B为例,您可以使用以下指令执行对话测试,推理内容为"What's deep learning?"。