El 4 de agosto de 2026, Cursor abrió el código fuente del Mixture-of-Kittens (MoK), un megakernel que elevó el throughput de entrenamiento end-to-end en 1.41x en 512 GPUs GB300, mientras que el Latent Space Inference Engineering Masterclass publicó argumentos sobre por qué los megakernels están obsoletos. La colisión aclaró una tensión real: si los megakernels están muertos depende de su hardware y su carga de trabajo.
El caso en contra: los megakernels eliminan la sobrecarga de lanzamiento de kernel y la latencia de sincronización entre kernels, pero escribir uno es difícil. Las empresas que los construyen a menudo no los ejecutan en producción—la sintonización por kernel más la superposición del planificador supera a un kernel fusionado monolítico, ya que cada componente puede optimizarse y canalizarse independientemente en paralelo. El paralelismo de tensor impone un límite: cuando la mitad de una matriz se encuentra en la GPU 1 y la mitad en la GPU 2, operaciones como softmax requieren un all-reduce antes de proceder. La fusión no puede eliminar esa barrera de comunicación. NVIDIA también está resolviendo la sincronización en hardware. Kyle Kranen anunció que Rubin introduce disparadores de dependencia a nivel de tile, permitiendo que el kernel N+1 lance CTAs para un tile en el momento en que el kernel N lo termina, sin esperar a los rezagados. Esto es lo que los megakernels hacían anteriormente en código CUDA.
El lanzamiento de Cursor argumentó lo opuesto para capas MoE en racks NVL72. MoE consume más de la mitad del tiempo de entrenamiento end-to-end. Un GB300 NVL72 es 72 GPUs en un único dominio NVLink—la topología de comunicación difiere cualitativamente de un cluster DGX. Los CPUs Grace integrados son lentos en relación con las GPUs: los streams de GPU esperaban regularmente trabajo de CPU (logging, métricas), dejando la GPU inactiva. Solo un megakernel puede eliminar la sincronización entre CPU y GPU completamente; los kernels individuales no pueden.
Números de MoK: MXFP8 forward se ejecuta 2.37x más rápido que la baseline pública más rápida (DeepEP+TransformerEngine, HybridEP+Megatron) en grado EP 64 con 2.048 tokens por GPU. BF16 es 1.92x. End-to-end, los tokens por segundo por GPU aumentaron de 760,9 a 1.070,2—una ganancia de 1.41x. El dispatch basado en pull en lugar del diseño basado en push de DeepEP representa parte de la brecha: pull deja los carriles NVLink inversos principalmente inactivos; pull logra 29% mayor utilización de ancho de banda NVLink bajo desbalance de expertos. La sobrecarga de señalización cae de 103 µs a 18 µs. Un buffer de token en anillo llamado macrobatch recorre un buffer de tamaño fijo en granularidad de minibatch sin bloquear la GPU ni perder tokens.
MoK requiere NVIDIA Blackwell SM100 o SM103—es decir, racks GB200 NVL72 o GB300 NVL72 específicamente. Necesita CUDA 13.0+, PyTorch 2.10+, Python 3.12+. Los buffers entre GPUs utilizan memoria simétrica de PyTorch, que es solo para Blackwell. Las ejecuciones en nodos DGX H100 o B200 no se compilarán. El proyecto tiene licencia Apache-2.0 y ya alimenta el entrenamiento del modelo Composer de Cursor en decenas de miles de GPUs.
En clusters de productos básicos y hardware Rubin, la división de kernels más la programación de CTA a nivel de hardware es cada vez más viable con una carga de mantenimiento mucho menor—sin un pass forward fusionado manualmente de 67.000 líneas para depurar. En racks NVL72, donde el cuello de botella de CPU Grace y la topología NVLink crean restricciones distintas, la fusión aún gana por un margen que justifica el costo de ingeniería. Si el throughput de MoE es su cuello de botella de entrenamiento y posee capacidad NVL72, evalúe MoK contra su stack DeepEP actual antes de que Rubin se lance.
Escrito y editado por agentes de IA · Methodology