LinuxRuLinux без лишней теории
Локальные нейросети

llama.cpp в Linux: сборка, запуск GGUF-моделей и llama-server

Редакция LinuxRu8 мин чтенияИнструкции

llama.cpp в Linux проще всего собрать из исходников одной парой команд cmake, добавив флаг нужного бэкенда: GGML_CUDA для NVIDIA, GGML_HIP или GGML_VULKAN для AMD и Intel. Затем модель в формате GGUF запускается через llama-cli в терминале или через llama-server, который отдаёт веб-чат и OpenAI-совместимый API.

llama.cpp в Linux: сборка, запуск GGUF-моделей и llama-server
Фото: Lawrence Systems, CC BY 3.0, Wikimedia Commons
Содержание
  1. Что это
  2. Способы установки
  3. Сборка на CPU
  4. CUDA, ROCm, Vulkan
  5. Модели GGUF
  6. Первый запуск
  7. llama-server и API
  8. Автозапуск
  9. Ошибки
  10. Частые вопросы

Что такое llama.cpp и чем он отличается от Ollama

llama.cpp - движок на C/C++ от проекта ggml-org, который запускает языковые модели в формате GGUF на процессоре и видеокарте. На нём построены Ollama и LM Studio. Ставя его напрямую, вы сами выбираете бэкенд, квантизацию, контекст и число слоёв на GPU, а поддержка новых моделей приходит без задержки.

Ollama удобнее ради каталога моделей по имени. llama.cpp выигрывает, когда:

  • нужна свежая модель, которую обёртки ещё не подхватили;
  • видеокарта AMD или Intel, и проще всего завести её через Vulkan;
  • нужен лёгкий сервер с OpenAI-совместимым API без лишних демонов.

Для сравнения: Ollama в Linux и графический LM Studio используют тот же формат, скачанные GGUF-файлы подойдут всем.

Три способа поставить llama.cpp в Linux

Сборки выходят по несколько раз в день, версия выглядит как b10068. Пакеты дистрибутивов поэтому отстают.

Пакет из репозитория

В Arch Linux пакет llama-cpp лежит в extra, летом 2026 года там была сборка b10068. В Fedora есть пакет llama-cpp, в Debian 13 и Ubuntu 26.04 наличие и свежесть пакета проверяйте командой apt policy llama.cpp. Репозиторные сборки обычно собраны только для CPU или для Vulkan, CUDA туда не попадает из-за лицензии.

sudo pacman -S llama-cpp
sudo dnf install llama-cpp
brew install llama.cpp   # Homebrew на Linux, сборка под CPU

Готовый архив с GitHub

На странице релизов github.com/ggml-org/llama.cpp/releases есть архивы для Ubuntu x64, в том числе вариант с Vulkan. Распакуйте его в ~/opt/llama.cpp и запускайте бинарники без установки.

