# llama.cpp на Windows: сборка, CUDA или Vulkan и проверка сервера

Источник: https://modelium.tech/zhurnal/llama-cpp-na-windows/

На Windows llama.cpp можно собрать через CMake и Visual Studio: CPU-сборка работает без GPU, для NVIDIA есть CUDA, а для совместимого устройства — Vulkan. Выберите один backend, загрузите конкретный GGUF, запустите llama-server только на 127.0.0.1 и проверьте отдельно готовность, идентификатор модели и текстовый ответ. Команды ниже сверены с исходной документацией, но Modelium их на Windows не запускал.

На 5 октября 2026 года руководство llama.cpp описывает нативную сборку для Windows с Visual Studio и CMake, а документация сервера — запуск `llama-server.exe` на этой ОС. Ниже один проверяемый по документации путь от GGUF-файла до локального ответа. Это не инструкция по установке WSL и не свидетельство собственного теста Modelium. [s1](#src-s1) [s2](#src-s2)

## Что понадобится для Windows-сборки

Выберите **один** профиль: CPU без GPU-инструментов, CUDA для поддерживаемой NVIDIA-конфигурации или Vulkan для устройства с подходящим драйвером и Vulkan SDK. Установите Visual Studio 2022 с workload «Desktop development with C++», компоненты CMake/Git и откройте Developer PowerShell или Developer Command Prompt. Для CUDA нужен совместимый набор CUDA и драйвер; для Vulkan инструкция проекта на Windows отдельно требует Vulkan SDK. Совместимость вашего GPU и объём памяти следует проверять отдельно: один размер GGUF не задаёт минимальные RAM/VRAM. [s1](#src-s1)

Если сборка не нужна, проект также документирует установку готовых сборок через conda-forge и winget. Однако автоматическое обновление пакета меняет исполняемую версию: для воспроизводимого примера далее используется закреплённый Git-коммит `a7fb71fab83b474a0892b9a05aaa3a8ddca2729b` (04.10.2026 UTC), а не нефиксированная версия из менеджера пакетов. Это выбор редакции, не обещание поддержки всех устройств. [s3](#src-s3) [s1](#src-s1)

Контрольная модель — `ggml-org/Qwen3-0.6B-GGUF` с файлом `Qwen3-0.6B-Q4_0.gguf` на ревизии `b5f37287796e5be0ea3dab2e7430873fb3f73e49`. Репозиторий показывает этот файл и связь с исходной `Qwen/Qwen3-0.6B`; в обеих карточках метка лицензии — `apache-2.0`, но условия вашего применения нужно читать в самом тексте лицензии. Существование файла и HTTP-доступность не являются проверкой его запуска именно на вашем компьютере. [s4](#src-s4) [s5](#src-s5) [s6](#src-s6)

Загрузите **этот точный файл** с закреплённой ревизии по адресу `https://huggingface.co/ggml-org/Qwen3-0.6B-GGUF/resolve/b5f37287796e5be0ea3dab2e7430873fb3f73e49/Qwen3-0.6B-Q4_0.gguf` и положите его в `C:\Models\Qwen3-0.6B-Q4_0.gguf`. Имя и ревизия здесь зафиксированы, но после скачивания самостоятельно проверьте источник и целостность файла в рамках политики вашей организации; размер сетевого файла не означает потребление памяти при инференсе. [s4](#src-s4)

## Как собрать сервер и выбрать backend

В Developer PowerShell из каталога `llama.cpp` на указанном коммите выполните последовательно `cmake -B build -DGGML_CUDA=ON` и `cmake --build build --config Release`, **если вы выбрали CUDA**. Для CPU вместо первой команды используйте `cmake -B build`; для Vulkan — `cmake -B build -DGGML_VULKAN=ON`, затем ту же команду сборки. Не накладывайте варианты друг на друга в уже настроенном `build`: создайте отдельные каталоги сборки или удалите прежний каталог и конфигурируйте заново. Последняя рекомендация — предосторожность редакции, чтобы не спутать сохранённый CMake-кеш. [s1](#src-s1)

Сначала проверьте путь к полученному `llama-server.exe` внутри `build\bin\Release\` для генератора Visual Studio; у одноконфигурационных генераторов путь может отличаться. Запустите `./build/bin/Release/llama-server.exe --list-devices` из корня проекта и посмотрите доступные backend-устройства. CPU-сборка или отсутствие GPU в списке означают, что один только флаг offload ускорения не создаст; при CUDA/Vulkan проверьте драйвер, SDK и сообщения загрузки backend в консоли. Этот контрольный протокол следует из CLI-флагов, а не из выполненного Modelium измерения. [s1](#src-s1) [s2](#src-s2)

Для CPU-теста запустите `./build/bin/Release/llama-server.exe -m C:\Models\Qwen3-0.6B-Q4_0.gguf --alias qwen3-windows-test --host 127.0.0.1 --port 8080 --n-gpu-layers 0`. Для GPU-сборки после успешного `--list-devices` замените `--n-gpu-layers 0` на `--n-gpu-layers all`; если не хватает памяти или backend не загрузился, уменьшайте выгрузку по логам и снова проверяйте ответ. `--alias` позволяет задать стабильный ID в API, `--host 127.0.0.1` ограничивает прослушивание локальным адресом. Потребление памяти зависит от модели, контекста и раскладки слоёв; успешный ответ CPU не доказывает ускорения GPU. [s2](#src-s2)

## Как проверить результат, а не только открытый порт

В **другом** окне PowerShell выполните `curl.exe -i http://127.0.0.1:8080/health`. Пока модель загружается, документация допускает HTTP 503; после загрузки ожидается HTTP 200 и `{"status":"ok"}`. Затем запросите `curl.exe http://127.0.0.1:8080/v1/models`: проверьте `data[0].id` — для команды выше это заданный alias `qwen3-windows-test`. Список моделей свидетельствует о состоянии сервера, но ещё не о содержательном ответе. [s2](#src-s2)

Для тестового POST используйте PowerShell: `$body = @{ model = 'qwen3-windows-test'; messages = @(@{ role = 'user'; content = 'Назови одно русское слово' }); max_tokens = 128 } | ConvertTo-Json -Depth 5; Invoke-RestMethod -Uri 'http://127.0.0.1:8080/v1/chat/completions' -Method Post -ContentType 'application/json' -Body $body`. Убедитесь, что ответ содержит `choices[0].message`, затем проверьте, действительно ли поле с текстом непустое и соответствует запросу. Карточка Qwen3 описывает thinking/non-thinking режимы: однократная короткая проба не устанавливает качество модели на производственной задаче. Modelium этот запрос не выполнял. [s2](#src-s2) [s6](#src-s6)

Для подтверждения именно GPU-offload сравните сообщения о выбранном устройстве и числе выгруженных слоёв при запуске с параметром `--n-gpu-layers all` и CPU-режимом; при необходимости наблюдайте телеметрию своего GPU отдельно. Один `--list-devices` сообщает о доступности backend, но не доказывает размещение конкретной модели на GPU. Скорость и качество сравнивайте только на одинаковых тестовых входах и настройках. Это протокол собственной проверки читателя, а не результаты измерений Modelium. [s2](#src-s2)

## Если возникла ошибка и как остановить сервер

Если CMake не видит компилятор, вернитесь в Developer PowerShell с выбранным workload C++; если нет CUDA/Vulkan, проверьте соответствующий SDK, драйвер и флаг в **чистом** каталоге сборки. При ошибке чтения GGUF сверяйте точный путь и имя файла с закреплённым списком Hugging Face; при HTTP 503 дождитесь загрузки и посмотрите ошибку в консоли. Если `/health` успешен, но Chat API не возвращает ожидаемый ответ, проверьте alias, шаблон чата и диагностический вывод сервера. Не переносите сервер на `0.0.0.0` ради обхода локальной проблемы: доступ из сети требует самостоятельной аутентификации и сетевой защиты; `/health` остаётся публичным endpoint даже при API-ключе. [s1](#src-s1) [s2](#src-s2) [s4](#src-s4)

Остановите сервер Ctrl+C в окне запуска; отдельно удалите скачанный GGUF и каталог `build`, если тестовый стек больше не нужен. Для выбора другого файла и сценария откройте [общий гайд llama.cpp](/zhurnal/llama-cpp/), а границы API-ключа разбираются [отдельно](/zhurnal/llama-cpp-api-key/). Ни работоспособность команд на вашем Windows-хосте, ни потребление RAM/VRAM Modelium не проверял. [s2](#src-s2)

## Источники

1. [llama.cpp: Build from source, Windows, CPU, CUDA, Vulkan](https://github.com/ggml-org/llama.cpp/blob/a7fb71fab83b474a0892b9a05aaa3a8ddca2729b/docs/build.md) — получено 2026-10-05
2. [llama.cpp: llama-server README, Windows, flags, health, models, chat](https://github.com/ggml-org/llama.cpp/blob/a7fb71fab83b474a0892b9a05aaa3a8ddca2729b/tools/server/README.md) — получено 2026-10-05
3. [llama.cpp: официальные способы установки готовой сборки](https://github.com/ggml-org/llama.cpp/blob/a7fb71fab83b474a0892b9a05aaa3a8ddca2729b/docs/install.md) — получено 2026-10-05
4. [ggml-org/Qwen3-0.6B-GGUF: файлы и метаданные закреплённой ревизии](https://huggingface.co/api/models/ggml-org/Qwen3-0.6B-GGUF/revision/b5f37287796e5be0ea3dab2e7430873fb3f73e49) — получено 2026-10-05
5. [ggml-org/Qwen3-0.6B-GGUF: модель-источник и GGUF](https://huggingface.co/ggml-org/Qwen3-0.6B-GGUF/blob/b5f37287796e5be0ea3dab2e7430873fb3f73e49/README.md) — получено 2026-10-05
6. [Qwen/Qwen3-0.6B: исходная карточка и режимы ответа](https://huggingface.co/Qwen/Qwen3-0.6B/blob/c1899de289a04d12100db370d81485cdf75e47ca/README.md) — получено 2026-10-05
