Optimización de caché n-gram en llama.cpp acelera la decodificación

Fuentes: llama.cpp n-gram cache optimizations boost prompt lookup decoding speed

Un desarrollador ha implementado optimizaciones en llama.cpp que aceleran la decodificación mediante búsqueda de prompts (prompt lookup decoding) hasta 42 veces más rápido y reducen el uso de memoria hasta 2,6 veces. Esta mejora se basa en técnicas de optimización de rendimiento inspiradas en el trabajo de Daniel Lemire y Martin Ankerl. La técnica utiliza modelos n-gram simples para predecir tokens futuros, seleccionando el token más probable según la frecuencia de aparición en un corpus de texto. El sistema mantiene tres tipos de cachés: contexto, dinámico y estático. Las optimizaciones modifican cómo se calculan las puntuaciones y se aplican los umbrales de aceptación para cada n-gram, priorizando la eficiencia sin alterar la tasa de aceptación de tokens. Los resultados se evaluaron utilizando el corpus WikiText-103 y un Apple M4 Pro, mostrando mejoras significativas en la latencia por token, el tiempo de carga de la caché estática y el consumo de memoria. Un posterior parche de Daniel Lemire añade una aceleración adicional de 4,2 veces, elevando el rendimiento total a 140 veces más rápido. El código y los resultados están disponibles en un repositorio público para su verificación y uso.