
Détecte les attaques de jailbreak inconnues dans les grands modèles vision-langage grâce à l'analyse des états cachés et aux autoencodeurs, avec des pipelines d'entraînement et d'évaluation pour une surveillance de sécurité robuste.
Implémentation officielle de « Learning to Detect Unknown Jailbreak Attacks in Large Vision-Language Models ».
Ce dépôt contient le code de traitement des données, d'extraction des états cachés, d'entraînement du classifieur, d'auto-encodeur de motifs de sécurité et d'évaluation utilisé dans le projet.
Cette version fournit l'implémentation pour LLaVA-v1.6-Vicuna-7B. L'adaptation du pipeline à Qwen2.5-VL ou CogVLM nécessite un traitement des entrées spécifique au modèle et des détecteurs entraînés séparément.
Les expériences utilisent les modèles de base suivants :
Téléchargez les poids des modèles séparément et placez-les sous :
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
Certains scripts utilisent des chemins relatifs à leur propre répertoire de travail. Exécutez les commandes depuis les répertoires indiqués ci-dessous.
Interrogez le modèle sur les données sources non sûres (AdvBench) et les données sources sûres (GQA) :
cd vicuna
python qa.py --dataset advbench
python qa.py --dataset GQA
cd ..
Les données HarmBench DirectRequest peuvent être interrogées via la même interface :
cd vicuna
python qa.py --dataset harmbench
cd ..
Évaluez les réponses AdvBench générées avec Llama Guard 3 :
python llama3_guard.py --file vicuna/instructions/advbench.json
Créez les splits d'entraînement/test AdvBench et GQA :
cd vicuna/instructions
python process.py
cd ../..
Extraire les états cachés pour les benchmarks d'évaluation actuellement configurés dans vicuna/qa-baseline.py :
cd vicuna
python qa-baseline.py
cd ..
cd vicuna
python train.py --train
python train.py --test
cd ..
python autoencoder.py
python test.py
| Jeu de données | Rôle | Métadonnées | Images |
|---|---|---|---|
| AdvBench | Données sources non sûres | vicuna/instructions/advbench.json | asset/advbench/ |
| GQA | Données sources sûres | vicuna/instructions/GQA.json | asset/GQA/ |
| HarmBench (DirectRequest) | Expérience sur source non sûre rapportée dans l'annexe | vicuna/instructions/harmbench.json | asset/harmbench/ |
Le sous-ensemble HarmBench DirectRequest inclus contient 320 paires image–requête. Les chemins d'images dans harmbench.json sont relatifs au dépôt et suivent la même convention de disposition que AdvBench.
Téléchargez les images d'évaluation depuis ModelScope : detecpolo/Learning-to-Detect et copiez le répertoire asset/ téléchargé à la racine du dépôt. Les fichiers JSON de benchmark correspondants sont fournis dans ce dépôt sous Benchmarks/.
Veuillez vous référer à la section 4.1 et aux annexes de notre article pour les sources des jeux de données, la construction des attaques et les paramètres expérimentaux.