Local LLM Deployment

Локальный/self-hosted запуск open-weight моделей: Ollama (или vLLM) для самих моделей + визуальные оболочки (Dify, Open WebUI, LobeChat). Зачем: данные не уходят наружу, нет оплаты по токенам, контроль над инфраструктурой.

Суть

Open-weight модель (Llama, Qwen, Mistral) скачивается и крутится у тебя. ollama run qwen3:8b поднимает локальный inference-сервер с OpenAI-совместимым API, к которому подключаются агенты и оболочки.

Зачем это нужно

  • Конфиденциальность/compliance — данные не покидают периметр.
  • Стоимость — нет оплаты за токены (платишь за железо).
  • Подходит для простых/частых шагов агента, где не нужен фронтир (см. Model Selection).

Что чем является (сверено 2026-08)

Заметка ниже написана вокруг Ollama, и это верно для одного разработчика, но скрывает различие слоёв, которое решает всё при переходе в прод:

  • Движки — llama.cpp и MLX. Всё остальное построено на них.
  • Слои опыта — Ollama и LM Studio. Оборачивают llama.cpp (на Mac всё чаще MLX), дают реестр моделей и OpenAI-совместимый API.
  • Система обслуживания — vLLM. Другой класс задачи: PagedAttention и непрерывное батчирование.

Разница видна только под нагрузкой. На одном пользователе Ollama и vLLM примерно равны (~130-180 токенов/с). На конкурентной нагрузке vLLM даёт в 16-20 раз больше пропускной способности — в широко цитируемом замере Red Hat на одной A100 это 793 токена/с против 41.

Отсюда правило выбора: один разработчик и прототип — Ollama (одна команда установки, любая ОС); от пяти одновременных пользователей на NVIDIA под Linux — vLLM, разрыв слишком велик, чтобы его игнорировать; нестандартное железо, своя квантизация или встраиваемая цель — llama.cpp напрямую, без управляющей прослойки.

Как работает

  • Что влезает: на MacBook Air M4 16GB — Qwen3-4B «оптимум для агентов», Qwen3-8B — лучшее качество.
  • Установка: curl -fsSL https://ollama.com/install.sh | shollama run qwen3:8b; контекст: OLLAMA_CONTEXT_LENGTH=131072.
  • Оболочки (self-host через Docker): Dify (RAG/агенты/аналитика из коробки), Open WebUI (офлайн, LDAP), LobeChat (42 провайдера). Нужно: сервер, Docker, API-ключи провайдеров.
  • На практике (первый агент): «более-менее разумная» локальная модель через Ollama требует ~12–15 ГБ RAM — на типовом ноутбуке тяжело, поэтому на старте часто берут облачный API («не насиловать ноутбуки»), а локаль оставляют для приватности (см. экономику в Model Selection). Векторный индекс для RAG поднимают на FAISS (можно проиндексировать корпус в облаке и перенести индекс на свою машину, см. Vector Store Persistence); запускается и в Google Colab.
  • Локальный RAG-стек (практика): компактная Llama 3.1 8B в Colab + векторные хранилища в оперативной памяти (Chroma / Qdrant / FAISS, см. Vector Databases) + локальная модель эмбеддингов (~100–150 МБ, кэшируется на диск). GPU для инференса эмбеддингов не нужен — хватает CPU.
  • Коробочные RAG-платформы (self-host через Docker): помимо Dify — RAGFlow (глубокий парсинг таблиц/формул, GraphRAG/RAPTOR, реранкинг из коробки; Docker Compose, 2 ГБ slim или 9 ГБ full с моделями; Ollama/vLLM для локальных LLM, полная изоляция данных).
  • Инференс упирается в память: VRAM ≈ веса модели + KV Cache (растёт с длиной контекста). Поэтому при локальном запуске важны квантизация (Q4 и т.п.) и GQA, а не только число параметров. (Обучение моделей — отдельная история про GPU-фермы; для применения в агентах это не критично.)

Связано с

  • Quantization — что стоит за Q4 и как формат влияет на выбор движка
  • Inference Optimization — PagedAttention и непрерывный батчинг в системах обслуживания
  • Model Selection — локальная модель как «дешёвый» tier
  • AI Agent — где агент может работать офлайн/локально
  • KV Cache — VRAM при инференсе = веса + KV-cache