Запуск локального AI-стека: сборка llama.cpp и запуск сервера с моделью Qwen3.5

Источник

В рамках руководства по созданию локального AI-стека рассматривается второй этап — запуск движка llama.cpp на тестовой модели. В качестве основы используется C++-движок для инференса больших языковых моделей (LLM), способный работать на CPU без использования GPU. Ключевая особенность технологии mmap позволяет загружать модель не целиком в оперативную память, а подгружать страницы по требованию ядра. Это дает возможность запускать модели, размер которых превышает объем доступной RAM, при этом ядро держит в памяти только «горячие» страницы, а остальное хранится на диске. Для ограничения потребления памяти используется cgroup через systemd-run с жестким лимитом MemoryMax и мягким MemoryHigh.

Для тестирования пайплайна выбирается компактная модель Qwen3.5-2B-Q4_K_M весом около 1.5 ГБ, которая обеспечивает качество, близкое к F16. Процесс начинается с установки системных зависимостей, включая cmake, build-essential и библиотеки OpenBLAS, а также сборки самого llama.cpp с включенным родным веб-интерфейсом (Svelte). Сборка занимает от 3 до 10 минут в зависимости от количества ядер CPU. В результате появляются бинарники llama-server, llama-cli и llama-quantize. Для запуска сервера используется обертка run_llama_mmap.sh, которая автоматически применяет полезные настройки.

Важнейшей опцией запуска является --load-mode mmap, которая активирует механизм подгрузки страниц. Также применяется флаг --no-repack для экономии памяти, так как переупаковка весов для CPU может удвоить пиковое потребление и привести к OOM. Для оптимизации контекста (KV-cache) используется квантизация --cache-type-k q8_0 --cache-type-v q8_0, что снижает потребление памяти вдвое. Специфичные для новых моделей Qwen3.x опции --reasoning и --reasoning-budget позволяют модели генерировать цепочки рассуждений, но для интерактивного чата рекомендуется отключать их или жестко лимитировать количество токенов, чтобы они не «съедали» весь контекст.

Сервер запускается в режиме роутера (--models-dir и --models-max 1), что позволяет через веб-интерфейс выбирать модели из папки models/, при этом в оперативной памяти находится только одна активная модель. Число потоков CPU рассчитывается автоматически как nproc - 2, оставляя ресурсы для системы. Для мультимодальных моделей требуется отдельный файл mmproj, который переводит данные визуального энкодера в пространство, понятное языковой модели. Без этого файла модель будет работать только с текстом. Проверка корректной работы визуальных возможностей осуществляется по появлению в логах строк clip_model_load. Доступ к серверу осуществляется по адресу http://127.0.0.1:8080.

Текст подготовлен нейросетью Loople по материалам источника.

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

Похожие новости

Поиск по Loople

Назад