El proyecto llama.cpp ha consolidado los patrones de fusión de operaciones del backend de Metal en una única tabla, compartida tanto por el optimizador de grafos como por los codificadores de operaciones. Este cambio también corrige un error en los índices absolutos de salida que estaba causando una regresión de ~5% en la velocidad de generación de tokens.
- Todos los patrones de operaciones fusionables se declaran ahora una sola vez en ggml-metal-fuse.cpp, garantizando la coherencia entre las fases de optimización y cómputo.
- Una corrección en los índices absolutos de los nodos del grafo evita que el último nodo de los patrones de fusión sea sometido incorrectamente a comprobaciones de recuento de uso, restaurando la fusión norm/MUL.
- El nuevo soporte permite que los kernels gating_delta_net se fusionen con las operaciones de copia de caché, escribiendo instantáneas directamente en el búfer de la caché KV.
- La bandera de fusión 'raw' ha sido renombrada a 'unsafe' para aclarar que las devoluciones de llamada específicas del patrón actúan como el único validador de seguridad.
- Una nueva API ad-hoc proporciona estadísticas de fusión independientes del backend para pruebas, incluyendo un conjunto de pruebas de regresión que compara logits fusionados y no fusionados mediante NMSE.
Estas actualizaciones mejoran la mantenibilidad del código al unificar la lógica de fusión y restaurar las pérdidas de rendimiento causadas por fallos silenciosos de fusión en versiones anteriores.