Mixture of Experts
mixture of experts (moe) — архитектура из множества «специалистов»
Mixture of Experts (MoE) — архитектура нейросетей, где модель состоит не из одной плотной сети, а из набора «экспертов». Маршрутизатор выбирает для каждого токена только часть из них. Это позволяет увеличить общую ёмкость модели, не используя все её параметры при каждом вычислении, но усложняет обучение, распределённый запуск и работу с памятью.
Коротко
Коротко. Mixture of Experts (MoE) — архитектура, в которой часть обычных слоёв заменена набором экспертных подсетей. Для каждого токена маршрутизатор активирует лишь несколько экспертов. Поэтому общее число параметров может быть большим, а число параметров, участвующих в одном проходе, — заметно меньше. Это экономит часть вычислений, но не память и не инженерную сложность целиком.
Что это такое
Идея MoE простая: представьте больницу из 1000 врачей разных специальностей. Когда приходит пациент с переломом — приём ведёт травматолог, не вся больница. Когда сердечная проблема — кардиолог. Один специалист на одну задачу — но за счёт большого пула покрывается всё.
Так и MoE: вместо одной «универсальной» сети на 30 миллиардов параметров — 64 «эксперта» по 30 миллиардов каждый, плюс маленький «маршрутизатор», который на каждое слово выбирает 2 нужных. Модель на бумаге — 30 × 64 = ~2 триллиона параметров. На реальном запросе работает только 60 миллиардов (2 эксперта по 30B).
История:
- 1991 — Robert Jacobs et al. вводят концепцию «adaptive mixture of local experts».
- 2017 — Google «Outrageously Large Neural Networks» (Shazeer et al.) — первая большая sparse-MoE.
- 2021 — Switch Transformer от Google: 1.6T параметров, рабочая.
- 2023 — Mistral выкатывает Mixtral 8x7B (open-source, 47B total / 12.9B activated).
- С середины 2020-х — MoE всё чаще встречается в крупных открытых и коммерческих семействах моделей.
Плотные и MoE-модели продолжают развиваться параллельно: выбор архитектуры зависит от масштаба, инфраструктуры и целей обучения.
Как это работает
Внутри transformer-слоя классический FFN-блок (Feed-Forward Network) заменяется на MoE-блок:
[input token]
↓
[Router] ← маленькая нейросеть, выбирает экспертов
↓
выбрала: Expert_5 (вес 0.7) + Expert_23 (вес 0.3)
↓
[Expert_5] [Expert_23] ← 2 из 64 активированы
| |
↓ ↓
результат*0.7 + результат*0.3
↓
[output token]
Что важно:
- Sparsity. Только k экспертов из N активны (обычно k=2 из N=8-256).
- Routing decision. На каждый токен маршрутизатор сам решает, кто «справится». Это часть обучения — он учится распределять.
- Specialization. В обученной модели эксперты специализируются: один лучше отвечает на код, другой — на испанский, третий — на математику.
- Load balancing. Если все токены идут к одному эксперту — обучение ломается. Используется auxiliary loss на равномерное распределение.
Минусы MoE:
- Memory. Нужно держать всех экспертов в RAM (или быстро подгружать) — для самообслуживания нужны кластеры.
- Inference complexity. Routing разбивает batch на разные пути — инфраструктура сложнее.
- Communication overhead. В распределённом обучении эксперты живут на разных GPU, нужна интенсивная межGPU-комм.
- Instability. Обучение MoE капризнее, чем плотных моделей. Требует aux losses, careful initialization.
Пример на практике
Предположим, команда сравнивает плотную модель и MoE с похожим числом активных параметров. У MoE может быть больше общая ёмкость, но её веса занимают больше памяти, а маршрутизация усложняет распределённый инференс. Поэтому сравнение делают не по одной цифре параметров, а по качеству на своём наборе задач, задержке, пропускной способности и полной стоимости инфраструктуры.
Для знакомства с архитектурой можно запустить открытую MoE-модель:
# Mixtral 8x7B через HuggingFace + transformers
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained(
"mistralai/Mixtral-8x7B-Instruct-v0.1",
device_map="auto",
torch_dtype=torch.float16
)
# Память и схема размещения зависят от точности весов и среды запуска
В ComfyUI MoE-модели работают через стандартные LLM-ноды (text-generation-webui интеграции). Для image-generation MoE тоже появляется (FLUX-MoE), но менее распространено.
С чем часто путают
- MoE и Ensemble — ensemble: несколько разных моделей, голосуют. MoE: одна модель с разными «слоями» внутри. Ensemble требует prompt каждой модели, MoE — один прогон.
- MoE и Multi-task — multi-task: одна сеть учит много задач. MoE: одна сеть с динамическим routing — может выглядеть как multi-task, но механика другая.
- MoE и Fine-tuning по экспертам — некоторые думают, что эксперты MoE = специалисты по доменам. Это не так. Эксперты в обучении сами выбирают, в чём специализироваться, и часто это нечто странное (например, один эксперт = «начало предложения», другой = «после числа»).
- Total params и Active params — MoE 671B (DeepSeek V3): 671 миллиардов параметров суммарно, но 37 миллиардов на токен активны. Цена/скорость = по active.
- MoE и Grouped Query Attention — разные оптимизации. MoE — про FFN-блок. GQA — про attention-блок. Часто используются вместе.
Частые ошибки и заблуждения
- «MoE всегда лучше плотных». Не всегда. Для маленьких моделей (≤30B) плотные часто конкурентны и проще в эксплуатации.
- «Эксперты можно изолировать и использовать отдельно». Технически — нет. Эксперты обучены работать в системе с роутером. Без роутера они отдельно не выдают качества.
- «MoE — это про latency». Плюс к latency может быть, но главный плюс — про training cost и quality на equal-active-params.
- «MoE решает проблему compute». Снижает inference cost, но обучение всё равно дорогое; cluster-инфраструктура усложняется.
- «Можно превратить любую модель в MoE». Есть техники upcycling (перекомпиляция плотной в MoE), но обычно дешевле обучить MoE с нуля.
Связанные термины
- DeepSeek — V3 — крупнейшая open MoE.
- Kimi — K2 — open MoE с 1T параметров.
- LLM — общая категория, MoE — архитектурная техника внутри.
- Quantization — комплементарная техника для запуска больших MoE.
- Fine-tuning — MoE можно fine-tunить, но сложнее плотных.
Частые вопросы
Какие открытые MoE-модели бывают? MoE-варианты есть у нескольких семейств, включая Mixtral, DeepSeek и Qwen. Конкретные версии и лицензии меняются, поэтому список лучше уточнять в каталогах моделей и их официальных репозиториях.
Можно ли по поведению понять, что модель использует MoE? Нет. Архитектуру нельзя надёжно вывести из ответов модели. Если разработчик не раскрыл устройство системы, утверждения о числе экспертов и параметров остаются предположениями.
Как оценить оборудование для запуска MoE? Нужно учитывать общий размер весов, формат чисел, длину контекста, KV-cache и возможности offloading. Число активных параметров само по себе не показывает, поместится ли модель в память.
MoE можно дообучать? Да, если это поддерживают модель и инструменты. Такое обучение сложнее плотной модели из-за маршрутизации и балансировки экспертов; требования к памяти зависят от выбранного метода.
Все ли модели со временем станут MoE? Нет оснований считать это неизбежным. Плотные модели проще запускать и оптимизировать, а MoE полезен там, где дополнительная ёмкость оправдывает сложность инфраструктуры.
Главное
Mixture of Experts делит часть вычислений между экспертными подсетями и активирует для каждого токена лишь некоторые из них. Это увеличивает ёмкость модели без пропорционального роста вычислений на один токен. Компромисс — больший объём весов, сложная маршрутизация и повышенные требования к распределённой инфраструктуре. При сравнении с плотной моделью важны измерения на реальной задаче, а не только общее или активное число параметров.