【Hello-ROCm】vLLM 跑通 Gemma4-E4B

学习来源:Datawhale × AMD AI 学习中心 Day1-2 实操任务

第一步:确认云环境和模型目录

1.1 检查 GPU

bash 复制代码
amd-smi

输出(节选):

复制代码
| AMD-SMI 26.2.2+e1a6bc5663    amdgpu version: 6.14.14  ROCm version: 7.2.1
| VBIOS version: 00162356
| 0000:43:00.0    AMD Radeon Graphics | 0 %  34 °C  0  8/241 W |
|   0     0     N/A   N/A            | 0 %  20.0 %   26/49136 MB |

"AMD Radeon Graphics" 不是型号 ------VBIOS 没填产品名时的 fallback。容量看 Mem-Usage 第二列:49136 MB ≈ 48 GiB,功耗上限 241W。

真实型号要靠 lspci -nn -s 43:00.0 拿 PCI Device ID 推断。我这里候选是 W7900(RDNA3, 48 GiB GDDR6, gfx1100)。注意 W7900 是工作站卡,出现在云上有点奇怪,但容量+功耗都对得上。

1.2 验证 PyTorch 能看到 GPU

bash 复制代码
python -c "import torch; print('PyTorch:', torch.__version__); print('ROCm available:', torch.cuda.is_available()); print('Device:', torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'N/A')"

预期:

复制代码
PyTorch: 2.x.x+rocm7.2.1
ROCm available: True
Device: AMD Radeon Graphics

ROCm available: True 这一行是金标准,看到它就可以放心往下走。


第二步:下载 Gemma 4 模型

4.1 切国内 pip 源(加速)

bash 复制代码
pip config set global.index-url https://mirrors.cloud.tencent.com/pypi/simple/

4.2 装 ModelScope

ModelScope 是阿里达摩院的国内开源模型社区,服务器在国内,下载比 HuggingFace 稳定得多。

bash 复制代码
pip install modelscope

4.3 下载 Gemma 4-E4B-it

bash 复制代码
modelscope download --model google/gemma-4-E4B-it --cache_dir "./models"

4.4 验证

bash 复制代码
ls -lh ./models/google/gemma-4-E4B-it/

关键文件 model.safetensors 应该 15G 左右。模型下载齐了,"原料"就位。

第三步:启动 vLLM 服务

5.1 更新 vLLM

容器自带的 vLLM 往往版本太旧,装最新版才能跑 Gemma 4:

bash 复制代码
uv pip uninstall torchvision torchaudio
uv pip install vllm torchvision torchaudio \
  --no-cache \
  --index-url https://mirrors.aliyun.com/pypi/simple/ \
  --extra-index-url https://wheels.vllm.ai/rocm/ \
  -U

5.2 启动 vLLM 服务

bash 复制代码
vllm serve ./models/google/gemma-4-E4B-it/ --served-model-name gemma-4-E4B-it

注意:这个终端会被服务占死,启动日志会经过这几个阶段:

  1. Resolved architecture: Gemma4ForConditionalGeneration --- 架构解析
  2. Loading safetensors checkpoint shards: 100% Completed --- 权重加载
  3. Loading weights took 8.49 seconds --- 15 GiB 权重进显存
  4. Cache the graph of compile range (1, 2048) for later use --- torch.compile 在做 cudagraph capture,需要 1--3 分钟,耐心等
  5. Application startup complete. / Uvicorn running on http://0.0.0.0:8000 --- 服务就绪

第一次启动比较慢是因为要编译 cuda graph。只要日志还在滚动就是正常。

5.3 显存不足怎么办

把最大上下文长度收一收:

bash 复制代码
vllm serve ./models/google/gemma-4-E4B-it/ \
  --served-model-name gemma-4-E4B-it \
  --max-model-len 8192

不够就降到 4096。48 GiB 显卡一般能跑默认 131072 的 Gemma 4,但开多个会话容易 OOM,稳一点用 8192。


第四步:打开新终端对话测试

回到 JupyterLab,新开一个终端(原来的那个被 vllm 服务占着):

bash 复制代码
vllm chat --url http://localhost:8000/v1 --model gemma-4-E4B-it

进入交互模式后输入:

复制代码
你是谁,你能做什么

