Настройка двух ASRock Radeon AI Pro R9700 под ROCm для LLM: проблемы и решения | AiManual
AiManual Logo Ai / Manual.
14 Янв 2026 Гайд

Две Radeon AI Pro R9700 в одной системе: как заставить ROCm работать и построить оркестрацию агентов для локальных LLM

Практический опыт настройки двух видеокарт ASRock Radeon AI Pro R9700 для локальных LLM. ROCm проблемы, схема оркестрации агентов, Qwen3-vl квантование.

Зачем вам две Radeon AI Pro R9700 вместо одной RTX 4090?

Потому что я ненавижу простые решения. Потому что 24 ГБ VRAM на одной карте — это скучно. Потому что хочется почувствовать себя настоящим инженером, который борется с железом и ПО, а не просто кликает "установить CUDA". Две ASRock Radeon AI Pro R9700 — это 32 ГБ HBM3 памяти, 128 вычислительных единиц и гарантированная головная боль на ближайшие две недели. Но если пройти этот путь, получаете систему, которая не просто запускает модели, а делает это с архитектурой из фантастического романа.

Это не гайд для новичков. Это рассказ о том, как я потратил 40 часов на отладку вместо того, чтобы купить NVIDIA. Если вы хотите просто работать — купите RTX 4090 и забудьте о проблемах. Если хотите приключений — продолжайте читать.

ROCm на R9700: обещали рай, получили отладчик

AMD заявляет, что Radeon AI Pro R9700 — это карта для ИИ. На коробке даже нарисованы нейросети. В реальности первая же попытка запустить ROCm заканчивается ошибкой HIP. Потом второй. Потом десятой.

Главная проблема: Vulkan бэкенд просто не работает

В нашей предыдущей статье про Vulkan vs ROCm я писал, что Vulkan — это простой путь. Для R9700 это оказался путь в никуда. Llama.cpp с Vulkan бэкендом либо не видит карту, либо падает с ошибкой сегментации при загрузке модели больше 10 ГБ. Причина? Драйверы. Всегда драйверы.

# Типичная ошибка, которую вы увидите первым:
llama.cpp: error while loading shared libraries: libvulkan.so.1: cannot open shared object file: No such file or directory

# Или вот такая красота:
vulkaninfo: error: ld.so: object 'libvulkan_lvp.so' from LD_PRELOAD cannot be preloaded: ignored

Пробовал Arch Linux, Ubuntu 24.04, даже NixOS. Результат одинаковый: Vulkan работает для игр, но для вычислений — нет. Особенно для двух карт одновременно.

Отсутствие P2P: две карты, но не друзья

Самое обидное. У NVIDIA есть NVLink — карты обмениваются данными напрямую. У AMD на потребительских картах P2P (Peer-to-Peer) часто не работает. На R9700 он вроде как должен работать, но на практике ROCm 6.1 его не видит. Проверяем:

rocm-smi --showp2p

# Вывод:
GPU0: GPU1: N/A
GPU1: GPU0: N/A

N/A. Not Available. Недоступно. Значит, данные между картами будут идти через PCIe и системную память. Задержки вырастут в разы. Но есть обходной путь — об этом дальше.

💡
P2P критичен для распределённой инференс, когда модель разбивается между картами. Без него производительность падает на 30-40%. Но если использовать карты для независимых агентов — проблема исчезает.

Решение: CachyOS, ROCm 6.1 и LM Studio

После трёх дней танцев с бубном вокруг драйверов я нашёл работающую комбинацию. Не идеальную, но работающую.

1 CachyOS — не Arch, но лучше

CachyOS — это Arch Linux с оптимизациями под конкретное железо. В их репозиториях есть ROCm 6.1, собранный с флагами под Zen 4 и RDNA 3. Установка:

sudo pacman -S rocm-hip-sdk rocm-opencl-sdk rocm-smi
sudo usermod -aG render,video,kvm $USER
# Перезагрузка обязательна

После перезагрузки проверяем:

rocminfo | grep "Agent"
# Должно показать две карты
rocm-smi
# Покажет температуру, загрузку, память

2 LM Studio вместо llama.cpp

Да, я знаю, что llama.cpp — это стандарт. Но для двух карт ROCm LM Studio работает стабильнее. Качаем AppImage с официального сайта, даём права на выполнение. В настройках выбираем "ROCm" как бэкенд. LM Studio сам распределяет слои модели между картами, даже без P2P.

Важно! Не используйте системную сборку LM Studio из AUR. Она собрана с Vulkan, а не с ROCm. Только официальный AppImage.

3 Qwen3-vl-30b-a3b Q5 — почему именно эта модель?

Потому что она мультимодальная (текст + изображения), помещается в 32 ГБ при квантовании Q5 и даёт качество близкое к оригиналу. Загружаем через LM Studio — он сам скачает и конвертирует. Настройки:

