Transformer на собеседовании Data Scientist

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Карьерник — 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

Главная инновация — каждый токен «смотрит» на все остальные токены и взвешенно агрегирует информацию.

Шаги:

  1. Каждый input embedding x_i проецируется в три вектора: Query (Q), Key (K), Value (V) через linear layers:

    Q = X · W_Q
    K = X · W_K
    V = X · W_V
  2. Скоры внимания — скалярное произведение Q и K, нормализованное на √d_k:

    scores = Q · K^T / √d_k
  3. Softmax по последней оси → веса внимания:

    attention_weights = softmax(scores)
  4. Взвешенная сумма 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 не растёт с числом голов.

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

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).

Связанные темы

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+ вопросами для собесов.