Компания Cursor нацелилась на конкуренцию с Nvidia, представив технологию MoK (Mixture-of-Kittens) — она переписывает способ выполнения слоя MoE (Mixture of Experts). Ключевое достижение — сокращение времени вычислений с 103 микросекунд до 18 микросекунд.
Проблема в работе с MoE связана с коммуникацией между GPU: Router на каждом шаге заново решает, в какой эксперт направить токен, при этом эксперты размещены на разных GPU. Токену нужно перейти на другую карту, выполнить вычисления, вернуться обратно. Перед отправкой требуется упорядочить данные, после получения — дождаться их полноты. В больших масштабах обучения MoE коммуникация замедляет вычисления экспертов.
MoK решает эти проблемы: он объединяет в одном GPU-ядре планирование токенов, меж-GPU-коммуникацию и вычисления экспертов. Технология меняет порядок доставки токенов к экспертам и время начала вычислений, а также позволяет коммуникации и вычислениям одновременно использовать GPU.
21 июля NVIDIA опубликовала результаты обучения DeepSeek-V3 на GB300 NVL72: на 256 GPU производительность одной карты достигла 1 648 TFLOPS. Менее чем через две недели Cursor открыл исходный код MoK.
В плотной FFN путь токена через веса фиксирован, а в MoE с Router каждый токен временно выбирает несколько экспертов. При Expert Parallel эксперты размещаются на множестве GPU — в результате одно прямое распространение требует как минимум двух раундов межкарточной коммуникации: Dispatch (доставка токена на GPU с экспертом) и Combine (возврат результата на исходную позицию токена). В процессе обучения также выполняется обратное распространение, требующее двух обратных раундов коммуникации.
Одно из ключевых изменений в MoK — замена Push на Pull в переднем Dispatch. При Push источник GPU активно передаёт токены в целевой GPU, что усложняет координацию адресов при большом числе участвующих GPU. При Pull целевой GPU самостоятельно считывает нужные токены, зная, на каком исходном GPU и в какой позиции они находятся, и сам определяет место хранения данных. Это исключает необходимость координации адресов между источниками и позволяет сразу упорядочить данные по локальным экспертам. В микротесте Cursor для блока данных 256 × 256 BF16 при использовании NVLink Push перемещает около 159,6 KB, а Pull — 172,0 KB. Преимущество Pull — возможность одновременно использовать оба направления каналов NVLink при неравномерной нагрузке на экспертов; в тестах Cursor зафиксировано повышение использования NVLink до 29 %.
В MoK используются разные стратегии: в прямом проходе — Pull Dispatch и Push Combine, в обратном — Pull Reverse-Combine и Push Reverse-Dispatch. Технология совмещает коммуникацию и экспертные вычисления в одном Megakernel, разделяя SM GPU на две части: одна отвечает за Dispatch, Combine и управление состоянием, другая — за выполнение Expert FFN.
Ключевой параметр — minibatch (количество токенов, передаваемых за раз для экспертных вычислений). Его размер должен быть оптимальным: слишком большой приводит к долгим ожиданиям, слишком маленький — к неполной загрузке SM. Cursor использует wave для определения границы minibatch; MoK стремится к тому, чтобы minibatch формировал минимум два полных wave для непрерывной работы Tensor Core. При Hidden Size = 7168 и среднем размере эксперта 2048 в Kimi 2.5 Cursor оценивает, что minibatch должен быть примерно 2368 токенов. При 512 токенах время прямого прохода в MoK — 5,981 мс, при 2560 токенах — 3,425 мс; дальнейшее увеличение не даёт существенного улучшения скорости.
MoK использует Ring Token Buffer фиксированного размера: пространство сначала заполняется токенами от Dispatch, после вычислений и Combine освобождается для следующей партии токенов. Combine предыдущего macrobatch может выполняться одновременно с Dispatch следующего macrobatch. Ring Buffer действует как буферный слой: при более быстрой коммуникации данные накапливаются в нём, при более быстром потреблении вычислений — ожидается следующая партия токенов. Процесс управляется продвижением состояния на GPU, без участия CPU на каждом шаге. Cursor интегрировал квантование MXFP8 activation в Dispatch, Grouped GEMM и SwiGLU, сократив необходимость в отдельном квантовании и уменьшив количество операций чтения/записи промежуточных результатов в HBM.
Benchmark Cursor тестирует полный MoE-слой (Schedule, Dispatch, Expert FFN, Combine, взвешенное слияние) в сравнении с NCCL + PyTorch, DeepEP, TransformerEngine, HybridEP + Megatron. На GB300 NVL72 MoK показал повышение скорости MXFP8: в прямом проходе — до 2,37 раза, в обратном — до 1,78 раза; для BF16: в прямом проходе — до 1,92 раза, в обратном — до 1,58 раза.
При переходе на MoK на 512 GPU GB300 пропускная способность на карту выросла с 760,9 до 1070,2 токена в секунду (рост ~41 %). Не удаётся точно определить вклад отдельных компонентов (Pull, Megakernel, Ring Buffer) в общий прирост производительности, однако подтверждено, что Pull улучшает использование NVLink и сокращает задержку сигнализации.
MoK сильно зависит от оборудования: ориентирован на Blackwell и NVL72 с высокоскоростным NVLink Domain. Эффективность зависит от возможности GPU с низкой задержкой получать доступ к памяти друг друга. Изменение Hidden Size, Top-k, размера экспертов требует корректировки minibatch и количества коммуникационных SM.
Оптимизация MoE теперь зависит не только от TFLOPS GEMM и GB/s All-to-All, но и от деталей выполнения: времени поступления токенов, их упорядочивания, объёма данных для вычислений, использования SM для коммуникации и управления буфером. Система с NVLink пропускной способностью 130 TB/s всё ещё требует переписывания GPU-ядер для MoE — поскольку каналы уже быстрые, нужно сокращать время ожидания данных GPU.
Конкуренция в эпоху ИИ перешла в стадию «полного суверенитета». Ранее придерживались принципа специализации: Cursor занимался приложениями, NVIDIA — низкоуровневыми решениями. Сейчас конкуренция в сфере ИИ достигла этапа «устранения посредников». Cursor вынужден разрабатывать ядро, а не делает это по собственному желанию. DeepSeek открыл новую эру инженерной оптимизации, а Cursor распространил этот подход на уровень приложений. Тенденция устранения посредников меняет правила определения стоимости ИИ-компаний: оценка будет зависеть не от количества токенов, а от близости кода к видеопамяти и регистрам. Компании, которые не смогут проникнуть в низкоуровневые системы, окажутся в невыгодном положении.
<<<CODE_BLOCK_N>>>
<<<IMG_N>>>