Skip to content

AMD 24G 显卡 + 256G 内存 MoE 模型部署指南

适用机器:AMD 24G 显卡(RX 7900 XTX / RDNA3,gfx1100)+ 80 核 CPU + 256G 内存 的工作站。 核心思路:小 MoE 全 GPU 跑追求速度,大 MoE 借助 256G 内存做专家权重 offload 追求质量。

引擎选择:Ollama(开箱即用)/ llama.cpp ROCm(调优上限高)。 消费级 AMD 卡不建议折腾 vLLM(ROCm 对 RDNA3 支持不完善)。


1. 模型适配结论(先看这个)

✅ 第一档:全 GPU 运行(权重 ≤ ~21G,交互流畅)

模型总参/激活Q4_K_M 体积结论
Qwen3 30B-A3B30B / 3B~17G最推荐:质量≈14B dense、速度≈3B
Qwen3-Coder-30B-A3B30B / 3B~17G代码场景首选
Qwen3.5 / Qwen3.6 35B-A3B(最新代)35B / 3B~19.6G可行但紧凑,上下文开 4~8K
gpt-oss-20b21B / 3.6B~13G余量最大,可开大上下文

✅ 第二档:CPU+GPU 混合(256G 内存红利,MoE 专家 offload)

模型总参/激活Q4 体积预期速度结论
Qwen3.5 122B-A10B122B / 10B~74G~3-6 tok/s可实用,质量档明显更高
Qwen3 235B-A22B235B / 22B~132G~1-3 tok/s能跑,适合离线批处理
Qwen3.5 397B-A17B397B / 17B~200G+<1 tok/s内存边缘,无实用价值 ❌

❌ 跑不动

DeepSeek-V3/R1(671B,Q4 ~380G 超内存)、Kimi K2(~1T)、Llama 4 Scout(offload 生态不成熟,不建议折腾)。


2. 环境准备

2.1 方案 A:Ollama(推荐新手,自带 ROCm 运行时)

bash
curl -fsSL https://ollama.com/install.sh | sh

# 验证 AMD 显卡被识别(日志中应出现 ROCm/AMD 字样)
journalctl -u ollama -e | grep -i rocm
ollama ps

Ollama 自带 ROCm 库,无需单独安装系统级 ROCm,对 RX 7900 XTX 开箱即用。

2.2 方案 B:llama.cpp ROCm 编译(推荐进阶,支持 MoE offload 精细控制)

bash
# 1) 安装 ROCm(Ubuntu 24.04,以官方仓库为准)
#    https://rocm.docs.amd.com/projects/install-on-linux/en/latest/
sudo apt install rocm-hip-sdk rocblas hipblaslt

# 2) 编译 llama.cpp(RDNA3 对应 gfx1100)
git clone https://github.com/ggml-org/llama.cpp && cd llama.cpp
cmake -B build -DGGML_HIP=ON -DAMDGPU_TARGETS=gfx1100 -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release -j$(nproc)

# 3) 产物:build/bin/llama-server、llama-cli

2.3 模型下载(GGUF 格式)

bash
# 国内推荐 ModelScope(搜索 "Qwen3-30B-A3B-GGUF"),选 Q4_K_M 分卷
# 官方仓库:huggingface.co/Qwen/Qwen3-30B-A3B-GGUF
mkdir -p /data/models && cd /data/models
# wget <Qwen3-30B-A3B-Q4_K_M 分卷文件...>

3. 第一档:全 GPU 部署(Qwen3 30B-A3B)

3.1 Ollama 方式(最简单)

bash
ollama run qwen3:30b-a3b        # 自动下载 + ROCm 全量加载到显卡

# API 服务(默认 11434 端口)
curl http://localhost:11434/api/generate -d '{
  "model": "qwen3:30b-a3b",
  "prompt": "用一句话介绍 Kubernetes",
  "stream": false
}'

3.2 llama.cpp 方式(可控参数多)

bash
./build/bin/llama-server \
  -m /data/models/Qwen3-30B-A3B-Q4_K_M.gguf \
  -ngl 99 \                      # 全部层 offload 到 GPU
  -c 8192 \                      # 上下文长度
  --host 0.0.0.0 --port 8080 \
  -t 16                          # CPU 线程数(prompt 处理阶段用)

# OpenAI 兼容 API 验证
curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"qwen3-30b-a3b","messages":[{"role":"user","content":"你好"}]}'

4. 第二档:MoE 专家 offload(Qwen3.5 122B-A10B)

原理:MoE 每 token 只激活少量专家。把专家权重(ffn_exps)放内存、 共享层(注意力/嵌入/归一化)放显卡,显存占用骤降,256G 内存正好承接。

bash
./build/bin/llama-server \
  -m /data/models/Qwen3.5-122B-A10B-Q4_K_M.gguf \
  -ngl 99 \
  -ot ".ffn_.*_exps.=CPU" \      # 关键:所有专家张量放内存
  -c 8192 \
  -t 32 \                        # CPU 专家计算吃线程,建议 24~40 调优
  --host 0.0.0.0 --port 8080

调优要点

参数建议
-ot ".ffn_.*_exps.=CPU"核心开关;也可 --n-cpu-moe N(前 N 层专家留 CPU)做更细粒度配比
-t 32专家在 CPU 上计算,线程数对速度影响最大,80 核机器建议 24/32/40 实测对比
-c 8192大模型 KV Cache 不小,按需调整
--mlock锁定内存防 swap,256G 内存建议加
速度预期~3-6 tok/s(DDR 带宽瓶颈),聊天可用;235B 模型 ~1-3 tok/s 仅适合离线批处理

若 122B 全 offload 仍慢,可反向操作:-ot ".ffn_(up|gate)_exps.=CPU" 只放部分专家张量到内存, 或降低量化到 Q3/IQ4 进一步压缩体积换 GPU 驻留比例。


5. 常见问题速查

现象排查与处理
Ollama 用了 CPU 而非显卡journalctl -u ollama -e 看是否识别 ROCm;升级 Ollama 版本;确认显卡在 rocminfo 中可见
llama.cpp 编译找不到 GPU确认 -DAMDGPU_TARGETS=gfx1100(RX 7900 XTX);`rocminfo
启动报显存不足-c 上下文;确认 -ngl 99 时模型 Q4_K_M ≤ 20G;或改用专家 offload
offload 模式速度极慢检查是否触发 swap(free -g,加 --mlock);-t 线程数调优;关闭 NUMA 干扰 numactl --interleave=all
生成乱码/质量差量化太低(Q2/IQ2 慎用于生产),回到 Q4_K_M 或 Q5_K_M
想换 OpenAI 兼容接入llama-server 与 Ollama 均提供 /v1/chat/completions,可直接对接现有应用

6. 选型速查(按需求)

需求选择
日常对话/Agent,要快Qwen3 30B-A3B Q4_K_M 全 GPU
写代码Qwen3-Coder-30B-A3B 全 GPU
追最新模型Qwen3.5/3.6 35B-A3B Q4(上下文开小)
要更强质量、可接受慢Qwen3.5 122B-A10B Q4 + 专家 offload
尝鲜旗舰、离线批处理Qwen3 235B-A22B Q4 + 专家 offload