CS336, лекции 3–4: архитектуры, гиперпараметры и смесь экспертов
Перевод слайдов лекций Тацунори Хашимото (весна 2025): что общего у современных LLM — pre-norm, RMSNorm, SwiGLU, RoPE, — какие гиперпараметры почти у всех одинаковы, приёмы стабильности, GQA/MQA и устройство MoE вплоть до DeepSeek-V3.
Как читать вместе с курсом
Заголовок раздела «Как читать вместе с курсом»- Лекция 3 — это «обзор рынка» архитектур: какие решения приняты почти во всех LLM 2023–2025 годов. Она опирается на модули 4.5 «Архитектура трансформера» — особенно урок 4.5.3 о RMSNorm, SwiGLU и GQA — и 5.2 об эффективном внимании. Разделы о стабильности (z-loss, QK-норма) дополняют урок 5.4.4.
- Лекция 4 — смесь экспертов. Читайте после модуля 5.3; финал лекции (DeepSeek-V3, MLA, MTP) совпадает с нашим «китайским» модулем 5.3.2.
- Таблицы с десятками моделей — справочные: новичку достаточно выводов в рамках «Итоги».
Лекция 3. Всё, что вы не хотели знать об архитектуре и обучении LM
Заголовок раздела «Лекция 3. Всё, что вы не хотели знать об архитектуре и обучении LM»Логистика (2)
Заголовок раздела «Логистика (2)»- Вступайте в Slack!
- Проверьте, что у вас последняя версия задания!
План и цели (3)
Заголовок раздела «План и цели (3)»- Быстро вспомнить «стандартный» трансформер (тот, что вы реализуете).
- Что общего у большинства больших LM?
- Каковы типичные вариации архитектуры и процесса обучения?
Тема дня: лучший способ научиться — практический опыт; второй по качеству — учиться на опыте других.
Отправная точка: «исходный» трансформер (4)
Заголовок раздела «Отправная точка: «исходный» трансформер (4)»[Схема энкодера-декодера из статьи «Attention Is All You Need».] Вспомним выбор, сделанный в стандартном трансформере:
- позиционное кодирование: синусы и косинусы, , ;
- FFN: ReLU, ;
- тип нормализации: post-norm, LayerNorm.
Что реализовали вы — простой современный вариант (5)
Заголовок раздела «Что реализовали вы — простой современный вариант (5)»[Схема decoder-only трансформера из задания 1.] Отличия:
- LayerNorm стоит перед блоком;
- вращательное позиционное кодирование (RoPE);
- FF-слои используют SwiGLU, а не ReLU;
- у линейных слоёв (и у layernorm) нет свободных членов (bias).
Почему мы выбрали это? Что стоит выбирать вам?
Как думать об архитектурах? (6)
Заголовок раздела «Как думать об архитектурах? (6)»Архитектур много. Только за год с прошлого CS336 вышло больше 19 новых плотных (dense) моделей, многие — с мелкими правками архитектуры. [Коллаж из титульных страниц техотчётов: Llama 3, Nemotron-4 340B, Qwen2.5, Gemma 2, Reka, Falcon2-11B, InternLM2 и др.]
Посмотрим на данные о плотных архитектурах (7)
Заголовок раздела «Посмотрим на данные о плотных архитектурах (7)»Учимся у множества других моделей и статей. [Большая таблица: модели с 2017 по 2025 год и их выбор — тип нормализации, параллельные слои, позиционное кодирование, активации и т. д.] Мы пройдёмся по многим основным вариантам архитектуры и гиперпараметров:
- что общего у всех этих моделей?
- какие части различаются?
- чему можно из этого научиться?
Что мы разберём (8)
Заголовок раздела «Что мы разберём (8)»- Типичные вариации архитектуры: активации и FFN; варианты внимания; позиционное кодирование.
- Гиперпараметры, которые важны (или нет): что такое ff_dim? Всегда ли размерности голов в сумме дают model_dim? Сколько элементов в словаре?
- Приёмы стабильности.
Вариации архитектуры (9)
Заголовок раздела «Вариации архитектуры (9)»Подумаем о ключевой части архитектуры. [Та же таблица моделей.] Взгляд сверху:
- согласия мало (кроме pre-norm);
- тренд — к архитектурам «как у LLaMA».
Pre-norm против post-norm (10)
Заголовок раздела «Pre-norm против post-norm (10)»Единственное, в чём согласны все (на 2024 год). Устроить LayerNorm так, чтобы она не влияла на основной путь остаточного сигнала (слева). [Рисунок из Xiong et al., 2020: слева Post-LN — нормализация после сложения с остатком, справа Pre-LN — нормализация на входе подслоя, а остаточный путь «чистый».]
Почти все современные LM используют pre-norm (но BERT был post-norm). (Одно забавное исключение — OPT-350M. Не знаю, почему у неё post-norm.)
Pre- против post-norm: данные (11)
Заголовок раздела «Pre- против post-norm: данные (11)»[Графики Salazar & Nguyen (2019): BLEU на англо-вьетнамском переводе — варианты с PreNorm выше PostNorm. Графики Xiong et al. (2020): Pre-LN без разогрева (warmup) сходится быстрее Post-LN с разогревом по loss на валидации и BLEU; на BERT Pre-LN тоже быстрее.]
Pre- против post-norm: объяснения? (12)
Заголовок раздела «Pre- против post-norm: объяснения? (12)»- Затухание градиента [Xiong 2020]. [Столбцы: ожидаемая норма градиента по слоям; у Post-LN без разогрева она растёт к верхним слоям, у Pre-LN ровная.]
- Всплески градиента [Salazar, Nguyen]. [График нормы градиента по итерациям: у PostNorm резкие пики.]
Изначально заявленное преимущество — можно убрать разогрев. Сегодня — стабильность и больший learning rate у больших сетей.
Новое — «двойная» нормализация (13)
Заголовок раздела «Новое — «двойная» нормализация (13)»Если ставить LayerNorm в остаточный поток плохо… почему бы не поставить post-norm вне потока? [Схема: нормализация и на входе подслоя, и на его выходе — до сложения с остатком.] Недавние модели: Grok, Gemma 2. OLMo 2 делает только неостаточную post-norm.
LayerNorm против RMSNorm (14)
Заголовок раздела «LayerNorm против RMSNorm (14)»Исходный трансформер: LayerNorm — нормализует среднее и дисперсию по :
Известные модели: GPT-3/2/1, OPT, GPT-J, BLOOM.
Многие современные LM: RMSNorm — не вычитает среднее и не добавляет свободный член:
Известные модели: семейство LLaMA, PaLM, Chinchilla, T5.
(Примечание переводчика: на слайде формула записана упрощённо; в RMSNorm под корнем стоит среднее квадратов , то есть , — см. урок 4.5.3.)
Почему RMSNorm? (15)
Заголовок раздела «Почему RMSNorm? (15)»Современное объяснение — она быстрее (и не хуже):
- меньше операций (не нужно считать среднее);
- меньше параметров (нет свободного члена, который надо хранить).
Есть ли в этом объяснении смысл? Умножения матриц — подавляющее большинство FLOPs (и памяти) [Ivanov et al., 2023]:
| Класс операций | Доля FLOPs |
|---|---|
| тензорные свёртки (матричные умножения) | 99.80% |
| статистическая нормализация | 0.17% |
| поэлементные | 0.03% |
Почему RMSNorm (2) (16)
Заголовок раздела «Почему RMSNorm (2) (16)»Важный урок: FLOPs — это не время работы! (Подробно обсудим позже.)
| Класс операций | Доля FLOPs | Доля времени |
|---|---|---|
| тензорные свёртки | 99.80% | 61.0% |
| статистическая нормализация | 0.17% | 25.5% |
| поэлементные | 0.03% | 13.5% |
RMSNorm всё равно может быть важна из-за значимости перемещения данных. [Схема блока внимания с подписями: слева вверху у каждой операции число FLOPs (у MHA — «43G»), справа — отношение FLOPs к обращениям к памяти (у MHA — «153», у dropout и LayerNorm — единицы).]
RMSNorm — проверка (17)
Заголовок раздела «RMSNorm — проверка (17)»Выигрыш RMSNorm во времени (и, что удивительно, в качестве) замечен в статьях. [Таблица Narang et al., 2020: при тех же 223M параметрах и 11.1T операций у RMSNorm 3.68 шага/с против 3.50 у ванильного трансформера, финальный loss 1.821 против 1.838 и лучшие метрики SuperGLUE.]
Шире: убираем свободные члены (18)
Заголовок раздела «Шире: убираем свободные члены (18)»У большинства современных трансформеров нет свободных членов. Исходный трансформер: . Большинство реализаций (если они не вентильные): .
Причины: память (как с RMSNorm) и стабильность оптимизации.
LayerNorm: итоги (19)
Заголовок раздела «LayerNorm: итоги (19)»- Практически все делают pre-norm.
- Интуиция — сохранить хорошие стороны остаточных связей.
- Наблюдения — градиент распространяется лучше, меньше всплесков.
- Некоторые добавляют вторую нормализацию вне остаточного потока (это НЕ post-norm).
- Большинство делает RMSNorm.
- На практике работает не хуже LayerNorm.
- Но у неё меньше параметров, которые надо гонять туда-сюда, — это экономит время по часам.
- Свободные члены вообще чаще убирают: компромисс «вычисления/параметры» у них невыгоден.
Активации (20)
Заголовок раздела «Активации (20)»Целый зоопарк активаций: ReLU, GeLU, Swish, ELU, GLU, GeGLU, ReGLU, SeLU, SwiGLU, LiGLU. Что это? Что используют? Важно ли это?
Несколько распространённых активаций (21)
Заголовок раздела «Несколько распространённых активаций (21)»- ReLU: . Известные модели: исходный трансформер, T5, Gopher, Chinchilla, OPT.
- GeLU: , где ( — функция распределения стандартного нормального закона). Известные модели: GPT-1/2/3, GPT-J, GPT-NeoX, BLOOM.
- SwiGLU / GeGLU (следующий слайд). Известные модели: Llama, PaLM, T5 v1.1, большинство моделей после 2023 года.
Вентильные активации (*GLU) (22)
Заголовок раздела «Вентильные активации (*GLU) (22)»GLU меняют «первую часть» FF-слоя: . Вместо линейного слоя + ReLU дополним его (поэлементным) линейным членом:
Получаем вентильный вариант (ReGLU) — заметьте, появился лишний параметр :
Вентильные варианты стандартных FF-слоёв (23)
Заголовок раздела «Вентильные варианты стандартных FF-слоёв (23)»- GeGLU: . Известные модели: T5 v1.1, mT5, LaMDA, Phi-3, Gemma 2, Gemma 3.
- SwiGLU (swish — это ): . Известные модели: LLaMA 1/2/3, PaLM, Mistral, OLMo, большинство моделей после 2023 года.
Замечание: у вентильных моделей размер уменьшают на 2/3.
Работают ли GLU? (24)
Заголовок раздела «Работают ли GLU? (24)»Да, довольно стабильно. [Таблица Shazeer, 2020: средний балл GLUE у FFN с ReLU 83.80, GELU 83.86, Swish 83.60; у вентильных — GEGLU 84.12, SwiGLU 84.36, ReGLU 84.67.]
Работают ли GLU (2)? (25)
Заголовок раздела «Работают ли GLU (2)? (25)»Да, и другие работы подтверждают Shazeer 2020. [Таблица Narang et al., 2020: у GeGLU и SwiGLU финальный loss 1.792 и 1.789 против 1.838 у ванильного трансформера с ReLU.]
Вентили и активации (26)
Заголовок раздела «Вентили и активации (26)»- Много вариаций (ReLU, GeLU, *GLU) в разных моделях.
- *GLU не обязательна для хорошей модели (см. GPT-3), но, вероятно, помогает. Другие недавние модели-исключения: Nemotron 340B (квадрат ReLU), Falcon 2 11B (ReLU).
- Но данные указывают на довольно стабильный выигрыш от SwiGLU и GeGLU.
Последовательные и параллельные слои (27)
Заголовок раздела «Последовательные и параллельные слои (27)»Обычные блоки трансформера последовательные: сначала внимание, потом MLP. Можно ли распараллелить блок трансформера?
Параллельные слои (28)
Заголовок раздела «Параллельные слои (28)»Несколько моделей (GPT-J, PaLM, GPT-NeoX) используют параллельные слои; впервые — в GPT-J. Из статьи PaLM: вместо стандартной последовательной формулировки
используется параллельная:
Параллельная формулировка даёт примерно на 15% более быстрое обучение на больших масштабах, потому что входные матричные умножения MLP и внимания можно слить. Абляции показали небольшую потерю качества на 8B и никакой — на 62B.
При правильной реализации LayerNorm можно делить, а матричные умножения — сливать. Недавние модели: Cohere Command A, Falcon 2 11B, Command R+.
Итоги: архитектуры (29)
Заголовок раздела «Итоги: архитектуры (29)»- Pre- или post-norm: все делают pre-norm (кроме OPT-350M) — вероятно, не без причины.
- LayerNorm или RMSNorm: у RMSNorm явный выигрыш в вычислениях, иногда даже в качестве.
- Вентили: GLU в целом, похоже, лучше, хотя разница мала.
- Последовательные или параллельные слои: очень серьёзных абляций нет, но есть выигрыш в вычислениях.
Много вариантов позиционного кодирования (30)
Заголовок раздела «Много вариантов позиционного кодирования (30)»- Синусоидальное: прибавить синусы и косинусы, позволяющие локализовать позицию: . Известные модели: исходный трансформер.
- Абсолютное: прибавить к эмбеддингу вектор позиции: . Известные модели: GPT-1/2/3, OPT.
- Относительное: добавить вектор в вычисление внимания: . Известные модели: T5, Gopher, Chinchilla.
- RoPE (следующие слайды). Известные модели: GPT-J, PaLM, LLaMA, большинство моделей 2024+.
RoPE: вращательное позиционное кодирование (31)
Заголовок раздела «RoPE: вращательное позиционное кодирование (31)»Ход мысли: относительное позиционное кодирование должно быть такой функцией , что
То есть функция внимания зависит только от относительной позиции . Чем существующие кодирования не достигают этой цели?
- Синусоидальное: есть перекрёстные члены, которые не относительны:
- Абсолютное: очевидно, не относительное.
- Относительное: выше — не скалярное произведение.
RoPE (32)
Заголовок раздела «RoPE (32)»Как решить эту проблему?
- Мы хотим, чтобы эмбеддинги были инвариантны к абсолютной позиции.
- Мы знаем, что скалярные произведения инвариантны к произвольному повороту.
[Рисунок: векторы слов «we» и «know». В эмбеддинге «we know that» вектор «we» повёрнут на 0 позиций, «know» — на 1. В «of course we know» «we» повёрнут на 2 позиции, «know» — на 3. Угол между векторами в обоих случаях одинаков — он зависит только от разности позиций.]
RoPE (33)
Заголовок раздела «RoPE (33)»Поворотов много — какой выбрать? Просто разбить координаты на пары и поворачивать каждую пару в 2D (мотивация — комплексные числа). [Рисунок из Su et al., 2021: пара координат поворачивается на угол , где — позиция; разные пары — с разными частотами .]
Математика RoPE (34)
Заголовок раздела «Математика RoPE (34)»Умножаем на синусы и косинусы:
где — блочно-диагональная матрица из блоков 2×2 , .
Отличие от синусоидального кодирования — оно не аддитивное, перекрёстных членов нет.
Реализация и код RoPE (35)
Заголовок раздела «Реализация и код RoPE (35)»[Фрагмент кода внимания из Hugging Face: обычные проекции q_proj, k_proj, v_proj и перестановка измерений; затем
cos, sin = self.rotary_emb(value_states, position_ids) — получаем матрицу RoPE; затем
apply_rotary_pos_emb(query_states, key_states, cos, sin) — умножаем входы запросов и ключей; дальше — то же, что в
обычном многоголовом внимании.]
Замечание: кодирование применяется в каждой операции внимания, чтобы обеспечить инвариантность к позиции.
Гиперпараметры (36)
Заголовок раздела «Гиперпараметры (36)»Вопросы о гиперпараметрах трансформера, которые могли у вас возникнуть на CS224N:
- Во сколько раз размер FF-слоя должен превышать скрытый размер?
- Сколько голов, и должно ли num_heads всегда делить скрытый размер?
- Каким должен быть размер словаря?
И другие вопросы о настройке модели:
- Регуляризуют ли вообще эти огромные LM?
- Как масштабируют такие модели — очень глубокими или очень широкими?
Удивительно (?) единодушный гиперпараметр 1 (37)
Заголовок раздела «Удивительно (?) единодушный гиперпараметр 1 (37)»Отношение размерностей FF-слоя и модели. Для важны две размерности — размерность FF-слоя () и модели (). Каким должно быть их отношение?
Это верно почти всегда. Исключений немного.
Исключение №1 — варианты GLU (38)
Заголовок раздела «Исключение №1 — варианты GLU (38)»Вспомним: варианты GLU уменьшают размер на 2/3. Значит, у большинства вариантов GLU . Так в основном и есть. Известные примеры:
| Модель | |
|---|---|
| PaLM | 4 |
| Mistral 7B | 3.5 |
| LLaMA-2 70B | 3.5 |
| LLaMA 70B | 2.68 |
| Qwen 14B | 2.67 |
| DeepSeek 67B | 2.68 |
| Yi 34B | 2.85 |
| T5 v1.1 | 2.5 |
Модели примерно в этом диапазоне, хотя у PaLM, LLaMA-2 и Mistral чуть больше.
Исключение №2 — T5 (39)
Заголовок раздела «Исключение №2 — T5 (39)»Как мы видели (и ещё увидим), у большинства LM скучные, консервативные гиперпараметры. Исключение — T5 [Raffel et al., 2020] с очень смелыми настройками. Для модели на 11B они взяли и — поразительный множитель 64. [Цитата из статьи: «для 11B мы используем = 65 536 со 128-головым вниманием… мы масштабировали , потому что современные ускорители (вроде TPU) эффективнее всего на больших плотных матричных умножениях, как в FF-сетях трансформера».]
Другие недавние исключения: Gemma 2 (8×), SmolLM и Gemma 3 (4×, с GLU).
Почему такой диапазон множителей? (40)
Заголовок раздела «Почему такой диапазон множителей? (40)»Эмпирически есть «котловина» от 1 до 10, где этот гиперпараметр близок к оптимальному. [График Kaplan et al., 2020: рост loss в зависимости от для модели на 50M параметров — около нуля примерно от 1 до 4, затем растёт до 8% при 64.]
Чему учит этот гиперпараметр? (41)
Заголовок раздела «Чему учит этот гиперпараметр? (41)»- «Стандартные» и хорошо сработали почти у всех современных LLM.
- Но T5 показывает, что работают даже радикальные . Этот выбор не высечен в камне.
- При этом у T5 есть «улучшенная» модель-продолжение (T5 v1.1) с куда более стандартным множителем 2.5 на GeGLU, так что множитель 64, видимо, неоптимален.
Удивительно (?) единодушный гиперпараметр 2 (42)
Заголовок раздела «Удивительно (?) единодушный гиперпараметр 2 (42)»Отношение «размерность головы × число голов» к размерности модели. Напоминание — слайд из CS224N: «Многоголовое self-attention вычислительно эффективно: хотя мы считаем голов, это не намного дороже. Считаем и переставляем в (так же для , ), затем транспонируем в — теперь ось голов как ось батча. Почти всё остальное то же, и матрицы того же размера».
Так быть не обязано: размерность головы может быть больше model_dim / num_heads. Но большинство моделей следует этому правилу.
Сколько голов, какая размерность модели? (43)
Заголовок раздела «Сколько голов, какая размерность модели? (43)»| Модель | Число голов | Размерность головы | Размерность модели | Отношение |
|---|---|---|---|---|
| GPT-3 | 96 | 128 | 12288 | 1 |
| T5 | 128 | 128 | 1024 | 16 |
| T5 v1.1 | 64 | 64 | 4096 | 1 |
| LaMDA | 128 | 128 | 8192 | 2 |
| PaLM | 48 | 258 | 18432 | 1.48 |
| LLaMA2 | 64 | 128 | 8192 | 1 |
У большинства моделей отношение около 1; заметные исключения — у некоторых моделей Google.
Есть ли основания для отношения 1:1? (44)
Заголовок раздела «Есть ли основания для отношения 1:1? (44)»Есть статьи против отношения 1:1 [Bhojanapalli et al., 2020]. [График перплексии от числа параметров при разной размерности головы.] Но на практике мы, похоже, не видим заметных «низкоранговых бутылочных горлышек»…
Пропорции: глубина и ширина (45)
Заголовок раздела «Пропорции: глубина и ширина (45)»Делать модель глубокой или широкой? Насколько глубокой и широкой? Здесь большинство моделей тоже удивительно единодушны:
| Модель | |
|---|---|
| BLOOM | 205 |
| T5 v1.1 | 171 |
| PaLM (540B) | 156 |
| GPT-3 / OPT / Mistral / Qwen | 128 |
| LLaMA / LLaMA2 / Chinchilla | 102 |
| T5 (11B) | 43 |
| GPT-2 | 33 |
«Золотая середина» — примерно от 100 до 200.
Соображения о пропорциях (46)
Заголовок раздела «Соображения о пропорциях (46)»Очень глубокие модели труднее параллелить, и у них выше задержка. [Цитата из Tay et al., 2021: «Масштабирование глубины имеет очевидное ограничение — слои нельзя распараллелить между устройствами: каждый ждёт предыдущий. Ширину же легко распараллелить на тысячи устройств». Схема: четыре слоя на четырёх GPU, прямой и обратный проход идут по цепочке.]
Данные о масштабировании пропорций (47)
Заголовок раздела «Данные о масштабировании пропорций (47)»[График Kaplan et al., 2020: для моделей на 50M, 274M и 1.5B параметров «широкий диапазон архитектур даёт похожее качество» — loss почти не меняется при от ~10 до ~200. Графики Tay et al., 2021 — качество в зависимости от FLOPs для разных форм модели.]
Типичные размеры словаря (48)
Заголовок раздела «Типичные размеры словаря (48)»Одноязычные модели — 30–50 тысяч токенов; многоязычные и продакшн-системы — 100–250 тысяч.
| Модель | Токенов | Модель | Токенов |
|---|---|---|---|
| исходный трансформер | 37 000 | mT5 | 250 000 |
| GPT | 40 257 | PaLM | 256 000 |
| GPT-2/3 | 50 257 | GPT-4 | 100 276 |
| T5 / T5 v1.1 | 32 128 | Command A | 255 000 |
| LLaMA | 32 000 | DeepSeek | 100 000 |
| Qwen 15B | 152 064 | ||
| Yi | 64 000 |
Одноязычным словарям не нужно быть огромными, а многоязычным — нужно.
Dropout и другая регуляризация (49)
Заголовок раздела «Dropout и другая регуляризация (49)»Нужна ли регуляризация при предобучении? Аргументы против:
- данных очень много (триллионы токенов), больше, чем параметров;
- SGD делает только один проход по корпусу (трудно что-то запомнить).
Звучит разумно… но что делают на практике?
Dropout и weight decay на практике (50)
Заголовок раздела «Dropout и weight decay на практике (50)»| Модель | Dropout* | Weight decay |
|---|---|---|
| исходный трансформер | 0.1 | 0 |
| GPT-2 | 0.1 | 0.1 |
| T5 | 0.1 | 0 |
| GPT-3 | 0.1 | 0.1 |
| T5 v1.1 | 0 | 0 |
| PaLM | 0 | (переменный) |
| OPT | 0.1 | 0.1 |
| LLaMA | 0 | 0.1 |
| Qwen 14B | 0.1 | 0.1 |
Многие старые модели использовали dropout при предобучении. Новые (кроме Qwen) полагаются только на weight decay.
* Чаще всего статьи dropout просто не обсуждают. У открытых моделей это близко к тому, что dropout нет. Для закрытых моделей это может быть не так.
Зачем LLM weight decay? (51)
Заголовок раздела «Зачем LLM weight decay? (51)»У [Andriushchenko et al., 2023] интересные наблюдения о weight decay в LLM:
- он нужен не для борьбы с переобучением [график: loss на валидации почти равен loss на обучении при любом weight decay];
- weight decay взаимодействует с learning rate (косинусное расписание) [графики: с косинусным затуханием LR модели с weight decay в конце обучения достигают меньшего loss на обучении; при постоянном LR — нет].
Итоги: гиперпараметры (52)
Заголовок раздела «Итоги: гиперпараметры (52)»- FF-слой: правило множителя 4 (8/3 для GLU) — стандарт (с некоторыми обоснованиями).
- Размерность головы: «размерность головы × число голов = » — стандарт, но почти без проверки.
- Пропорции: широкий диапазон «хороших» значений (100–200). Значение диктуют системные соображения.
- Регуляризация: LM всё ещё «регуляризуют», но эффект — в основном на динамике оптимизации.
Приёмы стабильности (53)
Заголовок раздела «Приёмы стабильности (53)»В последнее время много внимания к стабильному обучению. Не обучайте модели, похожие на синюю кривую! [Графики OLMo 0424 7B (синяя) и OLMo 2 1124 7B (оранжевая): у синей кривая loss в частых всплесках, норма градиента — сплошные пики; у оранжевой обе гладкие.]
Где возникают проблемы? Берегитесь softmax! (54)
Заголовок раздела «Где возникают проблемы? Берегитесь softmax! (54)»Softmax может вести себя плохо из-за экспонент и деления на ноль. [Схема трансформера с двумя местами softmax: выходной — над словарём, и внутри внимания.]
Стабильность выходного softmax — z-loss (55)
Заголовок раздела «Стабильность выходного softmax — z-loss (55)»Вспомним вычисление softmax:
Добавим к функции потерь штраф, прижимающий к нулю [Devlin, 2014]:
Это полезно для стабильности! Приём «z-loss» впервые применили в PaLM: «Мы дополнительно используем вспомогательный loss , чтобы нормализатор softmax был близок к 0; мы обнаружили, что это повышает стабильность обучения». Другие примеры: Baichuan 2 (2023), DCLM (2024), OLMo 2 (2025).
(Примечание переводчика: если , то и логиты сами по себе почти являются логарифмами вероятностей — в них не накапливаются огромные значения, на которых bf16 теряет точность.)
Стабильность softmax внимания — QK-норма (56)
Заголовок раздела «Стабильность softmax внимания — QK-норма (56)»Запросы и ключи пропускают через LayerNorm (RMSNorm) перед операцией softmax. [Схема блока внимания с LN после проекций Q и K и картинка-мем «STACK MORE LAYER Norms».] Другие примеры: DCLM, OLMo 2, Gemma 2. Изначально пришло из моделей зрения и мультимодальных моделей [Dehghani 2023, Idefics, Chameleon].
Мягкое ограничение логитов (soft-capping) (57)
Заголовок раздела «Мягкое ограничение логитов (soft-capping) (57)»Логиты мягко ограничивают сверху через tanh. Из статьи Gemma 2: «Мы ограничиваем логиты в каждом слое внимания и
в финальном слое так, чтобы они оставались между −soft_cap и +soft_cap:
logits ← soft_cap * tanh(logits / soft_cap). Мы берём soft_cap = 50.0 для слоёв self-attention и 30.0 для
финального слоя».
Это не даёт логитам взрываться, но, возможно, вредит качеству? [Таблица перплексий: базовая модель в bf16 — 11.19, soft-cap — 11.24, QK-норма — 10.84.]
Головы внимания (58)
Заголовок раздела «Головы внимания (58)»Большинство моделей почти не трогают головы внимания, за редкими исключениями:
- GQA / MQA: экономия на инференсе за счёт уменьшения числа голов;
- разреженное или скользящее окно внимания (GPT-4, Mistral): ограничение шаблона внимания ради экономии вычислений;
- экзотика с SSM (Jamba, Falcon 3 и др.): не рассматриваем (простите!).
GQA/MQA — удешевляем головы внимания (59)
Заголовок раздела «GQA/MQA — удешевляем головы внимания (59)»Подумаем о вычислениях во внимании. [Схема: даёт оценки внимания для всех пар, затем softmax, умножение на и проекция.]
- Всего арифметических операций: ; всего обращений к памяти: (входы , матрица softmax, проекции).
- Арифметическая интенсивность высокая: — GPU можно держать загруженными.
(Примечание переводчика: — размер батча, — длина последовательности, — размерность модели, — число голов, — размерность головы.)
GQA/MQA (60)
Заголовок раздела «GQA/MQA (60)»А как насчёт инкрементального случая, когда мы генерируем текст? Ключевое отличие: процесс генерации нельзя распараллелить — он идёт шаг за шагом. Здесь внимание нужно инкрементально пересчитывать и обновлять через KV-кэш. [Анимация из статьи о KV-кэше: на каждом шаге добавляется одна строка K и V, новый запрос умножается на весь кэш.]
GQA/MQA (61)
Заголовок раздела «GQA/MQA (61)»Какова инкрементальная арифметическая интенсивность?
- Всего операций: ; всего обращений к памяти: .
- Интенсивность плохая: — нужны большие батчи и короткие последовательности () или большие размерности модели ().
Можно ли это обойти? Член трудно уменьшить.
MQA — просто меньше размерностей ключей (62)
Заголовок раздела «MQA — просто меньше размерностей ключей (62)»Ключевая идея: запросов много, а ключи и значения — одни на всех. Гораздо меньше данных гоняется в память и обратно (KV-кэш). Всего обращений к памяти: ; интенсивность . [Схема из блога Fireworks: общие K и V, отдельные Q на каждую голову.]
Недавнее расширение — GQA (63)
Заголовок раздела «Недавнее расширение — GQA (63)»Не сжимать KV до одной головы — просто сделать голов меньше. Простой регулятор между выразительностью (отношение запросов к ключам) и эффективностью инференса. [Схема: multi-head — у каждого запроса свои ключ и значение; grouped-query — группы запросов делят ключ и значение; multi-query — все запросы делят одни.]
Вредит ли MQA? Иногда… (64)
Заголовок раздела «Вредит ли MQA? Иногда… (64)»[Таблицы: у MQA небольшая потеря перплексии [Shazeer 2019]; у GQA потеря малая или никакой [Ainslie 2023].]
Разреженное и скользящее окно внимания (65)
Заголовок раздела «Разреженное и скользящее окно внимания (65)»Внимание ко всему контексту может быть дорогим (квадратичным). Строим разреженное или структурированное внимание, обменивая выразительность на время работы (GPT-3). [Рисунки Child et al., 2019: полная матрица внимания, «шаговый» (strided) и «фиксированный» шаблоны.]
Внимание со скользящим окном (66)
Заголовок раздела «Внимание со скользящим окном (66)»Ещё одна вариация идеи — внимание со скользящим окномвнимание со скользящим окном (SWA)EN sliding window attention (SWA)Токен видит только w последних токенов. Стоимость O(n·w) вместо O(n²), KV-кэш не больше w позиций на слой.: берём только главную часть шагового шаблона, а глубина сети расширяет эффективный контекст (Mistral).
Текущий стандартный приём — чередовать «полное» и «дальнобойное» внимание (67)
Заголовок раздела «Текущий стандартный приём — чередовать «полное» и «дальнобойное» внимание (67)»Из Cohere Command A: каждый 4-й слой — с полным вниманием. Дальняя информация — через NoPE (без позиционного кодирования), ближняя — через RoPE + скользящее окно. Другие модели: LLaMA 4; Gemma делает скользящее окно + полное внимание с RoPE.
Итоги и выводы (68)
Заголовок раздела «Итоги и выводы (68)»- Многие аспекты трансформеров (архитектура, гиперпараметры) общие у больших LM.
- Основные различия? Позиционное кодирование, активации, токенизация.
Лекция 4. Смеси экспертов
Заголовок раздела «Лекция 4. Смеси экспертов»Смесь экспертов (2)
Заголовок раздела «Смесь экспертов (2)»[Коллаж: слухи о том, что GPT-4 — MoE; анонс Mixtral в X от Mistral AI; Grok; статьи DeepSeekMoE и DeepSeek-V3; Llama 4; OLMoE.]
Что такое MoE? (3)
Заголовок раздела «Что такое MoE? (3)»[Схема из Fedus et al., 2022: плотная модель — один FFN-слой; разреженная — несколько FFN-«экспертов» и маршрутизатор, который направляет каждый токен к одному из них.]
Заменяем большой FF-слой (многими) большими FF-сетями и слоем-селектором. Число экспертов можно увеличивать, не меняя FLOPs.
Почему MoE набирают популярность? (4–7)
Заголовок раздела «Почему MoE набирают популярность? (4–7)»- При тех же FLOPs больше параметров — лучше [Fedus et al., 2022]. [Слева: loss на тесте падает с ростом числа экспертов от 1 до 256 при одинаковых FLOPs. Справа: кривые перплексии Switch-Base с 16–128 экспертами лежат ниже плотной T5-Base.]
- MoE обучаются быстрее [OLMoE]. [Switch-Base с 64 экспертами достигает качества T5-Base в 7 раз быстрее. У OLMoE (1.3B активных, 6.9B всего) против плотной 1.3B — в 2–3 раза меньше токенов или времени до того же качества.]
- Очень конкурентны по сравнению с плотными аналогами. [График: MMLU в зависимости от числа активированных параметров; DeepSeek-V2 выше всех при ~21B активных, Mixtral 8x22B, Qwen1.5, LLaMA 3 70B — ниже или правее.]
- Хорошо параллелятся на много устройств. [Схема: эксперты одного слоя размещены на разных устройствах.]
Результаты MoE — с Запада (8)
Заголовок раздела «Результаты MoE — с Запада (8)»MoE — это большинство самых сильных открытых моделей, и они довольно быстрые. [Таблица из анонса Llama 4 Maverick: сравнение с Gemini 2.0 Flash, DeepSeek v3.1 и GPT-4o по цене и бенчмаркам.]
Ранние результаты MoE от китайских групп — Qwen (9)
Заголовок раздела «Ранние результаты MoE от китайских групп — Qwen (9)»Китайские LLM-компании тоже много работают над MoE, особенно в малом масштабе.
| Модель | Параметров, млрд | Активных, млрд | MMLU | GSM8K | HumanEval | Многоязычность | MT-Bench |
|---|---|---|---|---|---|---|---|
| Mistral-7B | 7.2 | 7.2 | 64.1 | 47.5 | 27.4 | 40.0 | 7.60 |
| Gemma-7B | 8.5 | 7.8 | 64.6 | 50.9 | 32.3 | — | — |
| Qwen1.5-7B | 7.7 | 7.7 | 61.0 | 62.5 | 36.0 | 45.2 | 7.60 |
| DeepSeekMoE 16B | 16.4 | 2.8 | 45.0 | 18.8 | 26.8 | — | 6.93 |
| Qwen1.5-MoE-A2.7B | 14.3 | 2.7 | 62.5 | 61.5 | 34.2 | 40.8 | 7.17 |
Ранние результаты MoE от китайских групп — DeepSeek (10)
Заголовок раздела «Ранние результаты MoE от китайских групп — DeepSeek (10)»Есть и хорошие недавние абляции MoE, показывающие, что они в целом хороши. [Таблица из статьи DeepSeekMoE: при одинаковых 0.2B активированных параметрах и 100B токенов обучения MoE на 2.0B параметров (Hash Layer, Switch) лучше плотной 0.2B: loss на Pile 1.881 у Switch против 2.060 у плотной; HellaSwag 49.1 против 38.8.]
Недавние результаты MoE — DeepSeek-V3 (11)
Заголовок раздела «Недавние результаты MoE — DeepSeek-V3 (11)»[Столбчатая диаграмма из техотчёта DeepSeek-V3: MMLU-Pro, GPQA-Diamond, MATH 500, AIME 2024, Codeforces, SWE-bench Verified — DeepSeek-V3 против DeepSeek-V2.5, Qwen2.5-72B, Llama-3.1-405B, GPT-4o и Claude-3.5-Sonnet; на MATH 500 у V3 90.2.]
Почему MoE не были популярнее раньше? (12)
Заголовок раздела «Почему MoE не были популярнее раньше? (12)»- Инфраструктура сложна, преимущества проявляются на многих узлах. [Цитата из Fedus et al., 2022: «На высоком уровне разреженность хороша, когда устройств много и есть куда положить дополнительные параметры… поэтому разреженные модели хороши при обучении с параллелизмом по данным и/или модели или при высокой пропускной способности сервинга».]
- Целевые функции обучения несколько эвристичны (и иногда нестабильны) [Zoph et al., 2022]. [Графики loss с расхождением обучения.]
Как обычно выглядят MoE (13)
Заголовок раздела «Как обычно выглядят MoE (13)»- Типично: заменить MLP слоем MoE.
- Реже: MoE для голов внимания [ModuleFormer, JetMoE].
MoE — что различается? (14)
Заголовок раздела «MoE — что различается? (14)»- функция маршрутизации;
- размеры экспертов;
- целевые функции обучения.
Функция маршрутизации — обзор (15)
Заголовок раздела «Функция маршрутизации — обзор (15)»Многие алгоритмы маршрутизации сводятся к «выбрать top-k». [Три матрицы «эксперты × токены»:]
- токен выбирает эксперта;
- эксперт выбирает токен;
- глобальная маршрутизация через оптимизацию.
Тип маршрутизации (16)
Заголовок раздела «Тип маршрутизации (16)»Почти все MoE используют стандартную маршрутизацию «токен выбирает top-k». [Недавние абляции OLMoE: «токен выбирает» (TC) и «эксперт выбирает» (EC) — кривые loss, HellaSwag и MMLU почти совпадают, TC чуть лучше.]
Распространённые варианты маршрутизации подробнее (17)
Заголовок раздела «Распространённые варианты маршрутизации подробнее (17)»- Top-k — используется в большинстве MoE: Switch Transformer (k = 1), GShard (k = 2), Grok (2), Mixtral (2), Qwen (4), DBRX (4), DeepSeek (7).
- Хеширование — распространённый базовый вариант.
Другие методы маршрутизации (18)
Заголовок раздела «Другие методы маршрутизации (18)»- RL для обучения маршрутов — в самых ранних работах (Bengio 2013), сейчас редко.
- Решение задачи сопоставления — линейное назначение (linear assignment) для маршрутизации; в разных статьях, например Clark ‘22.
Top-k маршрутизация подробно (19)
Заголовок раздела «Top-k маршрутизация подробно (19)»Большинство статей используют старую классическую top-k маршрутизацию. Как она работает?
- — вентиль (gating); вентили выбирает логистический регрессор ().
- Это маршрутизатор DeepSeek (V1–2) (так же делают Grok и Qwen).
- Mixtral, DBRX и DeepSeek-V3 применяют softmax после TopK [Dai et al., 2024].
(Примечание переводчика: — вход токена в слой , — обучаемый вектор-«центроид» эксперта ; сумма с — это остаточная связь.)
Недавние вариации от DeepSeek и других китайских LM (20)
Заголовок раздела «Недавние вариации от DeepSeek и других китайских LM (20)»Эксперты меньше, их больше, плюс несколько общих экспертовобщий экспертEN shared expertКлючевая идея DeepSeekMoE., которые включены всегда. (Используется в DeepSeek и Qwen; идея — из DeepSpeed-MoE.) [Схема из DeepSeekMoE: (a) обычная top-2 маршрутизация, (b) + мелкое дробление экспертов (2N экспертов, K = 4), (c) + изоляция общего эксперта (DeepSeekMoE).]
Абляции из статьи DeepSeek (21)
Заголовок раздела «Абляции из статьи DeepSeek (21)»Больше экспертов и общие эксперты, похоже, в целом помогают. [Столбцы: на HellaSwag, PIQA, ARC, TriviaQA, NaturalQuestions каждое добавление — мелкие эксперты, общий эксперт — улучшает нормированное качество.]
Абляции из OLMoE (22)
Заголовок раздела «Абляции из OLMoE (22)»Выигрыш от мелкозернистых экспертов есть, от общих — нет. [Кривые: 32 маршрутизируемых эксперта против 31 + 1 общего — одинаково; 8 → 32 → 64 эксперта — лучше.]
Настройки маршрутизации у недавних MoE (23)
Заголовок раздела «Настройки маршрутизации у недавних MoE (23)»| Модель | Маршрутизируемых | Активных | Общих | Доля дробления |
|---|---|---|---|---|
| GShard | 2048 | 2 | 0 | |
| Switch Transformer | 64 | 1 | 0 | |
| ST-MoE | 64 | 2 | 0 | |
| Mixtral | 8 | 2 | 0 | |
| DBRX | 16 | 4 | 0 | |
| Grok | 8 | 2 | 0 | |
| DeepSeek v1 | 64 | 6 | 2 | 1/4 |
| Qwen 1.5 | 60 | 4 | 4 | 1/8 |
| DeepSeek v3 | 256 | 8 | 1 | 1/14 |
| OLMoE | 64 | 8 | 0 | 1/8 |
| MiniMax | 32 | 2 | 0 | ~1/4 |
| Llama 4 (Maverick) | 128 | 1 | 1 | 1/2 |
(Примечание переводчика: «доля дробления» — во сколько раз эксперт меньше стандартного FFN плотной модели того же размера.)
Как обучать MoE? (24)
Заголовок раздела «Как обучать MoE? (24)»Главная трудность: разреженность нужна для эффективности обучения… но разреженные решения вентилей недифференцируемы! Решения?
- Обучение с подкреплением, чтобы оптимизировать политику вентилей.
- Стохастические возмущения.
- Эвристические «балансировочные» функции потерь.
Угадайте, что используют на практике?
RL для MoE (25)
Заголовок раздела «RL для MoE (25)»RL через REINFORCE работает, но не настолько лучше, чтобы это была явная победа. [Графики Clark et al., 2020: loss на валидации в зависимости от числа экспертов для S-BASE, RL-R и Hash — линии близки.] RL — «правильное решение», но из-за дисперсии градиентов и сложности им широко не пользуются.
Стохастические приближения (26)
Заголовок раздела «Стохастические приближения (26)»Из Shazeer et al., 2017 — решения маршрутизации стохастические, с гауссовым шумом:
где , если среди наибольших элементов , и иначе.
- Это естественно приводит к немного более устойчивым экспертам.
- Благодаря softmax модель учится ранжировать K экспертов.
Стохастические приближения (27)
Заголовок раздела «Стохастические приближения (27)»Стохастический «джиттер» в Fedus et al., 2022: равномерное мультипликативное возмущение логитов маршрутизатора
(router_logits *= uniform(1 - eps, 1 + eps)) с той же целью — менее хрупкие эксперты. Позже его убрали в Zoph et al.,
2022. [Таблица: доля стабильных запусков — базовая модель 4/6, с джиттером входа 3/3, с dropout 3/3.]
Эвристические балансировочные функции потерь (28)
Заголовок раздела «Эвристические балансировочные функции потерь (28)»Ещё одна ключевая проблема — системная эффективность требует, чтобы эксперты использовались равномерно… Из Switch Transformer [Fedus et al., 2022]: к общей функции потерь для каждого слоя Switch добавляется вспомогательная. Для экспертов и батча из токенов:
где — доля токенов, отправленных эксперту , а — доля вероятности маршрутизатора, выделенная эксперту .
Производная по равна , так что чем чаще эксперта используют, тем сильнее его «притормаживают».
Пример из DeepSeek (v1–2) (29)
Заголовок раздела «Пример из DeepSeek (v1–2) (29)»- Балансировка по экспертам — как в Switch Transformer: , , .
- Балансировка по устройствам — та же цель, но агрегированная по устройствам: , , .
Вариант DeepSeek-V3 — смещения для каждого эксперта (30)
Заголовок раздела «Вариант DeepSeek-V3 — смещения для каждого эксперта (30)»Заводим для каждого эксперта смещение (bias), повышающее его шансы получить токены, и подбираем его онлайн-обучением:
Они называют это балансировкой без вспомогательного лоссабалансировка без вспомогательного лоссаEN auxiliary-loss-free load balancingМетод DeepSeek (arXiv:2408.15664, использован в V3) — к оценкам роутера прибавляется смещение b_i, влияющее только на выбор экспертов; после каждого шага b_i сдвигается на ±γ по загрузке. (но подход не полностью без него…): дополнительно используется «последовательностный» вспомогательный loss , где и считаются по токенам одной последовательности, — чтобы избежать крайнего дисбаланса внутри неё.
Что будет, если убрать балансировочные потери? (31)
Заголовок раздела «Что будет, если убрать балансировочные потери? (31)»[Графики OLMoE: без балансировочного loss (LBL) качество хуже; доля токенов по 8 экспертам без балансировки — один-два эксперта забирают большую часть, с балансировкой — все около 1/8.]
Обучение MoE — системная сторона (32)
Заголовок раздела «Обучение MoE — системная сторона (32)»MoE хорошо параллелятся — каждый FFN помещается на одно устройство. Это открывает дополнительные виды параллелизма. [Схема из Switch Transformer: как распределяются веса и данные по ядрам при параллелизме по данным, по модели, по экспертам и их комбинациях.]
Обучение MoE — системная сторона (33)
Заголовок раздела «Обучение MoE — системная сторона (33)»Маршрутизация MoE даёт параллелизм, но и некоторые сложности. Современные библиотеки вроде MegaBlocks (используется во многих открытых MoE) применяют более умные разреженные матричные умножения. [Схема: батч независимых матричных умножений по экспертам, блочно-диагональное умножение и блочно-разреженное умножение для разного числа токенов у экспертов.]
Забавный побочный вопрос — стохастичность MoE-моделей (34)
Заголовок раздела «Забавный побочный вопрос — стохастичность MoE-моделей (34)»Были предположения, что стохастичность GPT-4 вызвана MoE… Откуда у MoE лишняя случайность? Отбрасывание токенов (token dropping) при маршрутизации происходит на уровне батча — значит, запросы других людей могут отбросить ваш токен! [Схема: маршрутизация, перестановка токенов по экспертам с ограниченной ёмкостью — лишние токены отбрасываются, вычисление и обратная перестановка.]
Проблемы MoE — стабильность (35)
Заголовок раздела «Проблемы MoE — стабильность (35)»[Сноска из Zoph et al., 2022: у экспонент маленькое возмущение входа может сильно изменить выход. Пример: в softmax подаются 10 логитов по 128 и один 128.5. Ошибка округления 0.5 в bfloat16 изменит выход softmax на 36% и неверно сделает все логиты равными: вероятность меняется примерно с 0.142 до 0.091. Это происходит потому, что максимум вычитается из всех логитов (ради численной устойчивости), и ошибка округления меняет 128.5 на 128.]
Решение: считать маршрутизатор экспертов во float32 (иногда с вспомогательным z-loss):
Z-loss для устойчивости маршрутизатора (36)
Заголовок раздела «Z-loss для устойчивости маршрутизатора (36)»Что будет, если убрать z-loss? [Графики OLMoE: без z-loss в кривых loss обучения и валидации частые всплески, HellaSwag и MMLU немного хуже.]
Проблемы MoE — дообучение (37)
Заголовок раздела «Проблемы MoE — дообучение (37)»Разреженные MoE могут переобучаться на небольших данных дообучения. [График: на SuperGLUE CB разреженная модель лучше на обучении, но хуже на валидации, чем плотная.]
- Решение Zoph et al. — дообучать только не-MoE MLP. [Столбцы: дообучение всех параметров, только не-MoE, только MoE, только внимания, только FFN.]
- Решение DeepSeek — много данных: 1,4 млн примеров SFT.
Другие методы обучения — upcycling (38)
Заголовок раздела «Другие методы обучения — upcycling (38)»Можно ли инициализировать MoE предобученной LM? [Схема: копируем MLP плотного блока в несколько экспертов, добавляем маршрутизатор. График: upcycling даёт лучшую точность, чем продолжение обучения плотной модели, при том же дополнительном бюджете TPU.]
Пример upcycling — MiniCPM (39)
Заголовок раздела «Пример upcycling — MiniCPM (39)»Берёт модель MiniCPM (top-k = 2, 8 экспертов, ~4B активных параметров). Простая MoE, показывает выигрыш относительно базовой модели при ~520B токенов обучения. [Таблица: MiniCPM-MoE (13.6B) выше MiniCPM-2.4B на C-Eval, CMMLU, MMLU, HumanEval, MBPP, GSM8K, MATH, BBH.]
Пример upcycling — Qwen MoE (40)
Заголовок раздела «Пример upcycling — Qwen MoE (40)»Qwen MoE инициализирован моделью Qwen 1.8B; top-k = 4, 60 экспертов и 4 общих. Архитектура и настройка похожи на DeepSeekMoE, но это один из первых (подтверждённых) успехов upcycling. [Та же таблица, что на слайде 9.]
DeepSeek MoE v1–v2–v3 (41)
Заголовок раздела «DeepSeek MoE v1–v2–v3 (41)»В завершение пройдёмся по архитектуре MoE от DeepSeek.
V1 (16B, 2.8B активных): общие (2) + мелкозернистые (64/4) эксперты; стандартная top-k маршрутизация; стандартная балансировка вспомогательными потерями (по экспертам + по устройствам).
DeepSeek MoE v2 (42)
Заголовок раздела «DeepSeek MoE v2 (42)»V2 (236B, 21B активных): общие (2) + мелкозернистые (160/10) эксперты, 6 активных. Новое:
- маршрутизация top-M по устройствам (сначала выбираются M устройств, затем эксперты только на них);
- балансировочный loss для коммуникаций — балансирует обмен и на вход, и на выход.
DeepSeek MoE v3 (43)
Заголовок раздела «DeepSeek MoE v3 (43)»V3 (671B, 37B активных) (на слайде опечатка — «V2»): общий (1) + мелкозернистые (на слайде — 258) эксперты, 8 активных. Новое:
- сигмоида + softmax, top-K + top-M: , вентили нормируются по выбранным экспертам ;
- балансировка без вспомогательного лосса + последовательностный вспомогательный loss.
(Примечание переводчика: маршрутизируемых экспертов у DeepSeek-V3 256 — как в таблице на слайде 23.)
Бонус: что ещё нужно, чтобы сделать DeepSeek MoE v3? (44)
Заголовок раздела «Бонус: что ещё нужно, чтобы сделать DeepSeek MoE v3? (44)»MLA — многоголовое латентное вниманиемногоголовое латентное внимание (MLA)EN multi-head latent attention (MLA)Предложено DeepSeek в DeepSeek-V2 (2024).. Основная идея: выразить Q, K, V как функции «латентной» активации меньшей размерности. [Схема MLA из статьи DeepSeek-V2.]
Что ещё нужно для DeepSeek MoE v3? (45)
Заголовок раздела «Что ещё нужно для DeepSeek MoE v3? (45)»Основная идея: выразить Q, K, V как функции латентной активации меньшей размерности:
Выгода: в KV-кэше нужно хранить только , а он может быть гораздо меньше. можно слить с проекцией Q. (Запросы тоже сжимают — ради экономии памяти при обучении: , .)
Сложность: RoPE конфликтует с кэшированием в стиле MLA.
- Без RoPE: .
- С RoPE: — матрица поворота зависит от позиции и встаёт между и , их уже нельзя заранее перемножить.
Решение — несколько нелатентных размерностей ключа, которые можно поворачивать.
Что ещё нужно для DeepSeek MoE v3? (46)
Заголовок раздела «Что ещё нужно для DeepSeek MoE v3? (46)»MTP: небольшие лёгкие модели, предсказывающие на несколько шагов вперёд (но MTP делают только на один токен вперёд). [Схемы из DeepSeek-V3 и EAGLE; абляции — в статье.]
Итоги по MoE (47)
Заголовок раздела «Итоги по MoE (47)»- MoE используют разреженность — не каждому входу нужна вся модель.
- Дискретная маршрутизация сложна, но эвристики top-k, похоже, работают.
- Теперь много эмпирических данных, что MoE работают и экономически выгодны.
Что сделать руками
Заголовок раздела «Что сделать руками»- Возьмите блок из урока 4.5.3 и посчитайте параметры FFN для : с ReLU и и со SwiGLU и . Убедитесь, что они почти равны (у SwiGLU три матрицы вместо двух — отсюда множитель 2/3).
- Реализуйте z-loss: к кросс-энтропии добавьте
1e-4 * torch.logsumexp(logits, dim=-1).pow(2).mean()и сравните норму логитов в конце короткого обучения с ним и без него. - Повторите пример со слайда 35 лекции 4: вычислите softmax от десяти логитов 128 и одного 128.5 во float32 и
в bfloat16 (
torch.tensor(..., dtype=torch.bfloat16)). Что происходит с 128.5 при переводе в bfloat16? - Реализуйте маршрутизатор top-k со вспомогательным loss Switch Transformer и проверьте на случайных данных, что loss минимален (равен ) при равномерной загрузке экспертов. Сравните с домашней работой модуля 5.3.
Словарик
Заголовок раздела «Словарик»| EN | RU |
|---|---|
| pre-norm / post-norm | нормализация на входе подслоя / после сложения |
| RMSNorm, bias term | RMSNorm, свободный член |
| gated linear unit (GLU), SwiGLU | вентильный линейный блок, SwiGLU |
| parallel layers | параллельные слои (внимание и MLP одновременно) |
| rotary position embedding (RoPE) | вращательное позиционное кодирование |
| aspect ratio | пропорции модели (ширина к глубине) |
| z-loss, QK norm, logit soft-capping | z-loss, QK-нормализация, мягкое ограничение логитов |
| arithmetic intensity | арифметическая интенсивность |
| MQA, GQA | многозапросное внимание, внимание с группами запросов |
| sliding window attention | внимание со скользящим окном |
| mixture of experts (MoE), router | смесь экспертов, маршрутизатор |
| token choice / expert choice | токен выбирает эксперта / эксперт выбирает токен |
| shared / fine-grained experts | общие / мелкозернистые эксперты |
| load balancing loss | балансировочная функция потерь |
| token dropping, capacity | отбрасывание токенов, ёмкость эксперта |
| upcycling | апсайклинг (инициализация MoE плотной моделью) |
| multi-head latent attention (MLA) | многоголовое латентное внимание |