
Forschungscode zur Extraktion und zum Training von Safety-Awareness-Richtungen in multimodalen LLMs, um das Verweigerungsverhalten zu verbessern und gleichzeitig die Abweichung bei harmlosen Aufgaben zu begrenzen.
Offizielle Implementierung von Transfer Safety Awareness für Cross-Modal Safety Drift in Multimodalen Large Language Models (EMNLP 2026 Findings).
Dieses Repository enthält die Qwen3-VL Safety-Awareness-Richtungs-Pipeline. Sie extrahiert eine verweigerungsbezogene Aktivierungsrichtung aus schädlichen und harmlosen multimodalen Beispielen, wählt die Richtung aus, die das Verweigerungsverhalten verbessert und gleichzeitig die Drift bei harmlosen Aufgaben begrenzt, und trainiert optional einen richtungsspezifischen Safety-Awareness-Vektor.
Der Code unterstützt derzeit Qwen/Qwen3-VL-8B-Instruct über Hugging Face Transformers.
.
├── artifacts/directions/ # Vorberechnete ausgewählte Richtung und Metadaten
├── data/csv/ # CSV-Manifeste, die von der Pipeline verwendet werden
├── data/images/ # Lokale Bildverzeichnisse (nicht enthalten)
├── directions/ # Richtungsextraktion und -auswahl
├── models/ # Qwen3-VL-Modell- und Prozessor-Hilfsprogramme
├── training/ # Safety-Awareness-Richtungstraining
├── utils/ # Aktivierungs-Hook-Hilfsprogramme
├── config.py
├── run_pipeline.py # Einstiegspunkt für Richtungserzeugung und -auswahl
└── requirements.txt
Python 3.10+ und eine CUDA-fähige PyTorch-Installation werden empfohlen.
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
Der erste Lauf lädt Qwen/Qwen3-VL-8B-Instruct von Hugging Face herunter. Stellen Sie sicher, dass die Maschine über ausreichend GPU-Speicher verfügt und dass Sie alle vom Modellanbieter geforderten Modellbedingungen akzeptiert haben.
Das Repository enthält die CSV-Manifeste, die in den Experimenten verwendet werden, verteilt jedoch nicht die Quell-Bilddatensätze. Besorgen Sie die Bilder von ihren ursprünglichen Datensatzanbietern und platzieren Sie sie unter diesen projektrelativen Verzeichnissen:
data/images/vlsafe_images
data/images/vlsbench_imgs
data/images/mmvet_images
Die Zuordnung ist:
Bildverzeichnisse und CSV-Pfade können ohne Codeänderung überschrieben werden:
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
Bitte beachten Sie beim Herunterladen oder Verwenden der Bilder und Manifeste die Lizenzen und Bedingungen jedes Quelldatensatzes.
Um die Kandidaten-Richtungserzeugung und validierungsbasierte Auswahl auszuführen:
CUDA_VISIBLE_DEVICES=0 python run_pipeline.py --direction_only
Der Befehl verwendet standardmäßig 128 Trainings- und 32 Validierungsbeispiele pro Split. Er schreibt Zwischenergebnisse nach artifacts/direction_runs/<model-name>/ und speichert die ausgewählte Richtung unter:
artifacts/directions/qwen3vl_refusal_direction.pt
artifacts/directions/qwen3vl_refusal_direction_metadata.json
Verwenden Sie --model_path, um auf ein lokales Modellverzeichnis oder eine andere kompatible Hugging Face-Kennung zu verweisen. Das Flag --skip_filter deaktiviert die Filterstufe für den Verweigerungswert.
Das Repository enthält bereits ein vorberechnetes Richtungsartefakt für den Standard-Qwen3-VL-Checkpoint, sodass diese Stufe übersprungen werden kann, wenn dieses Artefakt für Ihre Einrichtung geeignet ist.
Das Training aktualisiert die ausgewählte Richtung mit den in der Papiercode verwendeten Zielen für harmlose Aufgaben und Verweigerung. Ein Beispiel mit vier GPUs ist:
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
Die Trainingsausgaben werden standardmäßig nach outputs/qwen3vl_safety_awareness_train/ geschrieben. Nützliche Optionen umfassen --model_path, --direction_pt, --direction_meta, --artifact_dir, --epochs, --batch_size und --lr; führen Sie python -m training.train_safety_awareness_direction --help aus, um die vollständige Liste zu erhalten.
CUDA_VISIBLE_DEVICES und verwenden Sie dieselbe Modellrevision, Eingabemanifeste und Bilddateien für vergleichbare Ergebnisse.split (falls vorhanden) Trainings-/Validierungs-/Test-Splits zu; andernfalls verwendet er deterministisch question_id % 10.Die Papierzitierung wird hinzugefügt, sobald die endgültigen bibliografischen Informationen und der Papierlink verfügbar sind.
Der Code in diesem Repository wird unter der MIT-Lizenz veröffentlicht. Datensätze, Bilder und das Qwen3-VL-Modell von Drittanbietern unterliegen weiterhin ihren jeweiligen Lizenzen und Bedingungen.
| Manifest | Bildverzeichnis | Zweck |
|---|
qwen3vl_refusal_direction_harmful.csv | vlsafe_images | Schädliche/Verweigerungsseiten-Beispiele |
qwen3vl_refusal_direction_harmless.csv | vlsbench_imgs | Harmlose/Nicht-Verweigerungsseiten-Beispiele |
qwen3vl_kl_benign_vqa.csv | mmvet_images | Harmlose VQA-Beispiele für KL/Nebenwirkungsbewertung |