System Design для Эпохи LLM. Часть 1
Помните книгу “System Design. Подготовка к сложному интервью”. Я читал издание 2022 году, за это время наши системы сильно поменялись. Прямо сейчас у нас порядка 100 инициатив-запросов от разных подразделений для внедрения в бизнес LLM, AI Agents.
Влияние ИИ, в частности LLM меняет архитектуру приложений / инфраструктуры. Нужно внедрять новые инструменты и технологии. Возможно эта книга нуждается в новой главе. Ниже мое видение нового раздела System Design для Лидера.
Ключевые знания
1. Общие сведения об LLM
Какие модели бывают? (Детализация)
Foundation Models (текст, код, мультимодальные) → Доменные/Финтюненные → Специализированные (Embedding, Модерация). Ключевое отличие: Назначение (текст-генерация vs. векторное представление vs. анализ изображений).
Embedding модели:
- Алгоритмы (Transformer-based, word2vec descendants)
- Размерность векторов
- Нормализация
- Применение: Поиск, кластеризация, классификация, основа RAG
Thinking модели (текст-генерация):
- Autoregressive (GPT-стиль) vs. Encoder-Decoder (T5)
- Поколения (LLaMA 2/3, Mistral, Command R+, GPT-4 класса)
Multimodal модели:
- Архитектуры (Flamingo, CLIP, LLaVA)
- Вход/выход (текст+изобр+аудио)
- Применение (анализ документов, генерация контента)
Баланс (Cost/Latency/Quality)
Метрики:
- $/1k токенов
- Time-To-First-Token (TTFT)
- Токенов в секунду (TPS)
- Точность (accuracy, F1)
- Релевантность
- Связность
Торг:
- GPT-4 Turbo (качество, цена) vs. Mistral/Mixtral (баланс) vs. TinyLlama (latency, cost)
Стратегии:
- Выбор модели под задачу
- Кэширование
- Оптимизация промптов
Эффективный промт
Техники:
- CRISPE/RTF (Role, Task, Format)
- Few-Shot Learning
- Chain-of-Thought (CoT)
- ReAct (Reasoning + Action)
Инструменты:
- PromptHub
- LangChain Hub
- Ручное тестирование + A/B
Принципы:
- Ясность
- Контекст
- Ограничения
- Примеры
2. Modular Thinking & RAG (Retrieval-Augmented Generation)
Embedding модели (детально)
- Выбор модели (размер, качество, скорость, язык)
- Инференс эмбеддингов (batch, on-the-fly)
- Нормализация векторов
Векторные БД
Выбор:
- Pinecone (managed)
- Qdrant (open-source, perf)
- Weaviate (hybrid search)
- ChromaDB (легковесный)
- Milvus (scale)
- PGVector (PostGIS-style)
Критерии:
- Скорость поиска
- Масштабируемость
- Гибридный поиск (метаданные + вектор)
- Фильтрация
- Стоимость
- Управляемость
Chunking
Стратегии разделения данных:
- Фиксированный размер
- Семантический
- Иерархический
Влияние на качество RAG.
Системный промт
Цель: Задать контекст, роль, формат ответа, ограничения до пользовательского запроса.
Пример: “Ты - помощник компании X. Отвечай на основе ТОЛЬКО предоставленного контекста. Если ответа нет, скажи ‘Не знаю’. Ответ краткий, маркированный список.”
RAG (Сердце раздела)
Архитектура: Retriever (сем. поиск в VectorDB) → Ranker (опционально) → Prompt Builder (контекст + запрос + системный промт) → LLM
Паттерны:
- Наивный RAG
- Advanced RAG (переписывание запроса, переранжирование чанков, суммаризация)
- Hybrid RAG (вектор + ключевые слова + граф знаний)
Оптимизации:
- Размер контекста
- Кол-во чанков
3. Экономика Архитектуры
Облачные LLM API
Провайдеры: OpenAI, Anthropic, Google, Yandex GPT, GigaChat
Плюсы:
- Простота
- Масштабируемость
- Доступ к SOTA
Минусы:
- Стоимость токенов
- Задержка
- Vendor lock-in
- Безопасность данных
Сравнение:
- Таблицы $/1M токенов (Input/Output)
- TPS
- Размер контекста
- Регионы
Собственные модели
Self-hosted OSS: LLaMA, Mistral, Mixtral, Command R+
Плюсы:
- Контроль
- Безопасность
- Долгосрочная экономия
Минусы:
- Инфраструктура
- Экспертиза
- Время вывода на рынок
Выбор модели: Баланс размер/качество/требования к железу
Инференс
GPU:
- Необходимы для больших моделей (>7B) и низкой задержки
- Оптимизации: Quantization (GPTQ, AWQ), FlashAttention, PagedAttention (vLLM)
CPU:
- Возможно для малых моделей (<7B) и больших задержек
- Инструменты: llama.cpp (GGUF формат), ONNX Runtime
- Требует сильной квантизации
Оптимизация затрат (Ключевое!)
- Кэширование ответов/эмбеддингов
- Адаптивный выбор модели (сложная задача → мощная модель, простая → легкая)
- Rate-limiting
- Прогнозирование бюджета
4. Безопасность
Prompt Injection
Защита:
- Системные промты с явным запретом
- Санитайзинг ввода
- Изоляция контекста LLM от критичных систем
- Использование доверенных инструментов у агентов
- Мониторинг аномальных промптов
Техники:
- Запрос на отражение атаки (“Ignore previous…”) vs. Jailbreak
Галлюцинации
Выявление:
- RAG (ответ на основе контекста)
- Self-consistency (несколько запусков)
- Метрики Faithfulness/Answer Relevance
- Кросс-проверка фактов (если возможно)
- LLM-as-Judge (осторожно!)
Снижение:
- Температура ~0
- Точные промпты
- RAG
- Fine-tuning
Фильтр ввода/вывода
Модерация промптов и ответов:
- Спец. модели: Moderation API, self-hosted - Llama Guard, Nvidia NeMo Guardrails
- Блокировка PII, токсичности, запрещенных тем
Конфиденциальность данных
- Предотвращение утечки в промпты/логи провайдера (маскировка PII)
- Использование on-prem моделей/инфраструктуры для чувствительных данных
5. AI Агенты
Что это?
Автономные (или полуавтономные) сущности, использующие LLM как “мозг” для выполнения последовательности действий (планирование, использование инструментов, анализ) для достижения цели.
Ключевые компоненты
- Планировщик (разбивает цель)
- Исполнитель (LLM + Tools)
- Память (кратк./долгосрочная)
- Инструменты (API, функции)
- Оркестратор (управляет потоком)
Оркестраторы
Готовые (Low-code):
- LangChain (самый гибкий, но сложный)
- LangGraph (новый, графы)
- LlamaIndex (RAG + агенты)
- CrewAI (high-level)
- AutoGen (Microsoft)
- Haystack
Плюсы: Быстрый старт, сообщество
Собственные:
- Кастомный код (Python + Async)
Плюсы: Полный контроль, оптимизация, безопасность
Минусы: Сложность разработки/поддержки
Выбор: Зависит от сложности агентов, требований к производительности/безопасности, наличия экспертизы. CrewAI/LangGraph для старта, кастом для критичных/сложных задач.
Инструменты (Дополнение):
- Semantic Kernel (Microsoft)
- DSPy (программирование промптов)
6. Обучение моделей
Fine-tuning
“Дообучение” всей модели (или ее части) на доменных данных.
Цель: Адаптация стиля, домена, улучшение качества в нише.
Требует: Больше данных, мощные GPU, время.
LoRA (Low-Rank Adaptation)
Метод эффективного дообучения. Встраивает малые адаптеры в слои модели.
Преимущества:
- Меньше данных
- Быстрее обучение
- Дешевле
- Легкие веса (~1% от модели)
Использование:
- Hugging Face peft
- Объединение адаптеров
QLoRA: Квантованное LoRA для CPU/памяти
7. Площадки (Хабы) для моделей
Hugging Face
Де-факто стандарт:
- Модели (LLM, Embedding, Diffusion)
- Датасеты
- Spaces (демо)
- Inference Endpoints
ModelScope (Alibaba)
Китайский аналог HF, фокус на китайских моделях и мультимодальности.
Civitai
Платформа специфически для Stable Diffusion и других image/генеративных моделей (checkpoints, LoRA, embeddings).
Другие
- Replicate (легкий деплой)
- TensorFlow Hub
- PyTorch Hub
8. MLOps / LLMOps
Инструменты (Расширение)
Эксперименты/Трекинг:
- MLflow
- Weights & Biases (W&B)
- Neptune
- TensorBoard
Пайплайны:
- Kubeflow Pipelines
- Airflow
- Prefect
- Metaflow
- ZenML
Реестр моделей:
- MLflow Model Registry
- Hugging Face Hub
Мониторинг:
- Prometheus/Grafana (инфра)
- Arize
- WhyLabs
- LangSmith (спец. для LLM цепочек/агентов)
- Helicone (мониторинг LLM API)
Управление данными:
- DVC
- Feast/Hopsworks (Feature Store)
MLflow
Сильные стороны:
- Универсальность (Python)
- Эксперименты
- Реестр моделей
- Деплой (REST, Docker)
Для LLM:
- Трекинг промптов
- Интеграция с langchain, openai
Kubeflow
Сильные стороны:
- Нативный Kubernetes
- Масштабируемость
- End-to-end пайплайны (от данных до сервинга)
Для LLM:
- Запуск обучения (fine-tuning, LoRA)
- Сервинг больших моделей (KServe/KFServing, vLLM интеграции)
9. Тестирование LLM Систем
LLM-as-Judge
Использование мощной LLM (e.g., GPT-4) для оценки качества ответов других моделей/систем.
Осторожно!
- Предвзятость судьи
- Стоимость
- Согласованность
Лучшие практики:
- Четкие критерии оценки
- Калибровка
- Несколько судей
- Человеческая проверка сэмплов
LLM Метрики
- Традиционные (BLEU, ROUGE - осторожно для генерации)
- Семантическое сходство (BERTScore, Sentence-BERT)
- Точность (factual accuracy - сложно)
- Токсичность
RAG Метрики
Retrieval:
- Hit Rate @k
- MRR (Mean Reciprocal Rank)
- NDCG @k
- Precision/Recall @k
Generation:
- Faithfulness (соответствие ответа контексту)
- Answer Relevance (ответ на вопрос?)
- Context Relevance (релевантность чанков запросу)
End-to-End:
- Задержка
- Стоимость
- Пользовательский feedback (thumbs up/down)
10. Выполнение моделей (Inference Serving)
Инференс-движки
vLLM:
- Плюсы: Высокая пропускная способность (throughput) благодаря PagedAttention, continuous batching
- Минусы: Требует GPU
- Идеально: Облачные/on-prem GPU сервера, массовый асинхронный трафик
Ollama:
- Плюсы: Супер-простота (desktop/laptop), локальное CPU/GPU, GGUF формат
- Минусы: Не для высоких нагрузок/пропускной
- Идеально: Локальная разработка, эксперименты, edge с малыми моделями
Другие:
- Text Generation Inference (TGI - Hugging Face)
- TensorRT-LLM (Nvidia, макс. перф на GPU)
- llama.cpp (CPU focus)
Инфраструктура
Cloud (Managed):
- SageMaker, Vertex AI, Azure ML, Yandex DataSphere
- Плюсы: Простота, масштаб
- Минусы: Стоимость, vendor lock-in
Cloud (Self-managed):
- VMs (CPU/GPU) + Docker/Kubernetes + vLLM/TGI
- Плюсы: Контроль, гибкость
- Минусы: Операционные затраты
On-Premise:
- GPU-кластер + Kubernetes + vLLM/TGI/TRT-LLM
- Плюсы: Контроль, безопасность
- Минусы: Капитальные затраты, экспертиза
На устройстве (Edge):
- Крошечные модели (<3B)
- Квантизация (GGUF)
- llama.cpp, MediaPipe
- Ограничения: Память, вычислительная мощность
Интервью
Пришло время продемонстрировать знания
Интервьюер:
Разработайте ИИ помошника для продажи квартир, который сможет работать 24/7, отвечать как человек и предлагать настоящие лоты для покупки.
На традиционном собеседовании по системному проектированию здесь вы бы спросили о функциях, трафике и масштабе. На собеседовании по генеративному проектированию систем ИИ. Здесь Нужно определить задержку, стоимость, архитектуру и пользовательский опыт.
1. Требования
Вы проясняете не только поведение продукта, но и поведение моделей.
1.1 Функциональные требования
Задайте вопросы:
- Поддерживает ли помошник длинные разговоры?
- Как происходит взадимодействие с пользователем?
- Ответы только в формате текста или есть картинки и видео?
- Какой сценарий воронки sale?
1.2 Нефункциональные требования
- Задержка - как быстро должен генерировать ответ помошник?
- Контекст - как часто у нас меняются данные по лотам?
- Точность - насколько должны быть точные ответы?
- Масштабируемость - какой поток клиентов мы ожидаем?
- Безопасность - насколько чувствительные данные или они могут быть доступны всему интернету?
2. Уточнение ожиданий
2.1 Уточнение ожиданий в отношении данных и их извлечения
- Как часто обновляются лоты по квартирам?
- Как часто появляются новые ЖК?
- У вас типовые планировки и архитектура дома?
- Как часто меняются промо акции?
Это влияет на дополненный поиск, выбор векторной БД, на выбор embedding модели, и нужно ли нам fine-tune если область бизнеса специфичная. Как выстраивать пайплайн обновления данных.
2.2 Уточнение ожиданий по инструментам агента
В sale воронки у нас должен появиться артефакт? Например запись клиента на просмотр квартиры в календаре?
Это влияет на выбор оркестратора, function calling агента, MCP, интеграция с API календаря.
Интервьюер следит за тем, как вы задаёте вопросы, так же внимательно, как и за тем, что вы спрашиваете. На собеседовании по генеративному проектированию систем искусственного интеллекта ваша цель — звучать как технический руководитель или инженер, оценивающий продукт перед запуском.
2.3 Уточнение ожиданий вопрос связка к следующей части
“Прежде чем я перейду к архитектуре, я бы хотел прояснить несколько моментов, особенно касающихся интеграции LLM, ожидаемой задержки и конфиденциальности данных”.
Эта одна строка задает тон на следующие 30 минут и показывает, что вы мыслите как владелец системы, а не как обезьяна, пишущая код.
3. Оцените нагрузку, бюджет токенов и пропускную способность
После уточнения требований пришло время смоделировать, что эта система будет фактически обрабатывать. На собеседовании по проектированию генеративных систем ИИ вы также оцениваете количество токенов в секунду, размер контекстного окна, генерацию встраиваемых систем и стоимость вызова.
3.1 Пример: ИИ помошника для продажи квартир
Предположим:
- 1000 обращение ежедневно (пользователей)
- Каждое пользовательское взаимодействие с помощником примерно 50 сообщений
- Каждое взаимодействие включает ~1000 входных токенов и генерирует ~1000 выходных токенов
Это: 1000 пользователей × 50 взаимодействий × 2000 токенов = 100 000 000 токенов/день
Это дает нам: 1 200 токенов в секунду. Пиковый трафик при 3× = 3 600 токенов/сек
3.2 Осознание затрат
Если вы используете GigaChat 2 Lite:
- 500 000 000 токенов - 95 000 ₽
- 100 000 000 токенов/день = 19 000 ₽ в день
Если вы используете YandexGPT Lite:
- 1000 токенов - 0.1 ₽
- 100 000 000 токенов/день = 10 000 ₽ в день
Если свое оборудование:
- RTX 4090 для моделей YandexGPT-5-Lite-8B скорость ~100 токенов/с
- Значит нужно порядка 15 RTX 4090
Аппаратная часть:
- 14 × RTX 4090: ~2 500 000 ₽
- Сервер (CPU, RAM, корпус): ~1 500 000 ₽
- ИБП/охлаждение: ~500 000 ₽
- Итого: ~5 000 000 ₽
За месяц GigaChat 2 Lite обойдется 600 000₽, значит выгода своего порядка 10 мес.
4. Архитектура высокого уровня
Системная схема высокого уровня (концептуальная)…
Продолжение следует в части 2…
Читай также
- Паттерны проектирования ИИ-агентов - Каталог из 18 архитектурных паттернов для проектирования агентов на основе foundation models
- Retrieval Augmented Generation - Паттерн расширения знаний агентов с сохранением приватности данных