La version b9931 de llama.cpp introduit une optimisation OpenCL pour le préremplissage Mixture of Experts (MoE) qui saute les tuiles d'experts remplies pour améliorer les performances.

  • L'optimisation regroupe les tokens en tuiles par expert de taille TILESIZE_N=32 et saute la seconde moitié dotx16_reduce8 lorsque les 16 premiers emplacements d'une tuile sont tous des remplissages.
  • Elle remplace deux appels dotx16_reduce8 de demi-tuile par quatre appels dotx8_reduce4, permettant un saut indépendant des groupes de saut vides en fin de séquence.
  • La fonctionnalité est contrôlée par la variable d'environnement GGML_OPENCL_MOE_RAGGED_GRAN, qui accepte les valeurs 8, 16 ou 32 pour une granularité de quart, moitié ou désactivée respectivement.
  • La version inclut des binaires pour macOS (Apple Silicon et Intel), Linux (CPU, Vulkan, ROCm, OpenVINO, SYCL), Android, Windows (CPU, CUDA, Vulkan, OpenVINO, SYCL, HIP) et openEuler.

Cette optimisation permet aux utilisateurs de réduire le calcul sur les données remplies dans les modèles MoE via les nouveaux paramètres de variable d'environnement.