К обычному разбору
Тренировка по собеседованиюТехническое собеседованиеMirai2026-05-07

Mirai: LLM inference, RL и distributed training

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

Шагов
6
Вопросов
6
Задач
0
1Вопрос10 мин

Continuous batching в LLM inference

Что такое continuous batching и зачем он нужен в inference больших языковых моделей?

Ответьте без подсказки

Сначала проговорите ответ вслух или тезисами.

Запишите черновик

Формулы, план решения, риски и примеры.

Сравните с разбором

Откройте разбор только после своей попытки.

Показать разбор

Короткий ответ

Continuous batching динамически добавляет и удаляет requests из batch на decode steps, повышая GPU utilization без ожидания завершения всего batch.

Подробный разбор

В обычном batching сервер может ждать, пока наберется batch, и затем обрабатывать все запросы вместе. В autoregressive LLM decode запросы имеют разную длину, поэтому часть batch быстро заканчивается, а GPU начинает простаивать.

Continuous batching работает на уровне итераций decode: завершенные sequence удаляются, новые sequence добавляются, scheduler поддерживает плотный batch активных токенов. Это повышает throughput и utilization, но требует аккуратного KV cache management, fairness, admission control и trade-off с latency.

В ответе хорошо упомянуть, что prefill и decode имеют разные профили нагрузки, а batching policy может отличаться для них.

Типичные ошибки

  • Описывать только static batching.
  • Не упоминать разные длины запросов.
  • Забыть про KV cache management.

Как сказать на собеседовании

  • Скажи "decode step scheduler".
  • Отдельно назови throughput/latency trade-off.
2Вопрос12 мин

Systematic exploration в RL

Что такое systematic exploration в reinforcement learning, зачем оно нужно и почему это проблема?

Ответьте без подсказки

Сначала проговорите ответ вслух или тезисами.

Запишите черновик

Формулы, план решения, риски и примеры.

Сравните с разбором

Откройте разбор только после своей попытки.

Показать разбор

Короткий ответ

Systematic exploration - это управляемый выбор действий для изучения неизвестных, но потенциально полезных областей, а не случайный шум вокруг greedy policy.

Подробный разбор

В RL агент видит данные, которые сам генерирует. Если он слишком рано станет greedy, он может никогда не узнать про хорошие действия, которые изначально кажутся плохими или редко встречаются. Systematic exploration пытается исследовать пространство действий с учетом uncertainty и потенциальной ценности информации.

Примеры: epsilon-greedy как базовый вариант, UCB, Thompson sampling, count-based exploration, curiosity/intrinsic rewards, ensembles и posterior sampling. Выбор зависит от размера action space, horizon, стоимости ошибки и наличия контекстных признаков.

Проблема в том, что exploration стоит reward прямо сейчас и может быть небезопасным. В production нужны constraints, offline evaluation, simulator или ограниченный rollout.

Типичные ошибки

  • Считать random exploration достаточным.
  • Не учитывать стоимость небезопасных действий.
  • Не связывать exploration с uncertainty.

Как сказать на собеседовании

  • Назови UCB/Thompson/epsilon-greedy и их ограничения.
  • Скажи про safety constraints в production.
3Вопрос14 мин

UCB при большом action space

Почему UCB может быть плохой идеей при 1000 actions и горизонте 2000 или 20 шагов? Что делать вместо этого?

Ответьте без подсказки

Сначала проговорите ответ вслух или тезисами.

Запишите черновик

Формулы, план решения, риски и примеры.

Сравните с разбором

Откройте разбор только после своей попытки.

Показать разбор

Короткий ответ

Tabular UCB плохо масштабируется: нужно много pulls на каждую руку. При большом числе actions нужны priors, contextual sharing, embeddings, Thompson sampling или ограничение candidate set.

Подробный разбор

UCB добавляет optimistic bonus для малоисследованных действий. При 1000 arms и horizon 2000 на каждую руку приходится очень мало наблюдений, поэтому оценки шумные, а exploration budget огромный. При horizon 20 tabular exploration почти бессмысленен: все руки попробовать невозможно.

Нужны способы переносить информацию между действиями: contextual bandits, embeddings действий, model-based priors, clustering arms, candidate generation, Thompson sampling с информативным prior, offline pretraining или simulator. Если actions имеют структуру, ее нужно использовать; если структуры нет, задача статистически плохо определена.

В production также можно ограничить exploration безопасными top-k кандидатами и использовать conservative rollout.

Типичные ошибки

  • Говорить "просто используем UCB" без оценки horizon/action count.
  • Не отличать 2000 и 20 шагов.
  • Не предложить contextual/generalization подход.

