Moonshot AI открыла MoonEP: обучение Mixture of Experts без простоя GPU в 2,5 раза эффективнее
Компания Moonshot AI в день открытого релиза модели Kimi K3 опубликовала MoonEP, библиотеку для параллельных вычислений в архитектуре Mixture of Experts, которая решает главную проблему обучения MoE-моделей: неравномерную нагрузку на экспертов.

MoE-модели (Mixture of Experts, «смесь экспертов», архитектура, где каждый токен обрабатывают не все параметры, а только выбранные блоки-эксперты) масштабируются дешевле обычных, но при обучении одни эксперты получают в разы больше токенов, чем другие, и весь кластер простаивает, ожидая самый загруженный узел. MoonEP заявляет, что устраняет этот дисбаланс полностью: каждый узел получает ровно одинаковое число токенов, какой бы перекос ни создал маршрутизатор.
Библиотека вышла под лицензией MIT (полностью свободная для коммерческого и личного использования) вместе с моделью Kimi K3 и ещё двумя кодовыми базами: FlashKDA и AgentEnv. По данным репозитория Moonshot AI на GitHub, MoonEP стала одной из технологий, обеспечивших 2,5-кратное улучшение эффективности масштабирования Kimi K3, MoE-модели с 2,8 триллиона параметров, встроенным зрением и контекстным окном в миллион токенов (токен, минимальная единица текста, которую обрабатывает модель, примерно три четверти слова).
Что понадобится
- Кластер с GPU NVIDIA (бенчмарки опубликованы для H20, 8 узлов с expert parallelism, EP = 8)
- Python 3.x, PyTorch, пакет
nvidia-cutlass-dsl==4.4.2(устанавливается автоматически черезsetup.py) - Доступ к репозиторию MoonshotAI/MoonEP на GitHub (MIT-лицензия, клонирование бесплатно)
- Базовое понимание распределённого обучения и архитектуры MoE
- Время на интеграцию: от нескольких часов на тестовый запуск до нескольких дней на встраивание в рабочий пайплайн
Какую проблему решает MoonEP и как именно?
При обучении MoE-моделей маршрутизатор (router) отправляет каждый токен к нескольким лучшим экспертам, но эксперты живут на разных GPU. Маршрутизатор редко распределяет токены равномерно: одни эксперты получают намного больше работы, другие простаивают.
Репозиторий MoonEP измеряет перекос метрикой maxvio: если maxvio = 0, баланс идеальный, если 10 или 20, один эксперт перегружен в разы. Проблема структурная: скорость всего шага определяется самым медленным узлом. Вдобавок объём данных на каждом узле меняется от шага к шагу, что фрагментирует память GPU и вынуждает синхронизироваться с процессором на каждом слое.
Пошаговая инструкция
- Клонируйте репозиторий и установите зависимости.
git clone https://github.com/MoonshotAI/MoonEP.git
cd MoonEP
pip install -e .
Файл setup.py автоматически подтянет nvidia-cutlass-dsl==4.4.2.
-
Разберитесь с ключевым контрактом библиотеки. MoonEP гарантирует жёсткий инвариант: каждый узел (rank) получает ровно
S × Kтокенов, гдеSозначает количество входных токенов на узел, аKозначает число экспертов, к которым маршрутизатор отправляет каждый токен. Перекос маршрутизатора больше не влияет на распределение. -
Настройте размер пула предзагрузки (параметр B). Для обучения задайте
B = E/R, гдеEозначает общее число экспертов, аRозначает количество узлов. Это жёсткое требование: планировщик дублирует экспертов максимум из одной удалённой группы на узел, и такой размер B гарантирует, что каждый эксперт в групповом GEMM окажется локальным.
# Пример: 384 эксперта, 8 узлов
B = E // R # B = 384 // 8 = 48 для обучения
Для инференса (инференс, этап, когда модель уже обучена и просто выдаёт ответы) допустимо B = 3–4. Если узлу потребуется больше удалённых экспертов, чем помещается в B слотов, библиотека прочитает веса напрямую с «домашнего» узла через симметричную память. Это чуть медленнее, но на корректность не влияет.
-
Подготовьте тензоры весов. MoonEP требует один непрерывный тензор весов формы
[E+B, H, H']на каждую проекцию эксперта, где H означает размер скрытого слоя, H' означает промежуточный размер FFN эксперта. Непрерывность обязательна: групповой GEMM адресует экспертов чисто по индексу строки. -
Вызовите dispatch для маршрутизации. Функция
dispatchвозвращаетcu_seqlens[E+B], массив указателей, которые определяют, какие строки экспертов активны. Токены записываются напрямую в свои позиции на удалённых узлах без промежуточного копирования (zero copy). -
Запустите бенчмарк для проверки.
cd benchmarks
python bench_vs_deepep.py
По умолчанию скрипт использует S=8192, E=384, H=7168, K=8, H'=2048, 32 потоковых мультипроцессора (SM) и тестирует maxvio на уровнях 0.2, 1, 10 и 20.
- Для обучения настройте буфер градиентов. Библиотека зеркально дублирует тензор весов буфером градиентов формы
[E+B, H, H']в fp32. Градиенты дублированных экспертов хранятся отдельно от параметрических градиентов: функцияreduce_gradсчитывает слоты своих экспертов со всех узлов через NVLink, накапливает их в локальный градиент и обнуляет использованные слоты.
На бенчмарке с 8 узлами H20 и 384 экспертами при maxvio = 20 (экстремальный перекос маршрутизатора) время коммуникации MoonEP остаётся почти плоским, тогда как у DeepEP v2 (альтернативная библиотека для expert parallelism) задержка растёт пропорционально перекосу, потому что её скорость определяется самым нагруженным узлом. Zero copy устраняет этап копирования из коммуникационного буфера в рабочий, что делает саму коммуникацию быстрее на каждом уровне дисбаланса. Статические формы буферов фиксированного размера S × K убирают посложневую синхронизацию с хостом, которая, по данным репозитория, вызывает OOM-ошибки (нехватка памяти) у DeepEP.
- Параметр B при обучении. Поставить
B < E/Rдля обучения нельзя: планировщик не сможет гарантировать локальность всех экспертов в групповом GEMM. Для инференсаB = 3–4допустимо, для обучения толькоB = E/R. - Разрывные тензоры. Если веса экспертов лежат в разных аллокациях, групповой GEMM сломается: непрерывность тензора обязательна.
- Смешивание градиентов. Градиенты дублированных экспертов должны оставаться невидимыми для штатного reduce-градиентов вашего фреймворка. MoonEP использует отдельный reduce-буфер, но при интеграции в существующий код легко случайно включить эти слоты в общий reduce.
- Переоценка универсальности. Бенчмарки опубликованы только для H20 с EP=8. Поведение на других GPU и конфигурациях EP репозиторий не документирует.
Что это даёт вам на практике?
Разработчику MoE-моделей в России. MoonEP решает проблему, из-за которой mixture of experts обучение на больших кластерах теряет эффективность: динамический дисбаланс нагрузки. Библиотека открыта под MIT, можно встраивать в коммерческий пайплайн. Если вы уже используете DeepEP, скрипт bench_vs_deepep.py позволит сравнить производительность на вашем железе напрямую.
Автору Дзена, который пишет про ИИ. Архитектура mixture of experts обучение и инференс делает доступнее, потому что активируется только часть параметров. Понимание того, как решается проблема баланса, даёт вам материал для объяснения читателям, почему модели вроде Mixtral или Kimi K3 работают быстрее, чем «плотные» модели с таким же числом параметров.
Предпринимателю. Пул предзагрузки (B экспертных весов) расходуется на весь пайплайн, а не на каждый слой отдельно. Это означает, что дополнительная память при масштабировании растёт предсказуемо, а не линейно с глубиной модели. Для планирования бюджета на GPU это конкретный аргумент.
Moonshot AI выложила не просто утилиту, а инфраструктурный слой, который стоит за их флагманской моделью с 2,8 триллиона параметров. MIT-лицензия делает барьер входа нулевым. По моим наблюдениям, в РФ пока мало команд, работающих с expert parallelism на таком масштабе, но для тех, кто строит MoE-модели на десятках и сотнях GPU, библиотека закрывает реальную боль: вместо того чтобы писать собственные балансировщики нагрузки, можно взять готовое решение с детерминированным контрактом по памяти. Честная оговорка: бенчмарки сделаны на H20 авторами библиотеки, независимых замеров пока нет. Интеграция в существующий тренировочный код потребует переработки управления весами и градиентами, это не «подключил и забыл».
Научитесь объяснять сложные ИИ-технологии простым языком
На dzen.guru мы разбираем, как писать про нейросети так, чтобы читатель 50+ понял и дочитал. Архитектуры, бенчмарки, практика, всё на русском.
Смотреть материалыЕсли вы обучаете MoE-модели на нескольких GPU и теряете время на дисбаланс экспертов, MoonEP стоит протестировать на вашей конфигурации: клонируете репозиторий, запускаете бенчмарк и за час получаете ответ, даёт ли библиотека выигрыш именно на вашем железе.

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».
Читайте также

Token Saver снижает стоимость токенов API Claude Sonnet на 92‑99% за счёт локального поиска
Microsoft второго июня запустила Token Saver, расширение для Claude Desktop, которое обрабатывает тяжёлые PDF локально и, по замерам разработчиков, сокращает…

Венг вернулась в OpenAI: вместо безопасности возглавит самоулучшение моделей
Microsoft второго июня запустила агента Scout, который сам ведёт почту и календарь без команд пользователя, и впервые отдала управление расписанием не…

LLM-бот вместо опросника: 34% отказников дают интервью о платных моделях подписки
Почему это важно Готовая архитектура позволяет любому разработчику или автору встроить короткое интервью в момент отказа от покупки и получать живые причины…
Комментарии