Découvrez comment la fusion de modèles permet de combiner plusieurs modèles pré-entraînés en un seul. Apprenez à fusionner les poids Ultralytics pour améliorer les performances sans augmenter la latence.
La fusion de modèles est une technique innovante en apprentissage automatique (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 des modèles dans l'espace des paramètres. Cela permet aux praticiens de combiner les connaissances spécialisées de plusieurs modèles affinés pour différentes tâches ou différents ensembles de données sans encourir les coûts de mémoire et de calcul liés à l'exécution simultanée de plusieurs modèles.
En appliquant les opérations directement aux poids, la fusion de modèles permet de conserver l'empreinte architecturale d'un seul réseau. Cela s'avère particulièrement utile lors du déploiement de pipelines avancés de vision par ordinateur (CV) sur des appareils en périphérie, où la réduction de la latence d'inférence et l'économie de mémoire sont essentielles.
Il est utile de distinguer la fusion de modèles de concepts apparentés tels que l'ensemble de modèles et l'apprentissage par transfert.
Des chercheurs ont mis au point plusieurs méthodes permettant de combiner efficacement les poids sans compromettre les capacités sous-jacentes du réseau, comme l'ont montré de récentes études universitaires publiées sur arXiv.
La fusion de modèles est très efficace pour créer des systèmes généralisés sans avoir à les réentraîner à partir de zéro.
Vous pouvez facilement effectuer une fusion de modèles de base à l'aide de PyTorch. L'exemple suivant montre comment calculer la moyenne des dictionnaires d'états de deux modèles ayant une 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 qui souhaitent simplifier les processus complexes d'annotation, d'entraînement et de déploiement des ensembles de données, la Ultralytics offre une interface intuitive permettant de gérer sans effort des projets d'IA visuelle de bout en bout.
Commencez votre parcours avec l'avenir de l'apprentissage automatique