MoE (Mixture of Experts)
MoE (Mixture of Experts)
Mixture of Experts (смесь экспертов) — это архитектура нейросети, где
внутри модели сидит много «специалистов», но на каждый запрос
подключаются только несколько из них. Модель формально огромная, но
работает быстро, потому что используется лишь её малая часть за раз.
История
Идея старше, чем кажется. Её впервые сформулировали в 1991 году —
Роберт Якобс, Майкл Джордан, Стивен Новлан и Джеффри Хинтон
(тот самый, нобелевский лауреат 2024 года за нейросети) — в статье
«Adaptive Mixtures of Local Experts». Тогда не было ни GPU, ни больших
данных, и MoE остался академической идеей: красиво, но непонятно зачем.
Перелом — 2017 год. Ноам Шазир и команда Google Brain (среди соавторов
снова Хинтон) публикуют «Outrageously Large Neural Networks» — статью
с провокационным названием «возмутительно большие нейросети». В ней они
показали, что можно обучать модели с 137 миллиардами параметров на
обычном железе, если активировать лишь часть весов на каждом примере.
Тогда же родился термин sparse MoE — разреженная смесь экспертов.
Дальше — лавина:
- 2021 — Google показывает Switch Transformer (1.6 трлн параметров).
Возможно, до сих пор самая большая опубликованная модель. - 2022 — слухи (так и не подтверждённые официально), что **GPT-4 —
это MoE из 8 экспертов по 220B параметров каждый. OpenAI это не
подтверждает и не опровергает, но утечка с лета 2023 года циркулирует. - Декабрь 2023 — французский Mistral выпускает Mixtral 8x7B.
Общих параметров 47B, активных — 13B. Это первая массовая открытая
MoE-модель, которую можно скачать и запустить. - Декабрь 2024 — DeepSeek-V3 (Китай): 671B общих параметров,
37B активных. Догнала GPT-4 по бенчмаркам и стала вирусной в феврале 2025. - Апрель 2025 — Llama 4 от Meta: два варианта Scout (109B/17B
активных) и Maverick (400B/17B активных), оба MoE. - Август 2025 — OpenAI gpt-oss-20b и gpt-oss-120b —
первые открытые модели OpenAI за много лет, обе MoE.
К 2026 году почти все новые фронтирные модели — MoE. Dense-архитектура
(где работают сразу все параметры) осталась в нише небольших моделей
до ~30B.
Что это такое
Чтобы понять MoE, нужно сначала вспомнить, как устроена обычная
dense-модель (плотная — все нейроны работают на каждом токене).
Возьмём Llama 3 70B. Когда ты задаёшь ей вопрос, для каждого слова
ответа модель прокручивает через все 70 миллиардов параметров.
Это требует 70 ГБ видеопамяти (примерно по байту на параметр в формате
float8) и довольно много вычислений.
Теперь MoE. Представь, что внутри слоя нейросети не один большой
блок-обработчик (FFN — feed-forward network, «прямой проход»), а
восемь маленьких. И перед ними — крошечный роутер (router,
маршрутизатор), который смотрит на входной токен и решает: «эту работу
поручим эксперту №3 и эксперту №7». Остальные шесть в этот момент
просто простаивают.
Так устроен каждый MoE-слой. Эксперты разные, роутер выбирает разных
экспертов под разные токены. По итогу для одного токена работает,
скажем, 13B параметров из 47B (как в Mixtral 8x7B). Это и есть
активные параметры — те, что реально считаются на каждом шаге.
Dense vs MoE на примере gpt-oss-20b (с которой Паша вчера возился):
- Общий размер модели: ~13 ГБ (21B параметров в квантованном виде)
- Активных на каждом токене: 3.6B параметров
- Скорость генерации: ~22 токена/сек на M-чипе MacBook (даже когда
часть модели не помещается в видеопамять и спиливается на CPU)
Сравни с dense Qwen3-14B: 14B параметров, активных тоже 14B (все),
скорость — 4 т/с. Разница в 5-6 раз. MoE-модель в 1.5 раза больше,
а работает в 5 раз быстрее. Вот это и есть фокус.
Ещё нюанс. MoE-модель занимает много памяти, потому что все
эксперты должны быть загружены — мы же не знаем заранее, какого
позовёт роутер. Но вычислений делается мало. Поэтому MoE
хорошо подходит для современных GPU/TPU: память дешёвая, вычисления
дорогие. А для процессора (CPU) выигрыш ещё больше — там как раз
вычислений жалко.
Аналогии из жизни
Поликлиника. Когда ты приходишь в большую городскую поликлинику,
ты не идёшь по очереди к каждому из ста врачей. Регистратор
(роутер) смотрит на твою жалобу и направляет к одному-двум
специалистам: с болью в спине — к неврологу и ортопеду, с кашлем —
к терапевту. Остальные 98 врачей в это время заняты другими
пациентами. Поликлиника как организация огромная, но твой визит
включает работу только двух врачей. Где ломается: в поликлинике
каждый врач работает с одним пациентом за раз. В MoE один эксперт
может одновременно обрабатывать множество токенов от разных запросов,
если они все «по его профилю».
Редакция газеты. В большой редакции есть отделы — политика,
спорт, культура, экономика, технологии. Когда приходит инфоповод,
главный редактор (роутер) смотрит на тему и отдаёт материал одному-
двум отделам: новость о выборах — политике, иногда плюс экономике;
матч ЦСКА–Спартак — только спорту. Остальные отделы в это время
делают свои тексты. Газета большая (все 100 журналистов в штате),
но каждая отдельная статья проходит через двух-трёх людей. Где
ломается: у редакторов отделы заранее объявлены и понятны
(«ты — про спорт»). В MoE никто заранее не назначает экспертам
специализацию — она возникает в процессе обучения сама собой,
и часто люди до сих пор не понимают, на чём именно специализируется
тот или иной эксперт внутри модели.
Кухня большого ресторана. Французский повар отвечает за соусы,
итальянский за пасту, мясник за стейк, пекарь за хлеб. Когда
официант приносит заказ «утиная грудка с картофельным гратеном и
бокалом красного», шеф-повар (роутер) распределяет: мясник делает
грудку, соусник — гратен, сомелье несёт вино. Кухня большая, но в
конкретный заказ вовлечены три человека. Где ломается: на кухне
эксперты передают блюдо по эстафете, последовательно. В MoE
эксперты работают параллельно, и их результаты потом
смешиваются с весами (роутер не просто выбирает, но и говорит,
какому эксперту доверять больше: 0.7 и 0.3).
Как это работает
Пошагово, на примере одного слоя MoE с 8 экспертами и
top-2 routing (выбираем двух из восьми).
Входной токен — это вектор из, скажем, 4096 чисел (это и есть
embedding, «представление» слова). Он приходит в MoE-слой.
Шаг 1. Gating network (роутер). Это маленькая линейная
функция: умножаем входной вектор (4096) на матрицу размера
4096×8 — получаем вектор из 8 чисел. Это «оценки» для каждого
эксперта: насколько он подходит для этого токена. Применяем
softmax — превращаем в вероятности.
Шаг 2. Top-K выбор. Берём двух экспертов с самой высокой
вероятностью. Скажем, эксперт №3 (вес 0.6) и эксперт №7
(вес 0.4). Остальные шесть сбрасываем в ноль.
Шаг 3. Прогон через выбранных экспертов. Каждый эксперт — это
обычный полносвязный блок (FFN). Входной токен идёт параллельно
в эксперт №3 и эксперт №7. Каждый выдаёт свой выходной вектор.
Шаг 4. Взвешенная сумма. Выход = 0.6 × выход_эксперта_3 +
0.4 × выход_эксперта_7. Этот результат — финальный выход
MoE-слоя для данного токена.
Так — для каждого токена входной последовательности. Для слова
«Москва» роутер может позвать экспертов 3 и 7, а для следующего
слова «столица» — экспертов 1 и 5. Спустя несколько слоёв
получается, что вся модель «затронула» все восемь экспертов,
но на каждый токен — лишь двух.
Эксперты обучаются, а не назначаются
В коде MoE-модели нет инструкции «эксперт №3 — это программирование, а №7 — это поэзия». Все эксперты стартуют одинаковыми (со случайными весами). В процессе обучения роутер и эксперты постепенно подстраиваются: роутер начинает чуть-чуть чаще посылать определённые токены определённым экспертам, экспертам становится «выгоднее» специализироваться на этих токенах, и через миллионы шагов возникает разделение труда. Какое именно — никто не задаёт. И до сих пор не разгадано: анализы показывают, что эксперты часто специализируются не на темах, а на чём-то странном — синтаксических конструкциях, позициях в предложении, языках, или вообще на непонятном людям признаке.
Auxiliary loss (вспомогательная потеря). Без специальных
ухищрений роутер быстро деградирует в «всегда зову экспертов 1 и 2,
остальные не нужны». Это называется expert collapse (коллапс
экспертов). Чтобы этого избежать, при обучении добавляют штраф за
несбалансированную загрузку: если эксперт №7 в течение батча почти
никто не зовёт, модели слегка снижают итоговую оценку. Это
заставляет роутер распределять работу более-менее равномерно.
ASCII-схема MoE-слоя:
входной токен (4096-мерный вектор)
│
┌──────┴──────┐
│ Router │ ← маленькая матрица 4096×8
└─────┬───────┘
│ softmax → [0.05, 0.03, 0.6, 0.02, 0.01, 0.04, 0.4, 0.05]
│ top-2 → выбраны эксперты №3 (0.6) и №7 (0.4)
│
┌───────┴───────┬────────┬────────┐
▼ ▼ ▼ ▼
Expert 1 Expert 3 … Expert 7 … Expert 8
(idle) (active) (active) (idle)
│ │
└──────┬─────────┘
│
0.6×out₃ + 0.4×out₇
│
▼
выход MoE-слоя
Где встречается в обычной жизни
- Когда ты используешь ChatGPT, Claude, DeepSeek или Mistral в
браузере — с большой вероятностью под капотом MoE. У OpenAI
«GPT-4 = MoE» практически считается фактом среди людей в индустрии. - Когда ты задаёшь вопрос Алисе на колонке или ходишь по сайту
«Сбер ГигаЧат» — у российских флагманов модели тоже частично
MoE, особенно в больших версиях. - Голосовой переводчик в Samsung Galaxy/Apple Intelligence: часть
моделей, которые крутятся в облаке (не на устройстве), уже MoE. - YouTube-рекомендации: ещё с 2018 года рекомендательная система
Google использует MoE-слои (статья «Recommending What Video to
Watch Next»). Это другая, более старая разновидность MoE — про
табличные данные, а не про текст, но та же идея.
Где встречается в IT и бизнесе
- Запуск LLM на скромном железе. Это самый практический выигрыш.
Mixtral 8x7B по качеству сопоставим с Llama-70B (dense), а
работает в 3-4 раза быстрее на той же видеокарте. Для бизнеса с
локальным сервером — большая экономия. - Снижение стоимости inference. OpenAI и Anthropic берут с
тебя деньги за токены. MoE дешевле обслуживать (меньше вычислений
на токен), поэтому MoE-модели часто стоят меньше: gpt-4o-mini в
10 раз дешевле gpt-4 не потому, что она хуже, а потому, что у неё
меньше активных параметров. - Multi-task learning — обучение одной модели нескольким
задачам сразу. Каждая задача может «выбрать» своих экспертов,
не мешая остальным. В классических dense-моделях задачи часто
«забивают» друг друга (catastrophic forgetting). - Рекомендательные системы. Google, ByteDance (TikTok),
Yandex используют MoE в выдаче и в ранжировании: один эксперт
«думает» про новых пользователей, другой про лояльных, третий
про вечерний трафик. - Промышленный fine-tuning. Если у тебя есть базовая модель и
ты дообучаешь её под свой домен (медицина, юриспруденция,
поддержка), MoE даёт возможность добавить «своего эксперта» без
затирания остальных.
Кто пользуется
- OpenAI. GPT-4, GPT-4o, gpt-oss-20b/120b — все, по утечкам или
открыто, MoE. GPT-4 (по слухам) — 8 экспертов × 220B = 1.76 трлн
параметров общих. gpt-oss-20b — 32 эксперта, 4 активных. - Mistral AI (Франция). Mixtral 8x7B (47B/13B активных) и
Mixtral 8x22B (141B/39B активных). Полностью открытые, можно
скачать на HuggingFace. - DeepSeek (Китай). DeepSeek-V3 (671B общих, 37B активных) и
DeepSeek-R1 (рассуждающая модель на той же базе). В январе 2025
стоила в 50 раз дешевле GPT-4 на API, что вызвало панику на
рынке (NVIDIA в один день потеряла $600B капитализации). - Meta. Llama 4 Scout (109B/17B), Llama 4 Maverick (400B/17B),
слухи про Llama 4 Behemoth (≈2 трлн параметров общих).
Apr 2025. - Google DeepMind. Switch Transformer (1.6 трлн), Gemini 1.5
(не подтверждено, но почти наверняка MoE) — флагман. - Yandex и Сбер в России. Конкретные цифры не разглашают,
но GigaChat MAX и YandexGPT 5 Pro, по косвенным признакам, MoE. - Anthropic. Точно не говорит, но Opus 4.7, на котором работаешь
ты прямо сейчас, по очень похожим характеристикам тоже,
по всей видимости, MoE.
Альтернативы и конкуренты
-
Dense-модели (классика, всё ещё живая). Плюсы: проще учить,
проще запускать, проще понимать, что внутри. Минусы: на одинаковом
размере уступают MoE по соотношению качество/стоимость.
Сильны до ~30B (Llama 3 8B, Qwen 32B, Gemma 27B). -
Квантизация (INT4, INT8). Уменьшает каждый параметр с 16 бит
до 4-8 бит. Модель в 2-4 раза меньше по памяти, скорость растёт.
Плюсы: универсально, работает с любой архитектурой.
Минусы: качество немного падает (≈5-10% на бенчмарках при 4 битах).
Не альтернатива MoE, а дополнение: gpt-oss-20b как раз
квантованный MoE. -
Дистилляция (distillation). Маленькая модель «учится у
большой». Получается dense-модель меньшего размера с почти тем
же качеством на узкой задаче. Плюсы: простая, дешёвая в проде.
Минусы: каждая дистилляция — под конкретную задачу, не общая. -
State Space Models (Mamba, Jamba). Альтернативная архитектура
(не трансформер вообще). Плюсы: линейная сложность по длине
контекста (трансформеры — квадратичная). Минусы: пока хуже
трансформеров по качеству, экосистема меньше. Есть гибрид
Jamba (Mamba + MoE).
Когда НЕ стоит использовать
-
Когда у тебя мало RAM. MoE требует, чтобы вся модель была
загружена в память (все эксперты). Если у тебя 16 ГБ оперативки и
ты пытаешься запустить gpt-oss-20b — модель не влезет целиком в
GPU-память, часть свалится на CPU, и весь выигрыш в скорости
потеряется. Dense-модель такого же размера в активных параметрах
(например, 8B) занимала бы меньше и работала бы стабильнее.
Потому что у MoE «бутылочное горлышко» — пропускная способность
памяти. -
Когда нужен низкий latency на короткие запросы. MoE имеет
накладные расходы на роутинг, балансировку, синхронизацию между
экспертами. На запросе в 10 токенов это может перекрывать выигрыш
от меньшего числа активных параметров. Dense-модель тут будет
быстрее. -
Когда модель должна работать на устройстве (телефон, ноутбук
без хорошей видеокарты). Здесь нужны компактные dense-модели:
Llama 3 1B, Phi-3 mini, Gemma 2B. Они влезают в память и не имеют
оверхеда роутинга.
MoE — это не «всегда лучше»
Маркетинг часто подаёт MoE как магическое «больше параметров — то же железо». Реальность: ты экономишь вычисления, но платишь памятью. На GPU с 80 ГБ это окупается. На MacBook с 16 ГБ или на сервере без GPU — нет. Перед выбором архитектуры под свою задачу всегда смотри на свой бюджет памяти, не только на бенчмарки.
Связанные понятия
- FFN (Feed-Forward Network) — «прямой проход», классический
блок-обработчик в трансформере. В MoE этот блок и заменяется
на смесь экспертов. - Router / Gating network — маленькая нейросеть, которая
выбирает экспертов на каждый токен. Сердце MoE. - Top-K routing — стратегия выбора K экспертов с самой высокой
оценкой. Обычно K = 1 или 2. - Sparse activation — когда из миллиардов параметров на каждый
расчёт «зажигается» лишь малая часть. Общий принцип, частный
случай — MoE. - Active parameters vs total parameters — два числа, которые
всегда называют для MoE. Например, «47B / 13B активных». - Expert collapse — болезнь обучения MoE, когда роутер начинает
всегда звать одних и тех же экспертов. - Load balancing loss — штраф за несбалансированную работу
экспертов, добавляется к функции потерь при обучении. - Dense model — обычная нейросеть, где работают все параметры
на каждом шаге. Антоним MoE.
Литература и источники
- Якобс, Джордан, Новлан, Хинтон (1991) — «Adaptive Mixtures of
Local Experts». Первая статья про MoE. Искать в Google Scholar
по названию, оригинальный PDF есть. - Shazeer и др. (2017) — «Outrageously Large Neural Networks:
The Sparsely-Gated Mixture-of-Experts Layer». Современная
редакция идеи. arxiv.org/abs/1701.06538. - Fedus, Zoph, Shazeer (2021) — «Switch Transformers: Scaling to
Trillion Parameter Models». arxiv.org/abs/2101.03961. - Mixtral Paper (декабрь 2023) — Mistral AI, «Mixtral of Experts».
arxiv.org/abs/2401.04088. - DeepSeek-V3 Technical Report (декабрь 2024) — деталищеский
разбор большой MoE-модели. github.com/deepseek-ai/DeepSeek-V3
→ ссылка на arxiv в README. - HuggingFace blog «Mixture of Experts Explained» (2023) —
лучший практический обзор простым языком, с картинками.
huggingface.co/blog/moe. - Видео-лекция Andrej Karpathy «Let's build the GPT Tokenizer»
и его серия про LLM — нет специально про MoE, но даёт основу,
без которой MoE не понять. YouTube, канал Karpathy.
Где встретилось у меня
Вчера на моей машине запускал gpt-oss-20b от OpenAI — пытался
проверить, не быстрее ли она существующей Gemma 12B для одной
классификационной задачи. Размер модели — 13 ГБ, в видеопамять
M-чипа целиком не влезает, часть пришлось спилить на CPU. И всё
равно генерация шла со скоростью 22 токена в секунду — в 5 раз
быстрее тех 4 т/с, которые показывал плотный Qwen3-14B. Тогда и
полез разбираться: оказалось, gpt-oss-20b — MoE, у которой из 21B
параметров активны лишь 3.6B на каждом токене. Архитектура
объяснила результат, который иначе выглядел магией.
Краткое резюме
- MoE — это «много экспертов, выбираем нескольких на запрос».
Модель формально огромная, но на каждом токене работает её малая
часть. - Два ключевых числа: общие параметры (вся модель в памяти) и
активные (вычисляются на каждом токене). Например, gpt-oss-20b:
21B общих, 3.6B активных. - Главная польза — скорость и стоимость inference при сохранении
качества. Поэтому в 2024-2026 годах почти все фронтирные
модели — MoE: GPT-4, Mixtral, DeepSeek, Llama 4. - Главное «но» — MoE требует много памяти. На скромном железе
без хорошей видеокарты выигрыш теряется, иногда полностью. - MoE — не магия, а компромисс: меньше вычислений ценой большей
памяти. Подходит датацентрам с GPU, не подходит ноутбукам и
телефонам.