
El equipo detrás del motor de inferencia ROSE (Runtime — Optimized Serving Engine) integró CuTeDSL — un DSL en Python basado en CuTe layout algebra y MLIR-para compilar kernels JIT a PTX y optimizar el rendimiento en GPUs NVIDIA.
El motor de inferencia ROSE ha incorporado kernels desarrollados con CuTeDSL como su entorno principal de programación GPU para construir y optimizar operaciones críticas en GPUs NVIDIA. La decisión busca llevar modelos desde etapas de experimentación hasta un rendimiento cercano al máximo en producción, manteniendo compatibilidad con las APIs que sirven búsquedas, embeddings y otros servicios en tiempo real. ROSE (Runtime — Optimized Serving Engine) ejecuta modelos personalizados sobre arquitecturas NVIDIA Hopper y Blackwell. El diseño del motor centraliza tareas operativas: inicialización de dispositivos, comunicación interproceso y entre nodos, carga de pesos y la logística de batching, con la intención de ofrecer una plataforma uniforme que gestione la complejidad del despliegue en GPU.
En modelos de lenguaje, ROSE gestiona varias responsabilidades técnicas clave: fragmentación (chunking) de entradas, muestreo durante la inferencia y asignación de memoria KV tanto para atención completa como para variantes de atención lineal. También soporta el emparejamiento de prefijos para escenarios donde se combinan históricos y prompts. Por contraste, los motores destinados a embeddings son más sencillos y se focalizan en batching en línea para alto rendimiento en tareas de representación.
Antes de elegir CuTeDSL, el equipo había construido inicialmente ROSE sobre Triton y evaluó otras alternativas — incluyendo CUDA, cuTile y TVM IR-para las partes que requerían control fino del hardware. La comparativa decantó la elección por CuTeDSL debido a su equilibrio entre control de bajo nivel y la capacidad de compilar justo a tiempo (JIT) hacia PTX mediante una canalización basada en MLIR, lo que acorta ciclos de iteración frente a flujos que dependen de compilaciones extensas en C++.
Una consecuencia inmediata de la adopción de CuTeDSL es la posibilidad de aplicar una especialización en tiempo de compilación más agresiva sin incurrir en los largos tiempos asociados a la expansión de plantillas en C++. Eso habilita la creación de kernels altamente especializados para distintas dimensiones internas de los modelos y combinaciones de hardware, con el objetivo de maximizar el rendimiento en casos límite y reducir la fricción entre investigación y despliegue.
Desde la experiencia de desarrollador, el mayor coste en cadenas de compilación tradicionales proviene de la etapa de expansión de plantillas en C++; cuando se combinan muchos parámetros esa fase puede hacer que la compilación de un único kernel tarde varios minutos. Un DSL JIT como CuTeDSL atenúa ese cuello de botella: tras la generación de IR, las fases de optimización y la compilación a PTX se completan en segundos, lo que acelera la iteración del código y facilita la depuración durante el desarrollo de kernels.
En cuanto a las decisiones de implementación, ROSE sigue confiando para operaciones de multiplicación de matrices y bloques de atención principalmente en kernels provistos por NVIDIA, como CUTLASS y cuBLAS. El resto de la canalización — que incluye embeddings, normalizaciones, arquitecturas MoE (mixture of experts) y funciones de activación — se implementa dentro de la librería de kernels de ROSE, donde CuTeDSL permite acceder a primitivos de hardware y envolver instrucciones PTX cuando es necesario para exprimir el rendimiento.
Para soportar expertos multiplicativos (MoE) y otros patrones de enrutamiento, ROSE incorpora primitivas propias de comunicación inter‑dispositivo que cubren el enrutamiento, despacho y combinación de tokens. Estas operaciones requieren kernels especializados y coherencia entre nodos del clúster; el uso de CuTeDSL facilita la creación de implementaciones adaptadas a esas necesidades operativas, optimizando tanto la latencia como el uso de memoria en topologías distribuidas. La integración de CuTeDSL en ROSE importa porque reduce la fricción entre la exploración de nuevas arquitecturas y su puesta en producción: permite probar modelos distintos, implementar kernels optimizados y trasladar rápidamente a producción los candidatos que muestren mejor rendimiento, manteniendo un mayor control sobre las idiosincrasias del hardware NVIDIA que afectan la latencia y el throughput.
CuTeDSL no está exento de limitaciones: no alcanza la concisión o el nivel de abstracción alto de herramientas como Triton o cuTile y exige especificidad en la definición de layout y en la gestión de primitivos. A cambio, ofrece acceso irrestricto a instrucciones de hardware y, al apoyarse en MLIR y en una compilación JIT a PTX, proporciona una ruta más directa y depurable que emitir CUDA como paso intermedio, lo que resulta útil en escenarios donde la latencia de compilación y la necesidad de especialización son factores críticos.
Fuentes
Respuestas (0)
Aún no hay respuestas en este tema.