Task Vectors
Un vecteur de tâche est la différence entre les poids d’un modèle ajusté et ceux du modèle de base. Il capture une compétence qui peut être ajoutée, supprimée ou fusionnée. Présentation des usages.
Les vecteurs de tâche représentent les changements précis apportés aux poids d’un réseau neuronal pendant le réglage fin pour obtenir une nouvelle capacité. En soustrayant les paramètres d’un modèle de base fondamental à ceux d’un modèle réglé finement, les chercheurs peuvent isoler un vecteur directionnel dans l’espace des poids qui encode le comportement appris pour cette tâche précise. Cette approche permet aux développeurs d’appliquer de simples opérations arithmétiques sur les paramètres du modèle pour orienter, modifier ou fusionner les comportements des modèles sans calcul d’entraînement supplémentaire.
En quoi les vecteurs de tâche diffèrent de l’apprentissage par transfert#
Alors que l’apprentissage par transfert consiste à entraîner successivement un modèle sur un nouveau jeu de données pour adapter ses connaissances existantes, les vecteurs de tâche agissent directement sur les poids structurels du modèle après l’entraînement. Au lieu de recalculer les gradients pour apprendre un nouveau domaine, l’interpolation dans l’espace des poids à l’aide de vecteurs de tâche permet aux praticiens de combiner linéairement les différences de poids de plusieurs modèles entraînés indépendamment. Cette méthode permet la fusion de modèles en zero-shot : un même modèle peut ainsi hériter simultanément de plusieurs capacités sans la surcharge de calcul liée à l’entraînement habituelle.
Applications concrètes#
La possibilité de manipuler algébriquement les modèles d’apprentissage profond a donné lieu à plusieurs applications importantes dans les pipelines d’IA modernes :
- Fusion de modèles multi-tâches : Les ingénieurs peuvent combiner les vecteurs de tâche issus de réglages fins du même modèle de base, par exemple ceux de deux modèles de détection d’objets entraînés sur des jeux de données différents ; les vecteurs de tâche ne se combinent qu’entre architectures identiques, si bien qu’un réglage fin pour la détection ne peut pas être fusionné avec un modèle de segmentation d’images. Appliquée à un modèle de base Ultralytics YOLO26, cette méthode produit un modèle unique qui hérite des points forts de chaque réglage fin d’origine.
- Désapprentissage automatique et sécurité de l’IA : Si un modèle produit des résultats biaisés ou dangereux, les chercheurs peuvent calculer un vecteur de tâche représentant ce comportement indésirable spécifique. En soustrayant ce vecteur des poids du modèle, ils peuvent effectivement « effacer » ce comportement, ce qui contribue grandement à améliorer les normes de sécurité de l’IA et d’éthique de l’IA.
- Adaptation de domaine en vision par ordinateur : Lors de l’adaptation de modèles à des environnements spécifiques — par exemple, lors du passage d’un contexte diurne à un contexte nocturne pour l’inférence en temps réel — les vecteurs de tâche te permettent de moduler l’ampleur de l’adaptation. L’application d’une fraction du vecteur (par exemple, avec un facteur d’échelle de 0,5) peut produire un modèle équilibré qui fonctionne bien dans les deux domaines.
Utiliser les vecteurs de tâche dans PyTorch#
La création et l’application d’un vecteur de tâche nécessitent d’accéder au dictionnaire d’état PyTorch et de le manipuler. L’exemple suivant montre comment extraire un vecteur de tâche d’un modèle Ultralytics YOLO26 ajusté et l’appliquer au modèle de base avec un facteur d’échelle précis.
from ultralytics import YOLO
# Charger les dictionnaires d’état des modèles de base et ajusté
base_weights = YOLO("yolo26n.pt").model.state_dict()
tuned_weights = YOLO("yolo26n-custom.pt").model.state_dict()
# Calculer le vecteur de tâche (poids réglés moins poids de base), en ignorant les tampons entiers
task_vector = {k: tuned_weights[k] - base_weights[k] for k in base_weights if base_weights[k].is_floating_point()}
# Appliquer le vecteur de tâche au modèle de base avec un facteur d’échelle de 0.5
for k, delta in task_vector.items():
base_weights[k] += 0.5 * deltaL’avenir de la manipulation des poids#
À mesure que le nombre de paramètres augmente dans des architectures comme les grands modèles de langage et les modèles de vision de grande taille fondés sur l’architecture Transformer, leur réentraînement pour chaque ajustement mineur devient économiquement irréalisable. Les vecteurs de tâche offrent une alternative mathématiquement élégante pour l’optimisation des modèles après l’entraînement. En partageant des vecteurs de tâche légers plutôt que des modèles entiers de plusieurs gigaoctets, la communauté de l’IA peut accélérer la collaboration open source dans le domaine de l’IA. Une fois tes vecteurs de tâche personnalisés affinés, le recours à la plateforme Ultralytics simplifie les processus ultérieurs de déploiement des modèles et de surveillance, garantissant que tes poids optimisés alimentent directement des points de terminaison prêts pour la production.