模型回答出来,就说明 Gemma 4 在 AMD ROCm 容器里跑通了。

常见报错 :httpcore.ConnectError: [Errno 111] Connection refused ------ vllm chat 是客户端,需要先有服务在跑。回第一个终端看 Application startup complete. 出现没,没出现就等。

进阶玩法:把 Gemma 4 接进 Claude Code

任务四步只到"对话测试"为止。但既然 vLLM 0.23.0 已经原生支持 Anthropic Messages API 兼容端点 (/v1/messages),完全可以让本地 Claude Code 客户端通过 ANTHROPIC_BASE_URL 指向这个 vLLM 实例------等于让 Claude Code 用 Gemma 4 当后端。

8.1 vLLM 端要开 tool-calling

bash 复制代码
tmux new -s vllm -d 'vllm serve ./models/google/gemma-4-E4B-it/ \
  --served-model-name gemma-4-E4B-it \
  --enable-auto-tool-choice \
  --tool-call-parser gemma4 \
  --host 0.0.0.0 \
  --port 8000 \
  --max-model-len 32768 \
  --enforce-eager'

关键 flag 说明:

  • --enable-auto-tool-choice:开启 tool calling。不开的话,Claude Code 发过来的 tool_use 会被模型当文本原样吐出来,不真执行。
  • --tool-call-parser gemma4:vLLM 内置的 Gemma 4 parser(源码目录里有,文档没列)。备选 hermes(通用)、pythonic(Pythonic 风格)。
  • --max-model-len 32768:从默认的 131072 收口,预防 KV cache OOM。

8.2 Claude Code 端设环境变量

bash 复制代码
export ANTHROPIC_BASE_URL=http://localhost:8000
export ANTHROPIC_API_KEY=dummy
export ANTHROPIC_AUTH_TOKEN=dummy
export ANTHROPIC_DEFAULT_HAIKU_MODEL=gemma-4-E4B-it
export ANTHROPIC_DEFAULT_SONNET_MODEL=gemma-4-E4B-it
export ANTHROPIC_DEFAULT_OPUS_MODEL=gemma-4-E4B-it

claude

四个 env var 的作用:

  • ANTHROPIC_BASE_URL:把 Claude Code 的请求从 api.anthropic.com 重定向到本地 vLLM
  • ANTHROPIC_API_KEY / ANTHROPIC_AUTH_TOKEN:vLLM 不校验认证,填 dummy 即可
  • 三个 *_MODEL:让 Claude Code 把不同档位的请求都路由到 Gemma 4
相关推荐
陈 洪 伟3 天前
大模型推理引擎vLLM(39):CUDAGraph模式以及CUDAGraphWrapper和BreakableCUDAGraphWrapper问题整理
vllm
论文复现现场3 天前
A100 跑 Qwen3.8-27B,FP8 还是 INT8?显存、速度、精度与微调兼容性怎么选
模型量化·vllm·a100·大模型部署·int8·fp8·qwen3.8
Zhu7583 天前
docker环境,vLLM 部署 Qwen3.8-27B
docker·qwen·vllm
basketball6164 天前
Python FastAPI 介绍以及常用方法
python·fastapi·vllm·ai infra
论文复现现场4 天前
RTX 3090 如何跑 13B 级大模型推理?4-bit AWQ、vLLM 部署与并发调优实战
模型量化·vllm·大模型推理·awq·算家云·rtx3090
一颗小树x5 天前
vLLM大模型推理:Jetson AGX Thor 的 GPU 共享内存清理实战
jetson·vllm·vlm·gpu内存清理
论文复现现场6 天前
Qwen3.8-27B 做 GRPO 需要几张 GPU?4×RTX 4090 与 8×RTX 4090 显存、vLLM 和 ZeRO-3 配置分析
deepspeed·qlora·大模型训练·vllm·rtx4090·grpo·qwen3.8
安易算力6 天前
昇腾生态开发深度实践:CANN算子库架构解析与MindSpore模型优化
网络·容器·架构·kubernetes·vllm
SunnyRivers6 天前
vLLM 官方调优方案
优化·vllm
政企项目老覃7 天前
边缘 AI 推理部署:安防零售场景下的模型裁剪与端侧落地实践
人工智能·程序人生·算法·性能优化·vllm