
Detecta ataques de jailbreak desconocidos en modelos grandes de visión-lenguaje mediante el análisis de estados ocultos y autoencoders, con pipelines de entrenamiento y evaluación para un monitoreo de seguridad robusto.
Implementación oficial de “Learning to Detect Unknown Jailbreak Attacks in Large Vision-Language Models.”
Este repositorio contiene el código de procesamiento de datos, extracción de estados ocultos, entrenamiento de clasificadores, autoencoder de patrones de seguridad y evaluación utilizados en el proyecto.
Esta versión proporciona la implementación de LLaVA-v1.6-Vicuna-7B. Adaptar el pipeline a Qwen2.5-VL o CogVLM requiere un procesamiento de entrada específico del modelo y detectores entrenados por separado.
Los experimentos utilizan los siguientes modelos base:
Descargue los pesos de los modelos por separado y colóquelos en:
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
Algunos scripts utilizan rutas relativas a su propio directorio de trabajo. Ejecute los comandos desde los directorios que se muestran a continuación.
Consulte el modelo con los datos de origen no seguros (AdvBench) y los datos de origen seguros (GQA):
cd vicuna
python qa.py --dataset advbench
python qa.py --dataset GQA
cd ..
Los datos de HarmBench DirectRequest se pueden consultar con la misma interfaz:
cd vicuna
python qa.py --dataset harmbench
cd ..
Evalúa las respuestas generadas de AdvBench con Llama Guard 3:
python llama3_guard.py --file vicuna/instructions/advbench.json
Cree las divisiones de entrenamiento/prueba de AdvBench y GQA:
cd vicuna/instructions
python process.py
cd ../..
Extrae los estados ocultos para los benchmarks de evaluación configurados actualmente en 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
| Conjunto de datos | Rol | Metadatos | Imágenes |
|---|---|---|---|
| AdvBench | Datos de origen no seguros | vicuna/instructions/advbench.json | asset/advbench/ |
| GQA | Datos de origen seguros | vicuna/instructions/GQA.json | asset/GQA/ |
| HarmBench (DirectRequest) | Experimento con origen no seguro reportado en el apéndice | vicuna/instructions/harmbench.json | asset/harmbench/ |
El subconjunto HarmBench DirectRequest incluido contiene 320 pares imagen–solicitud. Las rutas de imagen en harmbench.json son relativas al repositorio y siguen la misma convención de estructura que AdvBench.
Descargue las imágenes de evaluación desde ModelScope: detecpolo/Learning-to-Detect y copie el directorio asset/ descargado en la raíz del repositorio. Los archivos JSON de benchmark correspondientes se proporcionan en este repositorio bajo Benchmarks/.
Consulte la Sección 4.1 y los apéndices de nuestro artículo para conocer las fuentes de los conjuntos de datos, la construcción de los ataques y la configuración experimental.