Трансформер (архитектура)

Материал из llmdocs — справочник разработчика
Портал: ML и MLOps
Трансформер (архитектура)
Типархитектура нейронной сети
АвторыАшиш Васвани и др. (Google Brain, Google Research)
Публикацияиюнь 2017, «Attention Is All You Need» (NeurIPS 2017)
Ключевая идеямеханизм самовнимания (self-attention) вместо рекуррентности
Вариантыэнкодер (BERT), декодер (GPT, Claude, Llama), энкодер-декодер (T5)
Сложность вниманияквадратичная по длине последовательности
Применениеязыковые модели, перевод, зрение (ViT), звук, мультимодальные модели

Трансформер (англ. Transformer) — архитектура нейронной сети для обработки последовательностей, в основе которой лежит механизм внимания (attention): каждый элемент последовательности напрямую «смотрит» на все остальные и решает, какие из них важны для его представления. Архитектура предложена исследователями Google в 2017 году в статье «Attention Is All You Need»[1] и стала фундаментом почти всех современных больших языковых моделей — GPT, Claude, Gemini, Llama, — а также моделей для изображений, звука и биологии.

Предыстория

До трансформеров последовательности обрабатывали рекуррентными сетями (RNN, LSTM): они читают текст слово за словом, передавая состояние дальше. У этого подхода два недостатка: вычисления нельзя распараллелить по длине текста, а информация о далёких словах постепенно «размывается». В 2014–2015 годах к рекуррентным моделям перевода добавили механизм внимания, позволявший заглядывать в любое место исходной фразы. Авторы трансформера пошли дальше и полностью отказались от рекуррентности, оставив только внимание. Модель обучалась быстрее и превзошла лучшие системы машинного перевода того времени.

Механизм внимания

Каждый входной элемент — токен, представленный вектором-эмбеддингом, — преобразуется в три вектора: запрос (query), ключ (key) и значение (value). Внимание вычисляется по формуле:

Attention(Q, K, V) = softmax(Q·Kᵀ / √d_k) · V

Скалярное произведение запроса одного токена с ключами всех токенов показывает, насколько они релевантны друг другу; softmax превращает оценки в веса, а результат — взвешенная сумма значений. Деление на √d_k стабилизирует обучение. Так слово «он» в предложении может получить большую часть информации от существительного, к которому относится, даже если оно стоит далеко.

Многоголовое внимание (multi-head attention) выполняет несколько таких вычислений параллельно с разными проекциями: одни «головы» следят за синтаксисом, другие — за смысловыми связями или позициями.

Устройство блока

Трансформер — стопка одинаковых блоков. Каждый блок содержит:

  1. слой многоголового самовнимания;
  2. полносвязную сеть (feed-forward), применяемую к каждому токену отдельно;
  3. остаточные связи (вход прибавляется к выходу) и нормализацию слоя, которые позволяют обучать очень глубокие стопки.

Поскольку внимание само по себе не учитывает порядок, к токенам добавляют информацию о позиции. В оригинале это были синусоидальные позиционные кодировки; в современных моделях чаще используются вращательные позиционные эмбеддинги (RoPE).[6] В базовой модели 2017 года было 6 блоков энкодера и 6 блоков декодера с размерностью 512 и 8 головами внимания; современные LLM содержат десятки и сотни блоков и миллиарды параметров.

Три семейства

Вариант Как работает Примеры Для чего
Только энкодер внимание во все стороны, видит весь текст сразу BERT[2], модели эмбеддингов классификация, поиск, векторный поиск
Только декодер каузальное внимание: токен видит только предыдущие GPT[3], Claude, Llama генерация текста, чат, код
Энкодер-декодер энкодер читает вход, декодер генерирует выход исходный трансформер, T5 перевод, суммаризация

Языковые модели-декодеры генерируют текст по одному токену: модель предсказывает распределение вероятностей следующего токена, выбранный токен добавляется к входу, и шаг повторяется. Чтобы не пересчитывать внимание для уже обработанных токенов, ключи и значения сохраняются в KV-кэше; на этом же основано кэширование промптов.

Ограничения и улучшения

  • Квадратичная сложность. Внимание сравнивает каждый токен с каждым, поэтому вычисления и память растут как квадрат длины. Это главный фактор, ограничивающий контекстное окно. FlashAttention ускоряет точное внимание за счёт эффективной работы с памятью GPU;[5] существуют и разреженные и линейные приближения.
  • Смесь экспертов (Mixture of Experts) активирует для каждого токена лишь часть полносвязных подсетей, увеличивая число параметров без пропорционального роста вычислений.
  • Группированное внимание (GQA, MQA) уменьшает размер KV-кэша при генерации.

За пределами текста

Vision Transformer (2020) разбивает изображение на квадратные фрагменты и обрабатывает их как токены.[7] Тот же принцип применяется к звуку, видео, белковым последовательностям и действиям роботов, а мультимодальные модели объединяют несколько типов данных в одной последовательности. Наглядное пошаговое объяснение архитектуры с иллюстрациями — «The Illustrated Transformer» Джея Аламмара.[4]

См. также

Источники

  1. A. Vaswani et al. — Attention Is All You Need (2017)
  2. J. Devlin et al. — BERT: Pre-training of Deep Bidirectional Transformers (2018)
  3. A. Radford et al. — Improving Language Understanding by Generative Pre-Training (OpenAI, 2018)
  4. Jay Alammar — The Illustrated Transformer
  5. T. Dao et al. — FlashAttention (2022)
  6. J. Su et al. — RoFormer: Enhanced Transformer with Rotary Position Embedding (2021)
  7. A. Dosovitskiy et al. — An Image is Worth 16x16 Words: Transformers for Image Recognition (2020)