Запуск больших языковых моделей (LLM) на видеокартах AMD в среде Linux — задача решаемая, но требующая внимательности к деталям. В отличие от NVIDIA, где всё упирается в CUDA, экосистема AMD строится вокруг ROCm (Radeon Open Compute) и Vulkan. Проект llama.cpp является де-факто стандартом для инференса, поддерживая оба бэкенда. Ниже — практическое руководство по сборке и настройке, основанное на официальной документации проекта.
01Базовая подготовка и структура проекта
Первый шаг — получение исходного кода. Проект llama.cpp предоставляет библиотеку llama с C-style интерфейсом и набор утилит, включая HTTP-сервер, совместимый с OpenAI API.
git clone https://github.com/ggml-org/llama.cpp
cd llama.cppДля компиляции используется CMake. Базовая сборка без GPU-ускорения (только CPU) выглядит так:
cmake -B build
cmake --build build --config ReleaseДля ускорения процесса сборки добавьте флаг параллельных задач -j (например, -j 8 для 8 потоков) или используйте генератор Ninja. Также настоятельно рекомендуется установить ccache для кэширования результатов компиляции при повторных сборках.
02Сборка с поддержкой AMD ROCm
ROCm — это основной бэкенд для видеокарт AMD Radeon (серии RX 5000/6000/7000 и профессиональных Instinct) в Linux. Он позволяет использовать вычислительную мощность GPU для обработки запросов.
Для сборки с поддержкой ROCm необходимо убедиться, что в системе установлен пакет rocm-dev или аналогичный, предоставляющий заголовочные файлы и библиотеки ROCm. В документации llama.cpp раздел HIP (основа ROCm) описывает интеграцию. Хотя в кратком вырезе документации прямые флаги HIP не всегда вынесены в общий блок, стандартная практика для ROCm-совместимых сборок llama.cpp включает:
cmake -B build -DGGML_HIP=ON
cmake --build build --config ReleaseВажно: Версии ROCm должны быть совместимы с версией LLVM/Clang, используемой для сборки. На современных дистрибутивах (Ubuntu 22.04/24.04, Fedora) это обычно решается установкой пакетов из репозиториев AMD или использованием Docker-образов с ROCm.
03Vulkan как альтернатива ROCm
Если ROCm вызывает сложности с зависимостями или ваша карта не входит в список «сертифицированных» AMD для ROCm, бэкенд Vulkan является отличной альтернативой. Он работает на широком спектре GPU, включая старые поколения Radeon.
Сборка с Vulkan:
cmake -B build -DGGML_VULKAN=ON
cmake --build build --config ReleaseVulkan-бэкенд в llama.cpp активно развивается и часто демонстрирует хорошую производительность на картах серии RX 6000/7000. Он менее зависим от специфичных драйверов AMD, чем ROCm, но может требовать больше ручной настройки параметров запуска (например, управление слоями через --n-gpu-layers).
04Оптимизация производительности: BLAS и CPU
Даже при использовании GPU, процессор играет роль в обработке промптов (prompt processing). Для ускорения этого этапа можно подключить библиотеки BLAS.
- OpenBLAS: Универсальное решение для CPU.
cmake -B build -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS - AMD AOCL-BLAS: Специализированная оптимизация для процессоров AMD Zen. Требует установки AMD AOCL и настройки переменных окружения.
cmake -B build -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=AOCL_mt
Обратите внимание: использование BLAS улучшает скорость обработки контекста (prompt), но не влияет на скорость генерации токенов (inference), которая зависит от GPU/VRAM.
05Типичные ошибки и совместимость
Главная проблема при работе с AMD в Linux — это совместимость версий ROCm и ядра Linux. Ошибка hsa-runtime64 или hipInit обычно означает, что драйвер не инициализировался корректно.
- Проверка драйверов: Убедитесь, что
rocm-smiработает и видит вашу карту. - VRAM: llama.cpp использует квантование (GGUF). Для модели 7B в формате Q4_K_M потребуется несколько гигабайт VRAM. Для 13B — больше памяти. Для 70B — требуется значительный объем VRAM (и то, с трудом). Убедитесь, что VRAM вашей карты хватает под выбранную квантованную модель.
- Флаги запуска: После сборки используйте
--n-gpu-layers -1(или конкретное число), чтобы перенести слои модели на GPU. Если GPU не используется, проверьте, что бэкенд (HIP/Vulkan) был включен при сборке.
06Какое железо кому подойдёт
| Категория | Рекомендуемое железо (AMD) | Что запустится | Примечание для РФ |
|---|---|---|---|
| Бюджетный старт | RX 6600 / 6650 XT (8-10 GB VRAM) | LLaMA-3-8B (Q4), Mistral-7B | Доступно на маркетплейсах, цена ~20-25 тыс. руб. |
| Оптимальный выбор | Источник: источник (тест/офиц. документация) ↗
|