Open-source и свой сервер 10 мин чтения

llama.cpp: как запустить и ускорить локальный LLM

llama.cpp — движок, на котором держатся Ollama и LM Studio. Разбираю простыми словами, как запустить локальный LLM и что реально ускоряет работу: выгрузка слоёв на видеокарту, контекст, потоки и квантизация. Со ссылкой на репозиторий.

llama.cppлокальный LLMopen-sourceоптимизация

Коротко (TL;DR)

  • llama.cpp — это open-source «движок», который запускает большие языковые модели (LLM) прямо на вашем железе: на обычном ноутбуке, мини-сервере или машине с видеокартой, без облака.
  • Главные рычаги скорости — формат модели (квантизация GGUF), выгрузка слоёв на видеокарту и размер контекста. Их и нужно настраивать под конкретное железо.
  • На llama.cpp построены многие популярные оболочки, в том числе Ollama и LM Studio. Понимая базовые настройки, вы выжимаете из той же машины заметно больше.
  • Конкретные флаги в проекте периодически меняются и добавляются — точные имена сверяйте в официальной документации репозитория, а не по случайным постам в соцсетях.
  • Я разворачиваю локальный ИИ под ключ: подбор модели и железа, настройка и интеграция в рабочие процессы с учётом приватности и 152-ФЗ.

Запустить свой ИИ на собственном железе сегодня реально даже без видеокарты за сотни тысяч рублей. Инструмент, который сделал это массово доступным, — llama.cpp. На нём, по сути, держатся самые удобные «обёртки» вроде Ollama и LM Studio, но если разобраться в базовых настройках самого движка, та же модель на том же ноутбуке начинает работать ощутимо быстрее. Ниже разберу простыми словами, что такое llama.cpp, чем он отличается от готовых оболочек, как его запустить и какие настройки реально влияют на скорость. Без обещаний «ускорим в 10 раз одной командой» — только по делу.

Что такое llama.cpp

llama.cpp — это бесплатный open-source проект, который позволяет запускать большие языковые модели (LLM — те самые нейросети, что стоят за чат-ботами) локально, на вашем компьютере или сервере. Изначально он был написан так, чтобы эффективно работать даже на обычном процессоре, без дорогой видеокарты, — отсюда и популярность. Сейчас он умеет использовать и видеокарту, и процессор, и их сочетание.

Главная идея — эффективность. llama.cpp написан на C/C++ и заточен под то, чтобы выжимать максимум из доступного железа и памяти. Поэтому он лёг в основу множества пользовательских инструментов: когда вы ставите Ollama или LM Studio и спокойно общаетесь с локальной моделью через удобный интерфейс, под капотом во многих случаях работает именно llama.cpp. Готовые оболочки скрывают настройки ради простоты — это удобно, но иногда оставляет производительность на столе.

Что это даёт на практике. Модель работает у вас: запросы и документы не уходят в чужой облачный сервис, нет абонентской платы за токены, всё ограничено только мощностью вашего железа. Это ценно там, где важна приватность (договоры, персональные данные, коммерческая тайна) и где нужна предсказуемая стоимость без счёта за каждый запрос.

Чем отличается от Ollama и LM Studio

Резонный вопрос: если есть удобные Ollama и LM Studio, зачем вообще трогать llama.cpp напрямую? Ответ — в контроле. Готовые оболочки выбирают настройки за вас, ориентируясь на «чтобы просто заработало». Это правильно для старта, но если вы упёрлись в скорость или в нехватку памяти, именно ручная настройка движка даёт выигрыш.

  • Ollama и LM Studio — это оболочки. Они дают удобный интерфейс, каталог моделей в один клик и разумные настройки по умолчанию. Для большинства задач этого достаточно, и я сам часто рекомендую начинать с них.
  • llama.cpp — это движок. Работая с ним напрямую (через сервер или командную строку), вы сами управляете тем, сколько слоёв модели уйдёт на видеокарту, какой размер контекста выделить, сколько потоков процессора задействовать. Это и есть точки, где прячется скорость.
  • Когда нужен прямой доступ. Если вы разворачиваете модель на сервере под нагрузку, хотите выжать максимум из скромного железа или встроить локальный ИИ в своё приложение через API, гибкость движка важнее простоты оболочки.

