Как запустить локальный llama.cpp и чат на своём ПК
Во второй части руководства по локальному AI-стеку автор показывает, как собрать llama.cpp, скачать небольшую тестовую модель и поднять сервер с веб-интерфейсом на локальной машине. После этого чат будет доступен по адресу http://127.0.0.1:8080, а сам подход поможет запускать ИИ без облака и с контролем над памятью.
Что именно ставят и зачем
llama.cpp — это C++-движок для запуска языковых моделей на обычном процессоре, без обязательной видеокарты. В этом шаге его собирают на Linux вместе с минимальным набором зависимостей: нужен build-essential для компиляции, libopenblas-dev для ускорения матричных операций на CPU, а python3-venv автор ставит заранее на будущее, под Open WebUI.
Для проверки берут компактную модель Qwen3.5-2B-Q4_K_M весом примерно 1,5 ГБ. Она удобна тем, что быстро скачивается и позволяет убедиться, что весь пайплайн работает, не дожидаясь загрузки гораздо более тяжёлых моделей на 9–10 ГБ. Позже такая модель пригодится и для быстрых задач вроде черновиков и проверки идей.
Как собирается и запускается сервер
Сборка идёт из исходников: репозиторий клонируют с GitHub, затем запускают cmake и сборку через несколько ядер. Для родного веб-интерфейса llama.cpp в сборке включают флаг -DLLAMA_BUILD_UI=ON, а если с UI возникают проблемы, его можно отключить и оставить только API — тогда интерфейс придётся открывать через другой фронтенд.
После сборки появляются полезные бинарники. Главный из них — llama-server: он поднимает HTTP-сервер и веб-чат. Ещё есть llama-cli для одиночных тестов и llama-quantize для последующей работы с квантованием моделей.
Главные опции, которые экономят память
Самая важная идея статьи — запуск через mmap. Это значит, что модель не загружается целиком в оперативную память, а читается с диска по мере необходимости. Такой режим помогает запускать модель, которая больше доступной RAM, и при этом не мучить SSD постоянной записью, как это бывает со swap.
Автор отдельно разбирает ограничения памяти через cgroup и systemd-run, а также режимы загрузки. Если поставить load-mode none, модель попытается занять всю память и может упасть с OOM. Режим mlock быстро работает, но подходит только для моделей, которые точно помещаются в RAM. Отдельно предупреждают и про CPU_REPACK: llama.cpp может создать вторую копию весов для ускорения, из-за чего пик потребления памяти почти удваивается. Поэтому для слабых машин полезен флаг --no-repack, даже если скорость чуть снизится.
Что важно знать про KV-cache и мультимодальные модели
Для длинного диалога может разрастаться KV-cache — память под историю общения. В статье советуют сжимать его в q8_0 через параметры -ctk q8_0 и -ctv q8_0: это даёт примерно вдвое меньший расход памяти при небольшой потере качества.
Отдельный блок посвящён мультимодальным моделям. Для них нужен файл mmproj-F16.gguf — это отдельный «переходник» между визуальным энкодером и языковой частью. Без него модель видит только текст, а с ним может работать с изображениями. При этом mmproj должен лежать в той же папке, что и сама модель, а для роутера llama.cpp важно, чтобы он находил этот файл рядом с ней.