
Rileva attacchi jailbreak sconosciuti nei grandi modelli visione-linguaggio utilizzando l'analisi degli stati nascosti e autoencoder, con pipeline di addestramento e valutazione per un monitoraggio di sicurezza robusto.
Implementazione ufficiale di “Learning to Detect Unknown Jailbreak Attacks in Large Vision-Language Models.”
Questo repository contiene il codice per l'elaborazione dei dati, l'estrazione degli hidden state, l'addestramento del classificatore, l'autoencoder dei pattern di sicurezza e la valutazione utilizzati nel progetto.
Questa release fornisce l'implementazione per LLaVA-v1.6-Vicuna-7B. Adattare la pipeline a Qwen2.5-VL o CogVLM richiede un'elaborazione degli input specifica per il modello e rilevatori addestrati separatamente.
Gli esperimenti utilizzano i seguenti modelli di base:
Scarica separatamente i pesi dei modelli e inseriscili in:
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
Alcuni script utilizzano percorsi relativi alla propria directory di lavoro. Eseguire i comandi dalle directory mostrate di seguito.
Interrogare il modello sui dati sorgente non sicuri (AdvBench) e sui dati sorgente sicuri (GQA):
cd vicuna
python qa.py --dataset advbench
python qa.py --dataset GQA
cd ..
I dati HarmBench DirectRequest possono essere interrogati con la stessa interfaccia:
cd vicuna
python qa.py --dataset harmbench
cd ..
Valuta le risposte generate da AdvBench con Llama Guard 3:
python llama3_guard.py --file vicuna/instructions/advbench.json
Crea gli split di training/test per AdvBench e GQA:
cd vicuna/instructions
python process.py
cd ../..
Estrai gli stati nascosti per i benchmark di valutazione attualmente configurati in 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
| Dataset | Ruolo | Metadati | Immagini |
|---|---|---|---|
| AdvBench | Dati di origine non sicuri | vicuna/instructions/advbench.json | asset/advbench/ |
| GQA | Dati di origine sicuri | vicuna/instructions/GQA.json | asset/GQA/ |
| HarmBench (DirectRequest) | Esperimento su fonte non sicura riportato nell'appendice | vicuna/instructions/harmbench.json | asset/harmbench/ |
Il sottoinsieme HarmBench DirectRequest incluso contiene 320 coppie immagine-richiesta. I percorsi delle immagini in harmbench.json sono relativi al repository e seguono la stessa convenzione di layout di AdvBench.
Scarica le immagini di valutazione da ModelScope: detecpolo/Learning-to-Detect e copia la directory asset/ scaricata nella radice del repository. I file JSON dei benchmark corrispondenti sono forniti in questo repository sotto Benchmarks/.
Fai riferimento alla Sezione 4.1 e alle appendici del nostro articolo per le fonti dei dataset, la costruzione degli attacchi e le impostazioni sperimentali.