★教程特色
本教程融合了 CSDN 技术博客与知乎深度专栏两类教程的优点:既有可照抄的保姆级步骤,也有讲清原理的深度分析。
01背景与核心问题
为什么 NVIDIA 模型不能直接跑在 AMD 显卡上,以及解决思路。
1.1 CUDA 生态:为什么"开箱即用"不成立
绝大多数 AI 模型与推理工具在 GPU 上运行时,依赖的是 NVIDIA 专属的 CUDA 生态。CUDA 并非单一组件,而是一整套从硬件到应用的分层技术栈:
| 层级 | 代表组件 | 作用 |
|---|---|---|
| 硬件指令集 | NVIDIA GPU 专属 SASS/PTX 指令 | GPU 芯片实际执行的机器指令,AMD 芯片无法解码 |
| 驱动层 | NVIDIA 驱动 + CUDA Driver API | 操作系统与 GPU 之间的桥梁,AMD 驱动接口完全不同 |
| 运行时 | CUDA Runtime、cuBLAS、cuDNN、cuFFT、NCCL | 矩阵运算、深度学习原语、通信等高性能库,均为 NVIDIA 闭源实现 |
| 框架层 | PyTorch、TensorFlow、ONNX Runtime 的 CUDA 后端 | 框架通过 CUDA 接口调度 GPU,默认只认 NVIDIA 设备 |
| 应用层 | Ollama、vLLM、ComfyUI 等工具的 CUDA 构建 | 最终用户接触的推理 / 绘画工具 |
AMD 显卡无法识别这些调用,因此"开箱即用"通常不成立。要在 AMD GPU 上运行,核心思路是绕开 CUDA 依赖,改用 AMD 兼容的计算栈或转换层——这正好对应本方案的五条路径。
1.2 为什么 AMD 显卡不能直接运行 CUDA 程序
根本原因有三个层面,理解它们有助于你判断某条路径是否可行:
- 指令集不兼容 NVIDIA GPU 执行的是自己的 SASS/PTX 指令,AMD GPU 执行的是 GCN/RDNA 指令(gfx 架构代号)。两者互不兼容,预编译的 CUDA 二进制无法直接在 AMD 上执行。
-
驱动与运行时 API 不同
应用通过 CUDA Runtime API(
cudaMalloc、cudaLaunchKernel等)与驱动交互,AMD 侧对应的是 HIP Runtime API。接口语义相似但实现完全不同,需要翻译或重写。 - 高性能库闭源 cuDNN、cuBLAS 等是 NVIDIA 闭源优化的库,没有 AMD 版本。AMD 的等价物是 MIOpen、rocBLAS 等,需要应用显式调用或由框架层自动切换。
1.3 2026 年 AMD 生态现状:已从"能不能跑"进入"跑得好不好"
2026 年 8 月,AMD 的 ROCm 生态已相当成熟:最新稳定版为 ROCm 7.14.0(2026 年 7 月发布),PyTorch 2.12 已官方支持 ROCm 7.14[1][2]。消费级 Radeon RX 7000/9000 系列(RDNA3/RDNA4)均进入官方支持列表,Windows 原生 ROCm 也已落地[3]。因此,多数标准框架模型无需改代码即可迁移。
2026 年的几个关键变化值得注意:一是 vLLM 把 AMD 提升为"一等公民",CI 通过率从 37% 提升到 93%,ROCm 7 相比 ROCm 6 平均推理性能提升约 3.5 倍[16];二是 AMD 与魔搭、Datawhale 共建中国开发者专区并提供免费算力(详见第 14 章);三是 Windows 原生 ROCm 落地,但生态成熟度仍以 Linux/WSL2 为最优。
1.4 核心解决思路:四条技术路线
绕开 CUDA 依赖有四种基本思路,本方案的五条路径都由它们派生:
| 思路 | 原理 | 对应方案 | 改动量 |
|---|---|---|---|
| ① 原生替代 | 用 AMD 官方计算栈(ROCm/HIP)替代 CUDA,框架层自动切换 | 方案一 ROCm 生态 | 零代码 |
| ② 格式转换 | 把模型转成跨平台 ONNX 格式,用通用执行引擎跑 | 方案二 ONNX | 转换格式 |
| ③ 翻译层 | 拦截 CUDA 调用并翻译到 AMD 硬件 | 方案三 ZLUDA | 零代码 |
| ④ 系统级替代 | 微软 DirectML 直接对接 DX12 硬件抽象层 | 方案四 DirectML | 改设备名 |
| ⑤ 源码移植 | 把 CUDA 源码用 hipify 转为 HIP 再编译 | 方案五 HIP 移植 | 需移植 |
02方案总览与对比
五条路径按"易用性 → 专业性"排列,先看全景再选路。
2.1 五条路径速览
| 方案 | 适用人群 | 性能 | 改动量 | 维护状态(2026) |
|---|---|---|---|---|
| ① ROCm 生态 | Linux 用户 / 追求最佳性能 | 高 | 零代码 | 官方活跃 |
| ② ONNX + 执行引擎 | 跨平台 / 不想配复杂环境 | 中 | 转换格式 | 官方活跃 |
| ③ ZLUDA 兼容层 | 闭源 CUDA 程序 / 尝鲜玩家 | 中低 | 零代码 | 个人维护 |
| ④ DirectML | Windows 用户 / 不想折腾 | 中 | 改设备名 | 微软维护 |
| ⑤ HIP 移植 | 开发者 / 自定义 CUDA 算子 | 高 | 需移植 | 官方工具 |
2.2 选型决策流程
下面这张决策图是本章的核心:先判断显卡是否在 ROCm 官方支持列表,再根据运行环境与模型类型收敛到具体方案。
flowchart TD
A[要在 AMD GPU 上运行模型] --> B{显卡在 ROCm 官方支持列表?}
B -- 是 --> C[方案一: ROCm 生态
Linux 首选, 性能最佳]
B -- 否 --> D{运行环境?}
D -- Windows --> E[方案四: DirectML
仅需 DX12 驱动]
D -- Linux --> F[方案二: ONNX 执行引擎]
C --> G{模型含闭源 CUDA 程序?}
G -- 是 --> H[方案三: ZLUDA
尝试性, 兼容性有限]
G -- 否 --> I[方案五: HIP 移植
hipify 自动转换]
2.3 各方案详细对比
除性能与改动量外,还需综合评估学习成本、运行成本与长期维护风险。下表从更多维度展开对比:
| 维度 | ① ROCm | ② ONNX | ③ ZLUDA | ④ DirectML | ⑤ HIP |
|---|---|---|---|---|---|
| 安装复杂度 | 中(需装驱动 + 工具链) | 低(pip 安装即可) | 高(需编译 / 补库) | 极低(仅需 DX12 驱动) | 高(需完整工具链) |
| 性能上限 | 最高 | 中 | 中低 | 中 | 最高 |
| 支持硬件范围 | 官方列表内(RX7000/9000、Instinct) | 所有 DX12/ROCm 设备 | 较广但兼容性不稳定 | 所有 DX12 显卡 | ROCm 支持的所有设备 |
| 长期维护风险 | 低(AMD 官方持续投入) | 低(ONNX 标准 + 微软/AMD 维护) | 高(个人项目) | 中(微软维护,但算子覆盖有限) | 中(取决于代码复杂度) |
| 典型场景 | 生产推理 / 训练 / 微调 | 跨平台产品化部署 | 老游戏 PhysX / 闭源工具尝鲜 | Windows 桌面快速验证 | 研究代码 / 自定义算子 |
2.4 常见误区澄清
03方案一 · ROCm 生态(推荐)
AMD 官方开源 GPU 计算平台,对标 NVIDIA CUDA,是性能与兼容性的最优解。
ROCm 直接提供与 CUDA 类似的编程接口和深度学习加速能力,主流框架(PyTorch 等)有官方 ROCm 适配版本。对绝大多数标准框架模型,代码无需修改,仍写 device="cuda",ROCm 会自动把计算调度到 AMD 显卡。
推荐3.1 确认显卡兼容性
ROCm 7.14 官方兼容矩阵覆盖以下设备[1]:
| 类别 | 代表型号 | 架构 / gfx 代号 |
|---|---|---|
| Instinct 计算卡 | MI350X / MI355X / MI325X / MI300X / MI300A / MI250X / MI210 / MI100 | gfx950 / gfx942 / gfx90a / gfx908 |
| Radeon RX 9000 系列 | RX 9070 XT / 9070 / 9060 XT / 9060 | RDNA4 · gfx1200 / gfx1201 |
| Radeon RX 7000 系列 | RX 7900 XTX / 7900 XT / 7800 XT / 7700 XT / 7600 | RDNA3 · gfx1100 / gfx1101 / gfx1102 |
| Radeon PRO 专业卡 | PRO W7900 / W7800 / W7700 / W6800 / V710 / V620 | RDNA3 / RDNA2 · gfx1100 / gfx1030 |
| Ryzen AI APU / 核显 | Ryzen AI Max+ 395 / AI 9 HX 375 / AI 7 350 等;Radeon 800M / 900M 核显 | gfx1150–1153 / gfx1103 |
3.2 Linux 原生安装(推荐)
Linux(Ubuntu 24.04 / 26.04、RHEL 等)是 ROCm 官方主推平台,安装与稳定性最佳。以下为 Ubuntu 24.04 的官方 apt 安装流程[14]:
-
安装 OEM 内核(Ubuntu 24.04 建议)
sudo apt update && sudo apt install linux-oem-24.04c
-
注册 AMD 软件源与 GPG 密钥
sudo mkdir --parents --mode=0755 /etc/apt/keyrings wget https://repo.amd.com/rocm/packages-multi-arch/gpg/rocm.gpg -O - | \ gpg --dearmor | sudo tee /etc/apt/keyrings/amdrocm.gpg > /dev/null sudo tee /etc/apt/sources.list.d/rocm.list << EOF deb [arch=amd64 signed-by=/etc/apt/keyrings/amdrocm.gpg] https://repo.amd.com/rocm/packages-multi-arch/ubuntu2404 stable main EOF sudo apt update -
安装 ROCm 工具包
sudo apt install rocm
可按需选择元包组合(如rocm-libs、rocm-dev)以裁剪安装体积。 -
配置环境变量
sudo tee /etc/profile.d/set-rocm-env.sh << EOF export ROCM_PATH=/opt/rocm export PATH=\$PATH:\$ROCM_PATH/bin export LD_LIBRARY_PATH=\$ROCM_PATH/lib EOF sudo chmod +x /etc/profile.d/set-rocm-env.sh source /etc/profile.d/set-rocm-env.sh
3.3 WSL2 安装(Windows 用户首选)
Windows 用户推荐通过 WSL2 安装 Linux 版 ROCm,兼容性与性能都优于原生 Windows 方案[3]:
-
安装 WSL2 与 Ubuntu
# 在 PowerShell(管理员)中执行 wsl --install -d Ubuntu-24.04 - 在 WSL 内安装 ROCm 进入 Ubuntu 后,按 3.2 的 apt 流程安装 ROCm 工具包。WSL 会透传 Windows 侧的 AMD 显卡驱动,无需在 WSL 内单独装驱动。
- 安装 ROCm 版 PyTorch 并验证 与 Linux 流程一致(见 3.5)。
3.4 Windows 原生安装
2025 年起 AMD 为 Radeon 7000/9000 系列和部分 Ryzen AI APU 提供原生 Windows ROCm 支持,但生态成熟度仍略逊于 Linux/WSL2[3]。原生安装需使用 AMD 提供的 Windows HIP SDK,主要面向开发者;对普通用户,WSL2 仍是更稳妥的路径。
- 更新显卡驱动 前往 AMD 官网下载并安装最新 Adrenalin 驱动(2026 年 1 月起的驱动已内置 Ollama、LM Studio、ComfyUI 一键安装项[5])。
-
安装 Windows HIP SDK
从 AMD 官网下载 HIP SDK 安装包,安装后确认
hipcc可用。 - 安装 ROCm 版 PyTorch 使用 AMD 提供的 Windows wheel 或源码编译。注意:Windows 原生方案的算子覆盖与性能仍有限,若遇到算子缺失,请退回 WSL2。
3.5 安装 ROCm 版 PyTorch
推荐直接用 AMD 官方预构建 Docker 镜像,最省事:
# AMD 官方 PyTorch 镜像(ROCm 7.14 + PyTorch 2.12)
docker pull rocm/pytorch:rocm7.14_ubuntu24.04_py3.12_pytorch_release_2.12.0
或使用 pip 安装 ROCm 版 wheel:
# 官方文档示例:nightly 通道的 ROCm 7.2 wheel
pip3 install --pre torch torchvision torchaudio \
--index-url https://download.pytorch.org/whl/nightly/rocm7.2
2026 年起 AMD 还提供 Python 化的 rocm-sdk 安装方式,可显著简化多架构部署[4]。具体用法见 3.9。
3.6 验证 GPU 可用
python3 -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))" # 输出 True 与你的 AMD 显卡型号即成功(ROCm 复用 CUDA 设备接口)
3.7 运行模型
基于 PyTorch 的模型(LLaMA、Stable Diffusion、Qwen 等)代码无需改动,device="cuda" 在 ROCm 下自动映射到 AMD 显卡。性能上,高端卡(RX 9000 系列、Instinct MI300/MI350)配合 ROCm 可追平同级别 NVIDIA 显卡。
3.8 Docker 安装方式(生产环境推荐)
生产环境强烈推荐 Docker:镜像由 AMD 官方维护,版本匹配关系已固化,可避免"驱动 / ROCm / PyTorch 三者不匹配"这一最常见的坑。启动容器时需透传 GPU 设备:
# 拉取 AMD 官方 PyTorch 镜像 docker pull rocm/pytorch:rocm7.14_ubuntu24.04_py3.12_pytorch_release_2.12.0 # 启动容器并透传 GPU(--device 与 --group-add 缺一不可) docker run -it --rm \ --device=/dev/kfd --device=/dev/dri \ --group-add=video --group-add=render \ --ipc=host --shm-size=16g \ --security-opt seccomp=unconfined \ rocm/pytorch:rocm7.14_ubuntu24.04_py3.12_pytorch_release_2.12.0 # 进入容器后验证 rocm-smi python3 -c "import torch; print(torch.cuda.is_available())"
rocm-smi 看不到 GPU,多半是 /dev/kfd 与 /dev/dri 未透传,或当前用户不在 video/render 组。多卡场景还需 --ipc=host 与足够的 --shm-size。
3.9 rocm-sdk:Python 化的一键安装
ROCm 官方推出的 rocm-sdk 把整个 ROCm 工具链封装成 Python 包,支持多架构(CPU/GPU)统一安装,特别适合容器化与 CI/CD 场景[4]:
# 安装 rocm-sdk(自动解析当前系统与架构) pip install rocm-sdk # 查看可用组件与版本 rocm-sdk --list # 安装指定版本的 ROCm 工具链 rocm-sdk install rocm@7.14.0 # 在 Python 中直接使用(无需手动设置 PATH) from rocm_sdk import rocm print(rocm.version)
rocm-sdk 的价值在于:把过去需要手写的一长串 apt 命令、环境变量、路径配置全部收敛为一条命令,且天然支持多架构(x86_64 / aarch64)与多版本共存,显著降低部署出错率。
3.10 安装完成后的验证清单
无论用哪种方式安装,建议按以下清单逐项验证,确保环境真正可用:
-
驱动层:确认 GPU 可见
rocm-smi # 应列出你的 AMD 显卡与温度/功耗 rocminfo # 查看 gfx 架构代号(如 gfx1100)
-
工具链:确认编译器可用
hipcc --version # 应显示 HIP 版本 cmake --version # 编译自定义算子时需要
-
框架层:确认 PyTorch 为 ROCm 版
python3 -c "import torch; print(torch.version.hip)" # 应输出类似 7.14.0 的 HIP 版本号;若为 None 说明装成了 CPU 版
-
端到端:跑一个真实算子
python3 -c "import torch; x=torch.randn(1024,1024,device='cuda'); print((x@x).sum().item())"
04方案二 · ONNX + 通用执行引擎
把模型转成跨平台 ONNX 格式,用兼容 AMD 的执行引擎运行,适合不想配复杂环境的场景。
4.1 ONNX 是什么,为什么适合 AMD
ONNX(Open Neural Network Exchange)是微软与多家厂商推动的开放模型交换格式,把模型定义成一张与框架、硬件无关的计算图。配合 ONNX Runtime,同一份 .onnx 文件可以在 CPU、NVIDIA、AMD、Intel 等任意硬件上运行——这正是它适合 AMD 的原因:模型本身不绑定 CUDA,执行引擎负责对接具体硬件。
对 AMD 显卡,ONNX Runtime 提供两类执行提供者(Execution Provider):Linux 下用 ROCm 执行提供者(性能最优),Windows 下用 DirectML 执行提供者(仅需 DX12 驱动,无需装 ROCm)。
4.2 导出模型为 ONNX(详细步骤)
用原框架(PyTorch / TensorFlow)将模型导出为 .onnx 文件。主流模型大多提供现成 ONNX 版本,也可用官方脚本导出。以 PyTorch 为例:
import torch from transformers import AutoModelForCausalLM, AutoTokenizer model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-7B-Instruct") tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-7B-Instruct") # 构造示例输入(用于固定输入形状) dummy = tokenizer("你好", return_tensors="pt") # 导出为 ONNX(opset 版本建议 ≥ 17) torch.onnx.export( model, (dummy["input_ids"], dummy["attention_mask"]), "qwen.onnx", input_names=["input_ids", "attention_mask"], output_names=["logits"], dynamic_axes={"input_ids": {0: "batch", 1: "seq"}}, opset_version=17, )
dynamic_axes 以支持变长输入;若模型含自定义算子,导出可能失败,此时需走第 7 章的 HIP 移植或第 5 章的 ZLUDA。
4.3 选择执行提供者
# 安装 ONNX Runtime(含 ROCm / DirectML 支持) pip install onnxruntime-rocm # Linux + ROCm pip install onnxruntime-directml # Windows + DirectML
安装后可用以下代码查看当前环境可用的执行提供者,确认 AMD 后端是否就绪:
import onnxruntime as ort print(ort.get_available_providers()) # Linux 期望包含 ROCMExecutionProvider # Windows 期望包含 DmlExecutionProvider
4.4 加载并指定 AMD 设备(完整示例)
import onnxruntime as ort import numpy as np # Linux + ROCm sess = ort.InferenceSession("qwen.onnx", providers=["ROCMExecutionProvider"]) # Windows 下改用:providers=["DmlExecutionProvider"] # 构造输入并推理 input_ids = np.array([[1, 2, 3, 4]], dtype=np.int64) outputs = sess.run(None, {"input_ids": input_ids}) print(outputs[0].shape)
4.5 性能调优与限制
ONNX 方案的优势是跨平台与低配置成本,但也需要了解其边界:
| 方面 | 说明 |
|---|---|
| 性能 | 通常略低于原生 ROCm,但可通过图优化(graph optimization)与算子融合缩小差距 |
| 算子覆盖 | ROCm/DirectML 执行提供者并非覆盖全部 ONNX 算子,不支持的算子会回退到 CPU(变慢) |
| 大模型支持 | ONNX Runtime 对 LLM 的 KV Cache、连续批处理支持有限,高吞吐场景建议用 vLLM(见第 8 章) |
| 优化手段 | 开启 ORT_ENABLE_ALL=1、使用 onnxruntime.transformers.optimizer 做算子融合 |
05方案三 · ZLUDA 兼容层
开源 CUDA 二进制翻译层,让未修改的 CUDA 程序在 AMD GPU 上运行。注意:2026 年已回归个人项目,定位为尝试性方案。
5.1 ZLUDA 工作原理
ZLUDA 是一个开源项目,通过拦截 CUDA 调用并转发到 AMD GPU,使预编译的 CUDA 程序(无源码)无需修改即可运行[7]。它本质上是一个"翻译层":应用以为自己在调用 CUDA,实际底层由 ZLUDA 把请求翻译成 HIP/ROCm 调用交给 AMD 显卡执行。
2026 年 6 月发布了 v6 版本,但需要明确其现状:
5.2 安装与编译
ZLUDA 需要从源码编译,且依赖 ROCm 的 cuBLAS/cuDNN 等价组件,安装门槛较高:
# 克隆 ZLUDA 源码 git clone https://github.com/vosen/ZLUDA.git cd ZLUDA # 编译(需要 Rust 工具链与 ROCm 开发环境) cargo build --release # 编译产物位于 target/release/zluda.dll(Windows) # 或 target/release/libzluda.so(Linux)
zluda.exe)已能自动处理性能库加载,但需要自行补齐 ROCm 的 cuBLAS/cuDNN 等价组件[8]。缺少这些库时,依赖矩阵运算的程序会直接失败。
5.3 使用方式
-
安装 ZLUDA 运行时
从 GitHub 获取构建产物或自行编译[7]。Windows 下把
zluda.dll放到 CUDA 程序同目录,或用zluda.exe作为加载器启动。 -
运行原 CUDA 程序
通过 ZLUDA 加载器启动原 CUDA 版本的可执行文件,ZLUDA 自动拦截 CUDA 调用并转发到 AMD 显卡。
# Windows:用 ZLUDA 加载器启动 CUDA 程序 zluda.exe my_cuda_app.exe # Linux:通过 LD_PRELOAD 注入 LD_PRELOAD=libzluda.so ./my_cuda_app
- 验证兼容性 重度依赖自定义 CUDA 内核或特定性能库的程序可能崩溃或性能异常,需逐项测试。
5.4 兼容性矩阵(2026 年 v6)
| 应用 / 负载 | 支持状态 | 说明 |
|---|---|---|
| 32 位 PhysX | pre-alpha | 未完成,仅限尝鲜 |
| Blender | 基础支持 | 基础纹理支持,复杂场景可能异常 |
| PyTorch ML 负载 | 部分支持 | 部分工作负载可运行,性能与稳定性有限 |
| 其他 CUDA 程序 | 不保证 | 需逐项测试,依赖特定库的程序大概率失败 |
5.5 定位与建议
ZLUDA 适合无法获取源码的闭源 CUDA 工具和尝鲜玩家(如老游戏 PhysX 效果)。对生产部署,不建议作为依赖项——兼容性并非 100%,且维护节奏不可预期。若模型有源码,优先走 ROCm 或 HIP 移植。
06方案四 · DirectML(Windows 懒人方案)
基于微软 DirectML 的 Windows 原生加速,仅需最新 AMD 显卡驱动,无需安装 ROCm。
6.1 DirectML 原理:为什么 Windows 用户可以"零配置"
DirectML 是微软提供的硬件加速 API,兼容所有 DX12 显卡(含 AMD)。它不依赖 CUDA 或 ROCm,而是直接对接 Windows 的 DX12 硬件抽象层——只要显卡驱动支持 DX12,DirectML 就能用。这意味着对 Windows 用户,这是真正的零环境配置路径。
DirectML 的执行路径是:应用 → PyTorch/TensorFlow/ONNX → DirectML → DX12 驱动 → AMD 显卡。相比 ROCm 的原生路径,中间多了一层 DX12 抽象,因此性能通常略低,但换来的是无需安装任何额外驱动或 SDK。
6.2 PyTorch + torch-directml(完整用法)
微软官方推荐的用法(2026 年已改为插件模型,不再使用 privateuseone:0 字符串)[9]:
# 安装 torch-directml 插件 pip install torch-directml # 使用示例 import torch import torch_directml dml = torch_directml.device() # 返回设备对象,不是字符串 tensor1 = torch.tensor([1]).to(dml) tensor2 = torch.tensor([2]).to(dml) print((tensor1 + tensor2).item())
torch_directml.device() 返回的是设备对象而非字符串,因此不能直接用于 model.to("privateuseone:0")。需使用 model.to(dml) 或将模型手动迁移。部分 PyTorch 算子可能在 DirectML 上不支持,遇到 NotImplementedError 时需回退到 CPU 或改用 WSL2 + ROCm。
6.3 其他生态
- TensorFlow:官方
tensorflow-directml包,直接使用pip install tensorflow-directml即可。 - AI 工具:多数本地 LLM 客户端、AI 绘画工具提供"DirectML 启动模式",选择后自动识别 AMD 显卡。例如 Stable Diffusion WebUI 的 DirectML 分支、ComfyUI 的 DirectML 启动参数。
- ONNX Runtime:使用
DmlExecutionProvider(见第 4 章方案二)。 - LM Studio:Windows 版支持 Vulkan 后端(也是通过 DX12 层),安装后直接选择 AMD 显卡即可。
6.4 性能对比与建议
| 场景 | DirectML | WSL2 + ROCm |
|---|---|---|
| 安装复杂度 | 极低(仅需最新驱动) | 中(需装 WSL2 + ROCm 工具链) |
| 推理性能 | 中 | 高 |
| 算子覆盖 | 有限 | 完整 |
| 推荐场景 | 快速验证 / 轻度使用 / 配置受限 | 生产环境 / 性能敏感 / 需要完整训练 |
07方案五 · HIP 移植(开发者)
针对含大量手写 CUDA 算子的自定义模型,用 AMD 官方工具把 CUDA 代码移植为 HIP。
7.1 HIP 与 CUDA 的关系
HIP(Heterogeneous-Computing Interface for Portability)是 AMD 推出的异构计算接口,设计目标就是与 CUDA 保持 API 级兼容:绝大多数 CUDA 代码只需把 cuda 前缀换成 hip 即可编译运行。如果模型包含自定义 CUDA 内核(非主流模型或研究代码),需手动移植到 HIP。AMD 官方提供 HIPIFY 工具链(hipify-clang / hipify-perl),可自动完成大部分 CUDA → HIP 语法转换[10][11]。
7.2 用 hipify 自动转换
# hipify-clang 在编译链内自动转换,hipify-perl 是脚本式转换 hipify-clang foo.cu -o foo.cpp # 或 hipify-perl foo.cu > foo.cpp
90% 以上的语法可自动替换,剩余少量需手动调整。hipify 的转换规则包括:
| CUDA 写法 | HIP 写法 | 说明 |
|---|---|---|
__global__ |
__global__ |
内核声明宏,两者一致 |
cudaMalloc |
hipMalloc |
显存分配 |
cudaMemcpy |
hipMemcpy |
显存拷贝 |
cudaLaunchKernel |
hipLaunchKernelGGL |
内核启动 |
threadIdx.x |
threadIdx.x |
线程索引,两者一致 |
cudaStream_t |
hipStream_t |
流对象 |
7.3 替换 NVIDIA 依赖库
除语法外,还需把 NVIDIA 闭源库替换为 ROCm 等价组件:
| NVIDIA 库 | ROCm 等价组件 | 用途 |
|---|---|---|
| cuDNN | MIOpen | 深度学习原语库 |
| cuBLAS | rocBLAS | 线性代数库 |
| NCCL | RCCL | 多卡通信库 |
| cuFFT | rocFFT | 傅里叶变换库 |
| cuSPARSE | rocSPARSE | 稀疏矩阵库 |
| Thrust | hipCUB / rocThrust | 并行算法库 |
7.4 手动移植要点
自动转换后仍需人工检查以下几类代码,它们是移植失败的高发区:
-
架构相关宏与内建函数
__CUDA_ARCH__、__shfl_sync等架构相关写法在 HIP 中语义可能不同,需按 ROCm 文档调整。 - 纹理 / 表面内存 CUDA 的纹理内存接口与 HIP 差异较大,通常需要重写为普通显存访问。
-
原子操作与同步
部分原子操作(如
atomicAdd对 double 的支持)在 AMD 硬件上的行为与性能不同,需针对性优化。 -
向量类型与对齐
float4、double2等向量类型的对齐要求需确认,避免内存对齐错误。
7.5 编译运行与验证
用 hipcc 编译为 ROCm 可执行文件,即可在 AMD 平台运行:
# 用 hipcc 编译(自动链接 ROCm 运行时) hipcc foo.cpp -o foo # 指定目标架构编译(gfx1100 对应 RX 7900 系列) hipcc --offload-arch=gfx1100 foo.cpp -o foo # 运行并验证 ./foo
HIPIFY 是 ROCm 7.14 官方组件之一[1],此方案适合有源码的开发者,性能与原生 ROCm 一致,但移植工作量取决于代码复杂度。
08实战案例:本地大模型与 AI 绘画
最常见的两类 AMD 部署场景,给出可直接照做的路径。
8.1 本地大模型(LLM)推理
本地大模型是 AMD 部署最成熟的场景,主流推理工具均已原生支持 AMD GPU:
| 工具 | AMD 支持方式 | 适用场景 |
|---|---|---|
| Ollama | 原生 ROCm 后端;Windows 官方版依赖 WSL2[5] | 个人本地对话、轻量部署,命令行一键启动 |
| LM Studio | Vulkan 后端(Windows 免 ROCm)或 ROCm 后端[5] | 图形界面、模型管理、多后端切换 |
| vLLM | ROCm 一等公民支持,AMD 官方提供 Docker 镜像[15][16] | 高吞吐服务、生产级推理、OpenAI 兼容 API |
| llama.cpp | Vulkan / HIP 后端 | 低资源设备、CPU/GPU 混合推理 |
8.2 Ollama 详细部署步骤(个人首选)
Ollama 是个人本地对话最省事的方案,原生支持 AMD ROCm 后端。以下为 Linux / WSL2 下的完整流程:
-
安装 Ollama
# Linux / WSL2 一键安装脚本 curl -fsSL https://ollama.com/install.sh | sh # 验证安装并查看 GPU 支持 ollama --version ollama ps
-
拉取并运行模型
# 拉取 Qwen2.5(自动选择 GGUF 量化格式) ollama pull qwen2.5:7b # 运行模型(首次启动会加载到 GPU) ollama run qwen2.5:7b "用一句话介绍 AMD ROCm"
-
确认模型跑在 GPU 上
ollama ps # 输出中 PROCESSOR 列为 100% GPU 即成功 -
(可选)配置并发与显存
# 设置环境变量控制并发(默认 4 并发) export OLLAMA_NUM_PARALLEL=1 export OLLAMA_MAX_LOADED_MODELS=1 ollama serve
8.3 vLLM 生产级部署(高吞吐首选)
docker pull rocm/vllm:rocm7.14.0_rdna_ubuntu24.04_py3.14_pytorch_2.11.0_vllm_0.23.0
-
启动 vLLM 服务(Docker 方式)
docker run -it --rm \ --device=/dev/kfd --device=/dev/dri \ --group-add=video --group-add=render \ --ipc=host --shm-size=16g \ -p 8000:8000 \ rocm/vllm:rocm7.14.0_rdna_ubuntu24.04_py3.14_pytorch_2.11.0_vllm_0.23.0 \ --model Qwen/Qwen2.5-7B-Instruct \ --gpu-memory-utilization 0.90 \ --max-model-len 16384
-
验证 OpenAI 兼容 API
curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{"model":"Qwen/Qwen2.5-7B-Instruct","messages":[{"role":"user","content":"你好"}]}'
-
启用自动 attention 后端优化
# 让 vLLM 自动选择最优 attention 后端(ROCm 上关键优化) export VLLM_ROCM_USE_AITER=1
8.4 AI 绘画(Stable Diffusion / ComfyUI)
AI 绘画工具对 AMD 的支持同样成熟,以下为 ComfyUI 与 WebUI 的详细步骤:
-
ComfyUI(推荐)
2026 年 1 月的 Adrenalin 驱动已把 ComfyUI 作为可选一键安装项[5]。Linux 下使用 ROCm 版 PyTorch 直接运行:
# 克隆 ComfyUI 并安装依赖 git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI pip install -r requirements.txt # 启动(ROCm 版 PyTorch 自动识别 AMD 显卡) python main.py --listen 0.0.0.0 --port 8188
Windows 下可用 DirectML 分支:python main.py --directml。 -
Stable Diffusion WebUI
提供 ROCm 分支(Linux)与 DirectML 分支(Windows),选择对应启动参数即可自动识别 AMD 显卡:
# Linux + ROCm ./webui.sh --use-rocm # Windows + DirectML ./webui-user.bat --use-directml
-
性能提示
SD 系列模型对显存带宽敏感,RX 7900 XTX / RX 9070 XT 等大显存带宽的卡体验更佳;显存不足时配合
--medvram/--lowvram参数。
8.5 常见模型适配速查
| 模型类型 | 代表模型 | AMD 部署方式 |
|---|---|---|
| 对话 / 指令模型 | Qwen、LLaMA、DeepSeek 系列 | Ollama / vLLM / LM Studio,ROCm 后端 |
| 文生图 | Stable Diffusion、FLUX | ComfyUI / WebUI,ROCm 或 DirectML |
| 语音识别 | Whisper | ROCm 版 PyTorch,device="cuda" 直接运行 |
| 嵌入 / 重排序 | BGE、bge-reranker | ROCm 版 PyTorch 或 ONNX Runtime |
09性能与显存优化
让 AMD 显卡发挥最大性能的关键技巧。
9.1 量化:用更少显存跑更大模型
量化是降低显存占用、提升吞吐的最有效手段。主流工具原生支持:
| 量化方式 | 精度 | 显存节省 | 适用工具 |
|---|---|---|---|
| GGUF Q4_K_M | 4-bit | 约 75% | Ollama / llama.cpp / LM Studio |
| GGUF Q5_K_M | 5-bit | 约 70% | Ollama / llama.cpp / LM Studio |
| AWQ | 4-bit | 约 75% | vLLM(ROCm 支持) |
| GPTQ | 4-bit | 约 75% | vLLM / Transformers |
| FP8 / BF16 | 8-bit / 16-bit | FP8 约 50% | Instinct MI300/MI350 原生支持 |
以 7B 模型为例:FP16 约需 14GB 显存,Q4 量化后仅需约 4GB,RX 7600(8GB)这类入门卡也能流畅运行。
9.2 vLLM 推理优化
vLLM 在 ROCm 上提供 7 种 attention 后端,官方建议直接启用自动选择:
# 让 vLLM 自动选择最优 attention 后端
export VLLM_ROCM_USE_AITER=1
配合 PagedAttention、Continuous Batching 等机制,vLLM 在高并发场景下吞吐远高于朴素推理[15]。vLLM 的 7 种 attention 后端覆盖了 Triton、FlashAttention、AITER 等实现,自动选择机制会根据你的 GPU 架构与模型类型挑选最优者。
9.3 环境变量调优
ROCm 提供多个环境变量可显著影响性能,按需设置:
# 指定目标 GPU 架构(避免 hipErrorNoBinaryForGpu) export HSA_OVERRIDE_GFX_VERSION=11.0.0 # 例:gfx1100 export PYTORCH_ROCM_ARCH=gfx1100 # MIOpen 内核缓存持久化(避免每次启动重新编译) export MIOPEN_USER_DB_PATH=$HOME/.miopen export MIOPEN_CUSTOM_CACHE_DIR=$HOME/.miopen # 显存分配策略(减少碎片) export PYTORCH_HIP_ALLOC_CONF=garbage_collection_threshold:0.8,max_split_size_mb:128
9.4 MIOpen 缓存优化
MIOpen 首次运行时会为每个卷积/算子生成并编译内核,耗时可能长达数分钟。通过持久化缓存可让后续启动几乎瞬时完成:
-
设置缓存目录
export MIOPEN_USER_DB_PATH=$HOME/.miopen mkdir -p $HOME/.miopen
- 首次运行预热 运行一次你的模型,让 MIOpen 生成并保存内核缓存。
- 后续启动 缓存命中后,启动时间从分钟级降到秒级。升级 ROCm 版本后建议清空缓存重新生成。
9.5 显存优化通用技巧
| 技巧 | 做法 | 适用场景 |
|---|---|---|
| 梯度检查点 | 训练时开启 gradient_checkpointing |
训练 / 微调 |
| 低显存模式 | WebUI 加 --medvram / --lowvram |
AI 绘画 |
| 上下文窗口控制 | 限制 --ctx-size 或 max_tokens |
本地 LLM |
| CPU 卸载 | llama.cpp 的 --n-gpu-layers 部分层卸载到 GPU |
显存不足的 LLM |
9.6 Benchmark 验证优化效果
优化前后务必用基准测试量化收益,避免凭感觉判断:
# vLLM 自带 benchmark 脚本(测吞吐与延迟) python -m vllm.benchmarks.benchmark_throughput \ --model Qwen/Qwen2.5-7B-Instruct \ --tensor-parallel-size 1 # 简单测速:对比优化前后 tokens/s python -c "import torch; from transformers import AutoModelForCausalLM, AutoTokenizer; m=AutoModelForCausalLM.from_pretrained('Qwen/Qwen2.5-7B-Instruct').to('cuda'); t=AutoTokenizer.from_pretrained('Qwen/Qwen2.5-7B-Instruct'); import time; s=time.time(); print(m.generate(**t('你好',return_tensors='pt').to('cuda'),max_new_tokens=100)); print('耗时',time.time()-s)"
10多卡与分布式部署
多张 AMD 显卡的并行配置,RCCL 对标 NVIDIA NCCL。
10.1 RCCL 与多卡通信基础
多卡场景下,ROCm 使用 RCCL(对标 NCCL)做 GPU 间通信,PyTorch 的 DistributedDataParallel 等接口在 ROCm 上可直接复用。RCCL 支持三种通信路径:
| 通信路径 | 带宽 | 适用场景 |
|---|---|---|
| XGMI 互联 | 最高 | Instinct MI300/MI350 多卡(同机箱内直连) |
| PCIe 直连 | 中 | 消费级 Radeon 多卡(受限于 PCIe 通道数) |
| 网络(InfiniBand) | 中 | 跨节点分布式训练 |
先用 rocm-smi --showtopo 查看 GPU 拓扑,确认多卡之间的互联方式,这决定了通信带宽上限。
10.2 多卡推理
vLLM 支持张量并行(tensor parallel),可将大模型切分到多张卡:
# vLLM 张量并行:2 张 AMD 卡
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-72B-Instruct \
--tensor-parallel-size 2
张量并行的原理是把模型的权重与计算按层切分到多张卡,每张卡只负责一部分,通过 RCCL 在每次前向传播时同步。72B 模型在单卡 48GB 上放不下时,可用 2 张 48GB 卡(如 2×W7900D)以张量并行方式运行。
10.3 多卡训练
# PyTorch DDP(ROCm 下自动使用 RCCL)
torchrun --nproc_per_node=2 train.py
PyTorch 的 DistributedDataParallel(DDP)在 ROCm 下会自动检测并使用 RCCL 后端,代码与 CUDA 环境完全一致。数据并行(DP)适合模型能放进单卡、但想加速训练的场景;模型放不下单卡时需用张量并行(TP)或流水线并行(PP)。
10.4 多卡系统配置要点
多卡系统在硬件与内核层面有几处必须注意的配置,否则可能出现系统不稳定或性能异常:
-
内核参数 iommu=pt
多卡系统需在内核命令行加入
iommu=pt,否则可能出现系统不稳定或挂起(NCCL 警告)[17]。# 编辑 GRUB 配置,在 GRUB_CMDLINE_LINUX 中加入 iommu=pt sudo sed -i 's/GRUB_CMDLINE_LINUX=""/GRUB_CMDLINE_LINUX="iommu=pt"/' /etc/default/grub sudo update-grub sudo reboot
-
确认 NUMA 亲和性
多路 CPU 系统上,GPU 与 CPU 的 NUMA 节点亲和性影响通信性能,可用
rocm-smi --showtopo查看并调整进程绑定。 - PCIe 通道规划 消费级主板通常只有一条 PCIe x16 通道,多卡带宽受限,建议优先考虑单卡大显存方案。
iommu=pt,否则可能出现系统不稳定或挂起(NCCL 警告)[17]。消费级主板通常只有一条 PCIe x16 通道,多卡带宽受限,建议优先考虑单卡大显存方案。
11故障排查与常见错误
部署中最常遇到的问题与解决方案。
11.1 常见错误速查表
| 错误 / 现象 | 原因 | 解决方案 |
|---|---|---|
hipErrorNoBinaryForGpu |
显卡不在当前 ROCm 构建支持的 gfx 架构列表内[18] | 确认显卡 gfx 代号是否被支持;换用支持该架构的 ROCm 版本或社区构建 |
torch.cuda.is_available() 返回 False |
ROCm 未正确安装 / 驱动未加载 / 环境变量缺失 | 检查 rocm-smi 能否看到 GPU;确认 LD_LIBRARY_PATH 指向 /opt/rocm |
| MIOpen 初始化失败 / 首次运行极慢 | MIOpen 正在生成内核缓存 | 耐心等待首次缓存生成;设置 MIOPEN_USER_DB_PATH 持久化缓存 |
| 驱动未加载(amdgpu) | 内核模块未加载或冲突 | 检查 /etc/modprobe.d/ 配置,重启或重新加载模块[17] |
| 多卡系统挂起 | 缺少 iommu=pt 内核参数 |
在 GRUB 内核命令行加入 iommu=pt 并 update-grub[17] |
| Ollama 找不到 AMD GPU | Windows 原生版缺 ROCm 运行时 | 使用 WSL2 官方版,或第三方原生构建[6] |
torch.version.hip 为 None |
装成了 CPU 版 PyTorch | 卸载后用 ROCm 版 wheel 重装(见 3.5) |
| Docker 容器内看不到 GPU | /dev/kfd / /dev/dri 未透传,或用户不在 video/render 组 |
加 --device=/dev/kfd --device=/dev/dri --group-add=video --group-add=render |
DirectML 算子报 NotImplementedError |
算子不在 DirectML 支持列表 | 回退 CPU 或改用 WSL2 + ROCm |
11.2 排查思路(三步定位法)
-
确认硬件可见
rocm-smi # 应列出你的 AMD 显卡 rocminfo # 查看 gfx 架构代号
-
确认框架可见
python3 -c "import torch; print(torch.cuda.is_available())" - 核对版本匹配 确认 ROCm 版本、PyTorch 版本、显卡 gfx 架构三者兼容,参考官方兼容矩阵[1]。
11.3 日志与诊断工具
定位问题时,善用以下诊断命令能大幅缩小排查范围:
# 查看 GPU 状态(温度、功耗、利用率) rocm-smi --showtemp --showpower --showuse # 查看 GPU 拓扑(多卡场景) rocm-smi --showtopo # 查看内核驱动日志 dmesg | grep -i amdgpu | tail -50 # 查看 ROCm 版本 cat /opt/rocm/.info/version hipcc --version
11.4 社区求助指南
若自行排查无果,可携带以下信息到社区求助,能显著提高被解答的效率:
-
整理环境信息
操作系统版本、ROCm 版本、PyTorch 版本、显卡型号与 gfx 代号(
rocminfo输出)。 - 附上完整报错 复制完整错误堆栈(不要只贴一行),并说明复现步骤。
- 选择求助渠道 ROCm 官方 GitHub Issues、AMD 开发者社区、魔搭 AMD ROCm 专区、Datawhale AMD 开发者社群(见第 14 章)。
12选型建议与决策矩阵
按你的场景对号入座,并对比五个方案的综合表现。
12.1 场景速查
| 你的场景 | 推荐路径 | 理由 |
|---|---|---|
| Linux 服务器 / 追求最佳性能 | ROCm 生态 | 官方支持最全、性能最优、零代码 |
| Windows 桌面、不想装复杂环境 | DirectML | 仅需 DX12 驱动,开箱即用 |
| Windows 但追求性能 | WSL2 + ROCm | 兼顾性能与稳定性 |
| 跨平台部署、多硬件兼容 | ONNX + 执行引擎 | 一份模型多处运行 |
| 闭源 CUDA 程序(无源码) | ZLUDA | 唯一不改代码的路径,但兼容性有限 |
| 自定义 CUDA 算子、有源码 | HIP 移植 | hipify 自动转换,性能与原生一致 |
12.2 综合对比
以下雷达图从四个维度对比五条路径(评分基于作者综合评估,供快速参考):
12.3 成本与硬件选型
选型不仅看软件路径,还要结合硬件成本。下表给出不同预算档位的 AMD 显卡选型建议:
| 预算档位 | 推荐显卡 | 显存 | 可跑模型 |
|---|---|---|---|
| 入门(3–5K) | RX 7600 / RX 9060 | 8–16GB | 7B 量化模型、SD 1.5 绘画 |
| 主流(6–10K) | RX 7800 XT / RX 9070 | 16GB | 14B 量化模型、SDXL 绘画 |
| 高端(10K+) | RX 7900 XTX / RX 9070 XT | 24GB | 32B 量化模型、FLUX 绘画 |
| 专业(云 / 服务器) | Instinct MI300X / MI350X | 192–288GB | 70B+ 全量模型、多卡训练 |
12.4 决策建议总结
13注意事项与常见坑
部署前必读,避免踩坑。
13.1 版本匹配
ROCm 版本需与显卡驱动、深度学习框架版本严格对应。PyTorch 2.12 起,CUDA 12.8 wheel 已进入弃用流程,ROCm 版安装请以 AMD 官方 AI Ecosystem 文档为准[2][12]。版本不匹配常表现为 hipErrorNoBinaryForGpu 等错误。
13.2 TensorFlow 的 ROCm 支持较弱
TensorFlow 的 ROCm 支持比 PyTorch 弱,更偏社区维护[13]。若模型基于 TensorFlow,建议优先考虑 ONNX 转换,或改用 PyTorch 生态。
13.3 性能预期
高端 AMD 卡(RX 9000 系列、Instinct MI300/MI350)配合 ROCm 可追平同级别 NVIDIA 显卡;入门级消费卡可能因显存带宽、优化程度存在差距。DirectML 与 ZLUDA 通常低于原生 ROCm。
13.4 小众模型与专属工具
若模型深度绑定 NVIDIA 专属工具(TensorRT、OptiX 等),无法直接运行,需转换为 ONNX 或用 ROCm 等价工具重构。
13.5 老显卡的处理
RX 6000 消费卡、Radeon VII 等不在 ROCm 7.14 官方列表[1]。可尝试:社区维护的 ROCm 构建、Ollama 自带旧版 ROCm 运行时(但已不在新版本支持列表)[6],或改用 DirectML / ONNX 路径。
13.6 数据与安全注意事项
部署本地模型时,以下几点值得特别留意:
- 本地部署 ≠ 绝对安全 本地模型虽然数据不出本机,但模型本身可能包含偏见或错误信息,涉及敏感决策时需人工复核。
- 服务暴露范围 用 vLLM / Ollama 启动服务时,默认监听地址需确认。若需公网访问,务必加鉴权(如 API Key),避免被滥用。
- 模型来源可信度 从魔搭、HuggingFace 下载模型时,尽量选择官方账号或高星仓库,避免下载被投毒的模型文件。
13.7 生产环境运维建议
若要把 AMD 部署方案用于生产,建议提前规划以下几点:
| 方面 | 建议 |
|---|---|
| 版本固化 | 用 Docker 镜像固化 ROCm + PyTorch + 应用版本,避免升级导致环境漂移 |
| 监控 | 用 rocm-smi 或 AMD 监控工具跟踪 GPU 温度、显存、利用率,设置告警 |
| 备份 | MIOpen 缓存、模型权重、配置文件定期备份 |
| 灰度升级 | 升级 ROCm 前先在测试环境验证,再灰度到生产 |
| 日志 | 统一收集应用与 GPU 日志,便于故障回溯 |
14社区资源与开发者计划
AMD 正通过魔搭社区、Datawhale 等开源社区大力补齐 ROCm 生态,并提供免费算力与官方支持。本章把每条资源展开成可直接照做的详细教程。
14.1 魔搭社区 × AMD:ROCm 中国开发者专区
2025 年 12 月,AMD 携手 Datawhale 与魔搭社区(ModelScope)正式成立「AMD ROCm 中国开发者专区」,目标是打破硬件与软件开发之间的壁垒,为开发者提供系统学习、动手实践、技术共创与开源协作的一体化成长体系[19]。
14.1.1 专区三大内容方向
14.1.2 如何加入与使用
- 访问魔搭社区:打开
modelscope.cn,注册或登录账号(支持手机号 / 阿里云账号 / 微信)。 - 进入学习中心:在社区顶部导航进入「学习」板块,搜索「AMD ROCm 中国开发者专区」,即可看到专区全部教程与活动入口。
- 加入开发者社群:专区页面提供微信群二维码,扫码加入 Datawhale AMD 开发者社区群,获取答疑与组队学习机会。
- 开始动手实践:配合 14.2 的激励计划领取免费算力,在魔搭 Notebook 中直接运行 ROCm 教程代码。
14.2 魔搭 × AMD 开发者激励计划:最高 1000+ 小时免费算力
魔搭社区联合 AMD 正式启动「开发者激励计划」,通过参与技术分享与动手实践,开发者可申请获得最高 1000 小时以上的 GPU 算力支持。计划包含三条完全独立、可叠加的任务路径[20]:
| 路径 | 任务内容 | 奖励 | 前置条件 |
|---|---|---|---|
| Step 0 · 注册 | 通过魔搭 Notebook 活动页授权绑定 AMD 开发者计划账号 | +100 小时 | 无,约 3 分钟 |
| Option 1 · 文章 | 在「学习圈」发布带 #AMD GPU 激励计划 标签的原创技术文章 | 25 小时/篇,最多 50 小时 | Step 0 |
| Option 2 · Notebook | 在「灵感集」发布基于 AMD GPU 的代码实践(SD 部署、LLM 微调/部署、Agent 等) | 50 小时/篇,最多 150 小时 | Step 0 |
| Option 3 · CreateSpace | 加入「AMD Developer Center」组织,在 CreateSpace 部署 AMD GPU 应用 | 按需分配 700+ 小时 | Step 0 + 1 篇过审文章或高质量 Notebook |
14.2.1 Step 0:注册 AMD 开发者计划(必做,+100 小时)
- 进入活动入口:登录魔搭社区
modelscope.cn,进入「我的 Notebook」页面,在主视觉区找到「AMD 开发者激励计划」入口并点击进入活动流程。 - 跳转 AMD 官网注册:页面将跳转到 AMD 开发者计划网站,选择「使用魔搭账号授权登录」以绑定账号。
- 完善个人资料:按提示填写个人基础信息(姓名、邮箱/手机号等),提交后立即成为 AMD Developer Program 成员,无需额外审核。
- 返回启用 AMD GPU:回到魔搭「我的 Notebook」或新建 Notebook,在运行时环境列表中即可看到 AMD GPU 选项(如 MI300X)及对应镜像,选择后即可正常使用。
14.2.2 Option 1:发布原创技术文章(25 小时/篇,最多 50 小时)
- 撰写文章:在魔搭社区「学习圈」板块发布原创技术文章。建议内容方向:ROCm 安装与配置经验、AMD GPU 大模型部署手记、Ryzen AI 开发初体验、AMD GPU 推理优化技巧等。
- 添加标签:发布时选择话题标签
#AMD GPU 激励计划。 - 等待审核:提交后进入审核队列,审核周期约 5 个工作日。评审维度包括原创度、技术相关性、代码/数据/结果完整性。
- 获得算力:审核通过后,系统自动发放对应 GPU 小时数。
14.2.3 Option 2:发布 Notebook 代码实践(50 小时/篇,最多 150 小时)
- 编写 Notebook:在魔搭社区「灵感集」板块发布基于 AMD GPU 的 Notebook 代码实践,例如 Stable Diffusion 部署、LLM 微调或部署、Skill Agent 搭建、推理优化实践、Agent 构建等。
- 添加标签:发布时包含标签
#AMD GPU 激励计划。 - 等待审核:提交后约 5 个工作日审核。评审维度包括自动化执行测试、代码注释完整性、环境搭建说明、技术相关性。
- 获得算力:审核通过后系统自动发放 GPU 小时数。
14.2.4 Option 3:CreateSpace 部署应用(按需分配 700+ 小时)
在魔搭 CreateSpace 部署 AMD GPU 应用,需先加入专属组织以获得 AMD 独占 GPU 资源:
- 申请加入组织:访问
modelscope.cn/organization/AMD_Dev(或搜索「AMD Developer Center」),点击「申请加入」,在申请理由中附上资质证明。 - 提交资质:资质要求为已注册 AMD 开发者计划(Step 0),且已在魔搭发布至少 1 篇过审技术文章或 1 个高质量 AMD 相关 Notebook。申请理由中需填写 AMD 开发者账号 ID(在 AMD 开发者计划 → Profile 中可查)。
- 等待审批:审批通过后成为组织成员,在 CreateSpace 创建或配置应用时即可选择 AMD 独占 GPU 资源(如 MI308X)及对应镜像。
- 提交部署:提交应用后约 5 个工作日审核。评审权重:安全性 25% + 功能完整度 25% + AMD 技术相关性 20% + 用户体验 15% + 创新性 15%。
- 获得算力:审核通过后系统自动发放对应 GPU 小时数(按应用质量由 AMD 团队最终确定)。
14.3 AMD AI 开发者计划(全球与中文站)
AMD AI Developer Program 面向全球开发者提供免费云算力、专属 AI 培训、专家支持与独家开发者资源[21]。2026 年 5 月,AMD AI 开发者计划中文站(developer.amd.com.cn)正式上线,为中国开发者提供本地化体验[22]。
14.3.1 全球版:AMD AI Developer Program
全球版申请流程:访问 developer.amd.com/ai-developer-program 注册并提交申请,说明计划如何使用 GPU 额度(推理/训练/微调),AMD 审核通过后即可在 Dashboard 的「Member Perks」中点击「Request Cloud Credits」领取[21]。云额度通常自入账起 30 天内有效,仅适用于 AMD Instinct MI300X GPU。
14.3.2 中文站:AMD AI 开发者计划(中国区官方平台)
中文站针对中国网络环境做了本地化优化,无需科学上网即可访问,核心亮点如下:
| 亮点 | 说明 |
|---|---|
| 3 种本地化登录 | 微信扫码 / 魔搭社区账号授权 / 手机号邮箱验证码,一键直达 |
| 100 小时免费算力 | 活动期间注册登录即送中国区专属额度,基于 Radeon PRO W7900D 等专业 GPU |
| 100 积分奖励 | 完善个人基础信息、项目环境与偏好、学术身份后获得,可等额兑换云算力券 |
| 6 大核心权益 | 围绕技术、资源、交流三大维度,含专属技术支持微信群、积分兑换算力券等 |
14.3.3 中文站注册与领取算力(详细步骤)
- 访问中文站:打开
developer.amd.com.cn/login,选择微信扫码、魔搭账号授权或手机号/邮箱验证码登录。 - 完善注册表单:首次登录会跳转注册表单,按提示填写姓名、邮箱/手机号并完成验证,即可成为 AMD Developer Program 成员。
- 完善信息领积分:进入会员中心,补全「个人基础信息 → 项目环境与偏好 → 学术身份」,提交后获得 100 积分。
- 进入 Radeon Cloud:登录后在中文站首页一键进入 AMD 开发者云(Radeon Cloud),活动期间注册成员免费获得 100 小时中国区专属算力额度。
- 选择模板创建工作区:平台内置开箱即用的技术模板与预配置工作区(如 ROCm + PyTorch),选择模板 → 启动工作区 → 在浏览器内进入开发环境,无需自行配置环境。
14.3.4 积分兑换云算力券(详细流程)
积分兑换的完整逻辑是:先在 AMD AI 开发者计划中文站消耗积分生成云算力券链接,再前往 AMD 开发者云平台完成兑换入账。兑换规则:1 积分 = 1 小时 GPU 云算力,100 积分起兑,兑换小时数不超过当前剩余可兑换积分数,云算力券通常自兑换日起 30 天内有效[22]。
- 进入兑换区:从中文站主页面或活动入口进入云算力兑换区域。
- 发起兑换:在兑换活动页点击「立即兑换」,输入想兑换的云算力小时数,点击「去兑换」。
- 复制兑换链接:兑换成功后复制生成的兑换链接。
- 登录开发者云平台:访问 AMD 开发者云平台,使用 GitHub 或魔搭账号登录并完成授权。
- 兑换入账:点击右上角头像进入 Profile → 点击「Redeem Credits」→ 在「Coupon Link」输入框粘贴兑换链接 → 点击「Redeem」完成兑换。
14.4 hello-rocm:Datawhale 的 ROCm 开源教程
Datawhale 主导的 hello-rocm 项目系统覆盖 AMD ROCm 平台大模型的完整使用链路,从环境安装(ROCm + PyTorch + uv)到部署、微调训练与 GPU 编程,并内置可安装到 AI 编程工具的 hello-rocm Skill[23]。
14.4.1 项目定位与学习路径
hello-rocm 的目标是让 AMD GPU 不只是一块显卡,而是进入 AI 开发世界的真实起点。项目建议的学习顺序为:先完成环境安装(00-Environment),再学习部署(01-Deploy)与微调(02-Fine-tune),最后探索算子优化与 GPU 编程(03-Infra)。初学者可在环境就绪后从 LM Studio 或 vLLM 部署开始。
| 阶段 | 内容 | 推荐工作区模板 |
|---|---|---|
| 00 环境安装 | ROCm + PyTorch + uv 统一环境安装(Windows / Ubuntu) | ROCm + PyTorch |
| 01 模型部署 | Gemma 4 / Qwen3 / Qwen3.5 等模型的 LM Studio、vLLM、Ollama、llama.cpp 部署 | ROCm + PyTorch |
| 02 微调训练 | Qwen3-8B、Qwen3.5-4B、Gemma4 等 LoRA 微调实战 | ROCm + PyTorch + Transformers |
| 03 算子优化 | ROCm 算子优化实践、GPU 编程 | ROCm + HIP 开发环境 |
14.4.2 已支持模型与部署框架
hello-rocm 已覆盖主流大模型的「多框架推理 + 微调实践」,且持续扩充:
| 模型 | 部署框架 | 微调教程 |
|---|---|---|
| Qwen3 | LM Studio / vLLM / Ollama / llama.cpp | Qwen3-0.6B、Qwen3-8B LoRA 微调 |
| Qwen3.5 | LM Studio / vLLM / Ollama / llama.cpp | Qwen3.5-4B LoRA 微调 |
| Gemma4 | LM Studio / vLLM / Ollama / llama.cpp | Gemma4-E4B LoRA 微调(ModelScope 单卡) |
| MiniCPM5 / MiniCPM-V 4.6 / MiniCPM-o 4.5 | llama.cpp / vLLM / Web Demo 全双工 | — |
| 具身智能策略 | ACT / SmolVLA / Pi0 / Pi0.5 复刻案例 | ROCm 训练 Notebook |
14.4.3 安装 hello-rocm Skill(装进你的 AI 助手)
如果你使用支持 Skills、Rules 或 Agent 配置的 AI 编程工具,可以直接使用项目内置的 hello-rocm Skill。它会根据仓库的目录结构、Reference 索引、GPU 架构表、部署教程和排障清单,自动定位到具体文档与官方链接。
- 获取 Skill:克隆或下载
datawhalechina/hello-rocm仓库,找到src/hello-rocm-skill目录。 - 安装到工具:将 Skill 安装或加载到合适位置(例如
.claude/skills、.cursor/skills或.agents/skills)。 - 开始使用:直接向 AI 助手提问,例如「我的 AMD GPU 能不能跑 ROCm?」「我想最快跑通一个本地大模型应该看哪篇?」「vLLM / Ollama / llama.cpp 在 ROCm 上怎么装?」「
torch.cuda.is_available()返回 False 怎么排查?」。
14.4.4 在 Radeon Cloud 上跑通第一个 ROCm 任务
hello-rocm 与 AMD Radeon Cloud 深度配套,平台预置了开箱即用的环境,建议起步路径:
- 启动工作区:在 Radeon Cloud 启动一个内置 ROCm + PyTorch 模板的工作区。
- 跑通推理:参考仓库
01-deploy的 Gemma4 / Qwen3 / Qwen3.5 部署教程完成推理。 - 体验训练:进入
02-fine-tune完成 LoRA 微调实战。 - 进阶底层:学习
03-infra算子优化,了解 GPU 底层原理。
14.5 SWIFT:魔搭生态的 AMD 微调框架
SWIFT(Scalable lightWeight Infrastructure for Fine-Tuning)是魔搭社区开源的模型微调与部署框架,已正式支持 AMD ROCm 训练[24]。配合魔搭的 AMD GPU 算力,可在 Notebook 中直接完成 LoRA / 全参微调,与 14.2 的激励计划形成「算力 + 工具」闭环。
14.5.1 环境准备
在 AMD ROCm 环境下使用 SWIFT 前,先确认环境满足要求:
# 1. 确认 GPU 与 ROCm 环境(rocm-smi 能看到 GPU 设备) rocm-smi # 2. 确认 PyTorch 为 ROCm 版本 python -c "import torch; print(torch.version.hip)" # 3. 安装 SWIFT(推荐使用国内源加速) pip install ms-swift -U -i https://pypi.tuna.tsinghua.edu.cn/simple # 4. 验证安装 swift --version
14.5.2 环境检查(多卡场景)
SWIFT 官方 AMD 支持文档建议在训练前用 rocm-smi 检查 GPU 拓扑(XGMI 互联、NUMA 亲和性),确保多卡通信正常[24]。单卡场景可跳过此步。
# 查看 GPU 拓扑(XGMI 互联与 NUMA 节点) rocm-smi --showtopo # 查看显存使用 rocm-smi --showmeminfo vram
14.5.3 LoRA 微调示例(命令行)
以 Qwen 系列模型为例,使用 SWIFT 命令行即可完成 LoRA 微调:
# 使用魔搭模型 ID 直接微调(自动从 ModelScope 下载) swift sft \ --model Qwen/Qwen2.5-7B-Instruct \ --train_type lora \ --dataset "AI-ModelScope/alpaca-cleaned#1000" \ --output_dir output/qwen-lora \ --max_length 2048 \ --batch_size 1 \ --gradient_accumulation_steps 4 \ --learning_rate 1e-4 \ --num_train_epochs 1
HSA_OVERRIDE_GFX_VERSION 或 PYTORCH_ROCM_ARCH 环境变量(具体值取决于你的 GPU 架构,如 gfx1100)。SWIFT 官方已通过 PR #9069 验证 AMD ROCm 训练支持[24]。
14.6 免费算力与学习资源速查
下表汇总了本章介绍的全部资源,方便快速对比选择:
| 资源 | 算力 / 权益 | 适用人群 | 入口 |
|---|---|---|---|
| AMD AI Developer Program(全球) | $100 Developer Cloud 额度(MI300X) | 全球开发者,需申请审核 | developer.amd.com/ai-developer-program |
| AMD AI 开发者计划中文站 | 100 小时中国区专属算力 + 100 积分 | 中国开发者,微信/魔搭一键登录 | developer.amd.com.cn |
| 魔搭 × AMD 激励计划 | 最高 1000+ 小时(文章/Notebook/CreateSpace) | 愿意产出技术内容的开发者 | modelscope.cn/learn/433641 |
| hello-rocm 教程 | 免费开源教程 + Skill,无算力 | 想系统学习 ROCm 的初学者 | github.com/datawhalechina/hello-rocm |
| SWIFT 微调框架 | 免费开源框架,需自有算力 | 想在 AMD 上微调模型的开发者 | swift.readthedocs.io |
14.6.1 实战案例:白嫖 48GB 显存跑 DeepSeek
魔搭社区已有开发者利用 AMD AI 开发者计划提供的免费云 GPU(Radeon PRO W7900D,48GB 显存)完成 DeepSeek 的私有化部署实战,全程零成本,适合零基础读者跟着做[25]。核心步骤概览:
- 注册领取算力:访问 AMD AI 开发者计划专属注册链接,用手机号注册登录,进入「AMD 开发者云」→ 点击「Create Template」,Container Image 选择
AMD OneClick Base (rocm7.2.1-py3.12),创建后点击「Launch」进入云端终端。 - 检查环境:依次运行
rocm-smi(确认 GPU 挂载)、rocminfo | grep gfx(确认架构 gfx1100)、ls /dev/dri/renderD*(确认 GPU 数量)、amd-smi static --vram(确认 48GB 显存)、pip show vllm(确认 vLLM 已预装)。 - 设置环境变量:
export PYTORCH_ROCM_ARCH="gfx1100"、export HSA_OVERRIDE_GFX_VERSION=11.0.0、export HF_ENDPOINT=https://hf-mirror.com。 - 下载模型:用魔搭下载
deepseek-ai/DeepSeek-R1-Distill-Qwen-14B(约 28GB,FP16),国内直连速度快。 - 启动 vLLM:
vllm serve /workspace/models/DeepSeek-R1-14B --max-model-len 16384 --gpu-memory-utilization 0.90 --trust-remote-code --port 8000,出现Application startup complete即成功。 - 打通公网:用 ngrok 将本地 8000 端口映射为公网地址,即可在 Cherry Studio / OpenCode 等客户端中配置 OpenAI 兼容 API 使用。
14.6.2 如何选择适合自己的路径
| 你的情况 | 推荐路径 |
|---|---|
| 零基础、只想先体验 AMD 算力 | 中文站注册 → 领取 100 小时 → 用内置模板跑通第一个模型 |
| 有技术内容创作习惯 | 魔搭激励计划:发文章 + Notebook,快速累积 200 小时 |
| 想长期部署应用 | 加入 AMD Developer Center 组织 → CreateSpace 部署 → 700+ 小时 |
| 想系统学习 ROCm | hello-rocm 教程 + 安装 Skill 到 AI 助手,边学边练 |
| 想在 AMD 上微调模型 | SWIFT 框架 + 魔搭算力,Notebook 中直接 LoRA 微调 |