# Стэнфорд о создании LLM: «Архитектура и гиперпараметры»

Источник: https://www.youtube.com/watch?v=ptFiH_bHnJw
Канал: Stanford Online
Опубликовано: 16.04.2025

---

## Архитектура и гиперпараметры нейроязыковых моделей: эволюция и консенсус
[[JUMP:0:47]]

Современные большие языковые модели (LLM) прошли путь от оригинальной архитектуры Transformer до сложных, оптимизированных систем. Лекция Стэнфордского университета в рамках курса **CS336** посвящена детальному анализу того, как изменились подходы к обучению и проектированию этих моделей, и какие параметры сегодня считаются «золотым стандартом».

### 1. Архитектурные вариации: от стандартного Transformer к современным моделям
[[JUMP:4:28]]

Первоначальная архитектура Transformer, представленная в 2017 году, претерпела значительные изменения. Сейчас индустрия пришла к своего рода «конвергентной эволюции».

*   **Pre-norm vs. Post-norm:** В оригинальной статье была предложена схема с пост-нормировкой, однако она оказалась менее стабильной в обучении. Современные модели почти повсеместно используют **pre-norm**, где `LayerNorm` ставится перед блоком внимания или MLP.
*   **RMS Norm:** Большинство моделей (LLaMA, PaLM, Chinchilla) перешли на `RMS Norm`, отказавшись от вычитания среднего значения и использования параметров смещения (bias). Это не только упрощает вычисления, но и дает выигрыш в скорости без потери качества.
*   **Исключение Bias:** Современные реализации часто полностью исключают параметры смещения (`bias terms`) в линейных слоях, что дополнительно стабилизирует процесс обучения.
*   **Double Norm:** Новейшая инновация, используемая, например, в **Grok** и **Gemma 2**, подразумевает использование `LayerNorm` как перед, так и после блоков.

### 2. Активации и гейтированные линейные модули
[[JUMP:19:15]]

Выбор функций активации и типов MLP оказался критически важным для производительности моделей.

*   **От ReLU к GLU:** Хотя `ReLU` и `GeLU` были стандартом в моделях семейства GPT, сейчас доминируют гейтированные линейные единицы (**GLU**), такие как **SwiGLU**.
*   **Преимущество SwiGLU:** Исследования (включая работу Ноама Шазира) показывают, что варианты GLU стабильно дают более низкие потери при обучении.
*   **Параметризация:** При использовании гейтированных модулей эксперты рекомендуют уменьшать скрытую размерность на 1/3, чтобы общее количество параметров оставалось сопоставимым с негейтированными аналогами.

### 3. Позиционное кодирование: победа RoPE
[[JUMP:32:43]]

Ранее существовало множество методов кодирования позиций (абсолютное, относительное), но сегодня индустрия практически единогласно перешла на **RoPE** (Rotary Position Embeddings).

*   **Суть RoPE:** Метод использует повороты векторов в многомерном пространстве для сохранения относительных позиций слов. Это позволяет модели быть инвариантной к абсолютным позициям и эффективно работать с разными длинами контекста.
*   **Реализация:** В отличие от классических методов, где позиции добавляются в начале, RoPE внедряется непосредственно в слои внимания при генерации запросов и ключей.

### 4. Гиперпараметры и их настройка
[[JUMP:41:03]]

Выбор гиперпараметров часто основывается на эмпирических правилах, которые доказали свою эффективность:

*   **Feed-forward размерность:** Стандартное правило для `ReLU`-моделей — `dff = 4 * d_model`. Для GLU-моделей коэффициент составляет примерно `2.66` (или `8/3`).
*   **Связь голов внимания:** Общепринятым считается соотношение `1:1` между размерностью модели и произведением числа голов на размерность каждой головы.
*   **Размер словаря:** Наблюдается явный тренд на увеличение словарей (от 30к до 100к–250к токенов), что особенно критично для поддержки мультиязычности и снижения затрат на инференс в низкоресурсных языках.

### 5. Стабильность обучения: «волшебная» сила LayerNorm
[[JUMP:105:23]]

По мере роста моделей проблемы численной стабильности (взрыв градиентов) становятся всё более актуальными.

*   **z-loss:** Техника, популяризированная моделью **PaLM**, направлена на стабилизацию нормализатора softmax, чтобы значение `log(z)` всегда было близко к нулю.
*   **QK Norm:** Новое веяние (используется в **Gemma 2**, **OLMo 2**), при котором `LayerNorm` применяется к запросам и ключам перед их умножением. Это ограничивает размер входов в softmax и предотвращает численные сбои.

### 6. Оптимизация инференса: GQA и MQA
[[JUMP:115:22]]

Для борьбы с высокими затратами памяти при генерации текста (из-за `KV cache`) применяются специальные подходы к организации внимания:

*   **MQA (Multi-Query Attention):** Использование множества голов для запросов (Query), но только одной для ключей (Key) и значений (Value).
*   **GQA (Grouped Query Attention):** Компромиссный вариант, где количество голов для K и V уменьшается кратно количеству запросных голов, что позволяет сбалансировать скорость и качество модели.
*   **Структурированные паттерны:** Новейшие модели (например, **LLaMA 4**) комбинируют полное внимание (в нижних слоях) с «скользящим окном» (в верхних), что позволяет экстремально эффективно обрабатывать длинные контексты.