Hugging Face a publié les détails de ShadowPEFT le 15 septembre 2026. Cette méthode d’affinage efficace en paramètres est annoncée comme prise en charge nativement par la bibliothèque 🤗 PEFT. Son implémentation a déjà été fusionnée dans la branche principale, mais sa publication est prévue dans la prochaine version de PEFT. L’article est signé Zongxi Li, Xianming Li, Tsz-fung Andrew Lee, Jing Li, Haoran Xie et Qing Li.

Pour les développeurs qui utilisent déjà PEFT, ShadowPEFT ajoute donc une nouvelle architecture d’adaptation de modèles. La méthode ne se contente pas d’appliquer des mises à jour indépendantes à plusieurs couches : elle conserve un modèle fantôme compact dont l’état caché persiste pendant le passage dans le décodeur.

Un état caché circule d’une couche Transformer à l’autre

Avec LoRA, les mises à jour de faible rang sont ajoutées séparément aux différentes couches ciblées. ShadowPEFT adopte une autre organisation. À chaque couche Transformer, la différence entre l’état caché du modèle de base et celui du modèle fantôme passe dans un goulot d’étranglement de faible rang.

La couche Transformer gelée est ensuite exécutée avant la mise à jour de l’état fantôme. Cette mise à jour repose sur deux petits MLP et un résidu contrôlé. L’architecture fait ainsi circuler les informations dans les deux sens entre le modèle de base et le modèle fantôme, au lieu de traiter chaque adaptation de couche comme un élément indépendant.

Ce choix explique la particularité de ShadowPEFT : la tâche affinée dispose d’une représentation persistante qui accompagne le modèle tout au long du décodeur. Il ajoute aussi une étape de calcul et un état à conserver pendant l’exécution, un point qui pèse directement dans le bilan matériel.

Les développeurs retrouvent les appels habituels de PEFT

L’intégration s’appuie sur ShadowConfig, BaseTuner et BaseTunerLayer. L’appel documenté, get_peft_model(model, ShadowConfig(...)), reprend le principe général déjà utilisé avec LoRA. Les mécanismes save_pretrained et from_pretrained restent eux aussi au cœur du flux de sauvegarde et de chargement.

Après l’entraînement, deux options sont prévues. Le modèle fantôme peut rester attaché à son modèle de base, ou être séparé avec unload_shadow() afin d’obtenir un DetachedShadowModel destiné à l’inférence indépendante.

L’exemple fourni utilise Qwen/Qwen3-8B, avec r=8, une couche cachée fantôme, le modèle fantôme mirror et le type de tâche CAUSAL_LM. Cette configuration concerne des développeurs qui travaillent déjà avec l’adaptation de modèles selon le fonctionnement de PEFT. ShadowPEFT est présenté comme une méthode pour modifier des modèles existants, pas comme un chatbot autonome ni comme une application grand public.

Sur Llama, le gain de score s’accompagne d’une mémoire plus élevée

La première comparaison porte sur une expérience de MetaMathQA vers GSM8K. Les méthodes ont été évaluées sur Llama-3.2-3B avec la métrique de correspondance exacte, les hyperparamètres par défaut de PEFT et un GPU NVIDIA A100 de 80 Go.

ShadowPEFT utilise 8,66 millions de paramètres entraînables et atteint 48,1 % de correspondance exacte après 17 minutes. Sa consommation mémoire maximale atteint 28,2 Go, tandis que son checkpoint mesure 26,0 Mo.

LoRA obtient 46,9 % de correspondance exacte avec 22,3 Go de mémoire et un checkpoint de 36,7 Mo. DoRA atteint 46,2 % avec 24,5 Go de mémoire et un checkpoint de 37,2 Mo. Dans cette expérience, ShadowPEFT combine donc le score rapporté le plus élevé avec le checkpoint le plus compact, mais sa consommation mémoire maximale est supérieure à celle des deux autres méthodes.

La page de ShadowPEFT attribue cette différence à l’exécution du modèle fantôme pour chaque jeton et au maintien de deux caches KV. Le compromis est concret : la méthode peut réduire la taille du checkpoint et améliorer la correspondance exacte dans ce test, mais elle demande davantage de mémoire pendant l’inférence ou l’affinage. Ce résultat ne suffit pas à en faire un remplacement universel de LoRA ou de DoRA.

La comparaison DreamBooth favorise aussi ShadowPEFT

Une seconde évaluation utilise DreamBooth avec FLUX.2-klein-base-4B et environ 20 photos du même chat. ShadowPEFT obtient une similarité cosinus DINOv2 de 0,717 et une dérive de 0,244. L’entraînement dure huit minutes, avec 31,2 millions de paramètres entraînables, 10,3 Go de mémoire maximale et un checkpoint de 74,5 Mo.

LoRA obtient une similarité de 0,671 et une dérive de 0,274. DoRA atteint respectivement 0,682 et 0,250. La page présente ShadowPEFT devant les deux méthodes sur chacune des métriques indiquées dans cette comparaison. Ces chiffres restent liés à l’expérience DreamBooth présentée : ils n’établissent pas que le même équilibre apparaîtra avec tous les modèles, jeux de données ou travaux d’affinage.

ShadowPEFT apporte ainsi une architecture supplémentaire dans un environnement que les utilisateurs de PEFT connaissent déjà, avec une configuration et un schéma de sauvegarde familiers. En contrepartie, son modèle fantôme persistant et ses deux caches KV rendent la capacité matérielle déterminante, notamment pour les scénarios où la mémoire disponible est limitée.

L’implémentation est déjà présente dans la branche principale, mais la bibliothèque publiée ne l’inclura qu’avec la prochaine version de PEFT. À ce stade, ShadowPEFT apparaît comme une option prometteuse dans les deux comparaisons rapportées, avec un avantage mesuré sur les scores et la taille des checkpoints, au prix d’une consommation mémoire plus importante dans l’expérience de langage.

Sources officielles

Sources et méthodologie

  1. Official source: huggingface.co Ouvre une source externe