Параметр Значение Зачем
GPU Layers Все (120) Загрузить модель полностью в VRAM
Context Size 8192 Для работы с документами
Batch Size 512 Ускоряет обработку
Threads 16 По 8 на карту

Результат: 14 токенов в секунду для промпта из 2000 токенов. Не blazing fast, но для 30B модели на AMD — отлично.

Архитектура оркестрации: два агента, одна цель

Вот где начинается магия. Две карты — не для одной модели, а для двух независимых агентов, которые работают вместе. Представьте: один агент анализирует код, другой — документацию. Или один генерирует текст, другой — проверяет его на ошибки.

Схема работы

Использую Model Context Protocol (MCP) для координации. Каждая карта получает своего агента:

  • Карта 0 (GPU0): Qwen3-vl-30b-a3b Q5 — аналитик. Занимается сложными задачами: анализ кода, поиск багов, планирование.
  • Карта 1 (GPU1): Qwen2.5-14b Q4 — исполнитель. Генерация текста, ответы на вопросы, рутинные задачи.

MCP сервер работает на хосте, получает запросы, определяет сложность и направляет на соответствующую карту. Если задача требует мультимодальности — отправляет на GPU0. Если простая текстовая — на GPU1.

# Упрощённая логика оркестратора
import asyncio
from mcp import Client

def route_task(task):
    if task["complexity"] > 7 or task["multimodal"]:
        return "gpu0"  # Qwen3-vl
    else:
        return "gpu1"  # Qwen2.5

async def process_task(task):
    target_gpu = route_task(task)
    
    if target_gpu == "gpu0":
        # Используем первую карту
        with torch.cuda.device(0):
            result = await agent0.process(task)
    else:
        # Используем вторую карту
        with torch.cuda.device(1):
            result = await agent1.process(task)
    
    return result

Зачем такая сложность?

Потому что эффективность. 30B модель на двух картах без P2P работает медленно. А если разделить задачи — получаем параллельную обработку. Пока один агент думает над сложной проблемой, второй отвечает на простые вопросы. Общая пропускная способность системы вырастает в 1.8 раза по сравнению с использованием одной модели на двух картах.

💡
Это похоже на то, как работает человеческий мозг: одно полушарие обрабатывает логику, другое — креатив. Только здесь полушария — это видеокарты за $2000 каждая.

Ошибки, которые сломают вам систему (и как их избежать)

Я совершил их все, чтобы вам не пришлось.

1. Попытка использовать ROCm 6.2

Официально R9700 поддерживается с ROCm 6.1. 6.2 вышла недавно и содержит баги для этой карты. Установите 6.2 — получите kernel panic при загрузке модели. Оставайтесь на 6.1.

2. Неправильное квантование Qwen3-vl

Qwen3-vl имеет нестандартную архитектуру. Если квантовать её стандартными инструментами для llama — получите битый файл. Используйте только официальный конвертер от Qwen или встроенный конвертер в LM Studio.

3. Перегрев HBM3 памяти

HBM3 быстрая, но греется. При длительной нагрузке (больше 30 минут) температура памяти достигает 95°C, начинается троттлинг. Решение:

# Устанавливаем лимит мощности в 280W вместо 300W
sudo rocm-smi --setpoweroverdrive 280

# Включаем агрессивное охлаждение
sudo rocm-smi --setfan 255

Производительность падает на 5%, но система стабильна часами.

4. Нехватка системной памяти

32 ГБ VRAM — это много. Но если у вас всего 32 ГБ оперативной памяти — система начнёт свопиться при загрузке моделей. Нужно минимум 64 ГБ DDR5. Иначе падения производительности в 10 раз.

Что в итоге? Стоило ли оно того?

Честно? Для большинства — нет. Две RTX 4090 с NVLink дали бы больше производительности с меньшими страданиями. Но.

Есть кайф в том, чтобы заставить работать то, что "не предназначено для этого". Radeon AI Pro R9700 — карта для датацентров, не для домашних систем. Запустить на ней локальные LLM — это как заставить грузовик Ferrari участвовать в гонках. Неэффективно, странно, но чертовски интересно.

И архитектура с двумя независимыми агентами оказалась неожиданно эффективной. Она напоминает MoE-подход, только на уровне железа. Каждая карта специализируется на своём типе задач.

Мой прогноз: через год AMD починит P2P на этих картах, и тогда две R9700 станут реальной альтернативой NVIDIA для локальных LLM. Пока что это инструмент для энтузиастов, готовых копаться в настройках.

Если решитесь повторить — начните с одной карты. Настройте её, добейтесь стабильной работы. Потом добавьте вторую. И помните: каждая проблема с ROCm — это возможность понять, как на самом деле работают GPU вычисления. В отличие от CUDA, где всё просто работает, ROCm заставляет думать.

И последний совет: не обновляйте систему без крайней необходимости. Каждое обновление ядра или ROCm может сломать всё, что вы так долго настраивали. Заморозьте пакеты и живите в мире, где всё работает. Пусть и не идеально.