如何5分钟跑通gemma-4-26B-A4B-it-w8a8-llmcompressor:AMD EPYC + vLLM CPU推理快速开始完整教程
gemma-4-26B-A4B-it-w8a8-llmcompressor 是 AMD 官方发布的 Gemma 4 26B MoE 大模型的 W8A8 八位量化版本,专为 AMD EPYC 服务器的 CPU 推理优化。配合 vLLM 推理引擎与 ZenDNN 加速库,无需 NVIDIA GPU,一台 EPYC 主机即可跑通这条 26B 参数的多模态模型,速度比想象中快得多。本教程带你从零开始,5 分钟完成环境安装、模型加载与首次推理。
一、先搞懂:这个模型量化了什么?
在动手之前,花 1 分钟理解 W8A8 量化,你就知道它为什么"值得跑"。
| 项目 | 说明 |
|---|---|
| 量化方案 | W8A8:权重 8-bit(int8,per-channel 静态),激活 8-bit(int8,per-token 动态) |
| 量化算法 | Round-to-Nearest(RTN),由 LLM Compressor 完成 |
| 体积变化 | 从 BF16 的 48.1 GiB 压缩到 25.3 GiB,磁盘占用减少约 47% |
| 精度回收 | GSM8K(5-shot)0.9363,相对 BF16 基线 0.9462 回收98.95% |
| 推理硬件 | AMD EPYC(CPU only),推荐 Linux 系统 |
| 推理引擎 | vLLM v0.29.0 + ZenDNN v6.1.0 |
模型架构为Gemma4ForConditionalGeneration:30 层、每层 128 个路由专家(top-8 激活,即"A4B"约 4B 激活参数)的 MoE 结构,并带视觉塔,支持文本、图像、音频、视频输入。其中专家、共享 MLP 与注意力投影全部量化为 INT8;而 MoE 路由器、视觉塔、lm_head和词嵌入保留 BF16——这些是量化最敏感的部分,config.json 的quantization_config.ignore字段列出了完整的豁免清单。
👉 量化配方保存在 recipe.yaml 中,用 YAML 描述了scheme: W8A8与忽略规则,非常适合作为学习量化配置的参考。
二、一键安装步骤:准备运行环境
CPU 推理对版本一致性要求很高。本项目锁定了完整的依赖栈,版本不匹配可能导致模型无法正确加载:
| 组件 | 版本 |
|---|---|
| vLLM | 0.29.0 |
| llmcompressor | 0.13.0 |
| ZenTorch | 2.13.0.2 |
| PyTorch | 2.13.0.2 |
| ZenDNN | 6.1.0 |
安装命令(建议使用虚拟环境):
python -m venv vllm-cpu && source vllm-cpu/bin/activate pip install vllm==0.29.0 llmcompressor==0.13.0 # ZenTorch / ZenDNN 从 AMD 官方渠道安装最快配置方法:设置 OpenMP 环境变量
CPU 多线程推理的性能关键在 OpenMP 运行时。启动 vLLM之前,需要设置LD_PRELOAD指向 LLVM 或 Intel 的 OpenMP 库:
# LLVM OpenMP(任选其一) export LD_PRELOAD=$(find /path/to/env -name "libomp.so" | head -1) # 或 Intel OpenMP export LD_PRELOAD=$(find /path/to/env -name "libiomp5.so" | head -1)⚠️ 注意:必须在启动 vLLM 或任何推理脚本之前设置
LD_PRELOAD,否则多核加速可能不生效。
三、5分钟跑通:首次 vLLM 推理
第 1 步:获取模型文件
git clone https://gitcode.com/hf_mirrors/amd/gemma-4-26B-A4B-it-w8a8-llmcompressor或者在 Python 中通过本地目录直接指向模型(跳过下载)。完整模型文件清单见 model.safetensors.index.json,两个分片共约 25 GiB,磁盘请预留至少 30 GiB。
第 2 步:加载模型并生成
以下是最简的 vLLM 推理代码,约 10 行即可看到输出:
from vllm import LLM, SamplingParams model = LLM( model="./gemma-4-26B-A4B-it-w8a8-llmcompressor", # 本地模型路径 dtype="bfloat16", ) sampling_params = SamplingParams(temperature=0.7, max_tokens=256) outputs = model.generate(["你好,请介绍一下自己"], sampling_params) print(outputs[0].outputs[0].text)首次加载 25 GiB 权重到内存需要一点时间(视内存带宽而定),之后即可流畅生成。模型自带的采样参数(温度 1.0、top_k 64、top_p 0.95)定义在 generation_config.json 中,实际业务建议按官方示例把 temperature 调到 0.7 左右,输出更稳定。
第 3 步(可选):验证量化配置是否被正确识别
推理日志中如果看到 compressed-tensors 相关加载信息,说明 W8A8 量化路径已生效;若报加载错误,优先检查第二节中的版本是否完全一致。
四、模型文件结构一览
拿到仓库后,各文件用途如下,排查问题时可按图索骥:
| 文件 | 用途 |
|---|---|
| model-00001-of-00002.safetensors、model-00002-of-00002.safetensors | INT8 量化权重分片(含 weight 与 weight_scale) |
| config.json | 模型配置:MoE 架构、量化组、忽略清单 |
| chat_template.jinja | 官方对话模板,支持工具调用与思维链 |
| processor_config.json | 图像/音频/视频处理器配置 |
| generation_config.json | 默认采样参数 |
| recipe.yaml | 量化配方(W8A8) |
| tokenizer.json、tokenizer_config.json | 分词器 |
| LICENSE、NOTICE.txt | Gemma 许可证与版权声明 |
五、常见问题排查清单
1. 模型加载失败或版本报错本项目与 ZenDNN v6.1.0 / ZenTorch v2.13.0.2 / PyTorch v2.13.0.2 做了深度绑定,其他版本可能无法正确加载。请严格对齐第二节的版本表。
2. 推理速度慢于预期
- 确认
LD_PRELOAD已在启动前设置; - 确认系统为 Linux(推荐),且 CPU 为 AMD EPYC;
- 该模型面向 CPU 推理优化,不适用于 GPU 推理,请勿用 GPU 环境评估性能。
3. 内存不够用量化后权重 25.3 GiB,加上 KV cache 与运行时开销,建议主机内存 ≥ 48 GiB。MoE 架构 top-8 激活的特性使得单次前向计算量小,这是它能在 CPU 上"跑得起、跑得动"的核心原因。
4. 想复现量化过程?README.md 中给出了完整的llmcompressor.oneshot量化脚本与 W8A8 配方定义,从 BF16 基座模型到压缩权重全流程可复现。
六、总结:为什么值得在你的 EPYC 机器上跑它
✅无 GPU 门槛:一台 AMD EPYC 服务器 + vLLM,即可部署 26B 级 MoE 多模态模型 ✅体积减半:W8A8 量化把磁盘占用从 48.1 GiB 压到 25.3 GiB ✅精度几乎无损:GSM8K 回收率 98.95%,数学推理能力保留完好 ✅官方完整工具链:ZenDNN 优化 + vLLM 调度,生产级 CPU 推理体验
按照上面"安装 → 设置 OpenMP → 加载推理"三步走,5 分钟内你就能在自己的 EPYC 主机上看到它的第一段回答。后续可以尝试通过 chat_template.jinja 模板接入多轮对话与工具调用,把这套 CPU 推理栈用到你的实际业务中。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考