Перейти к содержанию
Публикация AiManual

Специализированная сборка llama.cpp для Radeon RX 7900 XTX: ускоряем Qwen 3 до 1600 токенов/с

Кастомная сборка llama.cpp для Radeon RX 7900 XTX ускоряет Qwen 3 27B до 1600 токенов/с на префилле и 60-65 токенов/с на декодировании. Разбираем ключевые оптим

Коротко

Что будет в материале

  1. 01

    Что это за сборка и какие результаты она даёт

  2. 02

    Ключевые оптимизации: за счёт чего достигается прирост

  3. 03

    Как собрать и запустить оптимизированную версию

  4. 04

    Насколько сборка подходит владельцам 7900 XTX

Что это за сборка и какие результаты она даёт

Энтузиаст выложил кастомную сборку llama.cpp, оптимизированную под видеокарты AMD Radeon RX 7900 XTX. В ней есть патчи, которые не вошли в официальный апстрим. Главный результат: на двух картах с моделью Qwen 3 27B в квантизации Q8_0 скорость обработки промпта достигает 1600 токенов/с, а декодирование выдаёт 60-65 токенов/с для прозы и свыше 100 токенов/с для кода. Это заметно быстрее стандартной сборки на том же железе.

Сборка нацелена на владельцев 7900 XTX, которые хотят выжать максимум из своих GPU. Она неофициальная, поэтому возможны проблемы, но для энтузиастов это шанс получить производительность, которую пока не даёт апстрим.

Ключевые оптимизации: за счёт чего достигается прирост

Основной прирост дают три группы патчей: сжатие данных при передаче по PCIe, поддержка P2P для карт, подключенных через чипсет, и адаптивный MTP. Разберём каждую.

Сжатие данных по PCIe

При использовании двух карт шина PCIe становится узким местом: данные между GPU и CPU или между картами передаются в сыром виде. Патч добавляет сжатие этих данных, уменьшая объём трафика. Это особенно полезно, когда карты подключены через чипсет с ограниченной пропускной способностью. Накладные расходы на сжатие минимальны, а выигрыш в скорости префилла и декодирования заметен.

Поддержка P2P через чипсет

Стандартный P2P (peer-to-peer) между GPU обычно работает только если карты подключены напрямую к процессору. Если одна карта висит на чипсете, прямой обмен данными недоступен, и приходится гонять данные через системную память. Патч включает P2P для карт, подключенных через чипсет, что снижает задержки и повышает пропускную способность. Для двухкарточных конфигураций это критично.

Адаптивный MTP

MTP (Multi-Token Prediction) позволяет модели предсказывать несколько токенов за раз, ускоряя декодирование. Адаптивный подход динамически настраивает параметры MTP в зависимости от типа вычислений, балансируя нагрузку на GPU. Это повышает общую пропускную способность, особенно при чередовании прозы и кода.

Как собрать и запустить оптимизированную версию

Требования к системе

Для работы нужны: одна или две видеокарты Radeon RX 7900 XTX, достаточный объём VRAM (для Qwen 3 27B Q8_0 суммарно около 32 ГБ), установленный ROCm и Linux. Подойдут популярные дистрибутивы, например Ubuntu 22.04 или новее. Убедитесь, что ROCm корректно определяет ваши карты.

Сборка из исходников

Сборка неофициальная, поэтому придётся компилировать вручную. Вот примерный порядок действий:

git clone https://github.com/example/llama.cpp-7900xtx.git
cd llama.cpp-7900xtx
git apply patches/*.patch
mkdir build && cd build
cmake .. -DLLAMA_HIPBLAS=ON -DCMAKE_C_COMPILER=hipcc -DCMAKE_CXX_COMPILER=hipcc
make -j$(nproc)

Точные команды зависят от репозитория и версии ROCm. Возможны ошибки при компиляции, чаще всего из-за несовпадения версий ROCm или отсутствующих зависимостей. Проверьте, что установлены hipBLAS, rocBLAS и другие компоненты ROCm.

Запуск с оптимальными параметрами

Для достижения максимальной скорости используйте флаги, включающие оптимизации. Пример для двух карт:

./llama-cli -m qwen3-27b-q8_0.gguf -ngl 999 -sm layer --split-mode layer --no-mmap --mlock -c 4096 -b 512 -ub 128 --flash-attn on --mtp on

Здесь --split-mode layer распределяет слои между GPU, --no-mmap и --mlock предотвращают подкачку, --flash-attn on включает Flash Attention, а --mtp on активирует Multi-Token Prediction. Параметры можно подстраивать под свою конфигурацию.

Насколько сборка подходит владельцам 7900 XTX

Одна карта: есть ли смысл?

С одной картой вы получите прирост от сжатия PCIe и адаптивного MTP, но P2P не задействуется. Ожидаемое ускорение скромнее, чем с двумя картами, но всё же заметно: скорость декодирования может вырасти на 10-20% по сравнению со стандартной сборкой. Если у вас одна 7900 XTX, попробовать стоит, но не ждите двукратного скачка.

Две карты: максимальная производительность

Конфигурация с двумя 7900 XTX раскрывает весь потенциал сборки. P2P через чипсет и сжатие PCIe позволяют эффективно использовать обе карты, и именно здесь достигаются заявленные 1600 токенов/с на префилле и 60-65 токенов/с на декодировании. Если у вас есть две карты, эта сборка почти обязательна к тестированию.

Ограничения и риски

Отсутствие поддержки

Автор сборки не гарантирует её работу и не предоставляет поддержку. Если что-то пойдёт не так, придётся разбираться самостоятельно: читать код, искать ошибки, возможно, общаться в сообществе. Нужны базовые навыки отладки и понимание, как устроена llama.cpp.

Проблемы с нестандартным железом

На некоторых конфигурациях сборка может не заработать. Например, материнские платы с необычной топологией PCIe, разные ревизии карт или несовместимые версии ROCm могут вызвать сбои. Перед установкой проверьте, что ваша система соответствует типичным сценариям, описанным в репозитории.

Сравнение с официальной версией llama.cpp

Официальная версия llama.cpp не включает эти оптимизации, поэтому на том же железе она медленнее. По отзывам пользователей, кастомная сборка даёт прирост до 30-50% на двух картах в задачах с длинным контекстом. Часть патчей может быть включена в апстрим в будущем, но пока их нет, и единственный способ получить ускорение - использовать эту сборку. Если вам нужна стабильность, оставайтесь на официальной версии; если готовы к экспериментам, пробуйте.

Заключение: стоит ли пробовать?

Для энтузиастов с двумя Radeon RX 7900 XTX, которые готовы к ручной сборке и возможным проблемам, эта сборка даёт значительный прирост производительности. Для обычных пользователей, ценящих стабильность, лучше подождать, пока оптимизации попадут в апстрим. В любом случае, это шаг вперёд для AMD в локальных LLM, и он показывает, что потенциал 7900 XTX ещё не исчерпан.

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