Вопросы по LLM: от токенизации до RL
Банк из 51 вопроса собеседования по LLM — токенизация, внимание, KV-кэш, MoE, масштабирование, распределённое обучение, SFT, LoRA, RLHF, DPO, GRPO, инференс, квантование, RAG, агенты и оценка — плюс пять задач на оценку памяти и вычислений с подробным разбором.
Зачем это нужно
Заголовок раздела «Зачем это нужно»На LLM-позициях теоретическая секция уходит в ступени 4–9 курса: токенизатор и внимание, KV-кэш, DPO против PPO, медленный decode. Сильные интервьюеры добавляют вопрос другого типа: «прикиньте, сколько памяти нужно, чтобы обучить 7B-модель». Он проверяет, умеете ли вы превратить знания в числа.
Формат — как в банке 11.3.2: 51 вопрос с ответом на 1–2 минуты, частой ошибкой и ссылкой на урок. Тренируйтесь так же: вслух, с таймером, сначала без подсказки, ошибки — в тетрадь ошибок, карточки — на повторение. В конце — пять задач на оценку «на салфетке»оценка «на салфетке»EN back-of-the-envelope estimateБыстрый расчёт порядка величины по нескольким формулам и округлённым числам: нагрузка, память, скорость, число GPU, деньги. Точность — в пределах 1.5–2 раз; уточняется замером. с разбором: 5–10 минут с листком и калькулятором.
Токенизация
Заголовок раздела «Токенизация»1. Зачем LLM подслова, а не буквы или слова? Как выбирают размер словаря?
Ответ
Буквы — короткий словарь, но длинные последовательности: внимание дороже, KV-кэш больше, генерация медленнее. Слова — огромный словарь и неизвестные слова. Подслова — компромисс: частые слова целиком, редкие из кусков. Цена большого словаря — эмбеддинги и softmax по на каждом токене: у Qwen3-0.6B это около четверти параметров. Поэтому большие модели берут 100–200 тысяч токенов, учебные — тысячи.
Частая ошибка: забыть о цене словаря для маленькой модели.
Урок: 4.2.1
2. Как работает BPE? Что такое byte-level BPE?
Ответ
Обучение: начать с символов или байтов, посчитать пары соседей, самую частую склеить в новый токен, записать правило
слияния и повторять, пока словарь не дорастёт до . Кодирование применяет правила в том же порядке. Byte-level BPE
стартует с 256 байтов UTF-8, поэтому любой текст кодируется без <unk>: так у GPT-2, Llama 3, Qwen и
DeepSeek. Перед обучением текст режут регулярным выражением, чтобы не склеивать слово с пунктуацией.
Частая ошибка: забыть правило при равных частотах — без детерминированного правила два запуска дадут разные словари.
Урок: 4.2.2
3. Почему русский текст стоит больше токенов, чем английский?
Ответ
Словарь учат на корпусе, и частые сочетания получают свои токены. Русского в корпусе мало, морфология богаче, кириллическая буква — 2 байта. В замере курса один и тот же абзац у GPT-4o — 69 токенов на русском против 52 на английском, у GPT-2 — 303 против 53. Следствия: запрос к API дороже, в контекст влезает меньше текста, «букв в секунду» меньше при той же скорости в токенах. Китайский у Qwen и DeepSeek кодируется не хуже английского.
Частая ошибка: считать токены правилом «токен ≈ 4 символа» — оно придумано для английского.
Урок: 4.2.1
4. Можно ли сравнивать perplexity двух моделей с разными токенизаторами?
Ответ
Нет. PerplexityперплексияEN perplexity и loss считаются на токен, а токены разных словарей несут разное количество текста: модель с крупными токенами получит больший loss на токен, даже если предсказывает текст лучше. Честно сравнивать bits per byte (BPB)бит на байт (BPB)EN bits per byte (BPB)Loss, пересчитанный на байт исходного текста; в отличие от perplexity, его можно сравнивать между моделями с разными токенизаторами.: сумму cross-entropy по тексту делят на и на число байтов.
Частая ошибка: сравнивать loss моделей разных семейств.
Внимание и архитектура
Заголовок раздела «Внимание и архитектура»5. Напишите формулу self-attention. Зачем причинная маска?
Ответ
, где , , . Запрос — «что ищу», ключ — «что предлагаю», значение — «что отдаю». Причинная маска ставит выше диагонали: позиция не видит будущее. Иначе модель на обучении подсматривает ответ, а на генерации будущего ещё нет. Маска даёт обучающих примеров за один проход.
Частая ошибка: запретить и диагональ — тогда у первой позиции не останется ни одного ключа, и softmax даст nan.
Урок: 4.4.2
6. Зачем делить на ?
Ответ
Если компоненты и независимы с дисперсией 1, то . При стандартное отклонение оценок около 11, отдельные доходят до ±25. Softmax от таких чисел почти one-hot, его производные почти нулевые, и голова «залипает» на фаворите. Деление на возвращает дисперсию к 1.
Частая ошибка: «чтобы числа были меньше» — без дисперсии и насыщения softmax.
Урок: 4.4.2
7. Зачем много голов внимания, если параметров столько же, сколько у одной большой?
Ответ
Ширину делят на голов по . Параметров в слое те же , FLOPs на оценки те же. Зато каждая голова строит своё распределение внимания: одна смотрит на соседний токен, другая — на дополнение глагола, пара голов в разных слоях образует индукционную голову. Одна большая голова дала бы одно распределение на позицию. Головы ещё и дублируют друг друга — на этом построены MQA и GQA.
Частая ошибка: утверждать, что больше голов — больше параметров.
Урок: 4.4.3
8. Какова сложность внимания по длине и что делает FlashAttention?
Ответ
Вычисления — , наивная память — на матрицу весов: у Llama 3 8B на 8K токенов это 4 ГиБ на слой. FlashAttentionFlashAttentionEN FlashAttentionТочный алгоритм внимания (Tri Dao и соавт., 2022), который не хранит матрицу n×n в видеопамяти: Q, K, V обрабатываются блоками в SRAM с online softmax, а в обратном проходе блоки пересчитываются. Память — O(n) вместо O(n²). Версии 2 и 3 улучшают параллелизм и используют возможности Hopper. считает внимание блоками в быстрой памяти SRAM с онлайн-softmax («бегущие» максимум и сумма экспонент) и никогда не пишет матрицу в видеопамять. Ответ точный, память , скорость выше за счёт меньшего числа обращений к памяти. FLOPs остаются — от них уходят разреженным и линейным вниманием.
Частая ошибка: называть FlashAttention приближением.
9. Зачем позиционное кодирование и как работает RoPE?
Ответ
Внимание не различает порядок токенов: без позиций «кот съел мышь» и «мышь съела кот» неразличимы. RoPEротационные позиционные эмбеддинги (RoPE)EN rotary position embedding (RoPE)RoPE предложен в Китае (Су Цзяньлинь и соавторы, компания Zhuiyi). Сейчас используется почти во всех LLM. поворачивает пары координат запроса и ключа на углы , где — позиция, . Поскольку , оценка зависит только от расстояния. Плюсы: точная относительность, ноль параметров, ключ поворачивают один раз и кладут в кэш, оценка в среднем затухает с расстоянием.
Частая ошибка: думать, что RoPE сам экстраполирует на длины больше обучающей. Не экстраполирует.
Урок: 4.5.2
10. Как расширить контекст модели, обученной на 4K токенов?
Ответ
За обучающей длиной медленные пары RoPE видят углы, которых не было при обучении. Position Interpolation делит позиции на : все углы в знакомом диапазоне, но соседние токены хуже различимы. NTK-aware увеличивает базу: быстрые частоты почти не меняются, медленные интерполируются. YaRN решает для каждой пары по числу её оборотов и добавляет температуру внимания. Всем методам нужно короткое дообучение на длинных текстах.
Частая ошибка: считать, что достаточно поменять max_position_embeddings в конфиге.
Урок: 5.5.1
11. Чем блок Llama или Qwen отличается от трансформера 2017 года?
Ответ
Pre-Norm вместо Post-Norm (стабильное обучение глубоких сетей), RMSNorm вместо LayerNorm (дешевле), RoPE вместо таблицы позиций, SwiGLU вместо GELU с шириной около –, GQA вместо MHA (кэш в 4 раза меньше), без смещений и без dropout в претрейне. DeepSeek-V3 сохранила скелет, но заменила внимание на MLA, а FFN — на MoE.
Частая ошибка: перечислить изменения, не сказав, что даёт каждое.
Урок: 4.5.3
12. Почему почти все LLM — decoder-only?
Ответ
Сигнал с каждой позиции: из 1000 токенов decoder-only получает 999 примеров, BERT — около 150. Один интерфейс «продолжи текст» для всех задач. Простота, под которую выросла вся инфраструктура. Причинная маска не меняет состояния старых токенов, поэтому работает KV-кэш. Но энкодеры живы: эмбеддинги и реранкеры в RAG — это BERT-подобные модели.
Частая ошибка: «потому что GPT победила» — без аргументов про сигнал и KV-кэш.
KV-кэш, GQA и MLA
Заголовок раздела «KV-кэш, GQA и MLA»13. Что такое KV-кэш? Почему кэшируют K и V, но не Q? Сколько он весит?
Ответ
KV-кэшKV-кэшEN KV cache хранит ключи и значения прошлых токенов, чтобы на шаге генерации считать проекции только для нового токена: шаг дорожает линейно по длине, а не квадратично. Прошлые запросы больше ни с чем не сравниваются, их хранить незачем. Размер — байт на токен ( — байт на число). Llama 3 8B — 128 КиБ, 16 ГиБ на 128K: на длинном контексте кэш весит как вся модель.
Частая ошибка: забыть множитель 2 (K и V) или подставить число голов запросов вместо KV-голов.
14. MQA и GQA: что они меняют и чем платят?
Ответ
MQA даёт всем головам запросов одну пару K/V: кэш в раз меньше, но качество заметно падает (в эксперименте DeepSeek на 7B MMLU 37.9 против 45.2 у MHA). GQA делит головы на групп с общей парой K/V: при качество почти как у MHA, кэш в раз меньше. Меньше кэш — меньше байт на шаге decode, то есть ещё и быстрее. Готовую MHA-модель переводят в GQA усреднением проекций и коротким дообучением.
Частая ошибка: говорить только о памяти и забыть про скорость decode.
Урок: 5.2.1
15. Как устроена MLA и почему её кэш такой маленький?
Ответ
MLAмногоголовое латентное внимание (MLA)EN multi-head latent attention (MLA)Предложено DeepSeek в DeepSeek-V2 (2024). сжимает вход в латентный вектор размера 512 и восстанавливает из него ключи и значения всех голов. В кэш кладут только латент и общий RoPE-ключ на 64 числа — 576 чисел на слой вместо 32 768 у MHA. Матрицы восстановления «поглощаются» запросом, и при декодировании MLA работает как MQA с головой 576. RoPE мешает поглощению, поэтому его вынесли в отдельную часть головы (развязанный RoPE). У DeepSeek-V3 это около 68.6 КиБ на токен.
Частая ошибка: не объяснить, зачем развязывать RoPE.
Урок: 5.2.2
Mixture of Experts
Заголовок раздела «Mixture of Experts»16. Как устроен MoE-слой? Чем все параметры отличаются от активных?
Ответ
MoEсмесь экспертов (MoE)EN mixture of experts (MoE) заменяет FFN набором экспертов. Роутер считает , выбирает top- экспертов и складывает их выходы с весами; остальные эксперты на этом токене не считают ничего. DeepSeek-V3: 671B всего, 37B активных. Компромисс: вычисления как у маленькой модели, память как у большой. DeepSeekMoE добавила мелкие эксперты (больше комбинаций) и общий эксперт для знаний, нужных всем.
Частая ошибка: думать, что MoE экономит память. Экономит вычисления.
17. Что такое коллапс роутинга и как с ним бороться?
Ответ
Положительная обратная связь: эксперт случайно получил больше токенов, лучше обучился, роутер шлёт ему ещё больше. Остальные простаивают, а при параллелизме экспертов шаг ждёт самую загруженную GPU. Классика — вспомогательный лосс (Switch Transformer), но он спорит с основным. DeepSeek-V3 добавляет к оценкам экспертов смещения , которые сдвигают выбор top- к недогруженным, а веса берутся без смещений.
Частая ошибка: предлагать штраф — через счётчики градиент не течёт.
Законы масштабирования
Заголовок раздела «Законы масштабирования»18. Откуда формула ?
Ответ
Почти все параметры трансформера — матрицы линейных слоёв. Прямой проход стоит 2 FLOPs на параметр на токен (умножение и сложение), обратный — 4: градиенты по входу и по весам. Итого на токен и на обучение. Формула не учитывает само внимание: при контексте 4096 и это около +8%, на 32K — уже +67%. Для MoE подставляют активные параметры.
Частая ошибка: подставлять в формулу все параметры MoE.
19. Что показала Chinchilla и почему современные модели учат намного дольше?
Ответ
При фиксированном бюджете модель и данные надо растить поровну, около 20 токенов на параметр: . Chinchilla 70B на 1.4T токенов обыграла Gopher 280B при том же бюджете. Но Chinchilla оптимизирует только цену обучения, а модель потом годами работает на инференсе по FLOPs на токен. Оптимум плоский, поэтому Llama 3 8B учили на 15T токенов: обучение дороже, каждый токен ответа дешевле.
Частая ошибка: считать 20 токенов на параметр целью. Это нижняя граница.
Урок: 5.1.1
Точность и распределённое обучение
Заголовок раздела «Точность и распределённое обучение»20. Почему обучают в BF16, а не в FP16? Зачем мастер-веса в FP32?
Ответ
У BF16 диапазон как у FP32, поэтому маленькие градиенты не исчезают и loss scaling не нужен. У FP16 диапазон узкий: в опыте курса без масштабирования loss обнулилась почти треть градиентов. Но у BF16 всего 7 бит мантиссы: , и маленькие обновления весов теряются. Поэтому мастер-веса и шаг оптимизатора держат в FP32, а суммы в матричных умножениях накапливают в FP32. DeepSeek-V3 пошла дальше — FP8 с масштабом на маленький блок.
Частая ошибка: «BF16 точнее FP16». Наоборот: точность ниже, диапазон шире.
Урок: 5.4.1
21. Сколько байт на параметр нужно при обучении с AdamW в смешанной точности?
Ответ
16: рабочие веса BF16 (2), градиенты BF16 (2), мастер-веса FP32 (4), моменты Adam и в FP32 (4 + 4). Для 7B это 112 ГБ до активаций — больше любой одиночной карты. Веса для вычислений — лишь 2 байта из 16, основное съедает состояние оптимизатора.
Частая ошибка: считать только веса — «7B в BF16 — 14 ГБ, значит, обучу на одной карте».
Урок: 5.4.1
22. Какие бывают виды параллелизма и что каждый пересылает?
Ответ
По данным — у каждой GPU копия модели, свой кусок батча, раз за шаг all-reduce градиентов. Тензорный — матрицы слоя режут между GPU, на каждом слое пересылают активации; нужен NVLink. Конвейерный — слои по стадиям, пересылают активации на границах, платят «пузырём» . По экспертам — эксперты MoE на разных GPU, токены ходят к ним через all-to-all. Большие прогоны совмещают оси.
Частая ошибка: предлагать тензорный параллелизм для обучения на картах, связанных только PCIe.
Урок: 5.4.3
23. Что такое ZeRO-1/2/3 и FSDP?
Ответ
В обычном DDP все GPU хранят одинаковые 16 байт на параметр. ZeROZeRO (оптимизатор без избыточности)EN ZeRO (Zero Redundancy Optimizer)Вместо того чтобы хранить на каждом GPU полную копию, состояние оптимизатора (ZeRO-1), градиенты (ZeRO-2) и веса (ZeRO-3) делят между GPU параллелизма по данным. режет это состояние: ZeRO-1 — состояние оптимизатора, ZeRO-2 — ещё градиенты, ZeRO-3 — ещё веса, которые собирают all-gather прямо перед вычислением слоя. Память на GPU при ZeRO-3 — . Пересылок у ZeRO-1 и ZeRO-2 столько же, сколько у DDP, у ZeRO-3 — примерно в 1.5 раза больше. FSDPFSDP (полностью шардированный параллелизм по данным)EN Fully Sharded Data Parallel (FSDP)Реализация идеи ZeRO-3 в PyTorch. Веса слоя собираются со всех GPU прямо перед его вычислением и сразу освобождаются. — реализация ZeRO-3 в PyTorch.
Частая ошибка: считать, что ZeRO уменьшает память на активации. Для них — пересчёт.
24. Что такое пересчёт активаций и накопление градиентов? Где здесь ловушка?
Ответ
Пересчёт активацийперевычисление активаций (activation checkpointing)EN activation checkpointing (recomputation)Не хранить часть активаций прямого прохода, а пересчитать их при обратном. Экономит память ценой дополнительных вычислений. не хранит активации части слоёв и пересчитывает их в обратном проходе: память на активации падает в разы за цену около одного прямого прохода. Накопление градиентов складывает градиенты нескольких микробатчей перед шагом — большой батч без большой памяти. Ловушка: усреднить loss по токенам каждого микробатча, а потом ещё раз по микробатчам — длинные и короткие ответы будут весить неправильно. Делить надо сумму loss на общее число токенов батча.
Частая ошибка: не знать эту ловушку — в 2024 году её нашли и в популярных библиотеках.
SFT и LoRA
Заголовок раздела «SFT и LoRA»25. Чем базовая модель отличается от instruct, и что делает SFT?
Ответ
Базовая модель продолжает документы: на вопрос может ответить списком похожих вопросов — она имитирует авторов текстов из интернета. SFT учит её на диалогах в chat-шаблоне (например, ChatML) отвечать как ассистент, следовать формату и останавливаться. Качество данных важнее количества. Дальше идут предпочтения (RLHF, DPO) и RL на проверяемых задачах.
Частая ошибка: подать запрос к instruct-модели без её chat-шаблона и удивляться странным ответам.
26. Зачем маска loss в SFT и что будет без неё?
Ответ
Loss считают только по токенам ответа ассистента вместе с закрывающим токеном; промпт модель читает, но за него не отвечает. Labels промпта ставят в . Без маски модель учится говорить за пользователя и сочиняет следующий вопрос, а при длинном промпте почти весь loss уходит на моделирование документа: 3000 токенов промпта против 100 токенов ответа — 97% слагаемых не о том.
Частая ошибка: выкинуть из loss закрывающий токен — модель не научится останавливаться.
Урок: 6.1.2
27. Как работает LoRA?
Ответ
LoRALoRA (низкоранговая адаптация)EN low-rank adaptation (LoRA) замораживает и учит поправку низкого ранга: , где , . Для матрицы при — 65 536 параметров вместо 16.8 млн. инициализируют нулями, поэтому на старте модель не меняется. Поправку потом вливают в вес — инференс не замедляется. Адаптеры ставят на все линейные слои блока, lr — примерно в 10 раз выше, чем при полном дообучении.
Частая ошибка: инициализировать нулями обе матрицы — тогда градиенты обеих нулевые и обучение не стартует.
Урок: 6.2.1
28. Что добавляет QLoRA?
Ответ
Замороженную базу хранят в 4 битах (NF4 — формат под нормальное распределение весов), а блоки весов деквантуют в BF16 на лету при умножении. Адаптеры остаются в BF16. Ещё два приёма: двойное квантование масштабов и paged optimizers против всплесков памяти. Для Qwen2.5-7B (7.6 млрд параметров): полное дообучение около 122 ГБ, LoRA — около 16 ГБ, QLoRA — около 5 ГБ без активаций.
Частая ошибка: вливать адаптер в 4-битные веса. Сливают с базой в BF16.
Урок: 6.2.1
RLHF, DPO и GRPO
Заголовок раздела «RLHF, DPO и GRPO»29. Как устроен классический RLHF?
Ответ
Три шага: SFT; reward model, обученная на парах «лучше — хуже» по модели Брэдли–Терри ; PPO, который максимизирует награду с KL-штрафом к референсу. В памяти четыре модели: политика и критик обучаются, референс и reward model заморожены. Для политики 7B это около 252 ГБ на веса и оптимизаторы. Плюс капризные гиперпараметры.
Частая ошибка: забыть, что loss reward model на старте около — удобная проверка на баги.
Урок: 6.3.2
30. Зачем KL-штраф к референсной модели? Что такое reward hacking?
Ответ
Reward model — лишь приближение к мнению людей, и политика, оптимизируемая против неё, находит её ошибки: многословие, угодничество, уверенный тон при неверных фактах. Это взлом наградывзлом награды (reward hacking)EN reward hackingПолитика находит способ получить высокую награду, не делая того, что задумали люди., частный случай закона Гудхарта. KL-штраф держит политику рядом с референсом, где reward model ещё надёжна. Другие лекарства — ансамбль reward model, обновление её на свежих ответах, штрафы за длину, проверяемые награды.
Частая ошибка: считать рост награды ростом качества.
Урок: 6.3.2
31. В чём идея DPO? Чему равен DPO loss на первом шаге?
Ответ
Оптимальная политика RLHF выражается через награду, а значит, награду можно выразить через политику: . Подставили в Брэдли–Терри — нормировка сократилась:
Reward model и генерация не нужны, только пары и референс. На первом шаге , награды нулевые, loss . — длина поводка: стандарт 0.1.
Частая ошибка: смотреть только на loss. Следите за rewards/chosen: если он уходит в минус, падают обе вероятности.
Урок: 6.3.3
32. Когда брать DPO, а когда PPO или GRPO?
Ответ
DPO — офлайн: учится на готовых парах, стабилен как SFT, хорош для стиля, тона, безопасности. Слабости: сдвиг распределения (пары от другой модели), падение вероятности и хорошего ответа, переобучение на однозначных парах, выучивание многословия. PPO и GRPO — онлайн: модель учится на своих свежих ответах, это сильнее для рассуждений и кода с проверяемой наградой. Промежуточный вариант — итеративный DPO на свежих парах.
Частая ошибка: называть DPO «бесплатной заменой RLHF».
Урок: 6.3.3
33. Как работает GRPO и чем он дешевле PPO?
Ответ
На промпт генерируют группу из ответов, преимущество каждого — по группе. Критика нет: baseline — средняя награда группы, преимущество одно на весь ответ, KL к референсу — прямо в loss. Награда может быть правилом: проверка ответа или тестов (R1-Zero). Памяти почти вдвое меньше, чем у PPO, но генерация дорожает в раз — поэтому RL-инфраструктура оптимизирует прежде всего её.
Частая ошибка: сказать, что GRPO «дешевле во всём». Rollout стал дороже.
34. Что такое вырожденная группа в GRPO и что с ней делают?
Ответ
Если все ответы группы одинаково верны или неверны, std = 0, преимущества нулевые — дорогая генерация не дала градиента. При точности модели на промпте вероятность сигнала : при и это 0.57. Лечат подбором задач по силам модели, большей группой и динамическим сэмплингом DAPO, который выбрасывает вырожденные группы и досэмплирует новые.
Частая ошибка: брать для RL задачи, которые модель после SFT не решает никогда.
35. Почему маленькие рассуждающие модели обычно получают дистилляцией, а не RL?
Ответ
R1-Distill — это SFT маленькой модели на трассах рассуждений большой: дёшево и стабильно. В статье R1 Qwen-32B после большого RL набрала 47.0% на AIME 2024, после дистилляции из R1 — 72.6%. Слабость обычного SFT на трассах — модель учится на чужих траекториях и не видит своих ошибок. On-policy дистилляция исправляет это: ученик генерирует сам, учитель оценивает каждый его токен.
Частая ошибка: путать дистилляцию рассуждений с квантованием или прунингом.
Урок: 6.4.4
Инференс и квантование
Заголовок раздела «Инференс и квантование»36. Чем prefill отличается от decode?
Ответ
Prefillprefill (предзаполнение)EN prefillПервая фаза генерации: весь промпт проходит через модель одним параллельным проходом, заполняется KV-кэш и получается первый токен. Упирается в вычисления. пропускает весь промпт одним проходом: матрица на матрицу, упор в вычисления, задаёт время до первого токена. Decode делает по токену за проход: вектор на матрицу, все веса читаются ради одного токена, упор в пропускную способность памяти, задаёт скорость «печати». Отсюда: квантование весов, батчинг, GQA и MLA ускоряют decode, а для prefill важны FLOPs. Подробный расчёт — в задаче 2 ниже.
Частая ошибка: считать, что более мощный GPU по TFLOPS ускорит генерацию для одного пользователя.
Урок: 7.1.1
37. Что такое TTFT, TPOT и throughput, и почему они спорят?
Ответ
TTFT — время до первого токена: очередь плюс prefill. TPOT — интервал между следующими токенами, длительность шага decode. Throughput — токенов в секунду на всех пользователей. Больше батч — выше throughput, но выше и TPOT каждого. Длинный prefill чужого запроса задерживает шаги остальных. Поэтому сервисы задают SLO, например «TTFT меньше 2 с, TPOT меньше 50 мс», и ищут максимальный throughput при этих ограничениях.
Частая ошибка: описывать скорость одним числом.
Урок: 7.1.1
38. Что такое непрерывный батчинг и PagedAttention?
Ответ
Непрерывный батчингнепрерывный батчингEN continuous batching (iteration-level scheduling)Состав батча пересматривается после каждого шага decode — закончившиеся запросы уходят, новые встают на их место. Идея системы Orca (2022), стандарт всех современных серверов. планирует по итерациям: закончившийся ответ уходит из батча сразу, на его место встаёт новый запрос. В симуляции курса загрузка слотов выросла с 27% до 79%. PagedAttentionPagedAttention (страничный KV-кэш)EN PagedAttentionKV-кэш хранится блоками фиксированного размера (например, по 16 токенов), а таблица блоков связывает логические позиции с физическими — как страницы виртуальной памяти в ОС. Основа vLLM. хранит KV-кэш блоками по 16 токенов через таблицу блоков, как виртуальная память ОС: не нужно резервировать максимум, а общий префикс хранится один раз. В примере курса в те же 16 ГиБ влезло около 234 запросов вместо 64.
Частая ошибка: не связать память кэша с батчем: больше места под кэш — больше пользователей.
Урок: 7.1.2
39. Как работает спекулятивное декодирование и когда оно не помогает?
Ответ
Черновая модель предлагает токенов, большая проверяет их одним проходом — почти по цене одного шага. Токен принимают с вероятностью , при отказе сэмплируют из остатка , и итог распределён ровно как у большой модели. При доле принятия одна проверка даёт в среднем токенов: 3.36 при , . Не помогает при большом батче и при высокой температуре.
Частая ошибка: считать, что качество падает «как у маленькой модели».
Урок: 7.1.2
40. Как работает квантование весов? Почему 4 бита ускоряют decode, но не prefill?
Ответ
Симметричное absmax: , . Один выброс портит весь тензор, поэтому масштаб берут на группу из 32–128 весов: INT4 с группами по 128 — 4.125 бита на вес. W4A16 читает веса в 4 битах и распаковывает в регистрах: decode, упирающийся в чтение весов, ускоряется, а prefill, упирающийся в 16-битные вычисления, нет. Ускорить prefill может W8A8 или FP8.
Частая ошибка: путать ошибку весов с ошибкой модели: 10% ошибки весов в 4 битах — ещё не 10% потери качества.
Урок: 7.2.1
41. Чем GPTQ отличается от AWQ?
Ответ
Оба минимизируют ошибку выхода слоя на калибровочных данных, а не ошибку весов. GPTQ квантует столбцы по одному и исправляет ошибку уже округлённых столбцов, сдвигая ещё не квантованные (по матрице ). AWQ замечает, что важен около 1% весов — те, что умножаются на большие активации, и масштабирует их каналы перед округлением, чтобы их относительная ошибка уменьшилась.
Частая ошибка: выбирать важные веса по их величине, а не по активациям.
Урок: 7.2.1
42. Как работают температура, top-k и top-p?
Ответ
Температура делит логиты на : меньше 1 — распределение острее, больше 1 — площе, — жадный выбор. Top-k оставляет самых вероятных токенов. Top-p оставляет минимальное «ядро» токенов с суммарной вероятностью не меньше : в уверенной позиции ядро маленькое, в неуверенной — большое. Порядок обычно: температура, затем отсечение, затем нормировка и сэмплирование.
Частая ошибка: думать, что «температура 0» всегда даёт одинаковый ответ: батчинг и порядок сложений на GPU меняют результат.
Урок: 4.1.3
RAG и агенты
Заголовок раздела «RAG и агенты»43. Когда нужен RAG, когда дообучение, а когда длинный контекст?
Ответ
RAG — для свежих и приватных данных и ссылок на источник: знания меняются без переобучения. Дообучение — для стиля, формата и навыков, а не для фактов: их модель после дообучения путает. Длинный контекст — когда документов немного и они помещаются целиком; цена — токены на каждый запрос и «lost in the middle». Часто комбинируют: RAG плюс дообучение под формат ответа.
Частая ошибка: «дообучим модель на базе знаний компании» как способ добавить факты.
Урок: 8.2.1
44. Как улучшить поиск в RAG?
Ответ
Чанкинг по структуре документа с перекрытием. Гибридный поискгибридный поискEN hybrid searchОдновременный лексический (BM25) и векторный поиск с последующим слиянием выдач, например через RRF.: BM25 ловит точные идентификаторы, эмбеддинги — перефразировки, списки сливают через RRF — по местам, а не по несравнимым оценкам. Затем реранкерреранкерEN rerankerВторая ступень поиска — точная, но медленная модель (обычно кросс-энкодер) пересортировывает десятки кандидатов от быстрого ретривера.-кросс-энкодер пересортировывает 50–100 кандидатов, и в промпт идут лучшие 3–5. Ещё помогает переписывание запроса.
Частая ошибка: менять LLM, не измерив recall поиска.
Урок: 8.2.2
45. Как оценивать RAG?
Ответ
Поиск и генерацию отдельно: чинятся они по-разному. Поиск — recall@k (попал ли нужный кусок в контекст) и MRR по eval-набору из 50–200 размеченных вопросов, включая вопросы без ответа в базе. Генерация — верность контекстуверность контексту (faithfulness)EN faithfulness / groundednessДоля утверждений ответа, которые подтверждаются найденным контекстом. Низкая faithfulness — признак галлюцинаций генератора. (доля утверждений ответа, подтверждённых контекстом) и релевантность ответа, обычно через LLM-судью. Низкий recall — проблема поиска, высокий recall с низкой faithfulness — проблема генерации.
Частая ошибка: оценивать только итоговый ответ «на глаз».
Урок: 8.2.2
46. Что такое агент, и почему агенты дорогие?
Ответ
Агент — цикл «думай → действуй → наблюдай»: LLM решает, какой инструмент вызвать и когда остановиться, а исполняет вызовы ваш код. ReAct чередует рассуждение и действия. Каждый шаг отправляет всю историю, поэтому входных токенов : при , , — 23 500. Лечат кэшем префикса, короткими наблюдениями и лимитом шагов.
Частая ошибка: строить агента там, где хватит фиксированного конвейера.
Урок: 8.3.1
47. Какие риски у агента с инструментами и что такое MCP?
Ответ
MCP (Model Context Protocol) — открытый протокол, по которому приложение подключает к модели внешние серверы инструментов и данных. Риски: избыточные права, инъекции через аргументы и через содержимое страниц и писем, необратимые действия, недоверенные серверы с «отравленными» описаниями инструментов. Защита — минимальные права, валидация аргументов, подтверждение человеком, песочница.
Частая ошибка: считать системный промпт надёжной защитой от инъекций.
Оценка и галлюцинации
Заголовок раздела «Оценка и галлюцинации»48. Модель A набрала на бенчмарке на 2 пункта больше модели B. Она лучше?
Ответ
Сначала шум: . На HumanEval (164 задачи) 95%-интервал одной модели около ±7.7 п.п., на AIME (30 задач) — ±18. Разница двух моделей шумит ещё в раз, поэтому сравнивают на одних вопросах парным бутстрэпом. Затем контаминация: бенчмарк мог попасть в претрейн. Проверяют свежими задачами того же стиля (GSM1k), разделением по дате (LiveCodeBench), n-граммным пересечением.
Частая ошибка: радоваться «+2 балла» без интервала.
49. Какие смещения у LLM-судьи и как с ними бороться?
Ответ
Позиционное (выигрывает ответ на определённом месте), смещение длины, предпочтение своего семейства, слабость в задачах, которые судья сам не решит, доверие уверенному тону. Лечение: спрашивать дважды с перестановкой и засчитывать только согласованные вердикты, рубрика «длина не достоинство», судья из другого семейства, эталонный ответ.
Частая ошибка: доверять судье, не сверив его с людьми на 50–100 размеченных ответах.
Урок: 7.3.2
50. Что такое pass@k и чем он отличается от maj@k?
Ответ
pass@k — вероятность, что среди попыток есть верная. Несмещённая оценка по сэмплам с верными: . При , , это 0.778. maj@k — верен ли самый частый ответ (голосование без проверяющего). pass^k — верны ли все попыток: надёжность агента.
Частая ошибка: сравнивать pass@100 одной модели с pass@1 другой.
Урок: 7.3.2
51. Откуда берутся галлюцинации и как их снижать?
Ответ
Модель учится правдоподобно продолжать текст, а не говорить правду. На обучении она видит правильный префикс, а на генерации — свои токены: одна ошибка становится контекстом для следующих (exposure bias). Пост-трейнинг может наградить уверенный тон и угодничество. Снижают: RAG с инструкцией «только по источникам» и разрешением сказать «не знаю», цитирование, проверяемые награды в RL, низкая температура для фактов. Меряют faithfulness.
Частая ошибка: обещать, что RAG устраняет галлюцинации полностью: модель может исказить и найденный текст.
Задачи на подумать
Заголовок раздела «Задачи на подумать»Интервьюер ждёт не точного числа, а хода рассуждения: допущения вслух, формулы, порядок величины, вывод.
flowchart LR A["Уточнить условие:<br/>модель, точность,<br/>контекст, железо"] --> B["Назвать допущения<br/>(MFU, байт на параметр)"] B --> C["Формула<br/>в общем виде"] C --> D["Подставить числа,<br/>округлить"] D --> E["Проверка здравым смыслом:<br/>сравнить с известным"] E --> F["Вывод и что<br/>его изменит"]
Деньги не считаем: цены меняются. RTX 4080 — 717 ГБ/с памяти и 97.5 TFLOPS в BF16 (урок 7.1.1).
Задача 1. Хватит ли 4×RTX 4080 по 32 ГБ, чтобы полностью обучить 7B-модель?
Заголовок раздела «Задача 1. Хватит ли 4×RTX 4080 по 32 ГБ, чтобы полностью обучить 7B-модель?»Разбор
Состояние модели. AdamW в смешанной точности — 16 байт на параметр (вопрос 21): ГБ — в 3.5 раза больше одной карты.
Активации. Грубая оценка для GPT-подобного блока в BF16 с FlashAttention — около байт на токен на слой (порядок из работы NVIDIA о пересчёте активаций, Korthikanti и соавторы, 2022). При , 32 слоях и последовательности 4096 токенов: ГБ на одну последовательность. С пересчётом активаций хранятся только входы слоёв: ГБ плюс активации одного слоя.
Шардирование. ZeRO-3 (FSDP) на 4 карты — по ГБ на карту. На активации и буферы CUDA остаётся около 4 ГБ — на грани. Можно выгрузить состояние оптимизатора (84 ГБ) в 128 ГБ оперативной памяти, но шаг AdamW на процессоре тоже не бесплатен.
Связь. FSDP пересылает за шаг около ГБ на карту. При условных 10 ГБ/с по PCIe — 4.2 с. Счёт шага на 16 384 токена: с при MFU 40%. Обмен сравним со счётом и должен прятаться за ним.
Вывод. Технически — на пределе: FSDP, пересчёт активаций, микробатч 1, возможно выгрузка оптимизатора. Практически для 7B берут LoRA (около 16 ГБ — одна карта) или QLoRA. А претрейн 7B по Chinchilla ( FLOPs) занял бы на этих картах около 440 дней.
Частая ошибка: посчитать только веса в BF16 (14 ГБ) и забыть градиенты, оптимизатор и активации.
Задача 2. Почему decode упирается в память? Сколько токенов в секунду даст Qwen3-8B на одной RTX 4080?
Заголовок раздела «Задача 2. Почему decode упирается в память? Сколько токенов в секунду даст Qwen3-8B на одной RTX 4080?»Разбор
Один пользователь. Qwen3-8B в BF16 — 16.4 ГБ весов. Каждый шаг decode читает их целиком ради одного токена: мс. Вычислений на токен GFLOP — это мс. Память медленнее в 136 раз: интенсивность около 1 FLOP/байт при точке перегиба 136. Потолок — токена/с, тензорные ядра простаивают больше 99% времени.
Батч. пользователей делят одно чтение весов: пока меньше точки перегиба (около 136), шаг почти не дольше. Но KV-кэш у каждого свой: у Qwen3-8B КиБ на токен, при контексте 4096 — 0.6 ГБ на пользователя.
| Батч | Память: веса + кэш | Шаг | Всего токенов/с | На пользователя |
|---|---|---|---|---|
| 1 | 17.0 ГБ | 23.7 мс | 42 | 42 |
| 8 | 21.2 ГБ | 29.6 мс | 270 | 34 |
| 16 | 26.1 ГБ | 36.4 мс | 440 | 28 |
| 32 | 35.7 ГБ | — | не помещается в 32 ГБ | — |
Вывод. Decode memory-bound: на прочитанный байт весов — одна операция. Ускоряют его, уменьшая байты (Q4_K_M около 5 ГБ — потолок около 143 токенов/с) или деля чтение между пользователями (батчинг). Предел батча задаёт память под KV-кэш — отсюда GQA, MLA и FP8-кэш. Реальные программы достигают 50–85% потолка.
Частая ошибка: считать скорость decode по TFLOPS карты.
Задача 3. Сервис на Llama 3 70B в 4 битах на 4×32 ГБ. Сколько пользователей с контекстом 32K он выдержит?
Заголовок раздела «Задача 3. Сервис на Llama 3 70B в 4 битах на 4×32 ГБ. Сколько пользователей с контекстом 32K он выдержит?»Разбор
Веса. 70.6 млрд параметров в INT4 с группами по 128 — ГБ.
KV-кэш. У Llama 3 70B 80 слоёв, 8 KV-голов по 128: КиБ на токен в BF16. На 32 768 токенов — 10 ГиБ (≈ 10.7 ГБ) на пользователя.
Бюджет. Из 128 ГБ вычтем веса и около 2 ГБ на карту под буферы: остаётся около 84 ГБ. Это –8 пользователей на полном контексте в BF16 и около 15 с кэшем в FP8. Если бы модель была с MHA (64 KV-головы), кэш весил бы 2.5 МиБ на токен, 80 ГиБ на пользователя — не поместился бы даже один.
Что меняет вывод. Реальные запросы короче максимума, а PagedAttention выделяет память по факту: при среднем контексте 4K (1.3 ГБ кэша) пользователей около 60. Префикс-кэш общих промптов экономит ещё. А тензорный параллелизм по PCIe добавляет обмен на каждом слое.
Частая ошибка: считать только веса («36 ГБ из 128 — места полно»): кэши восьми пользователей весят больше модели.
Задача 4. У вас 4×RTX 4080 на 30 дней. Какую модель претрейнить?
Заголовок раздела «Задача 4. У вас 4×RTX 4080 на 30 дней. Какую модель претрейнить?»Разбор
Бюджет. Допустим, MFU 40%: FLOPs.
По Chinchilla. млрд параметров, млрд токенов. Скорость: токенов за 30 дней — около 14 тысяч токенов в секунду на машину.
Проверки. Память: ГБ состояния — DDP на картах по 32 ГБ не влезет вместе с активациями, нужен FSDP (около 7 ГБ на карту). Данные: 37 млрд токенов качественного текста надо где-то взять, дедуплицировать и отфильтровать — это работа на недели. Связь: в DDP обмен прячется за счётом, если между all-reduce карта обрабатывает тысячи токенов.
Но оптимум плоский. Тот же бюджет даёт модели на 0.5B 135 млрд токенов (270 на параметр). По формуле Chinchilla её loss хуже примерно на 1% (2.45 против 2.43), зато она в 3.7 раза дешевле на инференсе и обучается без FSDP. Если модель будут использовать, а не только мерить, выгоднее меньшая.
Частая ошибка: взять самую большую модель, что влезает в память, и учить её на паре миллиардов токенов.
Задача 5. MoE-модель на 30B с 3B активных при батче 1 генерирует в 10 раз быстрее плотной 32B. Сохранится ли разрыв при батче 64?
Заголовок раздела «Задача 5. MoE-модель на 30B с 3B активных при батче 1 генерирует в 10 раз быстрее плотной 32B. Сохранится ли разрыв при батче 64?»Разбор
Батч 1. Qwen3-30B-A3B в 4 битах занимает около 15–19 ГБ, но на токен читаются только 8 экспертов из 128 в каждом слое и общие части — около 2 ГБ. Потолок на RTX 4080 — около 355 токенов/с против 36 у плотной Qwen3-32B в тех же битах (20 ГБ читаются целиком).
Батч . Каждый токен выбирает своих экспертов. Допустим, выбор равномерный и независимый: эксперт не нужен ни одному токену с вероятностью . Доля прочитанных экспертов : при — 23%, при — 64%, при — 98%. Значит, при батче 64 шаг читает почти все веса, как плотная модель того же размера.
Вывод. По байтам на шаг преимущество MoE с ростом батча исчезает: обе модели читают 15–20 ГБ. Остаётся преимущество по вычислениям: GFLOP на токен против 64 у плотной. Когда большой батч упирается в вычисления, MoE снова почти в 10 раз дешевле. Поэтому облако любит MoE за дешёвые токены, а дома она хороша при малом батче, если хватает памяти. Реальный роутинг неравномерен, и доля прочитанных экспертов обычно ниже оценки.
Частая ошибка: переносить скорость при батче 1 на сервер с сотнями пользователей.
Проверь себя
Заголовок раздела «Проверь себя»- Теория LLM на собеседовании — это ступени 4–9 курса, от токенизации до RAG, агентов и оценки.
- Сильный ответ называет механизм и цену: что экономит GQA, чем платит GRPO, почему DPO офлайн, во что упирается decode.
- Задачи на оценку решаются пятью формулами: 16 байт на параметр при обучении, , байт кэша на токен, потолок decode и . Допущения — вслух.
- Сборники «багу» по LLM — хороший список тем, но быстро стареют: выводите ответ из урока и проверяйте замером.
Дальше: урок 11.3.4 — секция ML coding: softmax, attention с маской, top-p, BPE и AUC с нуля за 30–45 минут, вслух и без подсказок.