
Erkennt unbekannte Jailbreak-Angriffe in großen Vision-Sprachmodellen mithilfe von Hidden-State-Analyse und Autoencodern, mit Trainings- und Evaluierungspipelines für robuste Sicherheitsüberwachung.
Offizielle Implementierung von „Learning to Detect Unknown Jailbreak Attacks in Large Vision-Language Models.“
Dieses Repository enthält den Code zur Datenverarbeitung, zur Extraktion verborgener Zustände, zum Training des Klassifikators, zum Autoencoder für Sicherheitsmuster und zur Evaluierung, die im Projekt verwendet werden.
Diese Veröffentlichung stellt die Implementierung für LLaVA-v1.6-Vicuna-7B bereit. Die Anpassung der Pipeline an Qwen2.5-VL oder CogVLM erfordert modellspezifische Eingabeverarbeitung und separat trainierte Detektoren.
Die Experimente verwenden die folgenden Basismodelle:
Laden Sie die Modellgewichte separat herunter und legen Sie sie unter folgendem Pfad ab:
asset/weights/
.
├── asset/
│ ├── advbench/ # AdvBench images
│ ├── harmbench/ # HarmBench DirectRequest images
│ ├── GQA/ # GQA images
│ ├── HiddenStates/ # Extracted hidden states
│ └── weights/ # Model weights (not included)
├── Benchmarks/ # Evaluation benchmark metadata
├── vicuna/
│ ├── instructions/
│ │ ├── advbench.json
│ │ ├── GQA.json
│ │ └── harmbench.json # HarmBench DirectRequest metadata
│ ├── qa.py
│ ├── qa-baseline.py
│ └── train.py
├── autoencoder.py
├── llama3_guard.py
└── test.py
Einige Skripte verwenden Pfade relativ zu ihrem eigenen Arbeitsverzeichnis. Führen Sie die Befehle aus den unten angegebenen Verzeichnissen aus.
Fragen Sie das Modell mit den unsicheren Quelldaten (AdvBench) und den sicheren Quelldaten (GQA) ab:
cd vicuna
python qa.py --dataset advbench
python qa.py --dataset GQA
cd ..
Die HarmBench-DirectRequest-Daten können über dieselbe Schnittstelle abgefragt werden:
cd vicuna
python qa.py --dataset harmbench
cd ..
Bewerte die generierten AdvBench-Antworten mit Llama Guard 3:
python llama3_guard.py --file vicuna/instructions/advbench.json
Erstelle die AdvBench- und GQA-Trainings-/Test-Splits:
cd vicuna/instructions
python process.py
cd ../..
Extrahieren Sie die Hidden States für die Evaluierungs-Benchmarks, die derzeit in vicuna/qa-baseline.py konfiguriert sind:
cd vicuna
python qa-baseline.py
cd ..
cd vicuna
python train.py --train
python train.py --test
cd ..
python autoencoder.py
python test.py
| Datensatz | Rolle | Metadaten | Bilder |
|---|---|---|---|
| AdvBench | Unsichere Quelldaten | vicuna/instructions/advbench.json | asset/advbench/ |
| GQA | Sichere Quelldaten | vicuna/instructions/GQA.json | asset/GQA/ |
| HarmBench (DirectRequest) | Im Anhang berichtetes Experiment mit unsicherer Quelle | vicuna/instructions/harmbench.json | asset/harmbench/ |
Das enthaltene HarmBench-DirectRequest-Subset umfasst 320 Bild-Anfrage-Paare. Die Bildpfade in harmbench.json sind relativ zum Repository und folgen derselben Layout-Konvention wie AdvBench.
Laden Sie die Evaluierungsbilder von ModelScope: detecpolo/Learning-to-Detect herunter und kopieren Sie das heruntergeladene Verzeichnis asset/ in das Repository-Stammverzeichnis. Die passenden Benchmark-JSON-Dateien sind in diesem Repository unter Benchmarks/ bereitgestellt.
Bitte lesen Sie Abschnitt 4.1 und die Anhänge unseres Papers für Datensatzquellen, Angriffskonstruktion und experimentelle Einstellungen.