Transformer на собеседовании Data Scientist
Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.
Содержание:
Зачем Transformer спрашивают
С 2018 года Transformer — основа NLP. С 2022 — основа генеративных моделей (GPT-4, Claude, Llama). На любом DS-собесе сегодня обязательны вопросы про attention и Transformer. Junior — общая интуиция, middle — формулы и архитектура, senior — оптимизации (KV-cache, FlashAttention).
Главная боль без понимания Transformer — кандидат пишет «BERT» в резюме, на собесе не может объяснить, что внутри. На младшем DS-собесе это пропускают, на middle — разнос.
Высокоуровневая архитектура
Оригинальный Transformer (Vaswani et al., 2017) — encoder-decoder для машинного перевода:
[input tokens] → [Encoder] → [memory]
↓
[output tokens] → [Decoder] → [output probs]Encoder и decoder — стек одинаковых блоков (typically 6–24 слоя). Каждый блок:
Attention → Add&Norm → FFN → Add&Norm- Attention — основная операция, описана ниже
- Add&Norm — residual connection + LayerNorm
- FFN (feed-forward network) — два linear слоя с активацией (GeLU/ReLU), независимо для каждой позиции
Современные модели:
- Encoder-only (BERT, RoBERTa) — для классификации, NER, retrieval
- Decoder-only (GPT, Llama, Claude) — для генерации
- Encoder-decoder (T5, BART) — для seq2seq (перевод, суммаризация)
Self-attention
Главная инновация — каждый токен «смотрит» на все остальные токены и взвешенно агрегирует информацию.
Шаги:
Каждый input embedding x_i проецируется в три вектора: Query (Q), Key (K), Value (V) через linear layers:
Q = X · W_Q K = X · W_K V = X · W_VСкоры внимания — скалярное произведение Q и K, нормализованное на √d_k:
scores = Q · K^T / √d_kSoftmax по последней оси → веса внимания:
attention_weights = softmax(scores)Взвешенная сумма V:
output = attention_weights · V
Зачем √d_k: при больших d_k скалярное произведение растёт, softmax выходит на плато (gradient vanishing). Деление стабилизирует.
Self vs cross attention:
- Self-attention — Q, K, V из одной последовательности
- Cross-attention — Q из одной (decoder), K, V из другой (encoder memory)
Causal mask в decoder — токен на позиции t не должен видеть будущие. Реализуется маской −∞ в верхнем треугольнике scores перед softmax.
Multi-head attention
Параллельных attention-головок несколько (typically 8–16). Каждая со своими Q, K, V проекциями.
head_i = Attention(Q W_Qi, K W_Ki, V W_Vi)
MultiHead = Concat(head_1, ..., head_h) · W_OЗачем несколько голов: разные головы могут изучать разные паттерны (одна — синтаксис, другая — long-range зависимости). На практике интерпретируемость голов спорна, но multi-head даёт небольшой буст.
Размер каждой головы — d_model / h. То есть compute не растёт с числом голов.
Positional encoding
Attention сам по себе permutation-invariant — изменение порядка токенов не меняет результат. Чтобы модель «знала» порядок, добавляют позиционные кодировки:
Sinusoidal (оригинал):
PE(pos, 2i) = sin(pos / 10000^(2i/d))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d))Прибавляется к input embeddings.
Learned positional embeddings (BERT) — обучаемые вектора для каждой позиции от 0 до max_len.
Rotary Position Embedding (RoPE) — современный стандарт в LLM (Llama, GPT-NeoX). Вращает Q и K по позициям. Лучше экстраполяция на длинные последовательности.
ALiBi — линейный bias на attention scores по дистанции. Альтернатива RoPE.
Encoder vs Decoder vs Encoder-Decoder
BERT (encoder-only):
- Bidirectional self-attention (видит будущее и прошлое)
- Pretrain: masked language modeling — предсказать замаскированные токены
- Use: классификация, sequence labeling, retrieval (через [CLS] embedding)
GPT / Llama / Claude (decoder-only):
- Causal self-attention (видит только прошлое)
- Pretrain: next-token prediction
- Use: generation, chat, code
T5 / BART (encoder-decoder):
- Encoder обрабатывает вход, decoder генерирует выход
- Pretrain: span corruption / denoising
- Use: translation, summarization, QA
В 2022–2026 decoder-only доминируют — оказались самыми гибкими (instruction tuning делает их универсальными).
Размер моделей: BERT-base — 110M, GPT-3 — 175B, GPT-4 / Claude — триллионы (с MoE).
Частые ошибки
«Transformer = self-attention». Self-attention — главная часть, но без residual + LayerNorm + FFN не сходится.
Считать softmax(QK)V «average pooling». Это взвешенное взвешивание, веса учатся через gradient. Среднее не учится.
Игнорировать KV-cache при инференсе. Без кеша — пересчитываем attention для всей последовательности на каждом токене → O(n²). С KV-cache — O(n) на токен.
Большой context без position encoding на длину. Модель тренировалась на 2k токенов, ты подаёшь 32k → деградация. RoPE с YARN-extension или fine-tune на длинном context.
Считать attention «O(1) lookup». Attention — O(n²) по последовательности. Поэтому длинный context дорогой. FlashAttention оптимизирует константу, но сложность та же.
Не понимать разницу encoder/decoder. BERT для генерации не подходит, GPT для классификации embedding слабее BERT. На собесе спрашивают «какую модель брать?» — нужно сопоставить задачу с архитектурой.
Использовать BERT для всего в 2026. Большинство задач классификации сегодня делают через few-shot/zero-shot LLM или embeddings (sentence-transformers, BGE, E5).
Связанные темы
- Embeddings на собеседовании DS
- Attention механизм для DS
- Подготовка к собесу Data Scientist
- ML vs Deep Learning для аналитика
- Loss-функции на собесе DS
FAQ
Чем GPT отличается от BERT?
GPT — decoder-only, causal attention, pretrain через next-token prediction; для генерации. BERT — encoder-only, bidirectional attention, masked LM pretrain; для понимания и классификации.
Что такое FlashAttention?
Оптимизация attention с блочным вычислением и переиспользованием SRAM GPU. Тот же результат, но в 2–3 раза быстрее и меньше памяти. Стандарт на современных GPU.
Почему Transformer заменил RNN?
Параллельность: RNN последовательны (токен t требует t-1), Transformer обрабатывает всю последовательность параллельно. На GPU это даёт огромный буст. Плюс — long-range зависимости через attention лучше, чем через скрытое состояние RNN.
KV-cache — что это?
При генерации токенов decoder-only моделью K и V предыдущих токенов не меняются. Их кешируют, чтобы не пересчитывать. Снижает inference cost с O(n²) до O(n) на токен.
Что такое Mixture of Experts?
Архитектура, в которой FFN заменяется на N экспертов, для каждого токена активируется только k=1-2. Даёт большой total parameter count при меньшем active compute. Используется в GPT-4, Mixtral.
Это официальная информация?
Нет. Статья основана на «Attention Is All You Need» (Vaswani et al., 2017), документации Hugging Face, статьях о современных LLM.
Тренируйте Data Science — откройте тренажёр с 1500+ вопросами для собесов.