MoE (Mixture of Experts)

18 июня 2026 · ~14 мин чтения

llm архитектура нейросети ai концепция

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 — разреженная смесь экспертов.

Дальше — лавина:

К 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 (с которой Паша вчера возился):

Сравни с 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-слоя

Где встречается в обычной жизни

Где встречается в IT и бизнесе

Кто пользуется

Альтернативы и конкуренты

Когда НЕ стоит использовать

MoE — это не «всегда лучше»

Маркетинг часто подаёт MoE как магическое «больше параметров — то же железо». Реальность: ты экономишь вычисления, но платишь памятью. На GPU с 80 ГБ это окупается. На MacBook с 16 ГБ или на сервере без GPU — нет. Перед выбором архитектуры под свою задачу всегда смотри на свой бюджет памяти, не только на бенчмарки.

Связанные понятия

Литература и источники

Где встретилось у меня

Вчера на моей машине запускал gpt-oss-20b от OpenAI — пытался
проверить, не быстрее ли она существующей Gemma 12B для одной
классификационной задачи. Размер модели — 13 ГБ, в видеопамять
M-чипа целиком не влезает, часть пришлось спилить на CPU. И всё
равно генерация шла со скоростью 22 токена в секунду — в 5 раз
быстрее тех 4 т/с, которые показывал плотный Qwen3-14B. Тогда и
полез разбираться: оказалось, gpt-oss-20b — MoE, у которой из 21B
параметров активны лишь 3.6B на каждом токене. Архитектура
объяснила результат, который иначе выглядел магией.

Краткое резюме