本文档记录 nvidia/Gemma-4-26B-A4B-NVFP4 在 Ascend 910B4 NPU 环境下的适配分析结果。
核心结论:该模型在当前昇腾环境中存在多项根本性技术障碍,无法直接完成适配验证。主要阻塞点为:
FusedMoE 等模块| 项目 | 内容 |
|---|---|
| 模型名称 | nvidia/Gemma-4-26B-A4B-NVFP4 |
| 基础架构 | Google Gemma-4 26B-A4B (MoE) |
| 总参数量 | ~25.2B |
| 激活参数量 | ~3.8B per token |
| 专家数量 | 128 experts,top-8 routing + 1 shared expert |
| 上下文长度 | 256K tokens |
| 量化格式 | NVFP4 (W4A4,NVIDIA 专有) |
| 任务类型 | text-generation / conversational |
| 支持模态 | Text + Image (Video 需帧提取) |
| 组件 | 版本 |
|---|---|
vllm | 0.18.0+empty |
vllm-ascend | 0.18.0rc1 |
transformers | 4.57.6 |
torch | 2.9.0+cpu |
torch-npu | 2.9.0.post1+gitee7ba04 |
diffusers | 0.37.1 |
1 逻辑卡(Ascend 910B4,32GB HBM)8.5.1问题描述:
nvidia/Gemma-4-26B-A4B-NVFP4 使用 NVFP4(NVIDIA 4-bit Floating Point)量化格式。这是一种 NVIDIA Blackwell 架构引入的专有数值格式,具备以下特征:
modelopt 工具链的特定 scale 编码方式Ascend 兼容性:
| 格式 | Ascend 支持 | 说明 |
|---|---|---|
| BF16 | 支持 | 原生支持 |
| FP16 | 支持 | 原生支持 |
| FP8 (E4M3/E5M2) | 部分支持 | 需 CANN 版本匹配 |
| INT8/INT4 | 支持 | 需显式量化配置 |
| NVFP4 | 不支持 | NVIDIA 专有格式,无解码器 |
结论:即使模型架构本身可适配,NVFP4 格式的权重文件在 Ascend NPU 上无法加载和解析。
问题描述:
当前安装的 vllm 0.18.0 的模型目录中不存在 gemma4.py:
vllm/model_executor/models/
├── gemma.py # Gemma (original)
├── gemma2.py # Gemma 2
├── gemma3.py # Gemma 3
├── gemma3_mm.py # Gemma 3 Multimodal
├── gemma3n.py # Gemma 3n
└── ...
# 无 gemma4.pyvLLM 上游在 v0.20.x 版本中通过 PR #16588 引入 gemma4.py(约 1718 行),实现了 Gemma-4 的 MoE 架构、Dual Attention、Vision Encoder 等模块。
vLLM-Ascend 版本约束:
| vLLM 版本 | vLLM-Ascend 兼容版本 | gemma4 支持 |
|---|---|---|
0.18.0 | 0.18.0rc1 (当前) | 不支持 |
0.19.x | 无官方版本 | 不支持 |
0.20.x | 无官方版本 | 支持 |
结论:vLLM-Ascend 当前最新版本(0.18.0rc1)不支持 vLLM 0.20+,因此无法通过简单升级获取 gemma4 支持。
问题描述:
Gemma-4 采用 Mixture-of-Experts (MoE) 架构,vLLM 中的 gemma4.py 依赖以下 0.20+ 引入的 MoE 基础设施:
from vllm.model_executor.layers.fused_moe import (
FusedMoE,
GateLinear,
fused_moe_make_expert_params_mapping,
)当前 vLLM 0.18.0 中的 MoE 模块 API 与 0.20+ 存在差异。将 1718 行的 gemma4.py 及其依赖移植到 vLLM 0.18.0:
问题描述:
即使忽略上述格式和架构问题,使用 BF16 原始权重(google/gemma-4-26B-A4B-it)在单卡 32GB HBM 上运行也不可行:
| 配置 | 估算显存占用 | 32GB HBM 可行性 |
|---|---|---|
| BF16 权重 | ~50GB | 不可行 |
| NVFP4 权重 | ~16GB (仅权重) | 格式不兼容 |
| BF16 + TP=2 | ~25-28GB / 卡 | 需 2 卡,且需 gemma4 支持 |
| BF16 + TP=4 | ~12-15GB / 卡 | 需 4 卡,且需 gemma4 支持 |
结论:当前单卡 32GB HBM 环境无法运行 26B BF16 模型,至少需要 2 卡 Tensor Parallel。
等待 vLLM-Ascend 发布支持 vLLM 0.20+ 的版本,届时:
google/gemma-4-26B-A4B-it BF16 原始权重(非 NVFP4)预计时间:取决于 vLLM-Ascend 社区迭代节奏
不通过 vLLM,直接使用 transformers 库加载 Gemma-4:
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained(
"google/gemma-4-26B-A4B-it",
torch_dtype=torch.bfloat16,
device_map="auto", # 自动分配到 NPU
)限制:
将 vLLM 0.20+ 的 gemma4.py 和 MoE 基础设施反向移植到 vLLM 0.18.0:
不建议在当前项目中采用此路径。
| 验证项 | 结果 | 说明 |
|---|---|---|
| NVFP4 格式解析 | ❌ 不支持 | NVIDIA 专有格式 |
| vLLM gemma4 模型 | ❌ 不支持 | 当前版本缺失实现 |
| vLLM-Ascend 版本升级 | ❌ 不可行 | 无 0.20+ 兼容版本 |
| MoE 基础设施 | ❌ 不兼容 | API 版本差异 |
| 单卡 32GB 加载 26B BF16 | ❌ 不可行 | 显存不足 |
| transformers 直接加载 | ⚠️ 待验证 | 需 BF16 权重 + 多卡 |
| 环境检查 (torch_npu) | ✅ 通过 | NPU 可用,版本正常 |
| vLLM-Ascend 安装 | ✅ 通过 | v0.18.0rc1 运行正常 |
若需在昇腾 NPU 上运行类似的文本生成模型,建议考虑以下已验证兼容的替代方案:
| 模型 | 架构 | 参数 | 昇腾兼容性 | 说明 |
|---|---|---|---|---|
Qwen/Qwen3.5-27B | Dense | 27B | ✅ 已验证 | vLLM-Ascend 官方支持 |
Qwen/Qwen3.6-27B | Dense | 27B | ✅ 已验证 | vLLM-Ascend 官方支持 |
google/gemma-2-27b-it | Dense | 27B | ✅ 支持 | vLLM 0.18.0 有 gemma2.py |
google/gemma-3-27b-it | Dense | 27B | ✅ 支持 | vLLM 0.18.0 有 gemma3.py |
Gemma-2 和 Gemma-3 系列为 Dense 架构(非 MoE),在当前 vLLM-Ascend 0.18.0 环境中可直接运行。
报告生成日期: 2026-05-12 适配文档版本: v1.0.0 分析工具: vLLM 0.18.0, vLLM-Ascend 0.18.0rc1, transformers 4.57.6 GitCode 仓库: https://gitcode.com/wilyw/Gemma-4-26B-A4B-NVFP4