Le projet llama.cpp a étendu son noyau générique de multiplication matricielle (MMA) à quelques lignes pour prendre en charge des types de données source supplémentaires, notamment BF16, Q1_0, Q2_0, MXFP4, Q2_K, Q3_K, TQ2_0 et divers types IQ. Cette mise à jour permet au noyau optimisé de gérer tout type avec un déquantiseur de poids 16 bits, en appliquant des seuils spécifiques sur le nombre de lignes pour le matériel M3 Ultra où les performances commencent à dépasser celles des noyaux actuels.

  • Le nouveau support couvre BF16, Q1_0, Q2_0, MXFP4, Q2_K, Q3_K, TQ2_0 et les types IQ.
  • Les seuils de performance varient selon le type : 5 lignes pour TQ2_0, 4 pour BF16, 3 pour MXFP4/Q2_0/Q2_K/IQ4_NL, et 2 pour les autres.
  • Les résultats des tests sur M3 Ultra montrent des ratios de performances allant de 0,23 à 1,01 selon le nombre de lignes et la superposition du noyau.

Ce changement améliore l'efficacité de l'inférence pour une plus large gamme de formats de quantification en exploitant les capacités du noyau MMA à faible nombre de lignes.