
Codice di ricerca per estrarre e addestrare direzioni di consapevolezza della sicurezza in LLM multimodali, al fine di migliorare il comportamento di rifiuto limitando la deriva su compiti benigni.
Implementazione ufficiale di Transfer Safety Awareness for Cross-Modal Safety Drift in Multimodal Large Language Models (EMNLP 2026 Findings).
Questa repository contiene la pipeline della direzione di consapevolezza della sicurezza Qwen3-VL. Estrae una direzione di attivazione legata al rifiuto da esempi multimodali dannosi e innocui, seleziona la direzione che migliora il comportamento di rifiuto limitando la deriva dei compiti benigni e, opzionalmente, addestra un vettore di consapevolezza della sicurezza specifico per la direzione.
Il codice supporta attualmente Qwen/Qwen3-VL-8B-Instruct tramite Hugging Face Transformers.
.
├── artifacts/directions/ # Direzione selezionata precalcolata e metadati
├── data/csv/ # Manifesti CSV utilizzati dalla pipeline
├── data/images/ # Radici delle immagini locali (non incluse)
├── directions/ # Estrazione e selezione della direzione
├── models/ # Utilità per modello e processore Qwen3-VL
├── training/ # Addestramento della direzione di consapevolezza della sicurezza
├── utils/ # Utilità per gli hook di attivazione
├── config.py
├── run_pipeline.py # Punto di ingresso per generazione e selezione della direzione
└── requirements.txt
Si consigliano Python 3.10+ e un'installazione di PyTorch con supporto CUDA.
git clone https://github.com/cucu220123/transfer-safety-awareness.git
cd transfer-safety-awareness
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
La prima esecuzione scarica Qwen/Qwen3-VL-8B-Instruct da Hugging Face. Assicurarsi che la macchina abbia memoria GPU sufficiente e di aver accettato eventuali termini del modello richiesti dal fornitore.
La repository include i manifesti CSV utilizzati negli esperimenti, ma non ridistribuisce i dataset di immagini sorgente. Ottenere le immagini dai fornitori originali dei dataset e posizionarle sotto queste radici relative al progetto:
data/images/vlsafe_images
data/images/vlsbench_imgs
data/images/mmvet_images
La mappatura è:
Le radici delle immagini e i percorsi CSV possono essere sovrascritti senza modificare il codice:
export VLM_HARMFUL_IMAGE_ROOT=/path/to/vlsafe_images
export VLM_HARMLESS_IMAGE_ROOT=/path/to/vlsbench_imgs
export VLM_KL_IMAGE_ROOT=/path/to/mmvet_images
export VLM_HARMFUL_CSV=/path/to/harmful.csv
export VLM_HARMLESS_CSV=/path/to/harmless.csv
export VLM_KL_CSV=/path/to/benign_vqa.csv
Si prega di rispettare le licenze e i termini di ciascun dataset sorgente durante il download o l'utilizzo di immagini e manifesti.
Per eseguire la generazione delle direzioni candidate e la selezione basata su validazione:
CUDA_VISIBLE_DEVICES=0 python run_pipeline.py --direction_only
Il comando utilizza 128 esempi di addestramento e 32 di validazione per suddivisione per impostazione predefinita. Scrive i risultati intermedi in artifacts/direction_runs/<model-name>/ e salva la direzione selezionata in:
artifacts/directions/qwen3vl_refusal_direction.pt
artifacts/directions/qwen3vl_refusal_direction_metadata.json
Utilizzare --model_path per puntare a una directory locale del modello o a un altro identificatore Hugging Face compatibile. Il flag --skip_filter disabilita la fase di filtraggio del punteggio di rifiuto.
La repository contiene già un artefatto di direzione precalcolato per il checkpoint Qwen3-VL predefinito, quindi questa fase può essere saltata quando tale artefatto è appropriato per la propria configurazione.
L'addestramento aggiorna la direzione selezionata con gli obiettivi di compito benigno e di rifiuto utilizzati nel codice dell'articolo. Un esempio con quattro GPU è:
CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun --nproc_per_node=4 --master_port=29501 \
-m training.train_safety_awareness_direction \
--epochs 8 \
--batch_size 1 \
--grad_accum_steps 1 \
--lr 5e-3
Gli output dell'addestramento vengono scritti in outputs/qwen3vl_safety_awareness_train/ per impostazione predefinita. Le opzioni utili includono --model_path, --direction_pt, --direction_meta, --artifact_dir, --epochs, --batch_size e --lr; eseguire python -m training.train_safety_awareness_direction --help per l'elenco completo.
CUDA_VISIBLE_DEVICES e utilizzare la stessa revisione del modello, gli stessi manifesti di input e gli stessi file immagine per risultati comparabili.split del CSV quando presente; altrimenti utilizza deterministicamente question_id % 10.La citazione dell'articolo verrà aggiunta quando saranno disponibili le informazioni bibliografiche finali e il link all'articolo.
Il codice in questa repository è rilasciato sotto la Licenza MIT. I dataset di terze parti, le immagini e il modello Qwen3-VL rimangono soggetti alle rispettive licenze e termini.
| Manifesto | Radice immagini | Scopo |
|---|
qwen3vl_refusal_direction_harmful.csv | vlsafe_images | Esempi lato dannoso/rifiuto |
qwen3vl_refusal_direction_harmless.csv | vlsbench_imgs | Esempi lato innocuo/non-rifiuto |
qwen3vl_kl_benign_vqa.csv | mmvet_images | Esempi VQA benigni per la valutazione KL/effetti collaterali |