<section id="saiga">
Saiga LLM
Многопользовательский LLM-сервис на Saiga Nemo 12B (семейство Llama, GGUF Q4_K_M): модель работает локально на 2× NVIDIA P104-100, слои распределены через llama.cpp. Распределённый деплой: веб-интерфейс, OpenAI-совместимый API, Telegram-бот и полный стек мониторинга.
</section>
Saiga Nemo
окно
при контексте 8K
2× P104-100
О проекте
Русскоязычная LLM на своём сервере с полным ML-пайплайном
Что такое Saiga?
Saiga — одна из самых популярных open-source LLM для русского языка. Её автор — Илья Гусев, Senior ML Engineer в Booking.com. Большинство открытых моделей заточены под английский и токенизируют русский текст неэффективно — Saiga решает эту проблему.
В этом проекте Saiga Nemo 12B работает локально на двух майнинговых NVIDIA P104-100 (по 8 ГБ VRAM), слои распределены через llama.cpp. Третья P104 на том же хосте отдана под Stable Diffusion + ControlNet в соседнем RAG-проекте — железо делится между ML-задачами. Рабочая производительность на доступном железе, которое стоит малую долю облачного инференса.
Полный ML-пайплайн: от инференса на GPU до мониторинга. Деплой разнесён на две физические машины: Telegram-бот живёт на отдельном VDS и подключается через SSH-туннель с restricted-key — так обходится блокировка Telegram API у российских провайдеров.
Железо
Возможности сервиса
GPU-кластер
2× P104-100 mining GPUs (Pascal, без tensor cores) с layer-split через llama.cpp. CUDA 11.8 в контейнере, host driver 535.x, nvidia-container-toolkit runtime для proper library forwarding. Третья P104 в том же хосте — под Stable Diffusion для соседнего RAG-проекта.
Распределённый деплой
GPU-сервер с моделью + Telegram-бот на изолированном VDS. Бот ходит к Postgres через SSH-туннель с restricted-key (permitopen=127.0.0.1:5432), к LLM — через HTTPS+Bearer. Решает блокировку api.telegram.org. Single account web↔bot через custom Telegram deep-link auth (без Widget) — диалоги и настройки общие.
Мониторинг в продакшене
Sentry на web и боте, Prometheus + Grafana с custom dashboards: GPU memory/util/temp/power через NVIDIA DCGM-exporter, контейнеры через cAdvisor v0.51, host metrics через node-exporter. Доступ через metrics.vaibkod.ru с basic-auth.
CI/CD и тесты
GitHub Actions с ruff (strict) + pytest. 62 unit-теста с 99% coverage на тестируемых модулях (markdown converter, database URL converter, env validators, TelegramLinkToken model). Coverage artifact upload.
Архитектура
2 физических хоста · 5 поддоменов с разными политиками доступа
// GPU host
- Debian 12 · 2× P104-100 (LLM)
- Web UI (Flask + Gunicorn)
- LLM inference (llama.cpp)
- PostgreSQL 16 · Redis 7
- Caddy reverse-proxy
- Prometheus + Grafana stack
// VDS (telegram bot)
- python-telegram-bot 20.7 async
- aiohttp (LLM client + retry)
- Async SQLAlchemy 2.0 + asyncpg
- SSH-туннель к Postgres
- autossh systemd service
- Bearer-auth to llm.vaibkod.ru
// Caddy subdomains
- saiga.vaibkod.ru — публичный веб
- llm.vaibkod.ru — Bearer-auth API
- saigaui.vaibkod.ru — basic-auth
- metrics.vaibkod.ru — basic-auth
- 10+ сервисов на 2 хостах
- auto Let's Encrypt
Технологии
// ИНФЕРЕНС LLM
text-generation-webui (форк oobabooga), llama-cpp-python с GGML_CUDA=on, PyTorch 2.7 + cu126, квантизация GGUF Q4_K_M
// GPU-ИНФРАСТРУКТУРА
2× NVIDIA P104-100 (Pascal, без tensor cores), CUDA 11.8 в контейнере, драйвер хоста 535.x, runtime nvidia-container-toolkit
// БЭКЕНД (AI-СЦЕНАРИИ)
Python 3.11, Flask + Gunicorn (веб со стримингом чата), python-telegram-bot 20.7 async, aiohttp (клиент LLM API с retry и Bearer), async SQLAlchemy 2.0 + asyncpg
// ХРАНЕНИЕ
PostgreSQL 16 (общая для веба и бота через единый SQLAlchemy-пакет saiga_shared), Alembic для миграций с разделением ролей DDL/DML (_migrator для Alembic, _app для runtime — в runtime нельзя DROP/ALTER), Redis 7 для состояния бота
// МОНИТОРИНГ
Sentry SDK (интеграция с Flask + ручная инициализация в боте), Prometheus 2.55, Grafana 11.3, DCGM-exporter 3.3.7, cAdvisor v0.51, node-exporter 1.8
// CI/CD И ИНФРА
GitHub Actions (ruff strict + pytest с coverage), Caddy 2 как reverse-proxy с автоматическим Let's Encrypt, Docker Compose (10+ сервисов), systemd-юниты autossh для туннелей
Семейство моделей Saiga
Выберите модель под своё железо
Методы обучения
SFT
Supervised fine-tuning на русскоязычных парах «инструкция — ответ»
DPO / SimPO
Оптимизация по предпочтениям на парных сравнениях
SLERP
Слияние моделей сферической линейной интерполяцией
LoRA
Экономное по параметрам дообучение под конкретные задачи
Уровни квантизации
Формат GGUF через llama.cpp. Баланс между качеством и объёмом VRAM:
★ Рекомендую Q4_K_M — лучшее соотношение качества и VRAM
Фреймворки для запуска
Хотите внедрить локальный ИИ?
Разверну локальную LLM для вашего бизнеса: данные остаются у вас, полный контроль, никаких расходов на облако. Обсудим вашу задачу.
Оставить заявку