Erfahren Sie, wie Aufgabenvektoren eine effiziente Modellzusammenführung und Verhaltenssteuerung ermöglichen. Entdecken Sie, wie Sie die Gewichte Ultralytics für Zero-Shot-Multitasking anpassen können.
Aufgabenvektoren stellen die spezifischen Änderungen dar, die während des Fine-Tunings an den Gewichten eines neuronalen Netzes vorgenommen werden, um eine neue Fähigkeit zu erreichen. Durch Subtraktion der Parameter eines grundlegenden Basismodells von denen eines feinabgestimmten Modells können Forscher einen Richtungsvektor im Gewichtsraum isolieren, der das erlernte Verhalten für diese spezifische Aufgabe zusammenfasst. Dieser Ansatz ermöglicht es Entwicklern, einfache arithmetische Operationen auf Modellparameteranzuwenden, um Modellverhalten zu steuern, zu modifizieren oder zusammenzuführen, ohne dass zusätzliche Rechenleistung für das Training erforderlich ist.
Während das Konzept des Transferlernens darin besteht, ein Modell schrittweise auf einem neuen Datensatz zu trainieren, um sein vorhandenes Wissen anzupassen, wirken Aufgabenvektoren direkt auf die strukturellen Gewichte des Modells nach dem Training ein. Anstatt Gradienten neu zu trainieren, um eine neue Domäne zu erlernen, ermöglicht die Gewichtsrauminterpolation unter Verwendung von Aufgabenvektoren den Anwendern, die Gewichtsunterschiede mehrerer unabhängig voneinander trainierter Modelle linear zu kombinieren. Dies ermöglicht eine Zero-Shot- Modellzusammenführung, wodurch ein einzelnes Modell mehrere Fähigkeiten gleichzeitig übernehmen kann, ohne den typischen Rechenaufwand während des Trainings.
Die Möglichkeit, Deep-Learning -Modelle algebraisch zu manipulieren, hat zu mehreren wegweisenden Anwendungen in modernen KI-Pipelines geführt:
Das Erstellen und Anwenden eines Aufgabenvektors erfordert den Zugriff auf das PyTorch und dessen Bearbeitung. Das folgende Beispiel zeigt, wie man einen Aufgabenvektor aus einem feinabgestimmten YOLO26-Modell extrahiert und ihn mit einem bestimmten Skalierungsfaktor wieder auf das Basismodell anwendet.
from ultralytics import YOLO
# Load the state dictionaries for the base and fine-tuned models
base_weights = YOLO("yolo26n.pt").model.state_dict()
tuned_weights = YOLO("yolo26n-custom.pt").model.state_dict()
# Calculate the task vector (tuned weights minus base weights)
task_vector = {k: tuned_weights[k] - base_weights[k] for k in base_weights.keys()}
# Apply the task vector to the base model using a 0.5 scaling factor
for k in base_weights.keys():
base_weights[k] += 0.5 * task_vector[k]
Da Architekturen wie große Sprachmodelle und riesige Vision- Transformer immer mehr Parameter umfassen, wird es wirtschaftlich unrentabel, sie bei jeder noch so kleinen Anpassung neu zu trainieren. Aufgabenvektoren Vektoren bieten eine mathematisch elegante Alternative für die Modelloptimierung nach dem Training . Durch den Austausch von schlanken Aufgabenvektoren anstelle ganzer, mehrere Gigabyte großer Modelle kann die KI-Community die Open-Source-Zusammenarbeit im KI-Bereich beschleunigen. Sobald Ihre benutzerdefinierten Aufgabenvektoren verfeinert sind, vereinfacht die Nutzung der Ultralytics die anschließenden Modellbereitstellungs- und Überwachungsprozesse und stellt sicher, dass Ihre optimierten Gewichte direkt in produktionsreife Endpunkte umgesetzt werden.
Beginnen Sie Ihre Reise mit der Zukunft des maschinellen Lernens