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 combine 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 maintient l'empreinte architecturale d'un seul réseau. C'est particulièrement précieux lors du déploiement de pipelines de computer vision (CV) avancés sur des appareils en périphérie, où la réduction de la latence d'inférence et l'économie de mémoire sont critiques.
Link to this sectionDistinguer la fusion de modèles#
Il est utile de différencier la fusion de modèles de concepts connexes comme l'Model Ensemble 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 transfert learning implique de prendre un modèle de base et de 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.
Link to this sectionTechniques 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 exploré dans les récentes recherches académiques sur arXiv.
- Weight Averaging : La méthode la plus simple, prenant 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.
Link to this sectionApplications 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 seul détecteur très 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, un pour les scanners IRM et un pour les scanners CT) en raison de lois strictes sur la confidentialité des données. En fusionnant les modèles de manière sécurisée, les chercheurs peuvent créer un outil de diagnostic complet qui bénéficie de distributions de données diverses.
Link to this sectionExemple : Moyenne pondérée simple#
Tu peux facilement effectuer une fusion de modèles de base en utilisant PyTorch. L'exemple suivant démontre comment calculer la moyenne des dictionnaires d'état 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, d'entraînement et de déploiement de données, l'Ultralytics Platform fournit une interface intuitive pour gérer facilement tes projets d'IA de vision de bout en bout.






