Локальный запуск LLM (llama.cpp, Ollama)

Материал из llmdocs — справочник разработчика
Локальный запуск LLM (llama.cpp, Ollama)
llama.cppГеоргий Герганов, март 2023, C/C++, MIT
Ollama2023, Go (поверх llama.cpp), MIT
Формат моделейGGUF
БэкендыCPU, CUDA, Metal, Vulkan, ROCm
APIсовместимый с OpenAI (/v1/chat/completions)
АльтернативыLM Studio, MLX (Apple), vLLM, Jan, KoboldCpp

Локальный запуск LLM — использование больших языковых моделей на собственном компьютере или сервере вместо облачных API. Главные причины — приватность (данные не покидают машину), работа без интернета и без блокировок, отсутствие платы за токены и полный контроль над моделью. Плата за это — более слабые модели, чем передовые облачные, и требования к железу. Основные инструменты — библиотека llama.cpp и построенная на ней программа Ollama.[1][2]

История

После утечки весов модели LLaMA от Meta в марте 2023 года болгарский разработчик Георгий Герганов за несколько вечеров написал llama.cpp — реализацию инференса на чистом C/C++ без Python и PyTorch, способную работать на обычном ноутбуке, в том числе на Apple Silicon. Ключевым была агрессивная квантизация до 4 бит. Проект быстро стал основой экосистемы: появился формат GGUF (2023), сотни поддерживаемых архитектур и обёртки — Ollama, LM Studio, Jan, KoboldCpp. Тем временем Meta, Mistral, Alibaba (Qwen), Google (Gemma), DeepSeek и другие начали выпускать открытые веса официально.

Инструменты

Инструмент Для кого Особенности
llama.cpp разработчики, серверы максимум настроек, llama-server с веб-интерфейсом и API[4]
Ollama разработчики, быстрый старт ollama run модель, каталог моделей, фоновый сервис
LM Studio пользователи графический интерфейс, поиск моделей на Hugging Face
MLX владельцы Mac фреймворк Apple, быстрый на Apple Silicon[5]
vLLM серверы с GPU, много пользователей высокая пропускная способность, см. vLLM и инференс-серверы
# Ollama
ollama pull qwen3:8b
ollama run qwen3:8b "Объясни, что такое GIL, в трёх предложениях"

# llama.cpp: сервер с OpenAI-совместимым API и веб-чатом
llama-server -hf ggml-org/gemma-3-4b-it-GGUF --port 8080 -c 16384 -ngl 99

Оба поднимают HTTP API, совместимый с OpenAI, поэтому существующие клиенты, редакторы кода и библиотеки работают с локальной моделью сменой адреса:

from openai import OpenAI
client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
r = client.chat.completions.create(model="qwen3:8b",
        messages=[{"role": "user", "content": "Привет!"}])
print(r.choices[0].message.content)

Ollama описывает настройки модели (системный промпт, температуру, размер контекста) в файле Modelfile по аналогии с Dockerfile.[3]

Требования к железу

Главный ограничитель — память: модель должна поместиться в видеопамять GPU или в общую память Apple Silicon. Грубая оценка для 4-битной квантизации — около 0,6 ГБ на миллиард параметров плюс память на KV-кэш, растущая с длиной контекста.

Модель Память (Q4) Где запускать
1–4 млрд 1–3 ГБ любой ноутбук, телефон
7–9 млрд 5–6 ГБ ноутбук с 16 ГБ, видеокарта 8 ГБ
14–32 млрд 9–20 ГБ Mac с 32 ГБ, видеокарта 24 ГБ
70 млрд ~40 ГБ Mac с 64 ГБ, две видеокарты

Скорость генерации определяется пропускной способностью памяти, поэтому Mac с большой объединённой памятью и видеокарты вроде RTX 3090/4090 — популярный выбор. Без GPU модель работает и на CPU, но медленно. Модели семейства MoE (смесь экспертов) активируют лишь часть параметров на токен и работают быстрее, чем подсказывает их полный размер, хотя памяти требуют на все веса.

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

Модели в формате GGUF публикуются на Hugging Face в нескольких вариантах квантизации.[6] Разумный выбор — Q4_K_M как компромисс размера и качества, Q5_K_M/Q6_K при запасе памяти, Q8_0 — почти без потерь. Крупная модель в 4 битах обычно лучше меньшей в 8 битах.

Применения

  • приватный чат и работа с конфиденциальными документами (локальный RAG с локальной моделью эмбеддингов);
  • автодополнение кода в редакторе без отправки кода наружу;
  • офлайн-перевод, суммаризация, классификация больших объёмов текста без оплаты за токены;
  • эксперименты с дообучением и прототипы до выбора облачного провайдера.

Ограничения

Локальные модели уступают передовым облачным в сложных рассуждениях, коде и длинном контексте; качество вызова инструментов и структурированного вывода сильно зависит от модели и шаблона чата. Сервер Ollama по умолчанию слушает только localhost — открывать его в сеть без аутентификации опасно.

См. также

Источники

  1. llama.cpp — GitHub
  2. Ollama — документация
  3. Ollama — Modelfile reference
  4. llama.cpp — llama-server README
  5. Apple — MLX
  6. Hugging Face — GGUF