Le projet llama.cpp a publié la version b10532, introduisant un passage de prétraitement sur le backend Metal qui déquantise les caches Key-Value (KV) quantisés en F16 avant d'exécuter Flash Attention.

  • Le nouveau noyau déquantise les tenseurs KV Q8_0 dans un tampon intermédiaire F16 contigu, permettant l'utilisation des noyaux Flash Attention F16 existants au lieu de la déquantisation dans le noyau.
  • La prise en charge a été étendue pour couvrir tous les types de KV quantisés pris en charge par Metal, y compris Q4_0, Q4_1, Q5_0 et Q5_1.
  • Pour les modèles basés sur MLA où V est une vue de K, l'implémentation saute la déquantisation redondante de V et lit V depuis le tampon F16 de K.
  • Une vérification sur un M2 Ultra a montré que la perplexité pour Qwen2.5-0.5B avec KV q8_0 correspond exactement à la référence F16 (PPL 1,0008).

Ce changement permet une exécution efficace de Flash Attention sur les appareils Metal en exploitant des tampons F16 contigus pour les caches KV quantisés, garantissant une parité de précision avec les implémentations F16 standard.