Запуск больших языковых моделей (LLM) локально требует не только мощного железа, но и правильной сборки движка. llama.cpp — это де-факто стандарт для инференса, поддерживающий широкий спектр архитектур. В этой статье разберем, как собрать проект под конкретное железо, какие флаги использовать и чего ожидать от производительности.
01Базовая сборка и CPU-ускорение
Для начала клонируйте репозиторий и создайте базовую сборку через CMake. Это работает на любой системе, но скорость будет ограничена процессором:
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
cmake -B build
cmake --build build --config ReleaseДля ускорения обработки промптов (не генерации токенов) можно подключить BLAS-библиотеки. На Linux это OpenBLAS или Intel oneMKL. На macOS Accelerate Framework включен по умолчанию. Использование BLAS дает прирост при батчах больше 32, но не влияет на скорость генерации текста.
ccache. Это значительно ускорит повторные билды, особенно при переключении между флагами GPU.02NVIDIA CUDA: Золотой стандарт
Для видеокарт NVIDIA необходимо установить CUDA Toolkit. Сборка активируется флагом -DGGML_CUDA=ON:
cmake -B build -DGGML_CUDA=ON
cmake --build build --config ReleaseВажные нюансы:
- Совместимость: По умолчанию сборка оптимизируется под текущую GPU. Для универсального бинарника, работающего на всех картах (с небольшим оверхедом на JIT-компиляцию), добавьте
-DGGML_NATIVE=OFF. - Вычислительные возможности: Если
nvccне определяет вашу карту, могут возникнуть предупреждения. В этом случае требуется явное указание compute capability. - Дистрибутивы: На Fedora Silverblue/Kinoite сборка через toolbox контейнер является рекомендуемым методом, так как нативных пакетов CUDA там нет.
libssl-dev. Без него проект соберется, но функции загрузки по сети будут отключены.03Apple Metal: Единая память
На macOS Metal включен по умолчанию. Это критически важно для чипов M-серии (M1/M2/M3), так как они используют единую архитектуру памяти. GPU и CPU видят одни и те же данные, что позволяет загружать модели, объем которых превышает VRAM отдельной видеокарты, но укладывается в общую память SoC.
Чтобы принудительно отключить GPU-инференс и работать только на CPU, используйте аргумент командной строки --n-gpu-layers 0. Отключить Metal на этапе сборки можно флагом -DGGML_METAL=OFF.
04AMD ROCm (HIP) и Intel
Для видеокарт AMD используется бэкенд HIP (ROCm). Для видеокарт Intel (серии Arc, Flex, Max) рекомендуется использовать SYCL-бэкенд. Сборка SYCL требует установки oneAPI toolkit и компиляторов icx/icpx.
source /opt/intel/oneapi/setvars.sh
cmake -B build -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=Intel10_64lp -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DGGML_NATIVE=ON
cmake --build build --config ReleaseОбратите внимание: сборка через oneMKL не поддерживает Intel GPU. Для работы с ними нужен именно SYCL.
05Другие ускорители: Vulkan, OpenVINO, CANN
llama.cpp поддерживает множество других бэкендов:
- Vulkan: Универсальный бэкенд, работающий на многих GPU (AMD, Intel, NVIDIA), если нативные драйверы недоступны или нежелательны.
- OpenVINO: Оптимизация для Intel CPU и iGPU, часто дает лучший прирост производительности на процессорах Core 12-14 поколения.
- CANN: Для ускорителей Huawei Ascend.
- Arm KleidiAI: Оптимизации для ARM-процессоров (включая Apple Silicon и серверные чипы).
06Какое железо кому подойдёт
Выбор платформы в условиях РФ диктуется доступностью и ценой:
| Железо | Сценарий | Нюансы сборки |
|---|---|---|
| NVIDIA RTX 3090/4090 | Локальный инференс, обучение | -DGGML_CUDA=ON. Максимальная совместимость. |
| Apple M1/M2/M3 (Pro/Max/Ultra) | Мобильность, большие модели | По умолчанию. Позволяет грузить 70B+ модели в 64-128GB RAM. |
| AMD RX 6000/7000 | Альтернатива NVIDIA | Требует ROCm/HIP. Может быть сложнее в настройке на Linux. |
| Intel Core i7/i9 + Arc | Офис/легкий инференс | OpenVINO для CPU, SYCL для Arc. Хорошее соотношение цена/производительность. |
Для большинства пользователей в РФ, имеющих доступ к NVIDIA картам, сборка с CUDA остается самым стабильным выбором. Для тех, кто хочет запускать крупные модели (30B+ параметров) без покупки серверных GPU, Mac Studio с большой памятью остается уникальным решением благодаря архитектуре единой памяти.
Источник: Официальная документация ↗
