llama.cpp — это не просто библиотека, а фундаментальный инструмент для локального запуска больших языковых моделей. Его главная сила — в гибкости: один и тот же код можно собрать под любую архитектуру, от игровых видеокарт до серверных ускорителей. Однако «из коробки» работа не всегда оптимальна. Чтобы получить максимальную скорость токенов в секунду и корректно уместить модель в память, нужно понимать, как правильно собрать проект под ваше железо.
01Базовая сборка и CPU-бэкенд
Начнем с самого простого — сборки под процессор. Это работает везде, но скорость генерации будет низкой. Для компиляции используется CMake. Если у вас Linux или macOS, базовый набор команд выглядит так:
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
cmake -B build
cmake --build build --config ReleaseДля ускорения компиляции используйте флаг -j (например, для нескольких потоков) или генератор Ninja. Если вы планируете часто пересобирать проект, установите ccache.
Важно для Windows: Если вы используете MSVC или Clang, убедитесь, что у вас установлен Visual Studio 2022 с компонентами «Desktop development with C++» и CMake Tools. Для Windows on ARM (WoA) сборка требует специфических пресетов:
cmake --preset arm64-windows-llvm-release -D GGML_OPENMP=OFF
cmake --build build-arm64-windows-llvm-releaseДля ускорения обработки промптов (не генерации!) можно подключить BLAS-библиотеки. Например, OpenBLAS для Linux:
cmake -B build -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS
cmake --build build --config Release02NVIDIA CUDA: Золотой стандарт
Для видеокарт NVIDIA флаг -DGGML_CUDA=ON является обязательным. Это обеспечивает нативную поддержку GPU и максимальную производительность.
cmake -B build -DGGML_CUDA=ON
cmake --build build --config ReleaseПо умолчанию llama.cpp компилируется под архитектуру вашей текущей видеокарты. Если вы хотите создать универсальный бинарник, который будет работать на любых GPU NVIDIA (с небольшим оверхедом на JIT-компиляцию), отключите нативную оптимизацию:
cmake -B build -DGGML_CUDA=ON -DGGML_NATIVE=OFFЕсли nvcc не определяет вашу карту, могут возникнуть предупреждения. В таком случае потребуется ручная настройка вычислительных способностей (Compute Capability).
03Apple Metal: Единая память
На macOS Metal включен по умолчанию. Это критически важно для чипов M-серии, так как они используют единую архитектуру памяти. Видеопамяти здесь нет в привычном понимании — есть общий пул RAM, доступный и CPU, и GPU.
Чтобы явно отключить использование GPU при запуске, используйте флаг --n-gpu-layers 0. Если вы хотите принудительно отключить Metal на этапе сборки (например, для отладки), используйте -DGGML_METAL=OFF.
04AMD ROCm и Intel SYCL
Для видеокарт AMD Radeon используется бэкенд HIP (ROCm). Для видеокарт Intel (Arc, Data Center Max/Flex) — SYCL. Сборка под SYCL требует установки oneAPI или использования Docker-образа Intel:
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Обратите внимание: Intel oneMKL BLAS не поддерживает Intel GPU. Для работы с графикой Intel необходимо использовать SYCL-бэкенд, а не BLAS.
05Другие ускорители: Vulkan, OpenVINO, CANN
llama.cpp поддерживает множество других бэкендов:
- Vulkan: Универсальный бэкенд, работающий на AMD, NVIDIA и Intel. Хорошая альтернатива, если нативные драйверы не установлены.
- OpenVINO: Оптимизация для Intel CPU и iGPU. Позволяет эффективно использовать векторные процессоры.
- CANN: Для ускорителей Huawei Ascend.
- Arm KleidiAI: Оптимизация для ARM-процессоров (включая Android).
06Какое железо кому подойдёт
Выбор платформы зависит от бюджета и задач:
- Бюджетный энтузиаст: Собирайте с
-DGGML_CUDA=ON. Небольшой объем VRAM хватит для моделей среднего размера. Это самый стабильный вариант с лучшей документацией. - Apple Mac: Metal включен по умолчанию. Главное преимущество — объем памяти. Если вам нужно запустить большую модель, Mac с большим объемом памяти часто выигрывает у серверных GPU из-за цены и доступности RAM.
- AMD Radeon: Требует установки ROCm. На Linux работает лучше, чем на Windows. Если нет желания возиться с драйверами, используйте Vulkan-бэкенд.
- Серверный инференс: NVIDIA остаются королями скорости, но их сложно арендовать в РФ. Альтернатива — аренда облачных инстансов, где CUDA-бэкенд обеспечивает наилучшую цену/про
Источник: источник (тест/офиц. документация) ↗
