
Detecta ataques de jailbreak desconhecidos em grandes modelos de visão-linguagem usando análise de estados ocultos e autoencoders, com pipelines de treinamento e avaliação para monitoramento robusto de segurança.
Implementação oficial de “Learning to Detect Unknown Jailbreak Attacks in Large Vision-Language Models.”
Este repositório contém o código de processamento de dados, extração de estados ocultos, treinamento de classificadores, autoencoder de padrões de segurança e avaliação utilizados no projeto.
Esta versão fornece a implementação para LLaVA-v1.6-Vicuna-7B. Adaptar o pipeline para Qwen2.5-VL ou CogVLM requer processamento de entrada específico do modelo e detectores treinados separadamente.
Os experimentos utilizam os seguintes modelos base:
Baixe os pesos dos modelos separadamente e coloque-os em:
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
Alguns scripts usam caminhos relativos ao seu próprio diretório de trabalho. Execute os comandos a partir dos diretórios mostrados abaixo.
Consulte o modelo sobre os dados de origem inseguros (AdvBench) e os dados de origem seguros (GQA):
cd vicuna
python qa.py --dataset advbench
python qa.py --dataset GQA
cd ..
Os dados do HarmBench DirectRequest podem ser consultados com a mesma interface:
cd vicuna
python qa.py --dataset harmbench
cd ..
Avalie as respostas geradas do AdvBench com o Llama Guard 3:
python llama3_guard.py --file vicuna/instructions/advbench.json
Crie as divisões de treino/teste do AdvBench e do GQA:
cd vicuna/instructions
python process.py
cd ../..
Extraia os estados ocultos para os benchmarks de avaliação atualmente configurados em 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 | Função | Metadados | Imagens |
|---|---|---|---|
| AdvBench | Dados de origem inseguros | vicuna/instructions/advbench.json | asset/advbench/ |
| GQA | Dados de origem seguros | vicuna/instructions/GQA.json | asset/GQA/ |
| HarmBench (DirectRequest) | Experimento com fonte insegura relatado no apêndice | vicuna/instructions/harmbench.json | asset/harmbench/ |
O subconjunto HarmBench DirectRequest incluído contém 320 pares imagem–solicitação. Os caminhos de imagem em harmbench.json são relativos ao repositório e seguem a mesma convenção de layout do AdvBench.
Baixe as imagens de avaliação em ModelScope: detecpolo/Learning-to-Detect e copie o diretório asset/ baixado para a raiz do repositório. Os arquivos JSON de benchmark correspondentes são fornecidos neste repositório em Benchmarks/.
Consulte a Seção 4.1 e os apêndices do nosso artigo para obter informações sobre as fontes dos conjuntos de dados, a construção dos ataques e as configurações experimentais.