# Настройка ROCm для AMD Instinct MI355X

> Настройка ROCm на серверах AMD Instinct MI355X: проверка GPU в rocm-smi и amd-smi, группы пользователей, PyTorch и vLLM в контейнерах ROCm, тест RCCL.

Источник: https://fullgpu.com/ru/docs/amd-rocm  
Обновлено: 2026-10-22  
Издатель: FullGPU (https://fullgpu.com/)

Это руководство по настройке ROCm на серверах AMD Instinct MI355X проведёт вас от первого входа до запуска PyTorch, vLLM и задач на нескольких GPU. Наши [8-GPU-серверы MI355X](https://fullgpu.com/ru/gpus/amd-mi355x) — это bare-metal-серверы, которые выдаются с образом ROCm, поэтому драйвер ядра и ROCm на них уже установлены. По опубликованным спецификациям AMD, у каждого GPU 288 ГБ HBM3e. Выбирайте контейнеры и wheel-пакеты, собранные на ROCm 7.x: в сборках для более ранних версий ROCm может не быть кода для MI355X, архитектура которого называется `gfx950`.

## Проверка GPU с помощью rocm-smi, amd-smi и rocminfo

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

В выводе `rocm-smi` и `amd-smi list` должно быть восемь GPU с номерами от 0 до 7. `rocminfo` перечисляет процессоры и все GPU в качестве агентов, и у каждого GPU должно быть указано `gfx950`. amd-smi — более новый инструмент AMD: он умеет всё то же, что и rocm-smi, а `amd-smi static` дополнительно выводит подробные сведения о каждом GPU. О регулярных проверках читайте в руководстве по [мониторингу GPU](https://fullgpu.com/ru/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`.

## Запуск PyTorch в контейнерах ROCm или из wheel-пакетов

Проще всего взять контейнер PyTorch от AMD: в него уже входят пользовательские компоненты ROCm подходящей версии. Если в вашем образе нет Docker, сначала установите его (в Ubuntu — `sudo apt install -y docker.io`). Что означают флаги устройств, объясняется в руководстве [по контейнерам Docker с GPU](https://fullgpu.com/ru/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. PyTorch на ROCm сохраняет API `torch.cuda`, поэтому большая часть кода, написанного для CUDA, работает без изменений. Для воспроизводимых сборок закрепите конкретный тег из репозитория rocm/pytorch вместо `latest`.

Если вы хотите установить PyTorch прямо на хост, используйте виртуальное окружение и индекс wheel-пакетов для ROCm, который конфигуратор установки PyTorch указывает для вашей версии ROCm:

```
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.

## Инференс моделей с vLLM в контейнере ROCm

AMD выпускает образы vLLM с поддержкой ROCm. Запустите такой образ с теми же флагами устройств, опубликуйте порт только на loopback-интерфейсе и храните веса моделей на диске для данных:

```
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 ГБ, поэтому она помещается на один MI355X; если распределить её по восьми GPU, под KV-кэш останется гораздо больше памяти. Параметры, модели с ограниченным доступом и проверка API разобраны в руководстве [по инференсу LLM (большой языковой модели) на vLLM](https://fullgpu.com/ru/docs/pytorch-vllm), а безопасная публикация эндпоинта — в [руководстве по файрволу](https://fullgpu.com/ru/docs/networking-firewall).

## Обмен данными между GPU с RCCL

RCCL — библиотека коллективных операций из состава ROCm, которая реализует API NCCL. PyTorch на ROCm использует её, когда вы выбираете бэкенд `nccl`, поэтому скрипты DDP и FSDP, запущенные через `torchrun --standalone --nproc_per_node=8`, работают без изменений, а RCCL читает привычные переменные NCCL, например `NCCL_DEBUG=INFO`. Чтобы измерить пропускную способность между GPU, соберите rccl-tests от AMD — аналог nccl-tests от NVIDIA:

```
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/ru/docs/multi-gpu-nccl). Для многоузловых задач на нескольких серверах попросите в примечаниях для наших инженеров настроить между серверами [частную сеть](https://fullgpu.com/ru/products/private-networking), когда будете их [развёртывать](https://fullgpu.com/ru/deploy), или создайте тикет в личном кабинете, если серверы вам уже выданы.

## Устранение неполадок

- **hipErrorNoBinaryForGpu.** В сборке нет кода для `gfx950`. Используйте образ на базе ROCm 7.x или wheel-пакет с поддержкой MI355X.
- **Ошибка «Permission denied» при доступе к /dev/kfd или GPU не найдены.** Добавьте пользователя в группы render и video и войдите заново. В Docker передайте оба флага `--device`.
- **В списке меньше восьми GPU.** Выполните `sudo dmesg | grep -i amdgpu` и отправьте результат вместе с выводом `amd-smi list` в [тикете в поддержку](https://fullgpu.com/ru/help/getting-support) через личный кабинет.

## Связанные страницы

- [Аренда 8-GPU-сервера AMD MI355X за 19 900 $ в месяц](https://fullgpu.com/ru/gpus/amd-mi355x): Аренда MI355X: bare-metal-сервер 8× AMD Instinct MI355X (288 ГБ HBM3e на GPU) за 19 900 $/мес., около 3,41 $ за GPU-час. Образ с ROCm, оплата криптовалютой.
- [AMD MI355X для ИИ: характеристики, ROCm и задачи, для которых он подходит](https://fullgpu.com/ru/blog/amd-mi355x-for-ai): Разбор AMD MI355X для ИИ: 288 ГБ HBM3e и 8 ТБ/с, FP8 и MXFP4, реальное состояние ROCm и задачи, которым он даёт больше всего. Прочтите перед арендой.
- [MI355X vs B200: сравнение памяти, программного стека и стоимости](https://fullgpu.com/ru/compare/mi355x-vs-b200): Сравнение MI355X и B200: 288 против 180 ГБ HBM, ROCm или CUDA, 4-битные форматы и стоимость GPU в месяц. Какой 8-GPU-сервер подойдёт вашим моделям и бюджету.
- [Тесты NCCL на сервере с несколькими GPU: all_reduce_perf шаг за шагом](https://fullgpu.com/ru/docs/multi-gpu-nccl): Как запустить тесты NCCL на сервере с несколькими GPU: проверка топологии NVLink, сборка nccl-tests, busbw в all_reduce_perf и запуск задач torchrun на 8 GPU.
