Le projet llama.cpp a publié la version b10321, qui inclut une correction critique pour les opérations GGML_OP_NORM et GGML_OP_RMS_NORM sur Metal. La mise à jour résout un problème où des threadgroups dont la taille laissait un groupe SIMD partiel entraînaient des calculs incorrects de moyenne et de variance en raison de sommes partielles perdues.

  • Le bug se produisait lorsque les longueurs de lignes n'étaient pas des multiples de la taille du groupe SIMD, ce qui faisait ignorer la contribution de la dernière voie lors de la réduction inter-groupe SIMD.
  • La correction arrondit la taille du threadgroup à l'entier supérieur de groupes SIMD, garantissant que toutes les sommes partielles sont correctement agrégées sans voies inactives excessives.
  • Les résultats de test sur M3 Pro montrent que les tests NORM et RMS_NORM passent respectivement 50/50 et 51/51, comparé aux échecs précédents (25/50 et 26/51).
  • La version fournit des binaires pour macOS (Apple Silicon et Intel), iOS, Linux (CPU, Vulkan, ROCm, OpenVINO, SYCL), Android, Windows (CPU, CUDA, Vulkan, OpenCL, ROCm, OpenVINO, SYCL, HIP) et openEuler.

Cette mise à jour garantit la correction numérique des opérations de norme sur des longueurs de vecteurs non standard, ce qui est essentiel pour les modèles utilisant des dimensions de canal qui ne se divisent pas uniformément par le facteur de vectorisation.