ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

读懂recipe.yaml:Mistral-7B-Instruct-v0.3-w4a16-llmcompressor-v0.10.0.2的AWQ量化配方逐行解析(附完整配置解读)

读懂recipe.yaml:Mistral-7B-Instruct-v0.3-w4a16-llmcompressor-v0.10.0.2的AWQ量化配方逐行解析(附完整配置解读) 读懂recipe.yamlMistral-7B-Instruct-v0.3-w4a16-llmcompressor-v0.10.0.2的AWQ量化配方逐行解析附完整配置解读【免费下载链接】Mistral-7B-Instruct-v0.3-w4a16-llmcompressor-v0.10.0.2项目地址: https://ai.gitcode.com/hf_mirrors/amd/Mistral-7B-Instruct-v0.3-w4a16-llmcompressor-v0.10.0.2在 HuggingFace 镜像仓库 hf_mirrors/amd/Mistral-7B-Instruct-v0.3-w4a16-llmcompressor-v0.10.0.2 中有一个不起眼却决定模型身材的关键文件——recipe.yaml。它是 AMD 使用LLM Compressor对 Mistral-7B-Instruct-v0.3 进行AWQ 量化4-bit Weight-OnlyW4A16 非对称时的烹饪配方完整记录了每个量化步骤。本文将逐行拆解这份 22 行的配置帮你彻底看懂 AWQ 量化配方是如何工作的即使你是量化新手也能轻松上手。recipe.yaml 是什么量化项目的说明书在 LLM Compressorv0.10.0.2中量化过程不是随手敲几行命令而是由一份 YAML 配方recipe驱动。recipe.yaml定义了三个核心问题量化哪些层、用什么量化方案、如何减少精度损失。这份配方服务于 AMD 的 ZenDNN CPU 推理栈vLLM v0.22.0 ZenTorch目标是让 70 亿参数的 Mistral 模型在 AMD EPYC 处理器上以更小体积、更快速度运行。逐行解析AWQ 量化配方的核心配置第一段default_stage 与 AWQModifier 的选择default_stage: default_modifiers: AWQModifier:default_stage声明这是一个默认阶段LLM Compressor 会按顺序执行其中的所有修改器modifier。AWQModifier选择AWQActivation-aware Weight Quantization算法。它与普通 PTQ 的最大区别是量化时感知激活值分布把权重中更重要的通道保护起来大幅降低 4-bit 量化带来的精度损失。第二段量化范围——targets 与 ignoretargets: [Linear] ignore: [lm_head]targets: [Linear]量化目标覆盖模型中所有nn.Linear层attention 的 q/k/v/o 投影、FFN 的 gate/up/down 等。ignore: [lm_head]跳过 lm_head 输出层。这是刻意为之——lm_head 与输入 embedding 共享参数且直接决定生成质量保持高精度更划算。第三段量化方案——W4A16_ASYMscheme: W4A16_ASYM bypass_divisibility_check: falsescheme: W4A16_ASYM权重 4-bit、激活保持 16-bitFP16/BF16的非对称量化。权重只压缩不压缩激活CPU 推理时内存带宽压力大减同时非对称量化允许每层独立零点精度更高。bypass_divisibility_checks: false不跳过整除性检查。即要求 group_size128能整除隐藏维度保证向量化计算对齐这符合 ZenDNN 对张量布局的硬性要求。第四段AWQ 精髓——smooth 映射与激活均衡mappings: - smooth_layer: re:.*input_layernorm$ balance_layers: [re:.*q_proj$, re:.*k_proj$, re:.*v_proj$] - smooth_layer: re:.*v_proj$ balance_layers: [re:.*o_proj$] - smooth_layer: re:.*post_attention_layernorm$ balance_layers: [re:.*gate_proj$, re:.*up_proj$] - smooth_layer: re:.*up_proj$ balance_layers: [re:.*down_proj$]这 4 组映射是 AWQ 量化的灵魂平滑层smooth_layer平衡层balance_layers作用input_layernormq_proj、k_proj、v_proj均衡注意力三投影的激活分布v_projo_proj均衡注意力输出的回流post_attention_layernormgate_proj、up_proj均衡 FFN 第一段的两路分支up_projdown_proj均衡 FFN 输出投影为什么要做 smooth4-bit 量化对激活值中的离群大值非常敏感。通过正则表达式re:.*input_layernorm$匹配层名把激活中的离群值平滑到相邻线性层的权重里即权重吸收一部分数值范围从而让每个量化区间都均匀分布显著提升量化精度。每个activation_hook_target: null表示不额外挂载激活钩子保持最简路径。第五段进阶调优——duo_scaling 与 n_gridduo_scaling: true n_grid: 20duo_scaling: true开启双缩放duo scaling。在平滑之外再引入第二组缩放系数配合 ZenDNN 的优化内核可获得更好的精度-性能平衡。n_grid: 20网格搜索规模为 20。AWQ 会在 20 个候选缩放因子中遍历选出精度损失最小的最优解。数值越大越精细但校准耗时也越长20 是 CPU 场景下性价比很高的折中。配方的成果config.json 里的量化配置量化完成后这份配方被翻译成config.json中的quantization_config两者可相互印证quantization_config: { quant_method: compressed-tensors, config_groups: { group_0: { format: pack-quantized, targets: [Linear], weights: { num_bits: 4, type: int, symmetric: false, group_size: 128, strategy: group } } }, ignore: [lm_head], quantization_status: compressed, version: 0.14.0.1 }关键点对应关系一目了然recipe.yamlconfig.json含义W4A16_ASYMnum_bits: 4, symmetric: false4-bit 非对称量化默认组策略group_size: 128, strategy: group按 128 分组量化targets: [Linear]targets: [Linear]量化 Linear 层ignore: [lm_head]ignore: [lm_head]跳过 lm_head-format: pack-quantized打包存储CPU 加载更快模型权重按pack-quantized格式打包后体积可压缩至原 BF16 版本的约 1/4这正是 4-bit 权重量化的直接收益。完整的量化过程代码加载模型、校准数据集、调用oneshotAPI可以查看项目内的 README.md 中的 Quantization 章节。总结这份 AWQ 量化配方的价值通过逐行解析可以总结出 AMD 这份recipe.yaml的三个设计要点精准裁剪targetsignore精确控制量化边界保护输出层精度激活感知4 组 smooth 映射 duo_scaling把 AWQ 的优势发挥到极致这是 GSM8K 基准上恢复 48.29% 准确率的关键保障硬件对齐W4A16_ASYM、整除性检查、n_grid: 20都是为了匹配 ZenDNN 的 CPU 内核优化。如果你正准备复现或改造一个 W4A16 量化模型这份 recipe.yaml 就是一份可以直接参考的标准答案。动手改一改n_grid或 smooth 映射观察精度变化你会更快理解量化的底层逻辑。【免费下载链接】Mistral-7B-Instruct-v0.3-w4a16-llmcompressor-v0.10.0.2项目地址: https://ai.gitcode.com/hf_mirrors/amd/Mistral-7B-Instruct-v0.3-w4a16-llmcompressor-v0.10.0.2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进