Проект llama.cpp — это не просто библиотека, а экосистема, позволяющая запускать большие языковые модели (LLM) на практически любом современном оборудовании. От серверных GPU NVIDIA до встраиваемых процессоров Intel и мобильных чипов Apple. Ключевое преимущество — гибкая система бэкендов, которую можно собрать «под себя» через CMake. В этой статье разберем, как правильно собрать проект под разные платформы, какие флаги использовать и что важно знать о совместимости.
01Базовая сборка и CPU-оптимизации
Начнем с фундамента. Для получения исходного кода и базовой сборки под процессор (CPU) достаточно выполнить стандартные команды. Этот вариант подходит для тестирования или если у вас нет совместимого GPU.terminalbash
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
cmake -B build
cmake --build build --config Release-j или генератор Ninja. Если вы планируете часто пересобирать проект, установите ccache — это сэкономит время при повторных билдах.
Для Windows (x64/ARM64) с MSVC или Clang требуется Visual Studio 2022. Важно отметить поддержку Windows on ARM (WoA): для сборки под эту архитектуру используется пресет arm64-windows-llvm-release с флагом -D GGML_OPENMP_FETCH=ON, который автоматически подтягивает рантайм OpenMP.
⚠️
Важно. Если вам нужны функции HTTPS/TLS (например, для работы с удаленными API), убедитесь, что в системе установлены библиотеки OpenSSL. Без них проект соберется, но сетевые функции будут отключены.
02Ускорение CPU: BLAS
Обычная сборка CPU медленна при обработке длинных контекстов (prompt processing). Включение поддержки BLAS (Basic Linear Algebra Subprograms) значительно ускоряет этот этап. Генерация токенов при этом не ускоряется. Варианты ускорителей:- OpenBLAS (Linux):
cmake -B build -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS - Intel oneMKL (Intel CPU): Требует установки oneAPI. Компиляторы
icx/icpx.cmake -B build -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=Intel10_64lp -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx - AMD AOCL-BLAS: Для процессоров AMD EPYC/Threadripper. Требует настройки переменных окружения.
03GPU-бэкенды: NVIDIA, AMD, Apple, Intel
Самая интересная часть — использование графических ускорителей. llama.cpp поддерживает множество архитектур через разные флаги.NVIDIA CUDA
Стандарт де-факто для инференса. Необходим установленный CUDA Toolkit. Сборка включает поддержку вычислений на GPU NVIDIA. Для пользователей Fedora Silverblue/Kinoite рекомендуется использовать контейнеры Toolbox, так как нативных пакетов CUDA там нет.Apple Metal
На macOS Metal включен по умолчанию. Он позволяет использовать GPU Apple Silicon (M1/M2/M3) для вычислений. Если нужно принудительно отключить GPU, используйте флаг запуска--n-gpu-layers 0. Это полезно для тестирования производительности CPU или если память GPU занята другими процессами.
AMD ROCm (HIP)
Для видеокарт AMD Radeon (серии RX 6000/7000 и профессиональных Instinct) используется бэкенд HIP. Он позволяет использовать вычислительную мощность AMD-карт аналогично CUDA на NVIDIA. Требует установки драйверов ROCm и соответствующих библиотек.Intel SYCL Поддержка GPU Intel (серии Max, Flex, Arc, а также встроенных iGPU). SYCL — это высокоуровневая модель программирования, абстрагирующая работу с разными ускорителями. Для сборки требуется среда Intel oneAPI. Важно: сборка через oneAPI компиляторы поддерживает инструкции AVX-VNNI для CPU, но для работы именно с GPU Intel нужен отдельный бэкенд SYCL.Vulkan
Кроссплатформенный графический API. Позволяет запускать llama.cpp на широком спектре GPU, включая старые карты NVIDIA, AMD и даже некоторые мобильные решения, где нет нативной поддержки CUDA или ROCm. Хороший fallback-вариант, если другие бэкенды не работают.💡
Совет. Если вы выбираете железо для покупки в РФ, обратите внимание на доступность. NVIDIA H100/A100 практически недоступны легально и стоят космических денег. Для домашнего/малого бизнеса оптимальны RTX 3090/4090 (24GB VRAM) или б/у RTX 3090. Для AMD-карт важно проверять совместимость драйверов ROCm с вашей версией Linux, так как поддержка RX 6000/7000 серии может требовать дополнительных настроек.
04Другие специфичные бэкенды
- MUSA: Альтернативная реализация CUDA для GPU Moore Threads. Актуально для российского рынка, где есть поставки чипов MTT S2000/S3000.
- OpenVINO: Для оптимизации работы на Intel CPU и iGPU через экосистему Intel.
- Arm® KleidiAI™: Оптимизации для процессоров ARM (включая Apple Silicon и серверные Ampere).
- CANN: Для процессоров Huawei Ascend. Важно для корпоративного сектора в Китае и частично в РФ.
05Какое железо кому подойдёт
Выбор платформы зависит от бюджета и задач:- Бюджетный старт: ПК на базе AMD Ryzen с хорошей интегрированной графикой или б/у NVIDIA GTX 1080/1660. Используйте CPU-сборку или Vulkan. Ограничение — скорость и объем VRAM.
- Оптимальный баланс: NVIDIA RTX 3090/4090 (24GB VRAM). Это «золотой стандарт» для локального запуска моделей до 70B параметров (в квантованном виде). CUDA обеспечивает максимальну
Источник: источник (тест/офиц. документация) ↗