Какие операции выполняются внутри слоя декодера трансформера?

Автоматический перевод

Эта статья была автоматически переведена с оригинальной английской версии.

Слой декодера трансформера обновляет представления токенов с помощью аттеншна и feed-forward-сети. Аттеншн объединяет информацию из доступных токенов. Feed-forward-сеть преобразует представление каждого токена отдельно. Нормализация и остаточные сложения поддерживают повторение вычислений во многих слоях.

Проследите работу одного слоя типа Llama

Типичный декодер с предварительной нормализацией выполняет такую последовательность:

  1. Нормализует входное представление.
  2. Вычисляет проекции запросов, ключей и значений и применяет каузальный аттеншн.
  3. Вычисляет проекцию результата аттеншна и прибавляет её к исходному входу.
  4. Нормализует обновлённое представление.
  5. Выполняет вычисления feed-forward-сети и прибавляет её выход.

Остаточные сложения сохраняют путь для входного представления через каждый подблок. RMSNorm меняет масштаб представлений без вычитания среднего, которое выполняет LayerNorm. Модели различаются расположением нормализации, типом аттеншна, активацией и членами смещения; эта последовательность описывает блок типа Llama, а не любой трансформер.

Статья о Transformer определяет аттеншн как комбинацию значений с весами, вычисленными через softmax. Каузальная маска позволяет позиции учитывать себя и предыдущие позиции. Проекции с несколькими головами позволяют разным обученным подпространствам вносить вклад в результат, не назначая каждой голове фиксированную языковую роль.

Подсчитайте реальные проекции

Конфигурация Llama 3 8B от Meta имеет скрытую размерность 4,096, размерность feed-forward-сети 14,336, 32 головы запросов, восемь KV-голов и размерность головы 128.

Группа проекцийРасчёт числа параметровЧисло на слой
Запросы и выход аттеншна2 × 4,096²33,554,432
Ключи и значения2 × 4,096 × (8 × 128)8,388,608
Матрицы feed-forward-сети SwiGLU3 × 4,096 × 14,336176,160,768

SwiGLU использует две входные проекции, поэлементно объединяет один результат после активации с другим и применяет выходную проекцию. GLU Variants Improve Transformer определяет эту формулу.

Матрицы feed-forward-сети составляют примерно 81% этих весов проекций. Это не 81% общего времени выполнения или всей модели: эмбеддинги, выходная голова словаря, нормализация, вычисления аттеншна и обращения к памяти тоже влияют на результат.

При оценке числа параметров используйте точную ширину FFN и число KV-голов. Общее приближение 12 × layers × hidden_dimension² предполагает другой стандартный блок и не учитывает важные детали GQA/SwiGLU.

Инженерное руководство: архитектура трансформера содержит схему слоя и оценку числа параметров.