Task Vectors
Un vettore di task è la differenza tra i pesi di un modello sottoposto a fine-tuning e quelli del modello di base. Racchiude una competenza che può essere aggiunta, rimossa o unita ad altre. Scopri gli utilizzi.
I vettori dei task rappresentano le modifiche specifiche apportate ai pesi di una rete neurale durante il fine-tuning per acquisire una nuova capacità. Sottraendo i parametri di un modello di base fondazionale da quelli di un modello sottoposto a fine-tuning, i ricercatori possono isolare un vettore direzionale nello spazio dei pesi che racchiude il comportamento appreso per quel task specifico. Questo approccio consente agli sviluppatori di applicare semplici operazioni aritmetiche sui parametri del modello per orientare, modificare o combinare i comportamenti dei modelli, senza dover ricorrere a ulteriore potenza di calcolo per l'addestramento.
In che modo i vettori di task si distinguono dal transfer learning#
Il concetto di transfer learning prevede l'addestramento sequenziale di un modello su un nuovo dataset per adattarne le conoscenze esistenti; i vettori di task, invece, operano direttamente sui pesi strutturali del modello dopo l'addestramento. Anziché riaddestrare i gradienti per apprendere un nuovo dominio, l'interpolazione nello spazio dei pesi tramite vettori di task consente di combinare linearmente le differenze tra i pesi di più modelli addestrati in modo indipendente. Questo rende possibile la fusione di modelli zero-shot, permettendo a un singolo modello di acquisire simultaneamente più capacità senza il tipico overhead computazionale durante l'addestramento.
Applicazioni nel mondo reale#
La capacità di manipolare algebricamente i modelli di deep learning ha portato a diverse applicazioni significative nelle moderne pipeline di AI:
- Unione di modelli multi-task: gli ingegneri possono combinare i vettori dei task ottenuti dal fine-tuning dello stesso modello di base, come due modelli di rilevamento degli oggetti addestrati su dataset diversi; i vettori dei task si combinano solo se le architetture sono identiche, quindi un modello di rilevamento sottoposto a fine-tuning non può essere unito a uno per la segmentazione delle immagini. Applicando il metodo a un modello di base Ultralytics YOLO26, si ottiene un unico modello che eredita i punti di forza di ciascuna versione originale sottoposta a fine-tuning.
- Disapprendimento automatico e sicurezza dell'AI: se un modello produce output distorti o pericolosi, i ricercatori possono calcolare un vettore di task che rappresenta quel comportamento indesiderato specifico. Sottraendo il vettore dai pesi del modello, possono di fatto «cancellare» il comportamento, contribuendo in modo sostanziale a migliorare la sicurezza dell'AI e gli standard di etica dell'AI.
- Adattamento del dominio nella visione artificiale: quando si adattano modelli ad ambienti specifici, per esempio passando dall'inferenza in tempo reale diurna a quella notturna, i vettori di task consentono agli utenti di regolare l'entità dell'adattamento. Applicare una frazione del vettore, per esempio con un fattore di scala pari a 0.5, può produrre un modello equilibrato che funziona bene in entrambi i domini.
Lavorare con i vettori di task in PyTorch#
Creare e applicare un vettore di task richiede l'accesso al dizionario di stato di PyTorch e la sua manipolazione. L'esempio seguente mostra come estrarre un vettore di task da un modello Ultralytics YOLO26 sottoposto a fine-tuning e applicarlo al modello di base con uno specifico fattore di scala.
from ultralytics import YOLO
# Carica i dizionari di stato dei modelli di base e sottoposto a fine-tuning
base_weights = YOLO("yolo26n.pt").model.state_dict()
tuned_weights = YOLO("yolo26n-custom.pt").model.state_dict()
# Calcola il vettore del task (pesi ottimizzati meno pesi di base), saltando i buffer interi
task_vector = {k: tuned_weights[k] - base_weights[k] for k in base_weights if base_weights[k].is_floating_point()}
# Applica il vettore di task al modello di base usando un fattore di scala di 0.5
for k, delta in task_vector.items():
base_weights[k] += 0.5 * deltaIl futuro della manipolazione dei pesi#
Con l'aumentare del numero di parametri di architetture come i modelli linguistici di grandi dimensioni e i grandi Transformer per la visione, riaddestrarli per ogni minima modifica diventa economicamente insostenibile. I vettori di task offrono un'alternativa matematicamente elegante per l'ottimizzazione dei modelli dopo l'addestramento. Condividendo vettori di task leggeri anziché modelli interi di diversi gigabyte, la comunità dell'AI può accelerare la collaborazione open source nell'AI. Una volta perfezionati i tuoi vettori di task personalizzati, usare la Ultralytics Platform semplifica le successive fasi di distribuzione dei modelli e monitoraggio, assicurando che i pesi ottimizzati vengano trasferiti direttamente a endpoint pronti per la produzione.










