Запуск больших языковых моделей (LLM) на видеокартах AMD долгое время считался «темной материей» в мире локального AI. В то время как NVIDIA с CUDA стала стандартом де-факто, владельцы Radeon вынуждены были довольствоваться медленным CPU-инференсом или сложными обходными путями. Однако экосистема llama.cpp, поддерживающая бэкенды ROCm (HIP) и Vulkan, превратила AMD-карты в вполне конкурентоспособный инструмент для инференса. Разберем, как собрать софт, какие есть подводные камни и что реально купить в России.
01Сборка и бэкенды: ROCm против Vulkan
Основой для работы с AMD-железом в llama.cpp является проект ggml. Для начала необходимо склонировать репозиторий:
git clone https://github.com/ggml-org/llama.cpp
cd llama.cppДалее выбор бэкенда зависит от вашей операционной системы и версии драйвера. Для Linux с поддержкой ROCm используется HIP-бэкенд, который обеспечивает нативную работу с GPU. Для Windows или старых драйверов Linux основным решением становится Vulkan. Важно отметить: Vulkan-бэкенд часто работает стабильнее на потребительских картах, в то время как ROCm исторически лучше оптимизирован для профессиональных чипов, хотя поддержка потребительских карт постепенно улучшается.
При сборке через CMake ключевые флаги выглядят так. Для ROCm (Linux):
cmake -B build -DGGML_HIP=ON
cmake --build build --config Releasecmake -B build -DGGML_VULKAN=ON
cmake --build build --config ReleaseНе забывайте про оптимизацию компиляции. Использование ccache и параллельных потоков сборки (-j 8 или больше) значительно ускоряет процесс, особенно при частых пересборках под разные модели.
02Железо, VRAM и производительность
Главный ограничитель при инференсе LLM — объем видеопамяти (VRAM). llama.cpp использует квантование (обычно Q4_K_M или Q5_K_M), что позволяет уместить большие модели в доступную память. Ниже приведена сводка по требованиям к VRAM для популярных моделей при квантовании Q4_0 (4-bit) и Q5_K_M.
| Модель | Параметры | VRAM (Q4_0) | VRAM (Q5_K_M) | Рекомендуемое AMD GPU |
|---|---|---|---|---|
| Llama-3-8B | 8B | ~5-6 GB | ~6-7 GB | Бюджетные карты с 8GB VRAM |
| Mistral-7B | 7B | ~4-5 GB | ~5-6 GB | Бюджетные карты с 8GB VRAM |
| Llama-3-70B | 70B | ~35-40 GB | ~40-45 GB | Связка карт или карты с большим объемом памяти + CPU offload |
| Qwen-2-72B | 72B | ~36-40 GB | ~42-48 GB | Связка карт или карты с большим объемом памяти (с offload) |
Для моделей среднего размера (7B-13B) достаточно одной карты начального уровня. Для 70B+ моделей требуется либо связка из двух карт с общим объемом VRAM >40GB, либо использование CPU offload, который заметно снижает скорость токенов в секунду (токен/с).
--n-gpu-layers -1 для максимального выноса в GPU, но оставьте часть слоев на CPU. Это сохранит стабильность, хотя скорость заметно упадет.03Грабли и типичные ошибки
При работе с AMD-бэкендами в llama.cpp часто встречаются специфические проблемы. Во-первых, это управление слоями. Флаг --n-gpu-layers должен быть установлен в -1, чтобы перенести все возможные слои на GPU. Если оставить 0, модель будет работать на CPU, игнорируя видеокарту.
Во-вторых, Vulkan-бэкенд может требовать явного указания размера батча. По умолчанию batch size равен 512, но на картах с малым VRAM это может вызвать переполнение. Уменьшение батча через --batch-size помогает избежать OOM (Out Of Memory), но может немного снизить пропускную способность при обработке промпта.
В-третьих, совместимость с Windows. На Windows ROCm не поддерживается официально. Вам придется использовать Vulkan или WSL2 с Linux-драйверами, что добавляет накладные расходы. Для Windows-пользователей Vulkan-сборка llama.cpp является основным и наиболее стабильным путем.
04Какое железо кому подойдёт
Выбор AMD-железа для AI в России диктуется доступностью и соотношением цена/VRAM.
- Бюджетный старт: Radeon RX 6600 (8GB). Это лучший входной билет. Она тянет 7B-модели (Mistral, Llama-3-8B) в Q4 с приемлемой скоростью. Идеально для обучения и первых экспериментов.
- Оптимальный выбор: Radeon RX 7600 XT (16GB) или б/у RX 6700 XT (12GB). 16 ГБ VRAM позволяют запускать 13B-модели (Llama-3-13B, Mistral-13B) полностью в GPU, что дает скорость заметно выше и хороший контекст. RX 67
Источник: источник (тест/офиц. документация) ↗