Сначала зафиксируйте grain данных, допущения, метрику и риск leakage, затем обсуждайте модель, инструмент или инфраструктуру.
Вопросы и ответы
12 подробных ответов
01Что такое эмбеддинги и что изменилось при переходе от word2vec к контекстным (как в BERT)?
junior
Короткий ответ: Эмбеддинг — плотный вектор, кодирующий смысл токена так, что близкие по смыслу объекты близки в векторном пространстве. Главный сдвиг: word2vec даёт статический вектор — один на слово всегда, а BERT-подобные модели — контекстный: вектор зависит от предложения, и полисемия наконец решена.
Подробно:
- word2vec (skip-gram) — учится предсказывать контекст по слову; после обучения это таблица «слово → вектор». «Ключ» от двери и «ключ» в лесу получают один и тот же вектор.
- Контекстные эмбеддинги — вектор слова считается трансформером с учётом всего предложения; «ключ» получает разные векторы в разных фразах.
- Задачи предобучения различаются — skip-gram/CBOW у word2vec против masked LM у BERT: предсказать замаскированный токен по двустороннему контексту.
| word2vec | BERT-style | |
|---|---|---|
| Вектор | один на слово (статический) | зависит от контекста |
| Полисемия | не различает | различает |
| Предобучение | skip-gram / CBOW | masked LM |
| Единица | слово | сабворд-токен |
⚠️ Частая ошибка: пересказать «king − man + woman ≈ queen» и не суметь назвать главный выигрыш контекстных эмбеддингов — решение полисемии.
02Объясните self-attention: роли Q, K, V, формула и зачем делить на √d?
senior
Короткий ответ: Attention(Q,K,V) = softmax(QKᵀ/√d)·V. Каждый токен формирует запрос Q («что я ищу»), ключ K («что во мне есть») и значение V («что я отдаю»). Новое представление токена — взвешенная сумма V всех токенов, где веса = softmax от сходства его Q с их K. Деление на √d не даёт скалярным произведениям расти с размерностью и насыщать softmax.
Подробно:
- Q, K, V — три линейные проекции одного и того же входа: X·W_Q, X·W_K, X·W_V.
- QKᵀ — матрица сходств «каждый с каждым»: насколько токен j релевантен токену i.
- √d — дисперсия q·k растёт как d; без нормировки softmax уходит в почти one-hot, градиенты исчезают, обучение встаёт.
- Multi-head — h независимых attention меньшей размерности ловят разные типы связей (синтаксис, кореференция) параллельно.
«кот сидит на коврике» — считаем токен «сидит»:
score = Q(сидит)·K(x): кот 9.1 | на 2.0 | коврике 7.3
softmax(score/√d) → 0.60 | 0.05 | 0.35
new(сидит) = 0.60·V(кот) + 0.05·V(на) + 0.35·V(коврике)
⚠️ Частая ошибка: назвать формулу, но не объяснить √d. «Почему именно √d?» — стандартный follow-up: скалярное произведение d независимых компонент имеет дисперсию ~d, поэтому нормируем на √d.
03Зачем трансформеру позиционные кодировки и какие они бывают?
middle
Короткий ответ: Self-attention перестановочно-инвариантен: без позиций «кот ел рыбу» и «рыбу ел кот» дают одинаковые представления. Позиционные кодировки вшивают порядок токенов; основные варианты — синусоидальные, обученные, RoPE и ALiBi.
Подробно:
- Причина — attention это взвешенная сумма по множеству токенов, а сумма не знает порядка слагаемых. Порядок надо добавить явно.
- Варианты:
| Тип | Идея | Где используется |
|---|---|---|
| Синусоидальные | фиксированные sin/cos разных частот, добавляются к эмбеддингам | оригинальный Transformer |
| Обученные | вектор на каждую позицию как обычный параметр | BERT, GPT-2 |
| RoPE (rotary) | поворот Q и K на угол ∝ позиции — кодирует относительное расстояние | LLaMA, Qwen — большинство современных LLM |
| ALiBi | линейный штраф к attention-скорам по расстоянию, без векторов | MPT, BLOOM |
- RoPE и длина контекста — относительная природа даёт лучшую экстраполяцию на длины больше обученной; расширения контекста (позиционная интерполяция, YaRN) построены вокруг RoPE.
⚠️ Частая ошибка: перечислить типы, но не ответить на «зачем». Ядро ответа — перестановочная инвариантность attention; без него интервьюер слышит зубрёжку.
04Почему трансформеры вытеснили RNN и LSTM?
middle
Короткий ответ: Три причины: параллельное обучение (RNN обрабатывает токены строго последовательно), путь длины O(1) между любыми токенами против O(n) у рекуррентности и предсказуемое масштабирование с данными и компьютом. Цена — attention стоит O(n²) по длине последовательности.
Подробно:
- Параллелизм — RNN обязан обработать токен t−1 прежде токена t; трансформер считает attention для всех пар одним матричным умножением → GPU загружены, обучение на порядки быстрее.
- Длинные зависимости — в RNN сигнал между далёкими токенами проходит n шагов и затухает; в attention любые два токена связаны напрямую.
- LSTM в контексте — гейты (input/forget/output) решили vanishing gradients, но не последовательную природу вычислений.
- Масштабирование — трансформеры предсказуемо улучшаются с ростом данных и компьюта (scaling laws) — фундамент современных LLM.
| RNN/LSTM | Трансформер | |
|---|---|---|
| Обучение | последовательное | параллельное |
| Путь между токенами | O(n) | O(1) |
| Стоимость по длине | O(n) | O(n²) |
| Масштабирование | упирается | scaling laws |
⚠️ Частая ошибка: забыть оговорку про O(n²). «Трансформер лучше во всём» звучит как незнание цены — квадратичный attention и есть причина всей индустрии оптимизаций длинного контекста.
05BERT против GPT: чем отличаются энкодер и декодер — задачи предобучения и применение?
middle
Короткий ответ: BERT — двунаправленный энкодер, предобученный на masked LM: видит контекст с обеих сторон и силён в понимании — классификация, NER, эмбеддинги. GPT — каузальный декодер с next-token-предобучением: маска attention запрещает смотреть вперёд, поэтому он умеет генерировать текст.
Подробно:
- Направление attention — энкодер: каждый токен видит всё предложение; декодер: только прошлое (каузальная маска), иначе предсказание следующего токена было бы читерством.
- Объективы — masked LM: восстановить ~15% замаскированных токенов по двустороннему контексту; causal LM: предсказать следующий токен.
- Следствие для задач — понимание против порождения: эмбеддинги для поиска и retrieval обычно энкодерного типа (E5, BGE), диалог и генерация — декодеры.
| BERT (энкодер) | GPT (декодер) | |
|---|---|---|
| Attention | двунаправленный | каузальный (не видит будущее) |
| Предобучение | masked LM | next token prediction |
| Сильные задачи | классификация, NER, эмбеддинги, retrieval | генерация, диалог |
| Примеры | BERT, RoBERTa, E5 | GPT, LLaMA, Claude |
⚠️ Частая ошибка: «GPT просто новее и лучше». Для классификации и retrieval при том же бюджете компактный энкодер до сих пор часто выигрывает — вопрос про соответствие архитектуры задаче.
06Attention стоит O(n²) — как современные LLM с этим справляются?
senior
Короткий ответ: На обучении и prefill — точные IO-оптимизации (FlashAttention) и разреженные схемы (sliding window); на генерации — KV-cache: ключи и значения прошлых токенов считаются один раз и хранятся, так что шаг генерации стоит O(n) вместо пересчёта всего. Именно KV-cache объясняет, почему длинный контекст ест память на инференсе.
Подробно:
- FlashAttention — точный attention, переупорядоченный под иерархию памяти GPU: тайлинг, без материализации матрицы n×n. Те же числа, в разы быстрее и экономнее по памяти.
- Sparse / sliding window — каждый токен смотрит на окно из w соседей: O(n·w) вместо O(n²).
- Линейные приближения — Performer, linear attention: аппроксимируют softmax, но во фронтир-моделях почти не прижились.
- KV-cache — на автогенерации прошлые K и V не меняются; кэшируем их и считаем attention только для нового токена.
- MQA/GQA — меньше KV-голов → кэш в разы меньше при почти том же качестве.
Шаг t генерации:
без кэша: пересчитать K,V всех t токенов → O(t²) на шаг
KV-cache: K,V прошлого уже в памяти → O(t) на шаг
память кэша ≈ 2 · слои · KV-головы · d · t → растёт с контекстом
⚠️ Частая ошибка: не знать про KV-cache. Вопрос «почему длинный контекст дорог по памяти именно на инференсе?» ловит ровно это.
07Файнтюнинг, RAG или промпт-инжиниринг: как выбрать подход?
middle
Короткий ответ: Лестница эскалации. Сначала промптинг — самый дешёвый, итерации за минуты. Затем RAG — когда нужны приватные, свежие или атрибутируемые знания: grounding, цитаты, обновляемый индекс без обучения. И только потом файнтюнинг (обычно LoRA/PEFT) — когда нужно стабильное поведение: стиль, формат, доменная терминология. Файнтюнинг — не способ «загрузить факты» в модель.
Подробно:
| Подход | Когда | Что даёт | Чего не делает |
|---|---|---|---|
| Промптинг | всегда первым | быстрые итерации, few-shot, ноль инфраструктуры | нестабилен на сложном формате |
| RAG | приватные/свежие знания, нужны источники | grounding, цитаты, обновление = переиндексация | не меняет поведение модели |
| Файнтюнинг (LoRA) | стабильный стиль/формат/домен | поведение вшито в веса | плохо добавляет факты, дорог в обновлении |
- Ключевая ось — знания против поведения: знания живут в индексе (RAG), поведение — в весах (файнтюнинг).
- Комбинации легальны — RAG для фактов + LoRA для тона и формата ответа — типовой продакшн-сетап.
⚠️ Частая ошибка: «зафайнтюним модель на наших документах, чтобы она их знала» — канонически неправильный ответ скрининга 2025–2026. Для знаний — RAG; дообучение фактам ненадёжно и мгновенно устаревает.
08Что такое LoRA и почему это работает?
senior
Короткий ответ: LoRA замораживает предобученную матрицу W и учит низкоранговую поправку ΔW = B·A с рангом r ≪ d на проекциях attention/MLP. Обучается ~0.1–1% параметров, помещается на одну GPU, а после обучения адаптер вливается в веса — нулевая надбавка к латентности инференса. Работает, потому что адаптация под задачу лежит в низкоранговом подпространстве: полный ранг для сдвига поведения не нужен.
Подробно:
- Механика — h = W·x + B·A·x; A инициализируется случайно, B — нулями, значит старт с ΔW = 0 и поведение базовой модели не ломается.
- Экономия — при d = 4096 и r = 16: 16.7M параметров матрицы против 131K у адаптера (~0.8%).
- Слияние — W' = W + B·A считается один раз перед инференсом: никакого лишнего умножения в проде; адаптеры можно хранить пачками по задаче.
- QLoRA — базовая модель в 4 бита + LoRA сверху: файнтюнинг 70B на одной карте.
h = W·x + B·(A·x)
W: d×d — заморожена
A: r×d, B: d×r, r ≪ d — обучаются
d=4096, r=16: 16.7M → 131K параметров (0.8%)
⚠️ Частая ошибка: не суметь ответить, что именно заморожено, а что обучается. «LoRA — это когда учат меньше слоёв» — неверно: учат низкоранговые добавки к матрицам, а не подмножество слоёв.
09Модель предобучена на всём интернете — зачем ещё SFT и RLHF?
senior
Короткий ответ: Предобучение учит одному — продолжать текст, а не следовать инструкциям. База на вопрос «как испечь хлеб?» может ответить списком похожих вопросов: это идеальное продолжение текста. SFT на парах «инструкция → ответ» учит формату диалога; RLHF/DPO оптимизирует reward по человеческим предпочтениям — полезно, безвредно, честно.
Подробно:
- Предобучение — next token prediction на триллионах токенов: знания и способности есть, интерфейса «ассистент» нет.
- SFT — supervised fine-tuning на инструкционных парах: модель выучивает роль и формат ответа.
- RLHF — reward model на человеческих сравнениях пар ответов + RL (PPO) против неё; DPO достигает той же цели напрямую, без явной reward model.
- Alignment tax — выравнивание может слегка просаживать сырые способности (бенчмарки); это осознанный трейд-офф в пользу управляемости.
Предобучение (весь интернет) → «продолжи текст»
↓ SFT (инструкция → ответ) → «отвечай в формате ассистента»
↓ RLHF / DPO (предпочтения) → «полезно, безвредно, честно»
⚠️ Частая ошибка: смешивать знание с поведением — считать, что следование инструкциям «само возникает» из предобучения. Интервьюер слушает, различает ли кандидат эти два слоя.
10Стратегии генерации: greedy, beam search, top-k, top-p, температура — что делает каждая?
middle
Короткий ответ: Это способы выбрать следующий токен из предсказанного распределения. Greedy берёт argmax и склонен зацикливаться; beam ищет глобально вероятную последовательность (перевод, суммаризация); top-k и top-p обрезают хвост распределения перед сэмплированием; температура делит логиты, делая softmax острее (T < 1) или площе (T > 1).
Подробно:
| Стратегия | Механика | Когда |
|---|---|---|
| Greedy | argmax на каждом шаге | детерминизм; часто повторы и циклы |
| Beam search | держим k лучших последовательностей | перевод, суммаризация — «правильный» ответ существует |
| Top-k | сэмплируем из k самых вероятных | фиксированная ширина среза |
| Top-p (nucleus) | сэмплируем из минимального набора с суммарной вероятностью ≥ p | адаптивная ширина — дефолт для LLM |
| Температура | logits / T перед softmax | T → 0 ≈ greedy (воспроизводимо); T > 1 — разнообразие |
- Почему top-p адаптивен — в уверенном распределении срез узкий (2–3 токена), в неуверенном — широкий; top-k режет одинаково всегда.
- Комбинации — на практике температура + top-p работают вместе.
⚠️ Частая ошибка: сказать «температура делает модель креативнее» без механики. Сильный ответ: T масштабирует логиты до softmax и перераспределяет массу между головой и хвостом.
11Почему LLM галлюцинируют и как это смягчить?
middle
Короткий ответ: Целевая функция — правдоподобие следующего токена, а не истинность: модель обучена генерировать текст, похожий на правду. Плюс нет grounding в источниках, а знания заморожены на дате обрезки данных. Галлюцинации можно снизить, но не устранить полностью.
Подробно:
- RAG с цитатами — привязать ответ к найденным документам: модель отвечает по контексту и ссылается на источники, ошибки становятся проверяемыми.
- Структурированный вывод — constrained decoding, JSON-схемы: меньше степеней свободы для выдумок в критичных полях.
- Ниже температура — на фактологических задачах меньше случайности в хвосте распределения.
- Self-consistency и верификация — несколько сэмплов со сверкой ответов; отдельный проход, проверяющий утверждения по источникам.
- Evals и human-in-the-loop — регрессионные наборы на фактологичность; для высоких ставок (медицина, право, деньги) — обязательная проверка человеком.
- Честное «не знаю» — промптом и обучением поощрять отказ вместо уверенной выдумки.
⚠️ Частая ошибка: заявить, что что-то — RAG, файнтюнинг, промпт «не выдумывай» — устраняет галлюцинации. Все меры снижают частоту; ответ «свели к нулю» — красный флаг для интервьюера.
12Проведите по RAG-пайплайну: этапы, точки отказа и как его оценивать?
senior
Короткий ответ: Чанкинг → эмбеддинги → векторный индекс (FAISS/HNSW) → retrieve top-k (гибрид BM25 + dense) → reranking cross-encoder'ом → промпт с цитатами → генерация. Ломается в каждом звене: плохой чанкинг, промах ретривера, lost-in-the-middle, устаревший индекс. Оценивать ретривер и генератор надо раздельно.
Подробно:
Документы → чанкинг → эмбеддинги → индекс (FAISS/HNSW)
Запрос ──→ retrieve top-k (BM25 + dense) → rerank (cross-encoder)
└→ промпт с цитатами → LLM → ответ + источники
- Точки отказа — чанк режет мысль пополам; нужного документа нет в top-k; релевантный чанк теряется в середине длинного контекста (lost-in-the-middle); индекс не переиндексирован после обновления документов.
- Гибрид + rerank — BM25 ловит точные термины и аббревиатуры, dense — парафразы; cross-encoder точнее bi-encoder'а, но дорог, поэтому только поверх top-k.
- Оценка ретривера — recall@k, MRR на размеченных парах «запрос → нужный чанк», отдельно от генерации.
- Оценка генерации — faithfulness (нет утверждений вне контекста) и relevance; LLM-as-judge только с рубрикой, провалидированной на человеческой разметке.
⚠️ Частая ошибка: рассказать только happy path. Интервьюер ждёт точки отказа и раздельную оценку retrieval vs generation — иначе непонятно, какое звено чинить.
Источники
Источники и редакционная политика
Материалы RecallDeck сопоставлены с официальной документацией и открытыми публикациями компаний, когда первичный источник доступен. Мы не связаны с упомянутыми работодателями, не публикуем конфиденциальные задания и не продаём места в подборках. Формат найма может меняться — уточняйте его у рекрутера.
От чтения к воспроизведению
Отрепетируйте полный цикл интервью.
RecallDeck возвращает сложные темы по расписанию и помогает удерживать в памяти язык, SQL, архитектуру и поведенческие истории.