Запуск LLM на AMD RX 7800 XT (Руководство по ROCm)

Руководство подготовлено Ian Wirtz

Рекомендация: LM Studio (lms) как правило даёт лучшие результаты, однако Ollama тоже является рабочей альтернативой.


Предварительные требования

Шаг 1 Установка rocm-hip-runtime

Прежде чем LM Studio или Ollama смогут использовать GPU через ROCm, системе необходимы базовые пользовательские HIP-библиотеки для взаимодействия с драйвером ядра.

Arch Linux / CachyOS:

sudo pacman -S rocm-hip-runtime

Ubuntu / Debian:

sudo apt install rocm-hip-runtime

Fedora:

sudo dnf install rocm-hip-runtime

Права доступа к GPU: Ваш пользователь должен входить в группы render и video. Проверьте командой:

groups

Если одной из групп нет, добавьте себя:

sudo usermod -aG video,render $USER

Для применения изменений необходимо полностью выйти из системы и войти снова (или перезагрузить компьютер).


Шаг 2 Установка rocm-smi (может быть необязательным)

На быстро обновляемых дистрибутивах, таких как Arch, утилиты управления не всегда подтягиваются как строгая зависимость rocm-hip-runtime. Установите их явно, чтобы избежать несовпадения версий библиотек.

Arch Linux / CachyOS:

sudo pacman -S rocm-smi-lib

Ubuntu / Debian:

Debian разделяет CLI-инструмент и его библиотеку времени выполнения на отдельные пакеты.

# Инструмент мониторинга командной строки
sudo apt update && sudo apt install rocm-smi

# Библиотеки времени выполнения
sudo apt update && sudo apt install librocm-smi64-1

Подсказка: Если точное название пакета неизвестно, введите sudo apt install librocm-smi64 и нажмите Tab для автодополнения текущего суффикса версии.

Fedora:

# CLI-инструмент
sudo dnf install rocm-smi

# Библиотеки и заголовки для разработки на C/C++ (аналог rocm-smi-lib в Arch)
sudo dnf install rocm-smi-devel

Запуск модели

Шаг 3 Загрузка модели с ускорением ROCm

При вызове lms load явно передавайте флаги аппаратного ускорения. Флаг --gpu max указывает среде выполнения загрузить всю модель в VRAM.

HSA_OVERRIDE_GFX_VERSION=11.0.0 lms load tulu-3.1-8b-supernova --context-length 8192 --gpu max

Префикс HSA_OVERRIDE_GFX_VERSION=11.0.0 сообщает стеку ROCm, что RX 7800 XT следует воспринимать как нативно поддерживаемую вычислительную цель, обходя молчаливые ошибки отката.


Шаг 4 Сохранение конфигурации

Чтобы не добавлять переменную окружения к каждой команде, добавьте её в профиль командной оболочки.

Bash:

echo 'export HSA_OVERRIDE_GFX_VERSION=11.0.0' >> ~/.bashrc
source ~/.bashrc

Fish (стандартная оболочка CachyOS) Вариант A: универсальная переменная (рекомендуется)

Задаётся один раз; Fish автоматически сохраняет её между перезагрузками без дополнительной настройки:

set -Ux HSA_OVERRIDE_GFX_VERSION 11.0.0

Fish Вариант B: явная запись в файл конфигурации

echo 'set -gx HSA_OVERRIDE_GFX_VERSION 11.0.0' >> ~/.config/fish/config.fish
source ~/.config/fish/config.fish

Ollama (служба systemd):

Поскольку Ollama работает под собственным системным пользователем ollama, переменную необходимо передавать через drop-in файл systemd:

sudo mkdir -p /etc/systemd/system/ollama.service.d
sudo nano /etc/systemd/system/ollama.service.d/override.conf

Вставьте следующее, затем сохраните и выйдите (Ctrl+O, Enter, Ctrl+X):

[Service]
Environment="HSA_OVERRIDE_GFX_VERSION=11.0.0"

Затем перезагрузите конфигурацию и перезапустите службу:

sudo systemctl daemon-reload
sudo systemctl restart ollama

Проверка

Шаг 5 Убедитесь, что вычислительный драйвер ядра загружен

Если команда зависает, возможно, вычислительный уровень ядра (amdkfd) не инициализирован. Проверьте, доступен ли GPU как вычислительная платформа ROCm:

rocminfo

Прокрутите вывод вверх. Если видите Can't open /dev/kfd или аварийное завершение Linux-ядро не открывает интерфейс вычислений для пользовательского пространства. Если вы используете кастомное или экспериментальное ядро, попробуйте загрузиться со стандартным или LTS-ядром (linux-lts), чтобы исключить регрессию драйвера.


Шаг 6 Запуск сервера и проверка использования VRAM

LM Studio:

lms server start

Ollama:

ollama serve

Затем убедитесь, что модель загружена в VRAM:

rocm-smi

В режиме ожидания (модель не загружена):

rocm-smi output with no model running

В режиме ожидания GPU потребляет минимум энергии (9 Вт), тактовые частоты близки к минимуму, использование VRAM невысокое (44%).

Под нагрузкой (модель и игра запущены одновременно):

rocm-smi output with Elite Dangerous and EliteIntel running

При совокупной нагрузке использование VRAM должно заметно вырасти (71% в данном примере), утилизация GPU увеличиться, а энергопотребление возрасти (~147 Вт). Это подтверждает, что модель находится в VRAM и инференс выполняется на GPU.