Le projet llama.cpp a consolidé les motifs de fusion des opérations du backend Metal en une seule table, partagée par l'optimiseur de graphe et les encodeurs d'opérations. Cette modification corrige également un bogue dans les indices absolus de sortie qui causait une régression d'environ 5 % sur la vitesse de génération de tokens.

  • Tous les motifs d'opérations fusibles sont désormais déclarés une seule fois dans ggml-metal-fuse.cpp, garantissant la cohérence entre les phases d'optimisation et de calcul.
  • Une correction des indices absolus des nœuds du graphe empêche le dernier nœud des motifs de fusion d'être soumis incorrectement à des vérifications de compte d'utilisation, rétablissant la fusion norm/MUL.
  • Un nouveau support permet aux noyaux gating_delta_net de fusionner avec les opérations de copie de cache, écrivant directement des instantanés dans le tampon du cache KV.
  • Le flag de fusion 'raw' a été renommé en 'unsafe' pour clarifier que les rappels spécifiques au motif servent d'unique validateur de sécurité.
  • Une nouvelle API ad hoc fournit des statistiques de fusion indépendantes du backend pour les tests, y compris une suite de tests de régression comparant les logits fusionnés et non fusionnés via NMSE.

Ces mises à jour améliorent la maintenabilité du code en unifiant la logique de fusion et restaurent les pertes de performance causées par des échecs silencieux de fusion dans les versions précédentes.