[2/3] System Design. Подготовка к сложному интервью по GenAI (Рубрика #SystemDesign)
Продолжая
тему книги, стоит обсуждть фреймворк из 7 шагов, который важен, так как такое интервью легко провалить разными способами, например
- Отвечать как на обычном backend system design интервью и почти не говорить про данные, модели, качество генерации, hallucinations и safety
- Говорить только про LLM, RAG, embeddings и fine-tuning, но забыть, что это все должно работать как production-система: с задержками, стоимостью, мониторингом, контролем доступа, fallback’ами и нормальной эксплуатацией
А хороший фреймворк может помочь не свалиться в эти крайности. И ниже представлены шаги такого фреймворка
1️⃣ Clarifying requirements
Сначала надо понять, что именно мы строим. "Чатбот", "генератор картинок" или "AI-ассистент" - слишком широкие формулировки. Хороший кандидат уточняет: кто пользователь, какой input и output, нужна ли персонализация, нужна ли память, какие языки и модальности поддерживаем, какой latency budget, сколько пользователей, можно ли ошибаться, какие требования к privacy и security, насколько критичны hallucinations. Это похоже на обычный System Design, но с AI-специфичными вопросами: можно ли использовать пользовательские данные, нужен ли RAG, нужен ли fine-tuning, какие safety-ограничения есть на входе и выходе.
2️⃣ Framing the problem as an ML task
Дальше продуктовую задачу надо перевести в ML-формулировку. Например, Gmail Smart Compose - это не просто "помогать писать письма". Это text generation: на входе уже набранная часть письма, на выходе - короткое вероятное продолжение. RAG-система - это не просто «чатбот по документам». Это retrieval-augmented question answering: пользовательский запрос → поиск релевантных chunks → сбор контекста → генерация ответа → проверка и ссылки на источники. На этом шаге важно показать, что вы различаете generation, transformation, retrieval, ranking, summarization, captioning, translation и multimodal tasks.
3️⃣ Data preparation
В GenAI данные - это часть качества системы. Надо обсудить: откуда берутся данные, как их чистить, как удалять персональную информацию, как фильтровать NSFW и токсичный контент, как бороться с bias, как делать чанки документов, как строить embeddings, как версионировать данные и индексы, как соблюдать права доступа.
Для RAG это особенно критично. Если retrieval достал неправильный контекст, то даже хорошая LLM сгенерирует уверенный, но бесполезный ответ.
4️⃣ Model development
Теперь можно обсуждать модель. Но не в формате "возьмем самую большую модель". Для Smart Compose может быть важнее маленькая и быстрая decoder-only Transformer-модель, потому что подсказка должна появляться почти мгновенно. Для Google Translate логичнее encoder-decoder Transformer, потому что это задача преобразования из одного языка в другой. В общем, хороший ответ включает объяснения компромиссов.
5️⃣ Evaluation
Это один из самых важных шагов в этих задачах. В обычных ML-задачах часто можно говорить про accuracy, precision, recall. Но в GenAI все сложнее: у хорошего ответа может не быть единственного ground truth. Поэтому надо разделять: offline оценка, online оценка, оценка людей, продуктовые метрики, системные метрики, safety метрики.
6️⃣
Overall ML system design
Это центральный момент: собрать систему целиком. В этот момент становится видно, что GenAI System Design — это не только ML, но и нормальная инженерия: сервисы, очереди, хранилища, кэширование, права доступа, observability, rollback, A/B-тесты и capacity planning.
7️⃣ Deployment and monitoring
После запуска система не становится "готовой". GenAI-продукт надо постоянно мониторить: latency, token usage, cost per request, GPU utilization, timeout rate, safety filter trigger rate, hallucination signals, user feedback, retrieval quality, drift в данных, деградацию после смены модели или версии промпта, попытки prompt injection и abuse. Именно этот слой отличает production AI-систему от красивого демо.
В последнем посте мы закончим посмотрим на задачи из книги.