Хорошая новость: одно не противоречит другому. Можно начать с Ollama, понять, что упираетесь в производительность, и перейти на тонкую настройку llama.cpp под конкретную задачу. Понимание базовых рычагов помогает в любом случае — даже внутри оболочек часть этих параметров доступна.

Как запустить

В общих чертах путь такой: взять собранную версию llama.cpp (или собрать самому под своё железо), скачать модель в формате GGUF и запустить — либо как локальный сервер с веб-интерфейсом и API, либо в режиме диалога в командной строке. GGUF — это специальный формат файла модели, оптимизированный как раз под llama.cpp; именно в нём модели обычно и распространяются для локального запуска.

Ключевые шаги без привязки к конкретной версии (команды и точные имена флагов сверяйте в документации репозитория — проект активно развивается):

  • Получить движок. Скачать готовую сборку под вашу систему (Windows, Linux, macOS) или собрать из исходников — для сборки под видеокарту это даёт лучшую производительность.
  • Скачать модель в GGUF. Выбрать модель под задачу и под объём памяти. К одной и той же модели обычно есть несколько вариантов квантизации (об этом ниже) — от более лёгких и быстрых до более тяжёлых и точных.
  • Запустить сервер или чат. llama.cpp умеет поднимать локальный веб-сервер с интерфейсом и API, совместимым с распространёнными стандартами, — к нему можно подключать свои приложения. Или запустить простой диалог в терминале.
  • Проверить, что модель «влезла». Если памяти не хватает, модель либо не запустится, либо начнёт работать очень медленно из-за обращения к диску. Это первый сигнал, что нужно брать более лёгкую квантизацию или модель поменьше.

Если вся эта возня с командной строкой кажется лишней — это нормально. Для рабочего внедрения на сервере я обычно настраиваю запуск как сервис, чтобы он стартовал сам и держался стабильно, а пользователи просто заходили в готовый интерфейс.

Что реально влияет на скорость

Здесь — самое важное. Скорость локальной модели на llama.cpp определяется в основном тремя вещами. Я опишу их по сути, а точные имена параметров вы сверите в документации, потому что флаги от версии к версии меняются, и слепо копировать команды из чужих постов не стоит.

  • Выгрузка слоёв на видеокарту (GPU offload). Модель состоит из «слоёв». Можно указать, сколько из них считать на видеокарте вместо процессора. Видеокарта на таких задачах в разы быстрее, поэтому чем больше слоёв помещается в её память (VRAM), тем быстрее ответы. Если VRAM хватает на всю модель — отдавайте на GPU всё; если нет — часть слоёв оставляют процессору. Это, как правило, рычаг скорости номер один.
  • Размер контекста. Контекст — это сколько текста модель «держит в голове» за один раз (запрос плюс ответ плюс история). Чем он больше, тем больше памяти нужно и тем медленнее работа. Не нужно ставить максимум «про запас»: выделяйте столько, сколько реально требует ваша задача. Раздутый контекст — частая причина того, что памяти вдруг перестало хватать.
  • Потоки процессора и размер пакета. Для той части, что считается на процессоре, важно число рабочих потоков — обычно его имеет смысл соотносить с числом физических ядер, а не выкручивать вслепую. Параметры обработки входного текста (размер пакета) тоже влияют на скорость на старте ответа.

Отдельно стоит современная автоматика: новые версии llama.cpp учатся сами подбирать часть этих настроек под доступную память, чтобы пользователю не приходилось вручную считать слои. Это удобно, но именно поэтому конкретные имена флагов лучше брать из актуальной документации — то, что вчера называлось одним ключом, сегодня может работать иначе или включаться автоматически. Принцип же остаётся прежним: больше слоёв на быстрый GPU, разумный (не раздутый) контекст, адекватное число потоков.

Выбор модели и квантизации

Вторая половина успеха — правильно выбрать саму модель и её квантизацию. Квантизация — это «сжатие» модели: числа внутри неё хранят с меньшей точностью, чтобы файл занимал меньше памяти и быстрее считался. Платой за это становится небольшая потеря качества ответов. Хитрость в том, чтобы найти баланс под своё железо.

  • Чем сильнее сжатие — тем меньше памяти и выше скорость, но ниже точность. Слишком агрессивная квантизация заметно «глупит» модель. Слишком слабая — может не влезть в память. Для большинства задач есть «золотая середина», которую подбирают опытным путём.
  • Размер модели важнее, чем кажется. Модель поменьше с хорошей квантизацией, которая целиком помещается в память видеокарты, часто работает приятнее и быстрее, чем огромная модель, которая еле влезает и тормозит. Не гонитесь за самой большой моделью ради цифры.
  • Под русский язык и под задачу. Выбирайте модель, которая хорошо работает с русским и с вашим типом задач (диалог, работа с документами, код). Самая «общеумная» модель не всегда лучшая для конкретного применения.

