Model Merging
Découvre comment la fusion de modèles combine plusieurs modèles pré-entraînés en un seul. Apprends comment fusionner les poids d'Ultralytics YOLO26 pour booster les performances sans latence supplémentaire.
La fusion de modèles est une technique innovante en machine learning (ML) qui combine les paramètres appris (poids) de plusieurs modèles pré-entraînés en un seul modèle unifié. Contrairement aux configurations multi-modèles traditionnelles, la fusion associe directement les poids du modèle dans l'espace des paramètres. Cela permet aux praticiens de combiner les connaissances spécialisées de plusieurs modèles affinés sur différentes tâches ou jeux de données sans subir les coûts de mémoire et de calcul liés à l'exécution simultanée de plusieurs modèles.
En appliquant des opérations directement sur les poids, la fusion de modèles conserve l'empreinte architecturale d'un réseau unique. C'est particulièrement précieux lors du déploiement de pipelines de computer vision (CV) avancés sur des appareils de périphérie (edge devices), où la réduction de la latence d'inférence et l'économie de mémoire sont essentielles.
Distinguer la fusion de modèles#
Il est utile de différencier la fusion de modèles de concepts connexes tels que l'Ensemble de modèles et le Transfer Learning.
- Fusion de modèles vs. Ensemble de modèles : Un ensemble de modèles garde les réseaux individuels séparés, en exécutant chacun pendant l'inférence et en faisant la moyenne de leurs sorties. Cela augmente la précision mais multiplie la charge de calcul. La fusion de modèles combine les poids réels avant l'inférence, résultant en un seul modèle qui ne nécessite aucun calcul supplémentaire à l'exécution.
- Fusion de modèles vs. Transfer Learning : Le transfer learning consiste à prendre un modèle de base et à l'entraîner davantage sur un nouveau jeu de données. La fusion de modèles ne nécessite aucun fine-tuning supplémentaire ; elle utilise des opérations mathématiques pour fusionner des modèles déjà entraînés.
Techniques courantes#
Les chercheurs ont développé plusieurs méthodes pour combiner efficacement les poids sans détruire les capacités sous-jacentes du réseau, comme l'explore une recherche académique récente sur arXiv.
- Moyenne des poids : La méthode la plus simple, qui consiste à prendre la moyenne des poids de plusieurs modèles partageant la même architecture.
- Task Arithmetic : Une technique où des "vecteurs de tâche" (la différence entre un modèle affiné et son modèle de base) sont ajoutés ou soustraits pour combiner ou supprimer des comportements spécifiques.
- TIES-Merging : Une approche avancée qui résout l'interférence des paramètres en élaguant les valeurs redondantes et en sélectionnant des signes cohérents à travers les modèles, préservant la performance sur diverses tâches.
Applications concrètes#
La fusion de modèles est très efficace pour construire des systèmes généralisés sans réentraîner à partir de zéro.
- Véhicules autonomes : Une voiture autonome peut utiliser un modèle de base Ultralytics YOLO26. Les ingénieurs peuvent entraîner indépendamment une version du modèle pour détecter les mouvements subtils des piétons et une autre pour lire des panneaux de signalisation complexes. La fusion de ces deux modèles crée un détecteur unique et hautement performant qui gère les deux tâches simultanément sans doubler le temps d'inférence.
- IA dans la santé : En imagerie médicale, différents hôpitaux de recherche peuvent affiner des modèles sur des jeux de données locaux spécialisés (par exemple, l'un pour les examens IRM et l'autre pour les scanners CT) en raison de lois strictes sur la confidentialité des données. En fusionnant les modèles en toute sécurité, les chercheurs peuvent créer un outil diagnostique complet qui bénéficie de distributions de données diverses.
Exemple : Moyenne pondérée simple#
Tu peux facilement effectuer une fusion de modèles de base à l'aide de PyTorch. L'exemple suivant montre comment moyenner les dictionnaires d'états de deux modèles à la structure identique.
import torch
# Load the weights (state dicts) from two identical architectures
weights_a = torch.load("yolo26_task1.pt")["model"].state_dict()
weights_b = torch.load("yolo26_task2.pt")["model"].state_dict()
# Perform simple weight averaging
merged_weights = {k: (weights_a[k] + weights_b[k]) / 2.0 for k in weights_a.keys()}
# Save the newly merged model weights
torch.save({"model": merged_weights}, "yolo26_merged.pt")Pour les équipes cherchant à simplifier les flux de travail complexes d'annotation de jeux de données, d'entraînement et de déploiement, la Ultralytics Platform fournit une interface intuitive pour gérer des projets de vision par ordinateur de bout en bout sans effort.






