Настройка vLLM с ROCm под Qwen3.5 на 2x AMD Radeon 7900 XTX | AiManual
AiManual Logo Ai / Manual.
21 Мар 2026 Инструмент

Как настроить vLLM для моделей Qwen3.5 на двух AMD Radeon 7900 XTX: секретные переменные окружения и бенчмарки

Полное руководство по запуску vLLM для Qwen3.5 на двух AMD RX 7900 XTX. Секретные флаги окружения, команды для бенчмаркинга и сравнение с llama.cpp. Актуально н

Почему vLLM на AMD — это боль, но мы ее вылечим

Купить две AMD Radeon 7900 XTX для запуска Qwen3.5-32B — отличная идея. Пока не пытаешься заставить vLLM с ROCm увидеть обе карты. Официальная документация молчит, а форумы завалены вопросами без ответов. Но есть обходной путь. И он работает.

Предупреждение: ROCm 6.1 (актуальная на март 2026) совместима не со всем. Если у вас свежая сборка ядра Linux — готовьтесь к танцам с бубном. Иногда проще арендовать GPU в облаке для тестов, чем тратить неделю на отладку.

1 Готовим систему: драйверы и зависимости

Забудьте про установку ROCm из стандартных репозиториев дистрибутива. На 2026 год это гарантированно сломает vLLM. Единственный рабочий способ — использовать официальные пакеты AMD, но конкретной версии. Я тестировал на ROCm 6.1.2 с ядром Linux 6.8. Проверьте, что видите обе карты:

rocm-smi --showproductname

Должны быть две строки с "Radeon RX 7900 XTX". Если нет — проблемы с PCIe или драйвером. Убедитесь, что в системе отключен Secure Boot (да, ROCm все еще с ним не дружит).

2 Ставим vLLM с правильными флагами

Не используйте pip install vllm просто так. Для AMD нужна специальная сборка с поддержкой ROCm. На март 2026 года vLLM официально поддерживает ROCm в nightly-сборках. Лучше всего брать Docker-образ:

docker run --device=/dev/kfd --device=/dev/dri --group-add=video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -it rocm/vllm:nightly-rocm6.1.2 /bin/bash

Если хотите собрать локально, приготовьтесь к долгой компиляции. И да, вам понадобится минимум 32 ГБ оперативной памяти для сборки.

💡
Для тех, кому нужно запустить еще более крупную модель, например, Qwen3.5-397B, на двух картах, есть хитрости с квантованием. Подробности в статье Qwen3.5-397B-A17B на домашнем железе.

3 Секретная переменная, без которой ничего не работает

Вот главный ключ. Без этой переменной vLLM либо увидит только одну карту, либо упадет с невнятной ошибкой HSA. Добавьте в окружение перед запуском:

export HSA_ENABLE_IPC_MODE_LEGACY=1

Зачем? ROCm 6.x изменила механизм межпроцессорного взаимодействия (IPC) для много-GPU систем. Старый драйвер vLLM ожидает прежний режим. Эта переменная включает обратную совместимость. Без нее обмен данными между картами блокируется.

Еще две важные переменные для стабильности:

export HIP_VISIBLE_DEVICES=0,1
export PYTORCH_HIP_ALLOC_CONF=use_host_malloc:1

Первая явно указывает vLLM, какие GPU использовать. Вторая помогает избежать нехватки памяти из-за фрагментации в драйвере HIP.

4 Загружаем Qwen3.5 и запускаем бенчмарк

Возьмем Qwen3.5-32B-Instruct — оптимальный вариант для 2x24 ГБ VRAM. Команда для запуска инференса с измерением скорости:

python -m vllm.entrypoints.openai.api_server \
  --model Qwen/Qwen3.5-32B-Instruct \
  --tensor-parallel-size 2 \
  --gpu-memory-utilization 0.9 \
  --served-model-name qwen32b \
  --port 8000

Подождите загрузки. Затем тестовый запрос для проверки скорости:

curl http://localhost:8000/v1/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen32b",
    "prompt": "Объясни, как работает трансформер",
    "max_tokens": 256,
    "temperature": 0
  }'

Но это не настоящий бенчмарк. Для точных цифр используйте встроенный бенчмарк vLLM:

python -m vllm.benchmark.throughput \
  --model Qwen/Qwen3.5-32B-Instruct \
  --tensor-parallel-size 2 \
  --input-len 512 \
  --output-len 128 \
  --num-prompts 100 \
  --request-rate 10
Конфигурация Токенов/сек (ввод) Токенов/сек (вывод) Задержка (мс)
2x Radeon 7900 XTX, vLLM, TP=2 ~85 ~24 ~45
1x Radeon 7900 XTX, vLLM ~42 ~12 ~90

Цифры ориентировочные, но показывают главное: две карты почти удваивают скорость. Но только если IPC работает.

А что с альтернативами? llama.cpp и другие

vLLM не единственный игрок. Для AMD часто советуют llama.cpp с бэкендом Vulkan. В теории — проще установка. На практике — ниже производительность на больших моделях, особенно при длинном контексте.

Плюсы llama.cpp Vulkan:

Минусы:

  • Скорость инференса для Qwen3.5-32B на двух 7900 XTX будет около 15-18 токенов/сек. Почти в два раза медленнее vLLM.
  • Нет эффективного батчинга. Для API-сервера — плохо.

Еще есть вариант с llama.cpp RPC для распределения по нескольким GPU. Работает, но сложнее в настройке (подробности здесь).

Вывод: если нужна максимальная скорость инференса и планируете обрабатывать несколько запросов одновременно — vLLM с ROCm стоит потраченных нервов. Для эпизодического использования одной картой хватит и llama.cpp.

Кому это вообще нужно?

Эта настройка — для упрямых энтузиастов с двумя AMD картами на столе. Или для небольших студий, которые хотят сэкономить на инференсе, но не готовы платить за NVIDIA. Производительность близка к 2x RTX 4090, но дешевле (если не считать потраченного времени).

Идеальный случай:

  • Локальный чат-бот с длинным контекстом на Qwen3.5-32B.
  • Пакетная обработка текстов (суммаризация, перевод) с высокой пропускной способностью.
  • Эксперименты с тонкой настройкой больших моделей, где нужен быстрый инференс.

Если вы просто хотите попробовать LLM раз в неделю — арендуйте облачный инстанс. Настройка того не стоит.

Последний совет: не обновляйтесь без причины

Самая большая ошибка — обновить ROCm или vLLM, потому что "вышла новая версия". В мире AMD стек драйверов — хрупкая экосистема. Рабочая конфигурация на март 2026: ROCm 6.1.2 + vLLM nightly-rocm6.1.2 + ядро 6.8. Если все работает — зафиксируйте версии в Dockerfile и не трогайте. Новые релизы часто ломают совместимость, а исправления ждут месяцами. Проверено на личном опыте.

Подписаться на канал