Le projet llama.cpp introduit le support de l'architecture Granite-Switch, une variante de modèle dense comportant N adaptateurs LoRA intégrés qui sont sélectionnés par token via des tokens de contrôle. Cette implémentation remplace un précédent prototype d'index global collant par un mécanisme d'attention « routeur » causal intégré au graphe pour résoudre les indices d'adaptateur.
- Le nouveau routeur utilise une couche d'attention causale à tête unique pour récupérer l'indice d'adaptateur au sein du graphe, corrigeant ainsi les problèmes de concurrence où plusieurs séquences fuyaient précédemment leurs états d'adaptateur les unes dans les autres.
- En stockant les clés et valeurs du routeur dans le cache KV par séquence, les requêtes concurrentes sont désormais isolées sans nécessiter de gestion d'état global.
- L'architecture prend en charge le changement en milieu de séquence, permettant d'activer différents adaptateurs pour des tâches spécifiques comme la vérification de la capacité à répondre ou la réécriture de requête au sein d'une seule séquence.
- Une limitation connue persiste : une fois qu'un adaptateur est activé dans une séquence, il reste actif jusqu'à la fin de celle-ci, car le gain du routeur est plat et manque de biais de récence.
Ce changement permet une inférence multi-tâche efficace sur CPU en basculant dynamiquement entre des adaptateurs spécialisés sans recharger les modèles, tout en maintenant l'isolation pour les requêtes groupées concurrentes.