Диагностика Mock-интервью
Главная · Языковые модели: от n-грамм до трансформера

Архитектура трансформера

Собираем всё в одну машину: как токены превращаются в векторы, проходят через стопку одинаковых блоков «внимание + MLP» и на выходе дают вероятности следующего токена. Это скелет GPT, Llama и почти всех современных LLM.

Интуиция: конвейер из одинаковых блоков

Трансформер (transformer) — на удивление однообразная конструкция. Текст режется на токены, каждый токен становится вектором, и дальше этот набор векторов N раз подряд проходит через один и тот же блок. Внутри блока всего две операции: внимание (self-attention) — токены обмениваются информацией друг с другом, и MLP — каждый токен «переваривает» собранное в одиночку. Никаких рекурсий, никаких свёрток: глубина набирается простым повторением блока.

Полный путь данных в decoder-only модели (как GPT):

токены → эмбеддинги + позиции → N × [attention → MLP] → LayerNorm → lm_head → логиты → softmax

Эмбеддинги (embeddings) переводят номера токенов в векторы размерности d. Внимание само по себе не знает порядка слов — «кот ел рыбу» и «рыба ела кота» для него одинаковы, — поэтому к векторам добавляется позиционная информация (positional encoding): синусоиды, обучаемые векторы или RoPE в современных моделях.

Что внутри блока

Каждый блок — это два подслоя, и оба обёрнуты в одинаковую «упаковку» из остаточной связи и нормализации:

x = x + Attention(LN(x))     x = x + MLP(LN(x))
💡 Ключевая мысль Разделение труда в блоке: attention — единственное место, где токены общаются между собой; MLP — место, где каждый токен думает сам. Всё остальное (residual, LayerNorm) — сантехника, чтобы стопка из десятков блоков вообще обучалась.

Выход: lm_head и логиты

После последнего блока вектор каждого токена проходит финальный LayerNorm и попадает в языковую голову (lm_head) — линейный слой размера d × V, где V — размер словаря. Результат — логиты (logits): по одному числу на каждый токен словаря. Softmax превращает их в распределение вероятностей, из которого сэмплируется следующий токен. Важная деталь обучения: благодаря causal mask модель за один проход предсказывает следующий токен для каждой позиции сразу — из фразы в 1000 токенов получается 1000 обучающих примеров, и все считаются параллельно. Именно эта параллельность (у RNN шаг t ждёт шага t−1) — главная причина, почему трансформер победил.

Encoder, decoder и сколько это всё весит

Из одних и тех же блоков собирают три типа моделей. Энкодер (encoder, BERT) — без каузальной маски: каждый токен видит всё предложение в обе стороны; хорош для понимания — классификация, поиск, извлечение сущностей. Декодер (decoder, GPT) — с маской, генерирует слева направо. Энкодер-декодер (T5, оригинальный transformer для перевода) — энкодер читает вход, декодер пишет выход, подглядывая в энкодер через cross-attention.

Параметры грубо считаются так: эмбеддинги V×d (словарь 50 тысяч × d=768 ≈ 38 млн), плюс на каждый блок примерно 12d² (4d² на проекции внимания Q, K, V и выходную + 8d² на MLP с расширением ×4). Для GPT-2 small: 12 блоков × 12 × 768² ≈ 85 млн + эмбеддинги ≈ 124 млн — сходится с официальной цифрой.

⚠️ Подводный камень «Знание хранится в attention» — популярное заблуждение. Матрицы внимания решают, откуда взять информацию, но большая часть параметров и выученных фактов живёт в MLP-блоках. Второе заблуждение: residual-связи «ускоряют инференс» — нет, они нужны для протекания градиентов при обучении, считать всё равно приходится все слои.
🎤 На собеседовании
  • «Нарисуйте блок трансформера» — attention и MLP, каждый в обёртке LN → подслой → сложение с входом (pre-norm). Обязательно проговори, что residual — это сложение, а не конкатенация.
  • «Чем BERT отличается от GPT?» — маской и задачей: encoder без маски учится на восстановлении замаскированных токенов, decoder с маской — на предсказании следующего.
  • «Почему трансформер вытеснил RNN?» — параллельное обучение по всей длине + прямой доступ к любому токену вместо затухающей памяти.
  • «Где параметры?» — примерно ⅔ блока в MLP, ⅓ во внимании; плюс эмбеддинги, заметные у маленьких моделей и почти незаметные у больших.