Какие операции выполняются внутри слоя декодера трансформера?
Автоматический перевод
Эта статья была автоматически переведена с оригинальной английской версии.
Слой декодера трансформера обновляет представления токенов с помощью аттеншна и feed-forward-сети. Аттеншн объединяет информацию из доступных токенов. Feed-forward-сеть преобразует представление каждого токена отдельно. Нормализация и остаточные сложения поддерживают повторение вычислений во многих слоях.
Проследите работу одного слоя типа Llama
Типичный декодер с предварительной нормализацией выполняет такую последовательность:
- Нормализует входное представление.
- Вычисляет проекции запросов, ключей и значений и применяет каузальный аттеншн.
- Вычисляет проекцию результата аттеншна и прибавляет её к исходному входу.
- Нормализует обновлённое представление.
- Выполняет вычисления 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-сети SwiGLU | 3 × 4,096 × 14,336 | 176,160,768 |
SwiGLU использует две входные проекции, поэлементно объединяет один результат после активации с другим и применяет выходную проекцию. GLU Variants Improve Transformer определяет эту формулу.
Матрицы feed-forward-сети составляют примерно 81% этих весов проекций. Это не 81% общего времени выполнения или всей модели: эмбеддинги, выходная голова словаря, нормализация, вычисления аттеншна и обращения к памяти тоже влияют на результат.
При оценке числа параметров используйте точную ширину FFN и число KV-голов. Общее приближение 12 × layers × hidden_dimension² предполагает другой стандартный блок и не учитывает важные детали GQA/SwiGLU.
Инженерное руководство: архитектура трансформера содержит схему слоя и оценку числа параметров.