Какая именно модель и квантизация подойдут — зависит от вашего железа и задачи, поэтому я не называю «магические» цифры заранее. Подробно вопрос «сколько нужно видеопамяти и оперативки под разные модели» я разбираю в отдельной статье — это логичное продолжение, потому что выбор флагов и выбор железа связаны напрямую.

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

Можно запустить llama.cpp без видеокарты? Да, проект изначально для этого и создавался — он умеет работать на обычном процессоре. Но без видеокарты ответы идут медленнее, и есть смысл брать модели поменьше и с более сильной квантизацией. Видеокарта сильно ускоряет работу, но не является обязательной для старта.

Чем это лучше, чем просто поставить Ollama? Для простого старта Ollama удобнее, и я часто с неё и рекомендую начинать — под капотом там во многом тот же движок. Прямая работа с llama.cpp нужна, когда вы упёрлись в скорость или память и хотите вручную управлять выгрузкой на видеокарту, контекстом и потоками, либо встраиваете модель в своё приложение.

Откуда брать актуальные флаги оптимизации? Только из официальной документации репозитория llama.cpp. Проект активно развивается, имена и поведение параметров меняются, появляются автоматические режимы подбора настроек. Команды из случайных постов в соцсетях могут быть устаревшими или просто неверными — сверяйтесь с первоисточником.

Это законно и безопасно для бизнеса? Да. llama.cpp — открытый проект со свободной лицензией, а сами модели вы выбираете с подходящими условиями использования. Поскольку всё работает локально, данные не уходят наружу — это плюс для приватности и для соблюдения 152-ФЗ. Важно только корректно организовать доступ и хранение на сервере; это решается на этапе внедрения.

Какой результат по скорости реально получить? Честно — зависит от железа и модели, универсальной цифры нет. Главный прирост обычно даёт перенос слоёв на видеокарту и отказ от раздутого контекста. Я не обещаю «икс раз быстрее», а измеряю на вашей конфигурации и подбираю настройки под неё.

Коротко о главном

llama.cpp — это движок, который делает локальный запуск ИИ массово доступным: на нём держатся удобные оболочки вроде Ollama и LM Studio, а прямой доступ к нему даёт контроль над скоростью. Три главных рычага — выгрузка слоёв модели на видеокарту, разумный размер контекста и адекватное число потоков процессора, плюс грамотный выбор модели и её квантизации под ваше железо. Конкретные имена флагов стоит брать из официальной документации, а не из случайных постов: проект быстро меняется, и часть настроек теперь подбирается автоматически. Если не хочется разбираться в командной строке и считать слои вручную, я разверну локальный ИИ под ключ — подберу модель и железо, настрою производительность и интегрирую в ваши процессы с учётом приватности и 152-ФЗ.

Где взять — Официальный репозиторий на GitHub: github.com/ggml-org/llama.cpp. Развернуть и настроить под ключ помогу — напишите в Telegram.

Ещё open-source для бизнеса

Эта статья — часть каталога бесплатных решений, которые я разворачиваю на вашем сервере под ключ: CRM, аналитика, документы, почта, безопасность, магазины, AI.

Услуги по теме

Что я делаю с локальным ИИ

  • Локальные LLM на вашем сервере
  • Подбор модели и оптимизация
  • Сервер и self-hosted
  • Приватность и 152-ФЗ
  • Внедрение и поддержка
Написать в Telegram

Бесплатно: чек-лист «Готов ли ваш бизнес к 152-ФЗ»

12 пунктов, которые проверяют готовность за час: данные, согласия, уведомление в РКН, локализация, защита. Отметьте, что уже сделано, и увидите дыры, за которые сейчас штрафуют.

Готовы обсудить вашу задачу?

Бесплатная консультация — разберём, как внедрить это в вашем бизнесе под ключ. Без форм, пишите напрямую.

Готовые решения под ключ 449 готовых IT-решений для бизнеса Автоматизация, боты, AI, 152-ФЗ и платформы · бесплатная консультация Смотреть каталог