Архитектура Transformer и механизм Attention: технический разбор
Представленная Google в статье 2017 года «Attention Is All You Need», архитектура Transformer стала основой современной искусственной интеллигенции. Все крупные языковые модели, такие как GPT, Claude и Gemini, построены на этой архитектуре.
До Transformers: ограничения RNN и LSTM
До появления трансформеров задачи NLP опирались на рекуррентные нейронные сети (RNN) и сети Long Short-Term Memory (LSTM):
Проблемы RNN/LSTM:
- Последовательная обработка → Параллелизация невозможна.
- Затухание/взрыв градиентов на длинных последовательностях.
- Сложности в обучении дальних зависимостей.
- Очень длительное обучение.
Механизм Self-Attention
Self-attention — это механизм, который вычисляет отношения между каждым элементом последовательности и всеми остальными элементами.
Математическая формулировка
Attention(Q, K, V) = softmax(QK^T / √d_k) × V
Параметры:
- Q (Query): Вектор запроса.
- K (Key): Вектор ключа для сопоставления.
- V (Value): Вектор фактической информации.
- d_k: Размерность вектора Key.
Пошаговое вычисление
- Проекция: Input → матрицы Q, K, V
1Q = X × W_Q 2K = X × W_K 3V = X × W_V
- Attention Scores: Скалярное произведение Q и K
scores = Q × K^T
- Масштабирование: Деление на √d_k для стабильности градиента
scaled_scores = scores / √d_k
- Softmax: Преобразование в распределение вероятностей
attention_weights = softmax(scaled_scores)
- Взвешенная сумма: Умножение на Value
output = attention_weights × V
Многоголовое внимание (Multi-Head Attention)
Вместо одной головы внимания используется несколько параллельных голов:
1MultiHead(Q, K, V) = Concat(head_1, ..., head_h) × W_O 2 3where head_i = Attention(QW_Q^i, KW_K^i, VW_V^i)
Преимущества Multi-Head Attention
- Обучение в разных пространствах представлений.
- Захват различных типов контекстных связей.
- Более богатое извлечение признаков.
Типичные конфигурации:
- GPT-3: 96 голов внимания, d_model = 12288.
- GPT-4: Оценочно 120+ голов.
Позиционное кодирование
Поскольку Transformers обрабатывают данные параллельно, для сохранения последовательного контекста добавляется позиционная информация:
Синусоидальное позиционное кодирование
PE(pos, 2i) = sin(pos / 10000^(2i/d_model)) PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
Ротари позиционное кодирование (RoPE)
Более продвинутый метод, используемый в современных моделях:
f(x, pos) = x × e^(i × pos × θ)
Преимущества RoPE:
- Естественно кодирует информацию о относительной позиции.
- Лучшая способность к экстраполяции на длинных последовательностях.
- Используется в GPT-NeoX, LLaMA и Mistral.
Feed-Forward Network
MLP‑слой, который следует за каждым слоем внимания:
FFN(x) = GELU(xW_1 + b_1)W_2 + b_2
Типичные размеры:
- d_model = 4096.
- d_ff = 4 × d_model = 16384.
Функции активации
- ReLU: Классическая и простая.
- GELU: Предпочтительна в моделях типа GPT.
- SwiGLU: Используется в LLaMA и PaLM.
Нормализация слоев (Layer Normalization)
Критически важна для стабильности обучения:
Pre-LN vs Post-LN
Post-LN (оригинальный вариант):
x = x + Attention(LayerNorm(x))
Pre-LN (современный):
x = LayerNorm(x + Attention(x))
Pre-LN обеспечивает более стабильное обучение и стал современным стандартом индустрии.
Архитектуры Encoder и Decoder
Encoder-Only (в стиле BERT)
- Двустороннее внимание.
- Используется для Classification, NER и семантической близости.
- Masked Language Modeling.
Decoder-Only (в стиле GPT)
- Каузальное/авторегрессивное внимание.
- Используется для генерации текста и чат-ботов.
- Предсказание следующего токена.
Encoder-Decoder (T5, BART)
- Задачи последовательность-в-последовательность.
- Перевод и суммаризация.
Каузальное маскирование
Маскирование будущих токенов в моделях‑декодерах:
mask = triu(ones(seq_len, seq_len), diagonal=1) masked_scores = scores + mask × (-inf)
Это гарантирует, что модель смотрит только на предыдущие токены во время генерации.
Оптимизация KV-Cache
Чтобы предотвратить избыточные вычисления во время инференса:
1Step 1: Calculate K_1, V_1 → save to cache 2Step 2: Calculate K_2, V_2 → K = [K_1, K_2], V = [V_1, V_2] 3Step n: Calculate only for the new token, retrieve old values from cache
Экономия памяти: O(n²) → O(n) для этапов обработки.
Flash Attention
Эффективная по памяти реализация механизма attention:
Проблемы стандартного Attention:
- Использование памяти O(n²).
- Узкое место в HBM (high bandwidth memory).
Решение Flash Attention:
- Tiling: Разделение attention на блоки.
- Online Softmax: Инкрементные вычисления.
- I/O Aware: Оптимизация иерархии памяти GPU.
Результат: ускорение в 2–4 раза, экономия памяти 5–20%.
Варианты Sparse Attention
Снижение сложности attention для длинных контекстов:
Local Attention
Фокус только на соседних токенах.
Dilated Attention
Применение attention с определёнными интервалами.
Longformer Pattern
Комбинация Local + Global attention.
Современные варианты Transformer
| Model | Feature | Context Length |
|---|---|---|
| GPT-4 | MoE, long context | 128K |
| Claude 3 | Constitutional AI | 200K |
| Gemini 1.5 | Sparse MoE | 1M |
| Mistral | Sliding window | 32K |
Заключение
Архитектура Transformer — это фундаментальный строительный блок современных ИИ‑систем. Её механизм self-attention, способность к параллельной обработке и умение работать с дальними зависимостями сделали эту архитектуру революционной.
В Veni AI мы эффективно используем модели на основе Transformer в наших корпоративных решениях. Свяжитесь с нами для технического консалтинга.
