Erfahren Sie, wie durch Modellzusammenführung mehrere vortrainierte Modelle zu einem einzigen Modell kombiniert werden. Erfahren Sie, wie Sie die Gewichte Ultralytics zusammenführen können, um die Leistung ohne zusätzliche Latenz zu steigern.
Die Modellzusammenführung ist eine innovative Technik im maschinellen Lernen (ML), bei der die gelernten Parameter (Gewichte) mehrerer vortrainierter Modelle zu einem einzigen, einheitlichen Modell kombiniert werden. Im Gegensatz zu herkömmlichen Multi-Modell- Konfigurationen werden beim Merging die Modellgewichte direkt im Parameterraum zusammengeführt. Dies ermöglicht es Anwendern, das Fachwissen mehrerer Modelle zu kombinieren, die auf unterschiedliche Aufgaben oder Datensätze feinabgestimmt sind, ohne dass dabei die Speicher- und Rechenkosten für den gleichzeitigen Betrieb mehrerer Modelle entstehen.
Durch die direkte Anwendung von Operationen auf die Gewichte bewahrt die Modellzusammenführung die architektonische Struktur eines einzelnen Netzwerks. Dies ist besonders wertvoll bei der Bereitstellung fortschrittlicher Computer-Vision-Pipelines (CV) auf Edge-Geräten, wo die Reduzierung der Inferenzlatenz und die Einsparung von Speicherplatz von entscheidender Bedeutung sind.
Es ist hilfreich, die Modellzusammenführung von verwandten Konzepten wie Modellensembles und Transferlernen zu unterscheiden.
Forscher haben verschiedene Methoden entwickelt, um Gewichte effektiv zu kombinieren, ohne die zugrunde liegenden Fähigkeiten des Netzwerks zu beeinträchtigen, wie aus aktuellen wissenschaftlichen Arbeiten auf arXiv hervorgeht.
Das Zusammenführen von Modellen ist äußerst effektiv, um verallgemeinerte Systeme zu erstellen, ohne dass ein komplettes Neutraining erforderlich ist.
Sie können einfache Modellzusammenführungen ganz einfach mit PyTorcheinfach durchführen. Das folgende Beispiel zeigt, wie man die Zustandswörterbücher zweier identisch strukturierter Modelle mittelt.
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")
Für Teams, die die komplexen Arbeitsabläufe bei der Annotation, dem Training und der Bereitstellung von Datensätzen vereinfachen möchten, bietet die Ultralytics eine intuitive Benutzeroberfläche, mit der sich End-to-End-Projekte im Bereich der Bildverarbeitungs-KI mühelos verwalten lassen.
Beginnen Sie Ihre Reise mit der Zukunft des maschinellen Lernens