Как сказать на собеседовании

  • Сразу посчитай budget per arm.
  • Скажи, что нужна структура действий или prior.
4Вопрос12 мин

Зачем LoRA вместо полного fine-tuning

Почему нельзя просто полностью fine-tune всю LLM? Что выигрывает LoRA и как это влияет на batch size?

Ответьте без подсказки

Сначала проговорите ответ вслух или тезисами.

Запишите черновик

Формулы, план решения, риски и примеры.

Сравните с разбором

Откройте разбор только после своей попытки.

Показать разбор

Короткий ответ

LoRA обучает меньше параметров, поэтому сильно снижает optimizer/gradient memory; максимальный batch size часто может быть больше, чем при full fine-tuning.

Подробный разбор

Full fine-tuning обновляет все веса модели, поэтому нужно хранить gradients и optimizer states для огромного числа параметров. Для Adam это особенно дорого: кроме весов появляются моменты и градиенты.

LoRA замораживает базовую модель и обучает только low-rank adapters. Forward все еще требует активации, но trainable parameters и optimizer state намного меньше. Поэтому при прочих равных можно увеличить batch size или обучаться на меньших GPU.

Но LoRA не бесплатна: качество может быть хуже для сильного domain shift, а inference/serving зависит от того, мерджим ли adapters в базовые веса или переключаем их динамически.

Типичные ошибки

  • Считать, что LoRA уменьшает activation memory до нуля.
  • Не упомянуть optimizer states.
  • Гарантировать качество full fine-tuning при любом domain shift.

Как сказать на собеседовании

  • Назови Adam states и trainable parameter count.
  • Отдельно скажи про activation memory.
5Вопрос8 мин

FP16 vs BF16

В чем разница между FP16 и BF16 и почему BF16 часто устойчивее для обучения?

Ответьте без подсказки

Сначала проговорите ответ вслух или тезисами.

Запишите черновик

Формулы, план решения, риски и примеры.

Сравните с разбором

Откройте разбор только после своей попытки.

Показать разбор

Короткий ответ

BF16 имеет 8 бит exponent как FP32 и меньше mantissa; FP16 имеет больше mantissa, но намного меньший dynamic range. Поэтому BF16 реже ловит overflow/underflow.

Подробный разбор

FP16 и BF16 занимают 16 бит, но распределяют их по-разному. FP16 хранит больше precision в mantissa, но exponent меньше, поэтому dynamic range ограничен. BF16 сохраняет exponent как у FP32, поэтому лучше переносит большие и маленькие значения, но имеет меньше точности в mantissa.

Для обучения нейросетей dynamic range часто важнее небольшой дополнительной точности, потому что gradients/activations могут сильно различаться по масштабу. Поэтому BF16 часто позволяет обучать без loss scaling или с меньшим количеством numerical issues.

На inference выбор зависит от hardware support, качества, throughput и требований модели.

Типичные ошибки

  • Сказать, что BF16 всегда точнее FP16.
  • Не различать mantissa и exponent.
  • Не связать формат с overflow/underflow.

Как сказать на собеседовании

  • Сравни dynamic range и precision.
  • Упомяни loss scaling для FP16.
6Вопрос15 мин

Вопрос про production ML

Чем отличаются FSDP, tensor parallelism и pipeline parallelism при обучении больших моделей?

Ответьте без подсказки

Сначала проговорите ответ вслух или тезисами.

Запишите черновик

Формулы, план решения, риски и примеры.

Сравните с разбором

Откройте разбор только после своей попытки.

Показать разбор

Короткий ответ

FSDP шардирует параметры/градиенты/optimizer states, tensor parallelism делит операции внутри слоя, pipeline parallelism делит последовательность слоев между устройствами.

Подробный разбор

FSDP решает прежде всего проблему памяти: параметры, градиенты и optimizer states хранятся шардами на разных GPU, а нужные веса собираются на время computation. Это удобно, когда модель почти помещается по compute, но не помещается по optimizer/parameter memory.

Tensor parallelism делит матричные операции внутри слоя между GPU, поэтому помогает, когда один слой слишком большой или нужно ускорить compute конкретных блоков. Pipeline parallelism размещает разные слои на разных устройствах и прогоняет microbatches через pipeline; его риск - bubbles и сложность балансировки.

На практике техники комбинируют. Выбор зависит от размера модели, interconnect, batch size, activation memory, optimizer, sequence length и tolerable communication overhead.

Типичные ошибки

  • Смешивать data parallel и tensor parallel.
  • Не упоминать optimizer states в FSDP.
  • Забыть про pipeline bubbles.

Как сказать на собеседовании

  • Объясни каждую стратегию через "что именно делится".
  • Назови communication overhead как главный trade-off.