Mixture of Experts: что означает MoE в нейросети — это архитектура одной модели, где слой прямой связи заменён набором подсетей-экспертов, а роутер для каждого токена выбирает, какие из них сработают. Часть параметров общая, часть принадлежит экспертам, поэтому total и active считаются отдельно.
Эксперт — подсеть внутри одной модели
Эксперт в MoE — это отдельная нейросеть внутри общей модели. В трансформерах роль эксперта обычно играет блок прямой связи (feed-forward network, FFN). В документации Hugging Face сказано, что в разреженных MoE-слоях стоит определённое число экспертов, например восемь, и каждый эксперт — нейросеть; на практике это FFN, но встречаются и более сложные сети, вплоть до вложенных MoE. Эксперт здесь является подсетью внутри общей модели.
Работает это так. В обычном трансформере каждый слой прямой связи обрабатывает все токены одинаково. В MoE-версии слой прямой связи разбит на группы параметров, и для каждого токена активируется лишь часть групп. В анонсе Mistral про Mixtral 8x7B сказано, что это разреженная смесь экспертов с открытыми весами, где блок прямой связи выбирает из восьми групп параметров. В статье на arXiv про Mixtral уточняется: архитектура совпадает с Mistral 7B, разница в том, что каждый слой состоит из восьми блоков прямой связи, то есть экспертов.
Отсюда практический вывод для читателя. Когда вы видите название модели с пометкой MoE, речь идёт об одной модели с внутренним ветвлением. Эксперты делят между собой работу над слоями, но остаются частью единого набора весов. Это отличает MoE от ситуации, когда вы запускаете несколько отдельных моделей и переключаетесь между ними.
Ещё одно следствие: эксперты обучаются вместе с остальной сетью. В документации Hugging Face отмечено, что роутер состоит из обучаемых параметров и предобучается одновременно с остальной сетью. В анонсе Mistral сказано, что эксперты и роутеры обучаются одновременно. Значит, разделение труда между экспертами складывается в ходе обучения, и заранее назначить каждому эксперту узкую тему нельзя.
Роутер выбирает экспертов для каждого токена
Роутер, или гейт, — это механизм, который для каждого токена решает, каким экспертам его отдать. В документации Hugging Face описано: гейт-сеть определяет, какие токены идут к каким экспертам; в примере токен отправляется ко второму эксперту, а другой токен — к первой сети. Токен может уйти более чем к одному эксперту.
В анонсе Mistral механика описана для конкретной модели: на каждом слое для каждого токена роутер выбирает две из восьми групп параметров и складывает их выход. В статье на arXiv про Mixtral добавлено, что выбранные эксперты могут различаться на каждом шаге, хотя каждый токен видит только двух экспертов.
Классическая формула гейта — softmax от произведения входа на матрицу весов гейта. В документации Hugging Face приведён и вариант с шумом: к логитам добавляется шум, затем берутся top-k значений, и уже к ним применяется softmax. Шум нужен для балансировки нагрузки. Если все токены уходят к нескольким популярным экспертам, обучение идёт неэффективно; чтобы выровнять нагрузку, добавляют вспомогательную функцию потерь, которая поощряет равную значимость экспертов. В библиотеке transformers эта функция доступна через параметр aux_loss.
Роутер — обучаемый компонент модели. Вы не выбираете эксперта вручную, и в карточке модели обычно не указано, какой эксперт за что отвечает. В документации Hugging Face отмечено, что эксперты-энкодеры специализируются на группах токенов или поверхностных понятиях, например на пунктуации или именах собственных, а эксперты-декодеры специализируются слабее. При многоязычном обучении отдельного эксперта под конкретный язык не возникает: из-за маршрутизации и балансировки нагрузки такого закрепления нет.
Общие и экспертные параметры
Ключ к пониманию MoE — разделение параметров на общие и экспертные. В документации Hugging Face объяснено, почему у Mixtral 8x7B около 47B параметров: в MoE-моделях только слои прямой связи считаются отдельными экспертами, остальные параметры общие. То есть внимание, эмбеддинги и прочие слои существуют в одном экземпляре и используются всеми токенами.
Это объясняет, почему арифметика «число экспертов умножить на размер эксперта» даёт завышенную оценку. Общая часть не дублируется по экспертам. В статье на arXiv про Mixtral указано, что каждый токен имеет доступ к 47B параметрам, но использует только 13B активных параметров при выводе. В анонсе Mistral приведены те же величины: 46.7B параметров во всей модели и 12.9B параметров на токен.
Разберём это на условном макете, который не является реальной моделью. Пусть общая часть S = 50 единиц весов, экспертов восемь по 100 единиц, и для токена выбираются два эксперта. Тогда total = 50 + 8 × 100 = 850, а active = 50 + 2 × 100 = 250. Токен A может уйти к экспертам E1 и E4, токен B — к E2 и E4; в обоих случаях активны 250 единиц, а объём всех весов равен 850. В этом макете вес гейта и общие слои условно включены в S. Счёт служит учебной иллюстрацией и не является формулой для объёма видеопамяти, числа операций или прогноза качества.
Таблица ниже показывает, как соотносятся части модели в этом макете.
| Часть модели | Единиц весов | Участвует в обработке токена |
|---|---|---|
| Общая часть S | 50 | Да, всегда |
| Эксперт E1 | 100 | Только если выбран |
| Эксперт E2 | 100 | Только если выбран |
| Эксперты E3–E8 | по 100 | Только если выбраны |
| Total | 850 | Хранится целиком |
| Active на токен | 250 | Считается на токен |
Как посчитать total и active на макете
Порядок расчёта на условном макете выглядит так.
- Зафиксируйте общую часть S — параметры, которые есть в одном экземпляре: внимание, эмбеддинги, прочие общие слои.
- Зафиксируйте число экспертов N и размер одного эксперта E.
- Зафиксируйте, сколько экспертов выбирается на токен, — это k.
- Посчитайте total = S + N × E.
- Посчитайте active = S + k × E.
Проверим на макете: S = 50, N = 8, E = 100, k = 2. Total = S + N × E = 850. Active = S + k × E = 250. Изменение k влияет на active, а изменение числа экспертов при фиксированном k увеличивает total. Это условная арифметика учебной архитектуры.
Этот расчёт полезен тем, что отделяет две разные величины. Total описывает объём набора весов. Active описывает, сколько весов участвует в обработке одного токена. Смешивать их в одной оценке нельзя: из active не следует объём памяти, а из total не следует скорость обработки.
Почему active не равен требованию памяти
Распространённая ошибка — считать, что модель с 250 активными единицами весов займёт в памяти столько же, сколько модель с 250 весами. В документации Hugging Face прямо сказано: хотя в MoE при выводе используется лишь часть параметров, все параметры нужно загрузить в оперативную память, поэтому требования к памяти высоки. Там же приведён пример: для Mixtral 8x7B нужен объём видеопамяти, достаточный для плотной модели на 47B параметров.
Причина в том, что роутер выбирает экспертов динамически. Заранее неизвестно, какие эксперты понадобятся следующему токену, поэтому в памяти должны лежать все. В блоге NVIDIA описано, что для каждого токена графические процессоры динамически подгружают параметры выбранных экспертов из памяти с высокой пропускной способностью, что создаёт постоянное давление на пропускную способность памяти. Там же отмечено, что frontier-модели MoE слишком велики для одного GPU, и экспертов распределяют по нескольким GPU — этот приём называют экспертный параллелизм.
Отсюда практическое правило. Active параметры описывают вычислительную нагрузку на токен. Требование памяти определяется total и стратегией размещения. В документации Hugging Face приведён ориентир для развёртывания: хорошая отправная точка — маршрутизация top-2 с коэффициентом ёмкости 1.25 и одним экспертом на ядро; при медленных all-to-all коммуникациях лучше меньший коэффициент ёмкости.
MoE, выбор модели и команды агентов
Три вещи часто путают, и их стоит развести.
MoE — это архитектура внутри одной модели. Эксперты — подсети этой модели, они обучаются совместно и не существуют как отдельные запускаемые программы.
Выбор модели на один запрос — это внешнее решение. Вы или приложение решаете, к какой модели обратиться: к большой, к быстрой, к специализированной. Модель при этом остаётся цельной, и её внутренние эксперты не выбираются вами.
Команда агентов — это несколько независимых систем, которые обмениваются результатами. В блоге NVIDIA приведено сравнение: в агентных системах разные агенты отвечают за планирование, восприятие, рассуждение, работу с инструментами или поиск, а оркестратор координирует их ради одного результата. Там же отмечено, что базовый шаблон напоминает MoE: направить часть задачи подходящему исполнителю и собрать выходы. Сходство здесь структурное; природа компонентов различается. Агенты — отдельные системы, эксперты — подсети одной модели.
Практический вывод: если вам нужна одна модель с внутренним разделением труда, смотрите на MoE. Если нужно распределить роли между разными системами с обменом сообщениями, речь об агентной схеме. Название архитектуры не описывает, как вы организуете работу приложения.
Как читать карточку конкретной модели
Карточка модели — источник проверяемых величин. Смотрите на пять полей.
| Поле карточки | Что показывает | На что влияет |
|---|---|---|
| Total параметры | Объём всего набора весов | Требование памяти при загрузке |
| Active параметры | Вес, участвующий в обработке токена | Вычислительная нагрузка и скорость |
| Routing | Сколько экспертов выбирается на токен | Баланс между качеством и вычислениями |
| Quantization | Формат хранения весов | Объём памяти и точность |
| Формат запуска | Чем модель обслуживается | Совместимость с вашим стеком |
Разберём на историческом примере Mixtral 8x7B. В анонсе Mistral указано: 46.7B параметров во всей модели, 12.9B параметров на токен, контекст 32k токенов, лицензия Apache 2.0. В статье на arXiv про Mixtral сказано, что модель обучена с размером контекста 32k токенов и превосходит или повторяет Llama 2 70B и GPT-3.5 на всех оцениваемых бенчмарках, а на математике, генерации кода и многоязычных задачах заметно превосходит Llama 2 70B. Инструктивная версия, по данным той же статьи, обходит GPT-3.5 Turbo, Claude-2.1, Gemini Pro и Llama 2 70B chat на человеческих бенчмарках.
Это исторический пример 2023 года, он иллюстрирует механику и не описывает самую новую модель. В блоге NVIDIA приведены более поздние данные: на независимом лидерборде Artificial Analysis десять самых сильных открытых моделей используют архитектуру MoE, среди них DeepSeek-R1, Kimi K2 Thinking, gpt-oss-120B и Mistral Large 3. Там же сказано, что MoE стала архитектурой выбора для frontier-моделей и её применяют более 60% открытых релизов моделей за год. Это сведения из отраслевого среза, приведённого NVIDIA; они не гарантируют скорость и качество выбранной модели на ваших задачах.
Как оценивать скорость и качество на задачах
Название архитектуры само по себе не говорит, как модель поведёт себя на вашей задаче. В документации Hugging Face приведены ориентиры, когда разреженные MoE уместны: они полезны в сценариях с высокой пропускной способностью и множеством машин; при фиксированном бюджете вычислений на предобучение разреженная модель оптимальнее, а при низкой пропускной способности и малом объёме видеопамяти лучше плотная модель. Там же отмечено, что напрямую сравнивать число параметров разреженной и плотной модели нельзя, потому что эти величины означают разное.
Порядок оценки на своих задачах:
- Соберите набор из 20–50 реальных запросов вашего сценария с ожидаемыми ответами.
- Прогоните через кандидатов одинаковые промпты и одинаковые параметры генерации.
- Замерьте время до первого токена и общее время ответа.
- Замерьте пиковое потребление памяти при загрузке и во время генерации.
- Оцените ответы по явным критериям: полнота, точность фактов, соблюдение формата.
- Сравните стоимость на тысячу запросов с учётом вашего железа.
Отдельно учтите данные о тонкой настройке. В документации Hugging Face сказано, что разреженные модели сильнее склонны к переобучению, поэтому можно повышать регуляризацию внутри экспертов, задавая отдельный, более высокий dropout для разреженных слоёв. Там же приведено наблюдение из работы ST-MoE: при фиксированной перплексии предобучения разреженная модель хуже плотной на задачах рассуждения, например на SuperGLUE, и заметно лучше на задачах, требующих знаний, например на TriviaQA. Ещё одно наблюдение: заморозка только параметров MoE-слоёв работала почти так же хорошо, как обновление всех параметров, что ускоряет и удешевляет тонкую настройку.
Промпт ниже помогает собрать чек-лист оценки под вашу задачу.
Ты помогаешь оценить модель с архитектурой MoE на конкретной задаче.
Контекст:
- Задача: [ваша задача]
- Модель-кандидат: [название и карточка модели]
- Доступное железо: [GPU, объём памяти]
- Ограничение по времени ответа: [секунды]
Составь чек-лист оценки:
1. Какие поля карточки модели нужно сверить перед запуском.
2. Как собрать тестовый набор из реальных запросов задачи.
3. Какие метрики скорости и памяти замерять.
4. Какие критерии качества ответов использовать.
5. Как сравнить стоимость на тысячу запросов.
Для каждого пункта укажи, какой результат считается приемлемым для моей задачи.
В промпте замените квадратные скобки на свои данные. Если задача про генерацию кода, критерии качества будут одними; если про извлечение фактов — другими.
Частые вопросы
Что такое mixture of experts простыми словами?
Это архитектура одной нейросети, в которой слой прямой связи разбит на несколько подсетей-экспертов. Роутер для каждого токена выбирает, какие эксперты сработают. Часть параметров общая для всей модели, часть принадлежит экспертам.
Что означают moe active parameters?
Active parameters — это параметры, которые участвуют в обработке одного токена. В анонсе Mistral для Mixtral 8x7B указано 12.9B параметров на токен при суммарных 46.7B параметров модели. Для оценки памяти нужны дополнительные сведения о размещении весов и реализации.
Чем moe отличается от dense?
В плотной модели все параметры участвуют в обработке каждого входа. В разреженной MoE активируется лишь часть экспертов. В документации Hugging Face отмечено, что разреженные модели быстрее предобучаются и быстрее выводят результат при том же числе параметров, но требуют больше памяти.
Почему MoE требует много памяти, если активных параметров мало?
Роутер выбирает экспертов динамически, поэтому в памяти должны лежать все веса. В документации Hugging Face сказано, что для Mixtral 8x7B нужен объём видеопамяти, достаточный для плотной модели на 47B параметров. В блоге NVIDIA описана подгрузка параметров выбранных экспертов из памяти на каждом токене.
Можно ли запустить MoE на одном GPU?
Небольшие MoE-модели запускаются на одном устройстве. В блоге NVIDIA отмечено, что frontier-модели MoE слишком велики для одного GPU, и экспертов распределяют по нескольким GPU через экспертный параллелизм. В документации Hugging Face приведён ориентир: top-2 маршрутизация, коэффициент ёмкости 1.25, один эксперт на ядро.
