Подготовка к собеседованию на вакансию ML Engineer (LLM)

Курс поможет системно подготовиться к интервью на позицию ML Engineer с фокусом на LLM: от базовых принципов и архитектур до деплоя и MLOps. Вы разберёте типовые вопросы, практические задания и дизайн-секции, а также подготовите портфолио и ответы по опыту.

1. Формат интервью и карта компетенций ML Engineer (LLM)

Формат интервью и карта компетенций ML Engineer (LLM)

Эта статья задаёт скелет подготовки: как обычно устроено интервью на ML Engineer (LLM), какие компетенции проверяют, по каким сигналам интервьюер делает выводы и как превратить это в понятный план подготовки.

Что именно означает роль ML Engineer (LLM)

ML Engineer (LLM) — инженер, который умеет доводить LLM-решения до продакшена: от постановки задачи и выбора подхода до обучения/адаптации модели, оценки качества, оптимизации инференса, мониторинга и надёжной эксплуатации.

Чаще всего роль лежит между Research Engineer и Production ML Engineer:

  • Ближе к research: знание архитектур, методов адаптации (SFT, LoRA, DPO), оценка качества, работа с данными.
  • Ближе к production: сервисы, latency/cost, надёжность, наблюдаемость, CI/CD, безопасность, управление инцидентами.
  • Важно: на собеседовании обычно не требуют быть одинаково сильным во всём, но ожидают T-shaped профиль: глубокая экспертиза в 1–2 областях и уверенная база в остальных.

    Типовой формат интервью

    Конкретный пайплайн зависит от компании (стартап/энтерпрайз, свой LLM/через API, B2C/B2B), но структура часто похожа.

    !Типичная последовательность этапов интервью и фокус проверки

    Скрининг рекрутера

    Обычно 20–30 минут.

    Проверяют:

  • соответствие по уровню, домену и ожиданиям
  • опыт с LLM (чем именно занимались: RAG, fine-tuning, инференс, оценка)
  • коммуникацию и ясность рассказа
  • Что подготовить:

  • 2–3 истории проектов: задача → ограничения → решение → метрики → результат → уроки
  • честный список того, что делали сами, и что делала команда
  • Технический скрининг

    Обычно 30–60 минут: разговор + короткие вопросы.

    Проверяют:

  • базу по ML и LLM (термины, причинно-следственные связи)
  • способность рассуждать: почему такой подход, какие риски
  • Live-coding или take-home

    Варианты:

  • live-coding: Python + структура данных/алгоритмы или прикладная инженерия (парсинг, батчинг, оптимизация)
  • take-home: мини-пайплайн (обработка данных, простая модель/оценка, отчёт)
  • Что оценивают:

  • корректность и читаемость кода
  • тестируемость, обработку edge cases
  • инженерное мышление: сложность, память, ошибки, логирование
  • Интервью по LLM/ML глубине

    Это часто самый весомый этап.

    Проверяют:

  • понимание трансформеров и механики обучения
  • методы адаптации и выравнивания
  • оценку качества и работу с данными
  • Полезные базовые источники:

  • Attention Is All You Need
  • Training language models to follow instructions with human feedback (InstructGPT)
  • LoRA: Low-Rank Adaptation of Large Language Models
  • System design для LLM-сервиса

    Обычно 45–90 минут. Вам дают продуктовую задачу (например, корпоративный ассистент, саппорт-бот, поиск по документам) и просят спроектировать систему.

    Проверяют:

  • архитектурное мышление
  • trade-offs: качество/стоимость/задержка/риски
  • продакшен-детали: деградации, кэширование, лимиты, безопасность
  • MLOps/Production

    Обычно 45–60 минут.

    Проверяют:

  • как вы выкатываете модели и промпты
  • как мониторите качество и дрейф
  • как управляете инцидентами и откатами
  • Опорные темы часто пересекаются с инфраструктурой:

  • Документация Kubernetes
  • Behavioral и командная работа

    Обычно 30–60 минут.

    Проверяют:

  • ответственность, зрелость, умение работать с неопределённостью
  • конфликтные ситуации, приоритизация, влияние без формальной власти
  • Полезная структура ответа: STAR (Situation, Task, Action, Result).

    Карта компетенций ML Engineer (LLM)

    Ниже — карта, которая помогает не расплываться в подготовке: что реально проверяют и какие сигналы дают интервьюеру уверенность.

    !Матрица компетенций и сигналов на интервью

    Python и инженерная база

    Что проверяют:

  • чистота кода, структуры данных, сложность, надёжность
  • умение писать поддерживаемый код под прод
  • Сильные сигналы:

  • вы сами предлагаете тесты, типизацию/контракты, обработку ошибок
  • учитываете большие объёмы данных (стриминг, батчи)
  • Красные флаги:

  • код работает только на «счастливом пути»
  • игнорирование времени/памяти/наблюдаемости
  • Основы ML

    Что проверяют:

  • переобучение/обобщение, регуляризация, валидация
  • метрики и выбор порогов
  • утечки данных и корректность экспериментов
  • Сильные сигналы:

  • вы объясняете почему метрика отражает бизнес-цель
  • вы сразу спрашиваете про распределение данных и срезы
  • Красные флаги:

  • путаница train/val/test, оптимизация «под тест»
  • отсутствие разговора про data leakage
  • Основы LLM

    Что проверяют:

  • понимание трансформера на уровне блоков (эмбеддинги, self-attention, позиционная информация)
  • причины галлюцинаций, ограничения контекста
  • чем отличаются base vs instruct модели
  • Сильные сигналы:

  • вы связываете симптомы (галлюцинации, токсичность, нестабильность) с причинами (данные, декодинг, отсутствие grounding)
  • Красные флаги:

  • магическое мышление: «модель сама разберётся»
  • отсутствие понимания роли данных и оценки
  • Данные для LLM-задач

    Что проверяют:

  • сбор, очистка, дедупликация
  • разметка, инструкции для разметчиков, контроль качества
  • политика данных: персональные данные, лицензии
  • Сильные сигналы:

  • вы предлагаете схему QC разметки (golden set, inter-annotator agreement, аудит)
  • Красные флаги:

  • «возьмём побольше данных из интернета» без обсуждения рисков
  • RAG (Retrieval-Augmented Generation)

    Что проверяют:

  • как устроить поиск: чанкинг, эмбеддинги, индексы, rerank
  • как бороться с устареванием знаний и источниками
  • Сильные сигналы:

  • вы различаете retrieval и reranking и знаете, где теряется качество
  • вы думаете про цитирование источников, фильтрацию и версионирование
  • Красные флаги:

  • отсутствие стратегии оценки retrieval-части
  • игнорирование безопасности (prompt injection через документы)
  • Практический ориентир по инструментам:

  • Hugging Face Transformers Documentation
  • Fine-tuning и alignment

    Что проверяют:

  • когда достаточно промпта/RAG, а когда нужен fine-tuning
  • SFT vs LoRA/QLoRA, что менять и почему
  • preference optimization (например, DPO) на уровне идеи
  • Сильные сигналы:

  • вы описываете критерии выбора: стоимость, латентность, приватность, контроль поведения
  • Красные флаги:

  • fine-tuning как универсальный ответ
  • отсутствие плана оценки до/после
  • Оценка качества (eval)

    Что проверяют:

  • как измерять качество LLM: offline/online
  • как собирать тест-наборы и сценарии
  • как избегать «метрики ради метрики»
  • Сильные сигналы:

  • вы делите eval на компоненты (retrieval, генерация, формат, безопасность)
  • вы предлагаете автоматические проверки + ручной аудит
  • Красные флаги:

  • «посмотрим на пару примеров» вместо системной оценки
  • Инференс, стоимость и производительность

    Что проверяют:

  • батчинг, кэширование, квоты, rate limiting
  • контекстное окно, обрезка, компрессия, summarization
  • выбор модели под SLA и бюджет
  • Сильные сигналы:

  • вы умеете говорить в терминах: latency p95, стоимость на запрос, пропускная способность
  • Красные флаги:

  • отсутствие понимания, что качество часто конфликтует с latency/cost
  • System design

    Что проверяют:

  • декомпозицию на компоненты
  • деградации и фолбэки (например, меньшая модель, шаблонные ответы, выключение инструментов)
  • контуры безопасности
  • Сильные сигналы:

  • вы рисуете несколько вариантов архитектуры и выбираете по ограничениям
  • вы задаёте уточняющие вопросы про пользователей, риски и SLO
  • Красные флаги:

  • «один сервис, который делает всё» без очередей, логов, версий
  • MLOps и эксплуатация

    Что проверяют:

  • версионирование данных/моделей/промптов
  • A/B тесты, канареечные релизы
  • мониторинг качества, алерты, трассировка
  • Сильные сигналы:

  • вы различаете мониторинг системных метрик и мониторинг качества
  • вы предлагаете процесс реагирования на деградацию
  • Красные флаги:

  • отсутствие плана отката
  • «логировать всё подряд» без политики PII
  • Безопасность и комплаенс

    Что проверяют:

  • защита от prompt injection и утечек
  • работа с персональными данными
  • контроль доступа и аудит
  • Сильные сигналы:

  • вы предлагаете принципы: минимизация данных, изоляция контекстов, allowlist инструментов, контент-фильтры
  • Красные флаги:

  • игнорирование угроз: «это не про ML инженера»
  • Коммуникация и продуктовый взгляд

    Что проверяют:

  • умение превращать размытый запрос в измеримую задачу
  • умение объяснять trade-offs
  • Сильные сигналы:

  • вы проговариваете предположения и риски
  • вы предлагаете план итераций (MVP → измерение → улучшение)
  • Красные флаги:

  • несвязные объяснения, уход в детали без привязки к цели
  • Как интервьюеры принимают решение

    Обычно решение — это не сумма правильных ответов, а доверие к тому, что вы:

  • умеете работать в рамках ограничений
  • принимаете воспроизводимые инженерные решения
  • понимаете риски LLM и умеете ими управлять
  • доводите решения до продакшена и измеряете эффект
  • Практически это выражается в трёх вопросах, которые (явно или неявно) задаёт себе интервьюер:

  • Можно ли этому человеку доверить кусок системы в проде?
  • Умеет ли он улучшать качество через данные/оценку, а не через догадки?
  • Сможет ли он объяснить решения команде и стейкхолдерам?
  • Как использовать карту компетенций для подготовки

    Чтобы подготовка была управляемой, действуйте так:

  • Выберите целевой тип компании.
  • Составьте портфолио историй из 3–5 кейсов.
  • Для каждой компетенции из карты проставьте свой уровень:
  • - база: могу объяснить и решить типовую задачу - уверенно: могу выбирать среди вариантов и защищать решение - глубоко: могу оптимизировать, дебажить и учить других

  • Под каждый этап интервью заведите чек-лист сигналов.
  • Тренируйтесь в формате, близком к реальности: таймер, голосом, с уточняющими вопросами.
  • В следующих материалах курса эта карта будет развернута в конкретные темы: LLM-архитектуры, RAG, fine-tuning, eval, system design и production-практики.

    2. Теория LLM: трансформеры, токенизация, обучение и инференс

    Теория LLM: трансформеры, токенизация, обучение и инференс

    Эта статья закрывает базовый теоретический минимум, который почти всегда всплывает на техническом скрининге и на глубоком интервью (из карты компетенций из прошлой статьи): как LLM устроена внутри, почему она ведёт себя так, как ведёт, и какие инженерные последствия это имеет в обучении и в продакшене.

    Что такое LLM в инженерном смысле

    LLM (Large Language Model) чаще всего означает автогрессионную языковую модель на базе трансформера, которая:

  • получает на вход последовательность токенов
  • предсказывает распределение вероятностей следующего токена
  • генерирует текст, повторяя это предсказание шаг за шагом
  • Ключевой момент для собеседований: LLM — это не “текстовый поиск” и не “база знаний”, а вероятностная модель продолжения последовательности. Отсюда естественно следуют:

  • галлюцинации как побочный эффект генеративной природы
  • чувствительность к формулировке запроса и контексту
  • trade-off качество/стоимость/задержка во время инференса
  • Токенизация

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

    Модель не работает с символами напрямую: текст превращается в токены — элементы конечного словаря. Токен — это обычно кусок строки (символ, часть слова, слово, пробел+часть слова).

    Практические последствия:

  • стоимость инференса часто считается в токенах, а не в символах
  • разные токенизаторы дают разные разбиения, значит меняются длины контекста и стоимость
  • “редкие” строки (URL, код, имена) могут распадаться на много токенов и портить бюджет контекста
  • BPE и родственные подходы

    На практике часто встречаются токенизаторы семейства BPE (Byte Pair Encoding) или близкие варианты.

    Идея BPE на интуитивном уровне:

  • Начинаем с базовых символов.
  • Часто встречающиеся пары символов или подстрок “склеиваем” в один токен.
  • Повторяем, пока не получим словарь нужного размера.
  • Это позволяет покрыть частые слова целыми токенами, а редкие собирать из частей.

    Полезные источники:

  • Neural Machine Translation of Rare Words with Subword Units
  • SentencePiece: A simple and language independent subword tokenizer and detokenizer for Neural Text Processing
  • !Пример того, как один и тот же текст превращается в последовательность токенов и почему некоторые фрагменты “дороже”

    Что важно уметь объяснить на интервью

  • почему “контекст 8k токенов” не равен “8k слов”
  • почему для RAG и длинных документов токенизация напрямую влияет на чанкинг
  • почему нормализация текста (пробелы, кавычки, переносы строк) может менять число токенов
  • Трансформер как основа LLM

    Классический источник:

  • Attention Is All You Need
  • Современные LLM чаще всего используют decoder-only трансформер (в стиле GPT): модель читает контекст слева направо и предсказывает следующий токен.

    Основные компоненты блока

    Типичный блок decoder-only трансформера состоит из:

  • эмбеддингов токенов
  • добавления позиционной информации
  • self-attention (какие токены контекста важны друг для друга)
  • MLP (feed-forward слой, нелинейная “переработка” представлений)
  • residual connections и нормализаций (стабильное обучение)
  • !Архитектура decoder-only трансформера, используемая в большинстве LLM

    Self-attention: что это и почему это важно

    Self-attention — механизм, который смешивает информацию из разных позиций последовательности. На практике он позволяет модели:

  • учитывать дальний контекст лучше, чем RNN
  • динамически выбирать, на какие части запроса опираться
  • Упрощённо, внимание можно описать формулой:

    Пояснение каждого элемента:

  • — матрица queries: “что я ищу” для каждой позиции
  • — матрица keys: “по каким признакам меня можно найти” для каждой позиции
  • — матрица values: “какую информацию я отдаю”, если на меня обратили внимание
  • — размерность ключей, деление на стабилизирует масштабы чисел
  • — оценки “похожести” запросов на ключи (какие токены важнее)
  • — превращает оценки в веса, которые суммируются примерно в 1 по строке
  • умножение на — собирает взвешенную смесь информации
  • Что важно для собеседований:

  • внимание имеет квадратичную сложность по длине контекста: при росте контекста растут и задержка, и память
  • для decoder-only модели используется causal mask: токен не “смотрит” в будущее, иначе задача следующего токена станет тривиальной
  • Позиционная информация

    Без позиции модель не отличит “A затем B” от “B затем A”. Позицию добавляют через позиционные эмбеддинги или их варианты.

    Инженерное следствие: при увеличении контекстного окна часто требуется менять или адаптировать позиционную схему, иначе качество на длинном контексте падает.

    Как LLM обучают

    Предобучение: next-token prediction

    Базовая автогрессионная LLM обычно учится предсказывать следующий токен по предыдущим:

  • вход: токены
  • цель: предсказать
  • Оптимизируется отрицательное лог-правдоподобие (кросс-энтропия) по правильному следующему токену. Это и есть математическое оформление идеи “наказали модель, если она дала низкую вероятность правильному следующему токену”.

    Классический пример подхода:

  • Language Models are Unsupervised Multitask Learners (GPT-2)
  • Практические последствия:

  • модель учится статистике текста, а не “истине”, поэтому возможны уверенные ошибки
  • знания “вшиты” в веса и устаревают, поэтому в проде часто нужен RAG или инструменты
  • Instruction tuning и alignment на уровне идеи

    После предобучения часто делают дообучение, чтобы модель лучше следовала инструкциям.

    Типовые шаги:

  • SFT (supervised fine-tuning): дообучение на парах “инструкция → хороший ответ”
  • методы выравнивания на предпочтениях (например, RLHF-подходы): модель дополнительно оптимизируют под человеческие предпочтения
  • Один из базовых источников по направлению:

  • Training language models to follow instructions with human feedback (InstructGPT)
  • Что часто спрашивают:

  • чем отличается base модель от instruct модели
  • почему instruct-модель “лучше разговаривает”, но иногда хуже в “сырой” генерации
  • почему fine-tuning может ухудшить одни навыки, улучшив другие
  • Инференс: как модель генерирует текст

    От логитов к токену

    На каждом шаге модель выдаёт логиты — числа по размеру словаря. После softmax это превращается в вероятности токенов.

    Выбор следующего токена делают разными стратегиями:

  • greedy: всегда брать самый вероятный токен
  • beam search: хранить несколько лучших продолжений (редко используют для чат-LLM, чаще для задач вроде перевода)
  • sampling: выбирать случайно, но контролируемо
  • Пара ключевых параметров sampling:

  • temperature: увеличивает или уменьшает “случайность” распределения
  • top-k: выбирать только из k самых вероятных токенов
  • top-p (nucleus): выбирать из минимального набора токенов, суммарная вероятность которых достигает p
  • Инженерный смысл:

  • greedy повышает детерминизм, но может застревать в повторениях
  • sampling полезен для разнообразия, но может ухудшать точность и формат
  • KV cache и почему первый токен дороже

    При генерации следующий токен зависит от всего контекста. Наивно можно было бы каждый раз прогонять всю последовательность заново. На практике используют KV cache:

  • для каждого слоя self-attention сохраняют вычисленные key/value для уже обработанных токенов
  • на следующем шаге считают attention только для нового токена, используя кеш
  • Следствие для продакшена:

  • prefill (обработка входного контекста) обычно дороже, чем decode (генерация следующих токенов)
  • длинный промпт может резко увеличить задержку и стоимость
  • !Почему длинный промпт делает первый токен дорогим и как KV cache ускоряет генерацию

    Остановки и ограничения

    На практике генерация ограничивается:

  • max tokens на ответ
  • stop sequences
  • правилами формата (например, JSON) и пост-валидацией
  • Важно для интервью: если от модели нужен строгий формат, одних “хороших промптов” недостаточно. Нужны ограничения декодинга, валидация, ретраи и фолбэки.

    Что из этой теории чаще всего проверяют на собеседовании

    Частые вопросы уровня “база”

  • чем base LLM отличается от instruct LLM
  • почему токены важнее символов для стоимости
  • что такое self-attention и зачем causal mask
  • почему возникают галлюцинации и почему RAG может помочь
  • Частые вопросы уровня “уверенно”

  • какие последствия у квадратичной сложности attention по длине контекста
  • как выбор стратегии декодинга влияет на качество и стабильность формата
  • почему prefill и decode имеют разную стоимость и как это влияет на SLA
  • Сигналы сильного кандидата

  • объясняет поведение модели через устройство токенизации, обучения и декодинга
  • связывает теорию с продакшен-метриками: p95 latency, tokens per second, стоимость на запрос
  • задаёт уточняющие вопросы: длина контекста, ограничения бюджета, требования к детерминизму
  • Практический мост к следующим темам курса

    Эта теория напрямую нужна для следующих блоков подготовки:

  • RAG: чанкинг, эмбеддинги, retrieval и reranking зависят от контекстного окна и токенизации
  • fine-tuning: понимание, что именно меняется при SFT или LoRA, и почему это влияет на поведение
  • eval: разделение ошибок retrieval и генерации, тесты формата, устойчивость к промптам
  • production: батчинг, кеширование, контроль стоимости, мониторинг деградации
  • В интервью ваша цель — не пересказать определения, а показать причинно-следственное мышление: “вот как устроено → вот почему так работает → вот какие ограничения и решения в проде”.

    3. Fine-tuning и адаптация: SFT, LoRA/QLoRA, RLHF/DPO

    Fine-tuning and adaptation: SFT, LoRA/QLoRA, RLHF/DPO

    This article continues the competency map from Format of the interview and competency map and builds on the mechanics from LLM theory: transformers, tokenization, training, and inference. In interviews for an ML Engineer (LLM), the most common expectation is not that you know every paper by heart, but that you can choose the right adaptation method under constraints: quality, latency, cost, privacy, and safety.

    What “fine-tuning” means in practice

    Fine-tuning means updating model parameters using additional data so the model behaves closer to what you need.

    There are three common “targets” for adaptation:

  • Behavior: tone, format, instruction-following, refusal policy, tool-calling discipline.
  • Task skill: classification, extraction, summarization, domain-specific reasoning patterns.
  • Knowledge: facts about a changing world (often a trap, because weights become stale again).
  • A key interview point: changing weights is only one lever. Often you should start with prompting and RAG, and only then consider fine-tuning.

    Choosing between prompting, RAG, SFT, and preference tuning

    Use the simplest method that meets your requirements.

    | Goal | Prefer | Why | Typical failure mode if chosen incorrectly | |---|---|---|---| | “Answer using our docs, keep it up-to-date” | RAG | Knowledge stays outside weights and can be updated | Fine-tuning bakes in stale facts and still hallucinates | | “Always output strict JSON schema” | Prompting + constrained decoding + validation, sometimes SFT | Reliability requires enforcement, not only style | SFT alone improves but still fails edge cases | | “Follow our internal support playbook” | SFT or LoRA SFT | Teaches consistent behavior patterns | RAG may retrieve playbook but model ignores it | | “Prefer helpful answers over evasive ones” | RLHF or DPO | Optimizes preferences, not just imitation | SFT overfits to examples without improving preference trade-offs | | “We must train on private data on limited GPUs” | LoRA/QLoRA | Much lower memory and compute footprint | Full fine-tune may be infeasible |

    !A practical decision flow for picking an adaptation method

    SFT: supervised fine-tuning

    What SFT is

    SFT (supervised fine-tuning) trains the model to imitate desired responses.

    Your dataset typically looks like:

  • system message (policy and role)
  • user message (instruction)
  • assistant message (ideal answer)
  • During SFT, you usually minimize the same kind of objective as pretraining: predict the next token of the assistant response given the conversation context.

    Why SFT works well

  • It is stable and relatively simple.
  • It improves instruction-following, formatting habits, and domain style.
  • It is easy to debug: if the model produces bad outputs, you can inspect and fix examples.
  • Data quality rules that matter on interviews

  • Diversity beats volume for behavior changes: cover edge cases and “hard” user requests.
  • Consistency is critical: conflicting labels (“refuse” vs “answer”) creates unstable behavior.
  • Train/validation contamination is common: do not reuse the same conversations with minor edits.
  • Conversation formatting must match inference formatting: mismatched chat templates can erase gains.
  • Common SFT pitfalls

  • Overfitting and style collapse: model starts mirroring training tone even when inappropriate.
  • Catastrophic forgetting: full fine-tuning can reduce general capabilities if data is narrow.
  • Teaching facts instead of grounding: SFT on factual Q&A does not guarantee truthfulness.
  • LoRA and QLoRA: parameter-efficient fine-tuning

    The core idea

    Full fine-tuning updates all weights, which is expensive.

    LoRA (Low-Rank Adaptation) freezes the base model and trains small additional matrices (adapters) that represent a low-rank update to existing weights.

    You can describe it as:

  • is the original (frozen) weight matrix.
  • is the learned update.
  • is the effective weight used at inference.
  • In LoRA, the update is factorized:

  • and are small trainable matrices.
  • The rank (often called ) controls adapter capacity: smaller rank means fewer parameters and less memory.
  • You do not need to derive this on the whiteboard, but you must be able to explain the intuition: we constrain updates so training is cheaper while still allowing meaningful behavior change.

    Why LoRA is production-friendly

  • Much fewer trainable parameters means lower GPU memory usage.
  • You can store multiple adapters for different products/domains.
  • You can merge adapters into the base weights for simpler deployment, or keep them separate for flexibility.
  • !Where LoRA adapters sit inside a transformer layer

    QLoRA: LoRA with quantized base weights

    QLoRA typically means:

  • base model weights are loaded in low-bit quantization (commonly 4-bit) to reduce memory
  • LoRA adapters are trained in higher precision
  • Practical consequences:

  • You can fine-tune much larger models on the same GPU.
  • You must handle numerical stability carefully.
  • Reference:

  • QLoRA: Efficient Finetuning of Quantized LLMs
  • Typical interview trade-offs: full fine-tune vs LoRA/QLoRA

  • Full fine-tune can reach higher peak quality for large, high-quality datasets, but costs more and increases risk of forgetting.
  • LoRA/QLoRA is usually the default in teams that iterate fast, have limited GPUs, or need multiple variants.
  • RLHF: preference-based alignment with reinforcement learning

    What problem RLHF solves

    SFT teaches imitation: “copy these good answers.”

    But many product goals are preferences, not strict targets:

  • “prefer safe refusal over risky compliance”
  • “prefer concise answers unless user asks for detail”
  • “prefer using tools when uncertain”
  • RLHF (Reinforcement Learning from Human Feedback) is a family of methods to optimize these preferences.

    A standard RLHF pipeline

    A common modern pipeline is:

  • Train an SFT model.
  • Collect preference data: for the same prompt, humans (or a policy) choose the better completion.
  • Train a reward model that predicts which completion is preferred.
  • Optimize the policy model using reinforcement learning (commonly PPO) to maximize reward while staying close to the SFT model.
  • A widely cited reference for instruction-following with human feedback:

  • Training language models to follow instructions with human feedback (InstructGPT)
  • What you should be able to explain

  • Reward hacking: the model finds shortcuts to increase reward without truly being better.
  • KL penalty / staying close: you usually constrain updates so the model does not drift too far from the SFT baseline.
  • Operational cost: RLHF is more complex (data, training stability, evaluation).
  • DPO: Direct Preference Optimization

    Motivation

    RLHF is powerful but operationally heavy: reward model + RL training instability.

    DPO (Direct Preference Optimization) is a simpler alternative that uses preference pairs directly to update the model, avoiding an explicit reward model and avoiding reinforcement learning.

    Reference:

  • Direct Preference Optimization: Your Language Model is Secretly a Reward Model
  • When DPO is a good fit

  • You already have preference pairs and want a simpler, more stable training loop.
  • You want many iterations and lower engineering overhead.
  • What can still go wrong

  • Preference data quality dominates outcomes.
  • If preferences encode bias or inconsistent labeling, DPO will learn it.
  • You still need strong evals for safety and regressions.
  • Evaluation: how to prove your fine-tuning helped

    Interviewers often probe whether you can separate training from evaluation.

    A practical eval stack for adapted LLMs:

  • Task metrics: exact match / F1 for extraction, rubric-based scoring for summaries.
  • Format compliance: JSON parsing success rate, schema validation pass rate.
  • Safety and policy: disallowed content rate, jailbreak robustness.
  • Regression tests: a fixed set of prompts that must not get worse.
  • Online monitoring: user feedback, escalation rates, cost per successful task.
  • Important connection to the previous theory article: fine-tuning changes weights, but your inference constraints still matter.

  • Long prompts increase prefill cost.
  • Output length drives decode cost.
  • Format reliability requires validation, retries, and sometimes constrained decoding.
  • Deployment and operations: what ML Engineers are expected to mention

  • Version everything: base model, adapter version, training data snapshot, prompt templates.
  • Canary release and rollback plan.
  • Observability: latency p95, tokens per second, error rates, refusal rate, tool-call rate.
  • Data governance: remove PII, handle licenses, document consent.
  • A very practical tool ecosystem many teams use:

  • Hugging Face PEFT documentation
  • What interviewers ask about fine-tuning

    Typical questions

  • When do you choose RAG over fine-tuning?
  • What is the difference between SFT and DPO?
  • Why does LoRA reduce memory and training cost?
  • How do you avoid catastrophic forgetting?
  • How do you evaluate improvements beyond “it looks better”?
  • Strong candidate signals

  • You propose a staged approach: baseline prompting and RAG first, then LoRA SFT, then preference tuning if needed.
  • You can name failure modes and how you would catch them with evals.
  • You connect training choices to production constraints: memory, latency, cost, and rollback.
  • 4. RAG и LLM-приложения: эмбеддинги, поиск, промптинг, оценка

    RAG и LLM-приложения: эмбеддинги, поиск, промптинг, оценка

    RAG (Retrieval-Augmented Generation) — это основной практический паттерн, который связывает теорию LLM (токены, контекстное окно, стоимость prefill/decode) и адаптацию (когда не нужен fine-tuning, потому что знания лучше держать вне весов). На собеседовании ML Engineer (LLM) RAG почти всегда проверяют через вопросы про архитектуру, качество поиска, промпт-композицию, оценку, безопасность и продакшен-ограничения.

    Зачем RAG нужен в продакшене

    LLM предсказывает следующий токен, а не обращается к базе знаний. Поэтому без внешнего grounding модель:

  • уверенно ошибается на фактах
  • устаревает вместе с датой предобучения
  • может игнорировать детали домена, если они не в контексте
  • RAG решает это так:

  • знания лежат в документах и индексах, которые можно обновлять
  • в контекст LLM попадает конкретное подтверждение (snippets), а не “память модели”
  • можно требовать цитирование источников и проверяемость
  • Классическая статья, которая ввела термин RAG:

  • Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
  • Ментальная модель RAG-пайплайна

    Типовая схема RAG выглядит как двухэтапная система: сначала поиск, затем генерация.

    !End-to-end RAG architecture: ingestion, retrieval, reranking, prompt assembly, generation, observability

    В инженерной постановке вы почти всегда обсуждаете:

  • ingestion: как документы попадают в индекс
  • retrieval: как выбираются кандидаты
  • reranking: как улучшить точность топа
  • prompting: как собрать контекст так, чтобы модель следовала источникам
  • eval: как измерить качество отдельно по компонентам
  • Эмбеддинги: что это и зачем они в RAG

    Что такое эмбеддинг

    Эмбеддинг — это векторное представление текста фиксированной длины. Идея: тексты со схожим смыслом должны иметь близкие векторы.

    В RAG эмбеддинги применяются для:

  • поиска семантически похожих фрагментов (dense retrieval)
  • кластеризации и дедупликации контента
  • мониторинга “похожести” запросов и распределений
  • Косинусная близость (минимум математики)

    Часто similarity между эмбеддингами измеряют косинусом:

    Где:

  • и — эмбеддинги (векторы) запроса и документа
  • — скалярное произведение, показывает “совпадение направлений”
  • и — длины (нормы) векторов
  • Интуиция: мы сравниваем, насколько векторы “смотрят в одну сторону”, а не их абсолютные масштабы.

    Выбор embedding-модели: что спрашивают на интервью

    Частые критерии выбора:

  • качество на вашем языке и домене
  • длина входа (максимальные токены)
  • скорость и стоимость (CPU/GPU, батчинг)
  • поддержка “query vs document” режимов (некоторые модели обучены асимметрично)
  • Типовые базовые источники:

  • Dense Passage Retrieval for Open-Domain Question Answering
  • Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
  • Индексация и чанкинг: почему качество RAG часто “ломается” здесь

    Почему нельзя просто класть целый документ

    Контекстное окно ограничено, а стоимость prefill растёт с длиной промпта. Поэтому документы режут на фрагменты (chunks), индексируют и извлекают только релевантные части.

    Стратегии чанкинга

    Хороший чанкинг балансирует:

  • полноту смысла в одном chunk
  • точность поиска (слишком большие chunks размывают релевантность)
  • бюджет контекста (слишком маленькие chunks требуют больше вставок)
  • Практические подходы:

  • fixed-size чанки по символам или токенам
  • sliding window с overlap
  • структурный чанкинг по заголовкам, спискам, таблицам
  • “semantic chunking” по смысловым границам
  • Инженерный сигнал на собеседовании: вы обсуждаете не только размер, но и потери смысла (например, определение в одном chunk, исключения в другом).

    Метаданные важны не меньше эмбеддингов

    Вектор без метаданных плохо управляется в продакшене. Обычно сохраняют:

  • источник (документ, ссылка, версия)
  • права доступа (ACL) и tenant
  • тип контента (policy, FAQ, changelog)
  • timestamps (freshness)
  • Это напрямую влияет на безопасность и корректность, особенно в enterprise.

    Поиск: sparse, dense и hybrid

    RAG-поиск обычно строят из двух слоёв: быстрый отбор кандидатов и точная сортировка.

    Sparse retrieval (BM25)

    Sparse методы ищут по словам и их статистике. Самый известный — BM25.

    Сильные стороны:

  • отлично работает по точным терминам, именам, артикулам
  • предсказуем и хорошо дебажится
  • Слабые стороны:

  • хуже ловит перефразирование и “смысл без совпадения слов”
  • Источник по определению и интуиции:

  • Okapi BM25
  • Dense retrieval (эмбеддинги)

    Dense retrieval находит смыслово похожие фрагменты, даже если слова не совпадают.

    Типовые проблемы:

  • “semantic drift”: вытягиваются похожие по теме, но не отвечающие на вопрос
  • хуже точных идентификаторов (номера тикетов, версии, коды ошибок)
  • Hybrid retrieval

    На практике часто побеждает гибрид:

  • sparse даёт точность по терминам
  • dense даёт устойчивость к перефразированию
  • Сильный ответ на интервью: вы предлагаете hybrid как baseline и объясняете, что именно он лечит в вашем домене.

    ANN индексы и vector databases

    Полный поиск по всем векторам дорогой, поэтому используют Approximate Nearest Neighbors (ANN). Ключевая идея: ускоряем поиск, допускаем небольшую потерю точности.

    Частый инструмент для локальных прототипов и прод-систем:

  • FAISS
  • Сигналы, которые ценят на интервью:

  • вы называете trade-off скорость vs recall
  • вы обсуждаете обновление индекса, шардирование, ограничения памяти
  • Reranking: как поднять качество топ-выдачи

    Retriever часто отдаёт топ- кандидатов, но порядок не идеален. Reranker (обычно cross-encoder) пересчитывает релевантность уже на маленьком наборе кандидатов.

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

  • меньше “почти релевантных” кусочков в контексте
  • выше шанс, что LLM увидит нужный факт
  • Практический паттерн:

  • retriever: быстро выбрать top 50–200
  • reranker: отсортировать и оставить top 5–20 для промпта
  • !Two-stage retrieval: fast candidate generation + reranking for precision

    Prompting в RAG: как “прибить” модель к источникам

    Контекст-строитель как отдельный компонент

    На собеседовании полезно выделять context builder как самостоятельную часть системы, которая отвечает за:

  • формат вставки (цитаты, bullet points, JSON поля)
  • дедупликацию и разнообразие источников
  • контроль длины (budgeting по токенам)
  • Типовой шаблон промпта

    Обычно в чате есть роли:

  • system: политика, формат, правила цитирования
  • user: вопрос пользователя
  • developer или дополнительный system: инструкции для RAG-режима
  • tool/context: извлечённые фрагменты
  • Практически устойчивые правила:

  • явно требовать опираться только на контекст
  • требовать указания источников (doc id / URL / section)
  • разрешать “I don’t know”, если ответа нет в контексте
  • Сжатие контекста и управление бюджетом токенов

    Связь с прошлой статьёй про инференс:

  • длинный контекст увеличивает prefill latency
  • большое число цитат увеличивает стоимость и риск отвлечения модели
  • Типовые решения:

  • ограничить число chunks
  • делать summary/condense retrieved chunks
  • использовать “map-reduce” для длинных документов
  • Защита от prompt injection через документы

    RAG добавляет новый канал атаки: документы могут содержать инструкции для модели.

    Практические меры:

  • отделять данные от инструкций (жёсткий system prompt)
  • показывать контекст как цитаты и запрещать выполнять команды из него
  • allowlist tool calls и строгие схемы для инструментов
  • фильтрация документов и сканирование на опасные паттерны
  • Полезный практический ориентир по угрозам:

  • Prompt Injection
  • Оценка RAG: как доказать, что система лучше

    Сильный кандидат разделяет оценку на уровни:

  • retrieval отдельно
  • generation отдельно
  • end-to-end отдельно
  • Оценка retrieval

    Цель: проверить, попадают ли нужные факты в top-.

    Базовая метрика: recall@k.

    Где:

  • — сколько документов/чанков вы берёте из retrieval
  • “relevant chunk” — размеченный как содержащий ответ или ключевой факт
  • Что важно объяснить на интервью:

  • высокий recall@k может быть при плохом precision (много мусора)
  • reranking часто улучшает precision без сильного падения recall
  • Оценка generation

    Если релевантные куски уже в контексте, остаётся проверить, что модель:

  • отвечает по источнику и не выдумывает
  • соблюдает формат
  • даёт корректные отказ/эскалацию, если данных недостаточно
  • Практические проверки:

  • faithfulness: утверждения должны поддерживаться цитатами
  • format compliance: парсинг JSON/схемы, регулярные выражения для полей
  • refusal correctness: модель не отвечает, когда нет оснований
  • End-to-end оценка

    E2E-метрики привязываются к продукту:

  • task success rate
  • time-to-resolution
  • human escalation rate
  • cost per successful answer
  • Сигнал зрелости: вы предлагаете offline eval для быстрых итераций и online (A/B) для подтверждения эффекта.

    Типовые продакшен-вопросы, которые задают на интервью

    Freshness и обновления

    Вам нужен ingestion pipeline:

  • регулярный reindex
  • версионирование документов
  • удаление устаревшего (и правильная инвалидция кэшей)
  • Latency и стоимость

    Обычно latency складывается из:

  • embedding запроса
  • retrieval + reranking
  • prefill + decode у LLM
  • Сильный ответ включает:

  • кэширование эмбеддингов для частых запросов
  • выбор меньшего reranker или отключение rerank при деградации
  • ограничение контекста и длины ответа
  • Разграничение доступа (enterprise)

    Классический риск: модель отвечает пользователю данными, к которым он не должен иметь доступ.

    Практический подход:

  • фильтрация по ACL до retrieval или сразу после
  • tenant-aware индексы
  • аудит выдачи и логирование без PII
  • Как связать RAG с fine-tuning

    Правильная стратегия выбора (часто ожидаемая на интервью):

  • Начать с RAG, если проблема — знания и обновляемость.
  • Добавить SFT/LoRA, если проблема — поведение: формат, стиль, дисциплина tool-calls, следование playbook.
  • Добавить preference tuning (например, DPO), если проблема — предпочтения: полезность, безопасность, краткость.
  • Главное: RAG и fine-tuning часто комбинируются. RAG даёт grounding, fine-tuning делает модель более дисциплинированной в использовании контекста.

    Что нужно уметь рассказать на собеседовании после этой статьи

  • почему RAG нужен и когда он лучше fine-tuning
  • как выбрать чанкинг и метаданные
  • почему hybrid retrieval и reranking дают стабильный прирост
  • как собрать prompt так, чтобы модель цитировала и не галлюцинировала
  • как измерить retrieval и generation раздельно, а затем end-to-end
  • какие продакшен-риски важнее всего: latency/cost, freshness, ACL, prompt injection
  • 5. Системный дизайн LLM-сервисов: масштабирование, стоимость, latency

    System design for LLM services: scaling, cost, latency

    This article connects the earlier parts of the course into a production system design view.

  • From LLM theory, we will reuse the key mechanics that drive performance: tokenization cost, prefill vs decode, and KV cache.
  • From fine-tuning and adaptation, we will treat the model as one interchangeable component (base model + adapters) that must be deployed, versioned, rolled back.
  • From RAG, we will treat retrieval as a separate latency/cost block that must be measured and scaled independently.
  • The goal for interviews: demonstrate that you can design an LLM service under constraints and explain trade-offs in SLO/SLA terms (latency p95, throughput, cost per successful task, reliability).

    What interviewers mean by “LLM system design”

    A typical prompt in an interview sounds like: “Design a customer support assistant for enterprise docs” or “Design an agent that calls internal tools”. The hidden checklist is usually:

  • How you decompose the system into components with clear contracts
  • How you estimate and control latency and cost drivers
  • How you scale safely (traffic spikes, multi-tenancy, GPU limits)
  • How you handle failures (fallbacks, timeouts, circuit breakers)
  • How you measure quality and regressions in production
  • You are rarely expected to know one specific stack, but it is a strong signal if you can discuss realistic serving engines and orchestration.

    References you can safely mention:

  • vLLM (high-throughput serving with paged attention)
  • NVIDIA Triton Inference Server (general inference serving)
  • Hugging Face Text Generation Inference (LLM serving)
  • Kubernetes Documentation (deployment and autoscaling concepts)
  • A mental model of an LLM service

    A robust design treats the LLM as one stage in a request pipeline.

    !High-level components and boundaries of an LLM service

    Core components and their responsibilities

  • API gateway
  • - Authentication and authorization - Rate limiting and quotas (per user, per tenant) - Input validation (size limits, allowed tools)

  • Router and policy layer
  • - Model selection (small vs large, base vs fine-tuned adapter) - Traffic shaping (canary, A/B tests) - Safety policies (moderation, tool allowlists)

  • Retrieval layer (optional, for RAG)
  • - Query embedding - Candidate retrieval (sparse/dense/hybrid) - Reranking

  • Context builder
  • - Token budgeting (how many tokens to allocate to retrieved context vs user prompt) - Deduplication and formatting of citations - Injection hardening (treat retrieved text as data, not instructions)

  • Inference layer
  • - Prefill (encode prompt) - Decode (generate tokens) - Batching, KV cache management, streaming

  • Post-processing
  • - Schema validation (JSON parse, required fields) - Citation checks and guardrails - Retry policy and fallbacks

  • Observability and feedback
  • - Metrics, logs, traces - Sampling for human review - Online quality signals (task success, escalations)

    Latency: what it is made of and how to reduce it

    A useful latency decomposition

    A simple way to discuss end-to-end latency is:

    Where:

  • is the end-to-end time the user experiences
  • is auth, routing, and request validation time
  • is embedding + vector search + reranking (if you use RAG)
  • is the time to process the input prompt tokens through the model
  • is the time to generate output tokens
  • is validation, formatting, and any downstream calls
  • Interviewers like this because it forces you to identify the dominant term instead of “optimizing everything”.

    The LLM-specific driver: prefill vs decode

    From the theory article:

  • Prefill scales mostly with input tokens (prompt + retrieved context).
  • Decode scales mostly with output tokens and is typically sequential token-by-token.
  • KV cache makes decode efficient, but it consumes GPU memory and constrains concurrency.
  • Practical implications:

  • Long RAG contexts can blow up .
  • Unlimited output lengths can blow up .
  • Tight token limits and good context budgeting often improve both latency and cost.
  • Techniques to reduce latency (and what to say on interviews)

    #### Reduce

  • Cache query embeddings for frequent queries.
  • Use a two-stage retrieval design: cheap retriever, selective reranker.
  • Degrade gracefully: if reranker times out, return top-k from retriever.
  • #### Reduce

  • Reduce prompt size: shorter system prompts, structured policies, remove redundancy.
  • Reduce RAG context: fewer chunks, better reranking, summarization of retrieved chunks.
  • Use smaller context window models when the task allows it.
  • #### Reduce

  • Stream tokens to the client so time-to-first-token is small even if completion is long.
  • Limit max output tokens; prefer concise responses by default.
  • Use constrained decoding and schema validation to reduce retries.
  • #### Reduce and

  • Keep the gateway lightweight; do not run heavy NLP inside it.
  • Make tool calls explicit and schema-validated.
  • Use timeouts and circuit breakers for downstream dependencies.
  • Throughput and scaling: how to serve many users on limited GPUs

    Why LLM serving is not “just add replicas”

    LLM inference on GPUs is constrained by:

  • GPU memory (model weights + KV cache)
  • Compute (matrix multiplications)
  • Scheduling efficiency (batching multiple requests)
  • The same GPU can be either:

  • low-latency (small batches, faster per-user response)
  • high-throughput (large batches, better GPU utilization)
  • You must choose based on product SLOs.

    Continuous batching and why it matters

    Traditional batching waits for a batch to fill. In LLM decode, requests have different lengths and arrive continuously.

    Modern LLM servers often use continuous batching (also called dynamic batching): they continuously add new requests into the execution schedule to maximize GPU utilization while decoding.

    This is a strong interview point because it connects directly to cost and throughput.

    You can mention serving engines that implement these ideas:

  • vLLM
  • Hugging Face Text Generation Inference
  • KV cache: the hidden scaling limiter

    KV cache stores attention keys and values for previously processed tokens.

  • Pro: decode becomes much cheaper per new token.
  • Con: KV cache grows with the number of active sequences and their length, consuming GPU memory.
  • Scaling implication:

  • Higher concurrency means more KV cache, which can force smaller batch sizes or fewer parallel users.
  • Longer prompts (RAG) increase KV cache footprint, reducing maximum concurrency.
  • A strong candidate explicitly asks about:

  • expected concurrency
  • average input tokens and output tokens
  • time-to-first-token SLO and completion SLO
  • Horizontal scaling patterns

    #### Separate control plane from data plane

  • Control plane: routing, policies, experiments, quotas.
  • Data plane: high-throughput inference workers.
  • This separation prevents policy logic from becoming a bottleneck and simplifies GPU worker design.

    #### Multi-model routing

    Common routing strategies:

  • By tenant: enterprise tenants get a larger model.
  • By complexity: short/simple requests go to a smaller model.
  • By load: overload triggers fallback to a cheaper model.
  • Key requirement: consistent evaluation so routing does not silently degrade user outcomes.

    #### Queueing and backpressure

    You need a queue when demand exceeds supply.

  • With no queue: you fail fast (many errors) but keep latency stable for admitted traffic.
  • With a queue: you admit more requests but risk violating latency SLO.
  • In interviews, describe explicit policies:

  • max queue time
  • max queue size
  • priority tiers (interactive vs batch jobs)
  • Cost: how to reason about dollars per request

    The main cost drivers

    You can model cost per request as:

  • GPU time (dominant for self-hosted)
  • Retrieval compute (embeddings + reranker)
  • Vector DB and storage
  • Network and logging
  • Human labeling and evaluation (dominant for alignment and high-stakes domains)
  • A simple cost proxy for self-hosted inference is:

    Where:

  • is relative cost
  • is the number of input tokens (prompt + retrieved context)
  • is the number of output tokens
  • This is not a perfect formula, but it is useful to communicate the key lever: tokens drive cost.

    Practical cost levers

  • Reduce tokens
  • - tighter system prompts - better chunk selection (reranking) - summarization of context

  • Reduce model size
  • - model routing (small model by default) - distillation for narrow tasks

  • Increase utilization
  • - continuous batching - right-sized GPU instances - avoid underloaded always-on replicas

  • Reduce retries
  • - schema validation + constrained decoding - better refusal behavior and safer tool calling

    Reliability and failure handling

    LLM services fail in more ways than typical CRUD APIs.

    Failure modes you should mention

  • Model overload: queue growth, timeouts, rising p95
  • Downstream dependency failures: vector DB or reranker unavailable
  • Format failures: invalid JSON, missing fields
  • Safety failures: policy violations, prompt injection through RAG
  • Data leakage: incorrect ACL filtering in retrieval
  • A robust fallback ladder

    A strong answer includes a planned degradation path, for example:

  • If reranker fails, use retriever top-k.
  • If retrieval fails, answer with “insufficient information” and ask clarifying questions.
  • If main model is overloaded, route to a smaller model.
  • If tool calls fail, return partial result with explicit status.
  • The key is to keep behavior predictable and measurable.

    Observability: what to measure in production

    System metrics (engineering health)

  • Latency: p50, p95, p99 for and per-stage latencies
  • Throughput: requests per second, tokens per second
  • Error rates: timeouts, 5xx, validation failures
  • GPU metrics: utilization, memory, KV cache usage
  • Quality metrics (product health)

    From the RAG and fine-tuning articles, you should carry over the idea of component-level evals:

  • Retrieval quality: recall@k on a labeled set
  • Groundedness: citation coverage, unsupported-claim rate
  • Task success: completion rate, escalation rate
  • Safety: disallowed content rate, jailbreak rate
  • Logging without leaking data

    An interview-ready position:

  • Log minimal necessary data.
  • Redact PII.
  • Store prompts and completions behind strict access control.
  • Sample logs for review instead of storing everything.
  • You can mention OWASP guidance for prompt injection as a security anchor:

  • OWASP Prompt Injection
  • RAG-specific system design trade-offs that impact latency and cost

    Token budgeting as a first-class feature

    The context builder should explicitly budget tokens, for example:

  • max retrieved tokens per request
  • max number of chunks
  • per-source caps (avoid one huge document dominating)
  • A good interview answer ties this to prefill cost and to KV cache memory.

    Freshness and indexing pipeline

    Production RAG requires:

  • ingestion schedule
  • document versioning
  • deletion and invalidation
  • tenant and ACL enforcement
  • A common design pattern:

  • store chunks with metadata (source, version, ACL)
  • apply ACL filtering before or immediately after retrieval
  • Deployment and iteration: prompts, adapters, and safe rollouts

    This is where you connect to the fine-tuning article.

    Version everything

  • Base model version
  • Adapter version (LoRA/QLoRA) if used
  • Prompt templates (system/developer prompts)
  • Retrieval configuration (chunking, embedding model, reranker)
  • Evaluation datasets and thresholds
  • Release strategies

  • Canary releases: small % traffic, compare metrics
  • A/B tests: compare end-to-end task success and cost
  • Rollback: immediate switch to previous model/prompt/retrieval config
  • !Safe rollout and rollback for model/prompt/RAG changes

    How to answer a system design prompt in an interview

    A practical structure that consistently works:

  • Clarify requirements
  • - users, traffic, concurrency - latency SLO (time-to-first-token and total) - budget and cost constraints - safety and compliance requirements

  • Propose a baseline architecture
  • - draw components and define boundaries

  • Identify top 2 latency and cost drivers
  • - usually retrieval and prefill/decode

  • Discuss scaling plan
  • - batching strategy - routing and fallbacks - queueing and backpressure

  • Discuss observability and evaluation
  • - what metrics you will watch - how you will catch regressions

  • Discuss security and data governance
  • - ACL, prompt injection, logging policy

    This approach demonstrates that you can build a production service, not just “call an LLM”.

    !A structured whiteboard template for answering LLM system design questions

    6. MLOps для LLM: пайплайны, мониторинг, безопасность, приватность

    MLOps for LLM: pipelines, monitoring, security, privacy

    This article turns the earlier topics into operational practice.

  • From LLM theory, we reuse the production reality: tokens drive latency/cost, and prefill vs decode changes how you measure performance.
  • From fine-tuning, we treat base model + adapters as versioned artifacts that must be reproducible and rollbackable.
  • From RAG, we treat retrieval configuration and corpora as first-class “model inputs” that change behavior and must be tested and monitored.
  • On ML Engineer (LLM) interviews, MLOps is rarely about naming tools. It is about showing you can ship changes safely, measure regressions, and manage risks (security and privacy) under real constraints.

    What “MLOps for LLM” means

    Traditional MLOps focuses on datasets, training code, model registry, and deployment.

    LLM systems add extra moving parts that change behavior without changing weights:

  • prompts and templates
  • RAG corpora, chunking, embedding models, rerankers
  • tool definitions and allowlists
  • decoding parameters and guardrails
  • So, for LLM products, “MLOps” means:

  • reproducibility: you can recreate an output from the exact configuration
  • safe iteration: you can deploy a prompt/RAG/model change with canaries and rollbacks
  • observability: you can see quality and safety drift, not only CPU/GPU metrics
  • governance: you minimize privacy exposure and defend against prompt-based attacks
  • !End-to-end lifecycle: from artifacts to evaluation, release, monitoring, and rollback

    Artifacts to version in LLM projects

    A strong interview answer starts with: what exactly is versioned.

    Core artifacts

  • Base model: name, provider, exact revision or digest.
  • Adapters (LoRA/QLoRA): adapter weights, rank settings, merge strategy.
  • Training data snapshot: immutable pointer (hash, commit, storage URI).
  • Prompts: system/developer templates, tool instructions, output schemas.
  • RAG configuration: chunking rules, embedding model, ANN index params, reranker model.
  • Document corpus: source list, ingestion time, per-document version, deletion policy.
  • Eval sets: prompts, ground truth or rubrics, safety test suite.
  • Why this matters

    Without full versioning, you cannot answer:

  • Why did output change?
  • Which release introduced the regression?
  • Can we roll back in minutes?
  • Tooling can vary, but the concepts are stable. Common anchors:

  • model and experiment tracking: MLflow
  • containerized deployment practices: Kubernetes Documentation
  • CI/CD becomes CI/CD/E: integration, delivery, evaluation

    For LLM systems, evaluation is not optional, because prompts and corpora can change behavior as much as weights.

    A practical pipeline looks like:

  • CI: code quality, unit tests, security checks
  • CD: deploy the candidate config behind a safe rollout
  • E: run offline eval gates and only then scale traffic
  • What to test in CI

    Keep tests cheap and deterministic.

  • unit tests for prompt assembly and token budgeting
  • schema validation tests for outputs (JSON parsing, required fields)
  • contract tests for tool calls (allowed tool names, argument schema)
  • retrieval smoke tests (index reachable, ACL filter applied)
  • Important LLM-specific point: many failures are format failures, so validating outputs is often higher ROI than “improving the prompt”.

    Offline eval gates before release

    Offline eval is your “unit test suite for behavior”. It should be component-aware:

  • retrieval eval: recall@k on labeled queries
  • generation eval: groundedness, format compliance, refusal correctness
  • end-to-end eval: task success rate on realistic scenarios
  • A good gate is not “the average score improved”, but “no critical regressions”. Typical gating rules:

  • format compliance must not drop below a threshold
  • unsafe output rate must not increase
  • cost per successful task must not exceed budget
  • If you use LLM-as-a-judge, treat it as a heuristic, and keep a small human-reviewed set for calibration.

    Release strategies: prompts, RAG, and models

    LLM releases are frequent and risky because changes are easy to ship.

    Canary and A/B testing

    A robust approach:

  • canary: route a small percentage of traffic to the new version
  • A/B: compare task success, escalation rate, safety metrics, and cost
  • rollback: route traffic back instantly using versioned configs
  • Track releases separately for:

  • prompt-only changes
  • retrieval-only changes (corpus updates, chunking updates)
  • model/adapters updates
  • This separation speeds up incident response: you can roll back the specific layer that broke.

    Shadow mode

    For high-risk changes, use shadow traffic:

  • run the new pipeline in parallel
  • do not show responses to users
  • log only minimal data (with redaction)
  • compute quality deltas offline
  • Monitoring: from system health to product quality

    In interviews, explicitly separate:

  • system metrics (is the service healthy)
  • quality metrics (is the product correct and safe)
  • System metrics

    Common must-haves:

  • latency p50/p95/p99, plus stage breakdown (retrieval, prefill, decode)
  • throughput: requests/sec and tokens/sec
  • error rate: timeouts, 5xx, tool failures, validation failures
  • GPU utilization and memory (KV cache pressure)
  • For distributed tracing and consistent metrics, common practice is:

  • OpenTelemetry
  • Quality metrics

    You need metrics that correlate with user outcomes.

  • task success rate (goal completion)
  • groundedness or citation coverage (for RAG)
  • hallucination indicators (unsupported claims rate on sampled traffic)
  • escalation rate to humans
  • refusal rate and refusal correctness
  • tool-call success rate and tool-call policy violations
  • A strong signal on interviews: you propose slice-based monitoring.

  • by tenant
  • by language
  • by document source
  • by query type (billing, troubleshooting, policy)
  • This catches regressions that averages hide.

    !What a good LLM production dashboard tracks

    Data to log, and what not to log

    You need logs to debug quality issues, but logs can become a privacy liability.

    A practical policy:

  • log structured metadata by default (token counts, model version, retrieval doc ids)
  • sample full prompts/responses for review, with strict access controls
  • redact PII before storage
  • use retention limits and deletion workflows
  • Feedback loops: how production improves the model

    LLM systems improve primarily through data and eval iteration.

    Typical feedback pipeline:

  • collect failure cases (format errors, low user rating, escalations)
  • label the failure reason (retrieval miss, wrong chunk, model error, tool failure)
  • convert to targeted assets:
  • - new eval cases - retrieval improvements (chunking, metadata, reranker) - prompt fixes - fine-tuning data (SFT) or preference pairs (DPO)

    A key interview point: you do not “fine-tune first”. You instrument first, then decide whether errors are retrieval, prompting, tools, or model behavior.

    Security for LLM services

    LLM security is broader than “content moderation”. It includes:

  • prompt injection
  • tool abuse
  • data exfiltration via retrieval
  • supply-chain and secrets exposure
  • Prompt injection and untrusted context

    RAG introduces untrusted text into the prompt. Documents can contain instructions like “ignore previous rules”.

    Defenses you should mention:

  • treat retrieved text as data, not instructions (clear prompt separation)
  • do not allow arbitrary tool execution from retrieved text
  • strict output schemas and post-validation
  • document ingestion scanning for suspicious patterns
  • A widely cited starting point:

  • OWASP Prompt Injection
  • Tool calling security

    If your LLM can call tools, it becomes an orchestrator.

    Production controls:

  • tool allowlist per route and per tenant
  • schema validation for tool arguments
  • server-side authorization checks (never trust the model)
  • timeouts, circuit breakers, idempotency keys
  • audit logs for tool calls
  • Multi-tenancy and ACL enforcement

    For enterprise RAG, the classic failure is answering with another tenant’s data.

    Controls:

  • enforce ACL filtering at retrieval time using metadata
  • tenant-aware indexes or strict filters
  • log retrieved document ids and enforce “deny by default”
  • Privacy: PII, retention, and compliance-ready design

    Privacy is not only legal compliance; it is also incident prevention.

    Core principles

  • data minimization: collect only what you need
  • purpose limitation: do not reuse data outside the stated goal
  • access control: least privilege for prompts and logs
  • retention limits: delete data on schedule
  • Practical measures for ML Engineers

  • PII detection and redaction before storing prompts
  • separate storage for “debug samples” with tighter permissions
  • opt-out and deletion workflows for user data
  • avoid training on production conversations unless you have explicit policy and filtering
  • On interviews, explicitly distinguish:

  • using data to serve the user now (inference)
  • using data to improve the system later (training, eval)
  • The second requires stronger governance.

    Incident response for LLM regressions

    Interviewers like candidates who can run a predictable response process.

    A practical playbook:

  • detect: alert on spikes in unsafe output, format failures, or p95 latency
  • triage: isolate the layer (prompt vs retrieval vs model vs tools)
  • mitigate: rollback configs, disable reranker, shorten context, route to fallback model
  • recover: write a postmortem, add regression eval cases, tighten gates
  • A strong answer mentions safe degradation from the system design article: keep behavior predictable under partial failures.

    What to say on interviews: a compact checklist

    If asked “How would you operationalize this LLM system?”, cover:

  • versioning of model, adapters, prompts, RAG config, corpora, eval sets
  • CI tests for schemas, tool contracts, and retrieval safety
  • offline eval gates and canary/A-B releases
  • monitoring split into system health and quality, with slice analysis
  • security controls for prompt injection, tool calls, and ACL
  • privacy controls for logging, redaction, retention, and access
  • rollback and incident response plan
  • This demonstrates you can ship LLM features reliably, not just build a prototype.

    7. Практика собеседований: coding, кейсы, резюме, поведенческие вопросы

    Практика собеседований: coding, кейсы, резюме, поведенческие вопросы

    Эта статья — про практику прохождения интервью на ML Engineer (LLM): как подготовить резюме и рассказ о проектах, как тренировать coding и кейсы, как отвечать на поведенческие вопросы и как собрать всё в воспроизводимый план тренировок.

    Связь с предыдущими темами курса:

  • Из статьи про формат интервью и карту компетенций — берём понимание, какие сигналы вы должны показать в каждом этапе.
  • Из теории LLM — используем терминологию и причинно-следственные объяснения (токены, prefill/decode, KV cache) для ответов уровня “уверенно”.
  • Из fine-tuning — учимся превращать “мы дообучили” в конкретный рассказ: почему выбран метод, как мерили прирост, как выкатывали.
  • Из RAG — учимся защищать архитектуру, оценку retrieval и безопасность (prompt injection).
  • Из system design и MLOps — переносим разговор в язык SLO, стоимости, релизов, мониторинга и откатов.
  • !Пайплайн подготовки: что тренировать и как превращать разбор в улучшения

    Как интервьюер оценивает вас на практике

    Интервью редко похоже на экзамен “правильно/неправильно”. Чаще это проверка инженерной зрелости: как вы думаете, как снижаете риски, как проверяете гипотезы, как действуете при неопределённости.

    Полезно держать в голове простую модель оценки:

  • Сигналы доверия: вы предлагаете измерения, ограничения, тесты, фолбэки, план релиза.
  • Сигналы владения темой: вы объясняете “почему так”, а не только “что сделали”.
  • Сигналы продакшен-опыта: вы говорите про latency p95, стоимость на запрос, инциденты, мониторинг качества.
  • Резюме под ML Engineer (LLM)

    Цель резюме — не перечислить технологии, а быстро доказать, что вы умеете доводить LLM-фичи до продакшена и улучшать качество измеримо.

    Структура резюме, которая хорошо проходит скрининг

  • Заголовок и короткий профиль (3–5 строк)
  • - роль и домен (например, “ML Engineer, LLM/RAG, enterprise search”) - 1–2 ключевых достижения с метриками
  • Опыт
  • - 2–4 проекта, где вы были владельцем результата - в каждом: проблема, ограничения, решение, метрики, релиз
  • Навыки
  • - языки/стек - LLM-навыки (RAG, eval, serving) - MLOps (CI/CD/E, мониторинг)
  • Публикации/опенсорс (если есть)
  • Как описывать проекты: формула одной строки

    Хороший буллет в резюме обычно отвечает на 4 вопроса: что, зачем, как, чем измерили.

    Пример структуры:

  • Сделал(а) X для Y с помощью Z, получил(а) метрика/эффект.
  • Примеры “LLM-стиля” (как шаблоны, не как универсальные истины):

  • “Спроектировал(а) RAG для базы знаний (hybrid retrieval + rerank), поднял(а) task success с 0.62 до 0.78, снизил(а) unsupported-claim rate на 35% на offline eval, внедрил(а) канареечные релизы и откат конфигов.”
  • “Оптимизировал(а) инференс: ограничение контекста, батчинг и стриминг, снизил(а) latency p95 на 28% и стоимость на успешный ответ на 18%.”
  • “Дообучил(а) модель LoRA SFT под формат строгого JSON + пост-валидация, увеличил(а) schema pass rate с 91% до 98% на регрессионном наборе.”
  • Красные флаги в резюме, которые часто режут на старте

  • “Работал(а) с LLM” без указания какая задача и какая метрика.
  • “Улучшил(а) качество” без того, как мерили (offline/online) и что именно улучшилось.
  • Список инструментов длиннее списка результатов.
  • Портфолио историй: что говорить, когда вас просят “расскажите про проект”

    Вам нужно 3–5 историй, которые перекрывают разные зоны карты компетенций:

  • RAG-проект (retrieval, чанкинг, оценка, безопасность)
  • Fine-tuning/адаптация (SFT/LoRA или preference)
  • Продакшен-инференс (latency/cost, батчинг, фолбэки)
  • MLOps-инцидент (регрессия, откат, улучшение гейтов)
  • Кросс-функциональная история (требования, конфликт, влияние)
  • Шаблон ответа на 2–4 минуты

  • Контекст: что за продукт и кто пользователь.
  • Ограничения: SLO, бюджет, приватность, доступы, качество.
  • Решение: архитектура и ключевые trade-offs.
  • Оценка: offline метрики, как устроили тест-набор.
  • Прод: как выкатывали (канарейка/A-B), мониторинг, откаты.
  • Итоги: что улучшили и чему научились.
  • Важно: не прячьте неопределённость. Хороший сигнал — когда вы называете риски и как их закрывали.

    Coding-интервью для ML Engineer (LLM)

    Coding на эту роль редко про “чистый LeetCode” в вакууме. Чаще это одна из двух форм:

  • прикладной Python: обработка данных, интерфейсы, тестируемость, производительность
  • продакшен-мини-задача: кусок пайплайна (retrieval, prompt assembly, валидация, батчинг)
  • Типовые темы задач (и что в них реально проверяют)

  • Обработка текстов и чанкинг
  • - корректность на краях (пустые строки, код, таблицы) - контроль размера (например, лимиты токенов или символов)
  • Поиск и ранжирование
  • - top-k, дедупликация, фильтры по метаданным (например, ACL/tenant)
  • Оценка и метрики
  • - recall@k, precision@k, простые агрегаты, разрезы
  • Надёжность генерации
  • - валидация JSON, ретраи, timeouts, stop conditions
  • Производительность
  • - батчинг, кэширование, работа с большими объёмами

    Как отвечать в coding: алгоритм поведения

  • Уточнить вход/выход, ограничения, размеры.
  • Проговорить подход и сложность “на пальцах”.
  • Написать чистое решение.
  • Добавить обработку ошибок и крайних случаев.
  • Добавить минимальные тесты.
  • Если есть время: улучшить читабельность и наблюдаемость.
  • Мини-шаблоны, которые дают сильные сигналы

    #### Пример: валидация строгого JSON + ретрай

    Что этот кусок демонстрирует на интервью:

  • вы не доверяете модели на слово
  • вы делаете поведение воспроизводимым (лимиты ретраев)
  • вы закладываете диагностируемую ошибку
  • #### Пример: recall@k для retrieval eval

    Что важно проговорить словами:

  • как собран relevant (ручная разметка, golden set)
  • почему recall@k не заменяет end-to-end метрики
  • Частые ошибки на coding и как их избежать

  • Писать код “на счастливый путь” без проверок.
  • Игнорировать ограничения размера данных.
  • Не уметь объяснить сложность и узкие места.
  • Смешивать ответственность функций (всё в одной).
  • Кейс-интервью: продуктовые и технические задачи

    Под “кейсом” могут понимать разное:

  • продуктовый кейс: “какой подход выбрать и как измерить успех”
  • диагностика проблемы: “почему стало хуже и что делать”
  • дизайн эксперимента: “как проверить гипотезу”
  • Универсальная структура ответа на кейс

  • Уточнение цели: что значит “хорошо” и какая метрика успеха.
  • Уточнение ограничений: latency/cost, приватность, безопасность, доступы.
  • Базовый baseline: самый простой работающий вариант.
  • План улучшений: 2–3 итерации, что меряем на каждой.
  • Риски и защита: фолбэки, мониторинг, откаты.
  • Пример кейса: “RAG-ассистент начал чаще галлюцинировать”

    Хороший ход рассуждений:

  • Разделить на классы причин:
  • - retrieval не приносит нужные факты - контекст приносит мусор или конфликтующие источники - промпт не заставляет модель опираться на источники - изменения в корпусе (freshness, дубликаты, неверные ACL)
  • Предложить быстрые проверки:
  • - offline выборка запросов с разметкой “есть ли ответ в топ-k” - метрика groundedness на сэмпле (поддержаны ли утверждения цитатами) - срезы по источникам документов
  • Митигировать до полного решения:
  • - сократить контекст, включить rerank, включить “I don’t know” - временно отключить подозрительный источник или версию корпуса

    Связь с материалами курса:

  • RAG-оценка и recall@k — из статьи про RAG
  • стадийная латентность и деградации — из system design
  • версионирование корпуса и откаты — из MLOps
  • System design-часть: как тренироваться именно под LLM

    Даже если у вас отдельное system design-интервью, в реальности его “соль” — как вы переводите LLM в надёжный сервис.

    Что вас почти наверняка спросят

  • Как устроена латентность и что доминирует.
  • Что вы будете кэшировать.
  • Что будет при деградации: reranker упал, векторная база недоступна, модель перегружена.
  • Как защищаетесь от prompt injection.
  • Как выкатываете изменения промпта/корпуса/модели.
  • Заготовка для белой доски

  • Границы: клиент, API gateway, policy/router.
  • RAG слой: embedding, retrieval, rerank.
  • Context builder: budgeting, формат цитат.
  • Inference: батчинг, стриминг.
  • Post-processing: валидация формата.
  • Observability: метрики системы и качества.
  • Если интервьюер уходит в детали, выигрышно звучат привязки к прод-реальности:

  • “контекст увеличивает prefill и давит на KV cache, поэтому бюджетирование токенов — обязательный компонент”
  • “изменения корпуса — это изменения поведения, их надо версионировать и прогонять через eval-гейты”
  • Поведенческие вопросы: как отвечать без воды

    Поведенческие интервью проверяют не “приятность”, а предсказуемость в сложных ситуациях: конфликт, дедлайн, ответственность, неопределённость.

    STAR как инженерный формат

    STAR помогает не утонуть в деталях:

  • Situation: контекст
  • Task: ваша задача и критерий успеха
  • Action: что вы сделали (именно вы)
  • Result: результат и чему научились
  • Главный секрет: в Action должны быть технические решения и trade-offs, а в Resultметрики и последствия.

    Набор историй, который стоит подготовить заранее

  • Ошибка/инцидент в проде: что сломалось, как откатили, что добавили в гейты.
  • Конфликт с продуктом/безопасностью: как договорились на метриках и рисках.
  • Проект в неопределённости: как сузили задачу до MVP.
  • Снижение стоимости/латентности: какие рычаги использовали.
  • Качество данных/разметки: как построили контроль качества.
  • Частые ловушки в поведенческих ответах

  • “Мы сделали” без ясного вклада.
  • Нет результата в измеримых терминах.
  • Много оправданий и мало действий.
  • Тренировки: как превратить подготовку в систему

    План на 2 недели (если времени мало)

  • День 1–2: собрать 3–5 историй проектов, написать по шаблону.
  • День 3–5: coding-практика по 60–90 минут в день (прикладные задачи + тесты).
  • День 6: один mock по system design (45–60 минут) + разбор.
  • День 7: поведенческие истории (1–2 часа, проговорить вслух).
  • День 8–12: цикл “mock → разбор → фиксы” (2–3 итерации).
  • День 13–14: финальная полировка резюме, короткие ответы на частые вопросы.
  • Как разбирать mock-интервью

    Фиксируйте не “ошибки”, а паттерны:

  • Где вы не назвали метрику.
  • Где вы не уточнили ограничения.
  • Где вы не разделили проблему на компоненты (retrieval vs generation).
  • Где вы не предложили план деградации.
  • Полезные источники для тренировки формата интервью

  • Cracking the Coding Interview (структура подготовки к coding)
  • OpenTelemetry Documentation (как говорить про трассировку и метрики)
  • OWASP Prompt Injection (как аргументировать угрозы и защиты)
  • Итог: что должно получиться после этой статьи

    К моменту, когда вы “натренировались”, у вас должны быть:

  • Резюме с 2–4 сильными LLM-проектами и метриками.
  • Портфолио из 3–5 историй, которые вы уверенно рассказываете за 2–4 минуты.
  • Устойчивый алгоритм прохождения coding: уточнения → решение → крайние случаи → тесты.
  • Шаблон ответа на кейсы и system design с SLO, оценкой, деградациями и безопасностью.
  • Подготовленные STAR-истории про ответственность, конфликты, инциденты и неопределённость.