# 在 AMD Instinct MI355X 上配置 ROCm

> AMD Instinct MI355X 服务器的 ROCm 配置方法：用 rocm-smi 和 amd-smi 检查 GPU，设置用户组，在 ROCm 容器中运行 PyTorch 和 vLLM，并测试 RCCL 多卡通信。

来源：https://fullgpu.com/zh/docs/amd-rocm  
更新日期：2026-10-22  
发布方：FullGPU (https://fullgpu.com/)

本指南介绍 AMD Instinct MI355X 服务器的 ROCm 配置，带您从首次登录一直走到运行 PyTorch、vLLM 和多 GPU 任务。我们的 [8 卡 MI355X 服务器](https://fullgpu.com/zh/gpus/amd-mi355x)是裸金属服务器，交付时已安装 ROCm 镜像，因此内核驱动和 ROCm 都已装好。根据 AMD 公布的规格，每张 GPU 配备 288 GB HBM3e 显存。请优先使用基于 ROCm 7.x 构建的容器和 wheel 包：为较早 ROCm 版本构建的软件可能不包含面向 MI355X（架构名称为 `gfx950`）的代码。

## 用 rocm-smi、amd-smi 和 rocminfo 检查 GPU

```
rocm-smi
amd-smi list
amd-smi static
rocminfo | grep -E 'Marketing Name|gfx'
```

在 `rocm-smi` 和 `amd-smi list` 的输出中，您应该能看到 8 张 GPU，编号为 0 到 7。`rocminfo` 会把 CPU 和每张 GPU 都列为代理（agent），每张 GPU 都应显示 `gfx950`。amd-smi 是 AMD 较新的工具：它涵盖 rocm-smi 的功能，`amd-smi static` 还会提供每张 GPU 的详细信息。日常检查请参阅 [GPU 监控](https://fullgpu.com/zh/docs/gpu-monitoring)。

## 将用户加入 render 和 video 组

root 用户可以直接使用 GPU。其他用户需要访问 `/dev/kfd` 和 `/dev/dri`，ROCm 通过 `render` 和 `video` 组授予这一权限。对每个非 root 用户（此处为 `bob`）执行：

```
sudo usermod -aG render,video bob
# after bob logs out and back in
groups bob
```

输出中应包含 `render` 和 `video`。缺少这两个组时，ROCm 程序会找不到 GPU，或者因 `/dev/kfd` 的权限错误而失败。

## 通过 ROCm 容器或 wheel 包运行 PyTorch

最简单的方式是使用 AMD 的 PyTorch 容器，其中自带版本匹配的 ROCm 用户态组件。如果您的镜像中没有 Docker，请先安装（在 Ubuntu 上运行 `sudo apt install -y docker.io`）。设备参数的含义见 [Docker GPU 容器](https://fullgpu.com/zh/docs/docker-containers)。

```
docker run -it --rm \
  --device=/dev/kfd --device=/dev/dri --group-add video \
  --ipc=host --security-opt seccomp=unconfined \
  rocm/pytorch:latest
```

在容器内检查 PyTorch 的识别结果：

```
python3 -c "import torch; print(torch.version.hip, torch.cuda.device_count(),
  torch.cuda.get_device_name(0))"
```

您应该会看到 HIP 版本号、`8` 和 GPU 名称。ROCm 版 PyTorch 保留了 `torch.cuda` API，因此大多数 CUDA 代码无需修改即可运行。为了让构建可复现，请固定使用 rocm/pytorch 仓库中的某个具体标签，而不是 `latest`。

如果要改为直接在主机上安装，请使用虚拟环境，以及 PyTorch 安装选择器针对您的 ROCm 版本列出的 ROCm wheel 索引：

```
sudo apt install -y python3-venv
python3 -m venv ~/venvs/rocm
source ~/venvs/rocm/bin/activate
pip install torch --index-url https://download.pytorch.org/whl/rocmX.Y
```

将 `rocmX.Y` 替换为该版本，并确认所用的 PyTorch 版本支持 MI355X。如果不支持，您会看到 `hipErrorNoBinaryForGpu` 错误。

## 选择进程可见的 GPU

```
HIP_VISIBLE_DEVICES=0,1 python3 train.py

# the same inside a container
docker run --rm --device=/dev/kfd --device=/dev/dri --group-add video \
  -e HIP_VISIBLE_DEVICES=0,1 rocm/pytorch:latest \
  python3 -c "import torch; print(torch.cuda.device_count())"
```

容器中的命令应输出 `2`。在进程内部，可见的 GPU 会从 0 开始重新编号。HIP 同样支持 `CUDA_VISIBLE_DEVICES`，而 `ROCR_VISIBLE_DEVICES` 在更底层进行过滤；请只设置其中一个，以免多个变量组合起来造成混乱。要同时运行两个任务，请为每个任务分配各自的一组 GPU，例如 0 到 3 号和 4 到 7 号。

## 在 ROCm 容器中用 vLLM 提供模型推理服务

AMD 发布了支持 ROCm 的 vLLM 镜像。用相同的设备参数启动容器，只在回环接口上发布端口，并把模型权重放在数据盘上：

```
docker run -d --name vllm \
  --device=/dev/kfd --device=/dev/dri --group-add video \
  --ipc=host --security-opt seccomp=unconfined \
  -p 127.0.0.1:8000:8000 \
  -v /data/hf:/data/hf -e HF_HOME=/data/hf \
  rocm/vllm:latest \
  vllm serve Qwen/Qwen2.5-72B-Instruct --tensor-parallel-size 8 \
    --host 0.0.0.0 --port 8000
```

用 `docker logs -f vllm` 跟踪启动过程，然后运行 `curl http://127.0.0.1:8000/v1/models`：您应该能在列表中看到该模型。vLLM 在容器内监听所有接口，而 `127.0.0.1` 映射让它只能从主机本机访问。72B 模型的 BF16 权重约需 145 GB，因此单张 MI355X 即可装下；分布到 8 张 GPU 上，则能为 KV 缓存留出多得多的显存。启动选项、需授权访问的模型（gated model）和 API 测试见[用 vLLM 提供大语言模型（LLM）推理服务](https://fullgpu.com/zh/docs/pytorch-vllm)，如何安全地对外开放推理端点见[防火墙指南](https://fullgpu.com/zh/docs/networking-firewall)。

## 使用 RCCL 进行多 GPU 通信

RCCL 是 ROCm 的集合通信库，实现了 NCCL API。当您选择 `nccl` 后端时，ROCm 版 PyTorch 使用的就是 RCCL，因此用 `torchrun --standalone --nproc_per_node=8` 启动的 DDP 和 FSDP 脚本无需修改即可运行；RCCL 也会读取常用的 NCCL 变量，例如 `NCCL_DEBUG=INFO`。要测量 GPU 之间的带宽，请编译 AMD 的 rccl-tests，它与 NVIDIA 的 nccl-tests 相对应：

```
sudo apt install -y git build-essential
git clone https://github.com/ROCm/rccl-tests.git
cd rccl-tests
make
./build/all_reduce_perf -b 8 -e 8G -f 2 -g 8
```

每一行的 `#wrong` 列都应为 0。带宽列的解读方法见 [NCCL 测试](https://fullgpu.com/zh/docs/multi-gpu-nccl)。对于跨多台服务器的多节点任务，请在[部署](https://fullgpu.com/zh/deploy)服务器时，通过给工程师的备注申请在服务器之间开通[私有网络](https://fullgpu.com/zh/products/private-networking)；如果服务器已经交付，请在控制台提交工单。

## 故障排查

- **hipErrorNoBinaryForGpu.** 该构建不包含面向 `gfx950` 的代码。请使用基于 ROCm 7.x 的镜像，或支持 MI355X 的 wheel 包。
- **访问 /dev/kfd 时出现 Permission denied，或找不到 GPU。**将该用户加入 render 和 video 组，然后重新登录。在 Docker 中，请同时传入两个 `--device` 参数。
- **列出的 GPU 少于 8 张。**运行 `sudo dmesg | grep -i amdgpu`，然后将其输出连同 `amd-smi list` 的输出，通过控制台中的[工单](https://fullgpu.com/zh/help/getting-support)发送给我们。

## 相关页面

- [租用 8 卡 AMD MI355X 服务器，每月 US$19,900](https://fullgpu.com/zh/gpus/amd-mi355x): MI355X 租用：一台 8 卡 AMD Instinct MI355X 裸金属服务器（每张 GPU 配备 288 GB HBM3e），US$19,900/月，约合每 GPU 小时 US$3.41。ROCm 环境已就绪，使用加密货币支付。
- [AMD MI355X 用于 AI：规格、ROCm 与适用的工作负载](https://fullgpu.com/zh/blog/amd-mi355x-for-ai): AMD MI355X 用于 AI 详解：每张 GPU 配备 288 GB HBM3e，带宽 8 TB/s，支持 FP8 与 MXFP4；ROCm 的真实现状，以及最能从中受益的工作负载。下单前先读这篇。
- [MI355X 与 B200 对比：显存、软件与成本](https://fullgpu.com/zh/compare/mi355x-vs-b200): MI355X 与 B200 对比：HBM 显存 288 GB 对比 180 GB，ROCm 对比 CUDA 软件栈，4 位精度格式，以及每张 GPU 的月成本。了解哪款 8 卡服务器更适合您的模型和预算。
- [在多 GPU 服务器上运行 NCCL 测试：all_reduce_perf 分步指南](https://fullgpu.com/zh/docs/multi-gpu-nccl): 在多 GPU 服务器上运行 NCCL 测试：检查 NVLink 拓扑，编译 nccl-tests，读懂 all_reduce_perf 输出中的 busbw，并在全部 8 张 GPU 上启动 torchrun 任务。
