El proyecto llama.cpp lanzó la versión b10532, introduciendo un paso de preprocesamiento en el backend de Metal que desquantiza los cachés de Key-Value (KV) cuantizados a F16 antes de ejecutar Flash Attention.
- El nuevo kernel desquantiza los tensores KV Q8_0 en un búfer temporal contiguo F16, permitiendo el uso de kernels existentes de Flash Attention F16 en lugar de la desquantización dentro del kernel.
- Se amplió el soporte para cubrir todos los tipos de KV cuantizados compatibles con Metal, incluyendo Q4_0, Q4_1, Q5_0 y Q5_1.
- Para modelos basados en MLA donde V es una vista de K, la implementación omite la desquantización redundante de V y lee V desde el búfer F16 de K.
- La verificación en un M2 Ultra mostró que la perplexity para Qwen2.5-0.5B con KV q8_0 coincide exactamente con la referencia F16 (PPL 1.0008).
Este cambio permite una ejecución eficiente de Flash Attention en dispositivos Metal al aprovechar búferes contiguos F16 para cachés KV cuantizados, garantizando paridad de precisión con las implementaciones estándar de F16.