Запуск GGUF-модели через llama.cpp на GPU
llama.cpp подходит, когда нужно управлять конкретным GGUF-файлом и распределением вычислений между CPU и GPU. В этой инструкции используется HTTP-сервер llama-server: сборка с CUDA, запуск одной модели и проверка ответа до подключения клиента.
Если важнее простой запуск и управление загрузками, начните с Ollama. Для этого варианта нужны Linux, Git, CMake, C++ toolchain и CUDA development toolkit. Работающий nvidia-smi ещё не означает, что установлен компилятор CUDA.
Соберите определённый релиз
Проверьте nvcc --version и cmake --version. Если CUDA toolkit отсутствует, выберите development-образ с ним; не заменяйте драйвер хоста только ради компилятора.
git clone --branch v0.5.0 --depth 1 https://github.com/ggml-org/llama.cpp.git
cd llama.cpp
cmake -B build -DGGML_CUDA=ON -DLLAMA_OPENSSL=ON
cmake --build build --config Release -j 2 --target llama-server
./build/bin/llama-server --version
Для загрузки моделей по HTTPS нужна поддержка OpenSSL. В Ubuntu/Debian установите libssl-dev и pkg-config до настройки сборки, если окружение разрешает установку пакетов. Ошибка сборки не доказывает, что модели не хватает VRAM.
Запустите квантованную модель
./build/bin/llama-server \
-hf Qwen/Qwen2.5-7B-Instruct-GGUF:Q4_K_M \
--alias qwen-gguf \
--host 127.0.0.1 --port 8081 \
--ctx-size 4096 \
--n-gpu-layers 99 \
--parallel 1
Селектор репозитория загружает подходящий GGUF. Если модель разбита на части, сохраняйте все части. Для уже скачанного файла замените -hf на -m /absolute/path/model.gguf.
Большое значение числа слоёв запрашивает перенос всех доступных слоёв на GPU. Фактическую выгрузку проверьте в журнале запуска: это не гарантия вместимости. При OOM уменьшите контекст, выберите меньшую модель/квантование или снизьте число слоёв на GPU. Частичная работа на CPU требует оперативной памяти и может замедлить ответ.
Проверьте API
В другом терминале сервера:
curl --fail-with-body http://127.0.0.1:8081/health
curl --fail-with-body http://127.0.0.1:8081/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model":"qwen-gguf","messages":[{"role":"user","content":"Explain a database index in three sentences."}],"max_tokens":128,"temperature":0}'
Если health endpoint ещё не готов, дождитесь загрузки. Для чата нужен подходящий шаблон instruction-модели. Неверный шаблон способен испортить ответы даже при HTTP 200.
Подключитесь со своего компьютера
ssh -N -o ExitOnForwardFailure=yes -p SSH_PORT \
-L 127.0.0.1:18081:127.0.0.1:8081 root@GPU_HOST
Подставьте реальные SSH-реквизиты. Base URL клиента — http://127.0.0.1:18081/v1, alias модели — qwen-gguf. Пример использует loopback и SSH-туннель. Если клиент требует заполнить API key, произвольное значение не защищает сервер.
Сохраните конфигурацию
Запишите релиз/commit, параметры сборки, имя и checksum GGUF, контекст, число слоёв и промпт. Сравнивайте полное размещение на GPU и частичную выгрузку на CPU с одним файлом модели. Отделяйте время скачивания и сборки от времени запроса.
Расчёт VRAM объясняет разницу между размером весов и памятью процесса. Инструкция по хранению поможет сохранить файлы перед удалением инстанса. Остановка llama-server не останавливает сам арендованный сервер.
Источники: сборка llama.cpp, параметры сервера, GGUF-модель Qwen.
Готовы запустить?
Запустить GPU-сервер