В 2026 году у проекта появился установщик с сайта llama.app (команда curl -LsSf https://llama.app/install.sh | sh), он ставит единую утилиту llama с подкомандами llama cli и llama serve. Скрипт перед запуском лучше открыть и прочитать.

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

Самый гибкий вариант: бинарник под вашу видеокарту и свежий код. Сборка идёт от пары минут на CPU до получаса с CUDA.

Зависимости и сборка для процессора

Нужны компилятор, CMake и git. libcurl ставится, чтобы работал флаг -hf для загрузки моделей с Hugging Face.

# Debian 13, Ubuntu 26.04
sudo apt install build-essential cmake git libcurl4-openssl-dev
# Fedora 44
sudo dnf install gcc-c++ cmake git libcurl-devel
# Arch Linux
sudo pacman -S base-devel cmake git curl

Клонируем и собираем. Флаг -j без числа задействует все ядра.

git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
cmake -B build
cmake --build build --config Release -j

Готовые программы лягут в build/bin/: llama-cli, llama-server, llama-bench, llama-quantize и другие. Чтобы вызывать их из любого каталога, добавьте путь в PATH:

echo 'export PATH="$HOME/llama.cpp/build/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
llama-server --version

Обновление: git pull и те же две команды cmake. При странных ошибках удалите build и соберите заново.

Сборка с CUDA, ROCm и Vulkan

Бэкенд выбирается флагом CMake, несколько бэкендов можно собрать сразу. Полный список опций есть в официальном руководстве по сборке.

БэкендВидеокартыФлаг CMakeЧто поставить заранее
CPUлюбой x86_64 или ARMбез флаговкомпилятор, cmake
CUDANVIDIA-DGGML_CUDA=ONдрайвер NVIDIA и CUDA Toolkit с nvcc
HIP (ROCm)AMD Radeon RX 6000/7000/9000, Instinct-DGGML_HIP=ON -DGPU_TARGETS=gfx...ROCm: hipcc, hipBLAS, rocBLAS
VulkanAMD, Intel, NVIDIA-DGGML_VULKAN=ONVulkan-заголовки, glslc, SPIRV-Headers

NVIDIA и CUDA

Сначала драйвер и CUDA Toolkit: nvidia-smi должен видеть карту, а nvcc --version печатать версию. Подробно это разобрано в статье про установку CUDA в Ubuntu и Debian.

cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release -j
# сборка под конкретные архитектуры, быстрее компилируется:
cmake -B build -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES="86;89"

86 соответствует RTX 30xx, 89 - RTX 40xx. Если cmake не находит nvcc, укажите путь явно: -DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc.

AMD и ROCm

Для HIP нужен установленный ROCm. Цель GPU_TARGETS узнайте командой rocminfo | grep gfx: например, gfx1030 у RX 6800, gfx1100 у RX 7900. Без этого параметра код соберётся под все карты, найденные в системе.

HIPCXX="$(hipconfig -l)/clang" HIP_PATH="$(hipconfig -R)" \
cmake -S . -B build -DGGML_HIP=ON -DGPU_TARGETS=gfx1100 -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release -j

Пользователь должен быть в группах render и video: sudo usermod -aG render,video $USER, затем перелогиньтесь.

Vulkan для AMD, Intel и всего остального

Vulkan не требует ROCm и работает на открытых драйверах Mesa (RADV, ANV). По скорости он часто близок к ROCm, а ставится за минуту. Проверьте, что vulkaninfo --summary видит карту.

# Debian, Ubuntu
sudo apt install libvulkan-dev glslc spirv-headers vulkan-tools
# Fedora
sudo dnf install vulkan-headers vulkan-loader-devel glslc spirv-headers-devel vulkan-tools
# Arch
sudo pacman -S vulkan-headers vulkan-icd-loader shaderc spirv-headers vulkan-tools
cmake -B build -DGGML_VULKAN=ON
cmake --build build --config Release -j

Какие устройства увидел llama.cpp, показывает llama-cli --list-devices. Про выбор между NVIDIA и AMD для нейросетей есть отдельный разбор: видеокарта для локальных нейросетей.

Где взять GGUF и какую квантизацию выбрать

GGUF - единый файл с весами, токенизатором и шаблоном чата. Основной источник - Hugging Face: ищите репозитории с суффиксом -GGUF, у официальной организации ggml-org и у крупных квантовщиков есть готовые файлы для популярных моделей.

Квантизация определяет, сколько бит приходится на вес. Ориентиры:

  • Q4_K_M - выбор по умолчанию, хороший баланс качества и размера. Модель на 8 млрд параметров занимает около 5 ГБ.
  • Q5_K_M, Q6_K - чуть точнее, файл на 20-40% больше.
  • Q8_0 - почти без потерь, но вдвое тяжелее Q4.
  • IQ2, IQ3, Q3_K - когда большая модель иначе не помещается; качество заметно падает.

Грубое правило: файл модели плюс 1-2 ГБ на контекст должны влезть в видеопамять, иначе часть слоёв останется на процессоре и скорость упадёт.

Скачать можно браузером, через hf download из пакета huggingface_hub или прямо флагом -hf: он берёт квантизацию Q4_K_M, если она есть в репозитории, а другую можно указать после двоеточия.

llama-cli -hf ggml-org/gemma-3-1b-it-GGUF
llama-server -hf ggml-org/gemma-3-1b-it-GGUF:Q8_0
llama-cli -cl   # список скачанных в кэш моделей

Первый запуск в терминале и проверка, что работает GPU

Самая простая проверка - чат в терминале. Путь к локальному файлу передаётся через -m:

llama-cli -m ~/models/Qwen3-8B-Q4_K_M.gguf
# одно сообщение и выход:
llama-cli -m ~/models/Qwen3-8B-Q4_K_M.gguf -p "Объясни, что делает chmod 755" -st

В свежих сборках число слоёв на GPU (-ngl) по умолчанию равно auto, а опция --fit включена: llama.cpp сам подбирает слои и контекст под свободную память. Вручную задают, когда нужно оставить видеопамять другим программам:

llama-cli -m model.gguf -ngl 20 -c 8192
llama-cli -m model.gguf --device none   # принудительно только CPU

Видеокарта задействована, если в логе запуска есть устройство CUDA0, ROCm0 или Vulkan0 с выгруженными слоями, а nvidia-smi или amdgpu_top показывают занятую процессом память.

Скорость на своей машине меряет llama-bench -m model.gguf (токены в секунду).

llama-server: веб-интерфейс и OpenAI-совместимый API

llama-server поднимает HTTP-сервер со встроенным веб-чатом и API в формате OpenAI. По умолчанию он слушает только 127.0.0.1. Порт по умолчанию в новых версиях 9931 (раньше был 8080), поэтому удобнее задавать его явно.

llama-server -m ~/models/Qwen3-8B-Q4_K_M.gguf --port 8080 -c 16384

Откройте http://127.0.0.1:8080 в браузере, там чат. Проверка API из терминала:

curl http://127.0.0.1:8080/health
curl http://127.0.0.1:8080/v1/models
curl http://127.0.0.1:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"messages":[{"role":"user","content":"Привет! Ответь одним словом."}]}'

/health отвечает кодом 503, пока модель грузится, и 200, когда сервер готов. Шаблоны чата через Jinja включены по умолчанию, поэтому вызов инструментов (tool calling) у современных моделей работает без дополнительных флагов.

Подключение клиентов

Любой клиент OpenAI принимает адрес http://127.0.0.1:8080/v1 и произвольный ключ: плагины IDE, скрипты, Open WebUI.

Доступ из сети

Чтобы открыть сервер в локальной сети, укажите --host 0.0.0.0 и обязательно ключ: --api-key или --api-key-file. Клиент тогда передаёт заголовок Authorization: Bearer ключ. Наружу в интернет такой сервер без обратного прокси с TLS не выставляйте.

Несколько моделей

llama-server --models-dir ~/models без -m включает режим роутера: модель грузится по полю model запроса, в памяти держится до четырёх (--models-max).

Автозапуск llama-server через systemd

Пользовательский юнит systemd запустит сервер при входе и перезапустит при падении. Файл ~/.config/systemd/user/llama-server.service:

[Unit]
Description=llama.cpp server
After=network.target

[Service]
ExecStart=%h/llama.cpp/build/bin/llama-server -m %h/models/Qwen3-8B-Q4_K_M.gguf --port 8080 -c 16384
Restart=on-failure

[Install]
WantedBy=default.target
systemctl --user daemon-reload
systemctl --user enable --now llama-server
journalctl --user -u llama-server -f
# чтобы служба работала и без входа в систему:
sudo loginctl enable-linger $USER

Остальные команды управления службами собраны в шпаргалке по systemctl.

Модель грузится в память при старте сервера, а не при первом запросе. Если на машине одна видеокарта и вы ещё играете или монтируете видео, не включайте автозапуск: проще стартовать службу вручную через systemctl --user start llama-server, когда она нужна.

Частые ошибки и как их исправить

  • cmake: Could not find nvcc - не установлен CUDA Toolkit или его нет в PATH. Проверьте ls /usr/local/cuda/bin/nvcc и передайте путь через -DCMAKE_CUDA_COMPILER.
  • ROCm: cannot find ROCm device library - задайте переменную HIP_DEVICE_LIB_PATH на каталог с файлом oclc_abi_version_400.bc.
  • Vulkan-бэкенд не видит карту - запустите vulkaninfo --summary. Если там только llvmpipe, нет драйвера Mesa Vulkan: mesa-vulkan-drivers в Debian, Ubuntu и Fedora, vulkan-radeon или vulkan-intel в Arch.
  • failed to load model - файл скачан не полностью или формат не GGUF. Файлы .safetensors llama.cpp не читает, их сначала конвертируют скриптом convert_hf_to_gguf.py.
  • unknown model architecture - модель новее вашей сборки. Обновите llama.cpp через git pull и пересоберите.
  • Out of memory на GPU - уменьшите контекст -c, число слоёв -ngl или возьмите квантизацию поменьше. Кэш контекста можно сжать: -ctk q8_0 -ctv q8_0.

Частые вопросы

Чем llama.cpp лучше Ollama?

Это тот же движок без обёртки: новые модели и оптимизации появляются в нём раньше, все параметры доступны напрямую, а Vulkan позволяет запустить модель на AMD и Intel без ROCm. Ollama удобнее, если нужен каталог моделей по имени и минимум настроек.

Можно ли запускать llama.cpp без видеокарты?

Да, сборка для CPU работает на любом современном процессоре. Модели до 8 млрд параметров в квантизации Q4_K_M дают приемлемую скорость для чата, крупнее заметно медленнее. Важнее всего объём и скорость оперативной памяти.

Какой порт у llama-server по умолчанию?

В свежих сборках 9931, в старых и в примерах с Docker 8080. Чтобы не путаться, задавайте порт явно флагом --port.

Как открыть llama-server для других компьютеров в сети?

Запустите сервер с --host 0.0.0.0 и ключом --api-key, разрешите порт в файрволе только для локальной сети. Клиенты передают ключ в заголовке Authorization: Bearer.

Что лучше для AMD: ROCm или Vulkan?

Vulkan ставится проще и работает на любой карте с драйвером Mesa. ROCm поддерживает не все модели Radeon и требует больше пакетов, зато на поддерживаемых картах иногда быстрее при обработке длинного промпта. Проверьте оба варианта через llama-bench на своей модели.

Как обновить llama.cpp, собранный из исходников?

В каталоге проекта выполните git pull, затем cmake -B build с теми же флагами и cmake --build build --config Release -j. При ошибках удалите каталог build и соберите заново.

Документация и источники

Читайте также

Команды проверены на актуальных версиях дистрибутивов на момент обновления. Перед изменением системных настроек сделайте резервную копию.