El proyecto llama.cpp ha fusionado las operaciones RMS_NORM y SCALE en un único kernel de CUDA para reducir la sobrecarga del host/driver. Anteriormente, los nodos SCALE separados añadían lanzamientos de kernel adicionales que eran insignificantes en el procesamiento por lotes simple, pero aumentaban significativamente la latencia durante la decodificación especulativa draft-mtp.

  • La fusión añade una bandera do_scale a rms_norm_f32, permitiendo que la ruta fusionada comparta el kernel, la reducción y el lanzador mientras mantiene la equivalencia numérica bit a bit.
  • En una configuración con 2x GTX 1080 Ti y Qwen3.8-27B, el rendimiento de prellenado en frío mejoró un 4.2% para 8000 tokens y un 4.8% para 20000 tokens bajo condiciones draft-mtp.
  • El número de lanzamientos por ubatch disminuyó de 1032.9 + 841.7 a 978.9 + 799.7, igualando los conteos de línea base anteriores sin cambiar las sumas de operaciones de GPU.
  • Todas las pruebas de backend para RMS_NORM_SCALE, NORM_SCALE y operaciones relacionadas pasan en ambas GPUs, con la perplejidad permaneciendo idéntica a la compilación no fusionada.

Esta optimización mejora la velocidad de inferencia específicamente en escenarios de decodificación especulativa al reducir el costo acumulativo de los lanzamientos de kernel.