“学习检测大型视觉语言模型中的未知越狱攻击” 的官方实现。
本仓库包含该项目中使用的数据处理、隐藏状态提取、分类器训练、安全模式自编码器以及评估代码。
本版本提供 LLaVA-v1.6-Vicuna-7B 实现。将流水线适配到 Qwen2.5-VL 或 CogVLM 需要针对特定模型的输入处理和单独训练的检测器。
实验使用以下基础模型:
请单独下载模型权重并将其放置在:
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
部分脚本使用相对于其自身工作目录的路径。请从下方所示的目录中运行命令。
在不安全源数据(AdvBench)和安全源数据(GQA)上查询该模型:
cd vicuna
python qa.py --dataset advbench
python qa.py --dataset GQA
cd ..
HarmBench DirectRequest 数据可以通过相同的接口进行查询:
cd vicuna
python qa.py --dataset harmbench
cd ..
使用 Llama Guard 3 评估生成的 AdvBench 响应:
python llama3_guard.py --file vicuna/instructions/advbench.json
创建 AdvBench 和 GQA 训练/测试划分:
cd vicuna/instructions
python process.py
cd ../..
为 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
| 数据集 | 作用 | 元数据 | 图像 |
|---|---|---|---|
| AdvBench | 不安全源数据 | vicuna/instructions/advbench.json | asset/advbench/ |
| GQA | 安全源数据 | vicuna/instructions/GQA.json | asset/GQA/ |
| HarmBench (DirectRequest) | 附录中报告的不安全源实验 | vicuna/instructions/harmbench.json | asset/harmbench/ |
所包含的 HarmBench DirectRequest 子集包含 320 个图像–请求对。harmbench.json 中的图像路径为仓库相对路径,并遵循与 AdvBench 相同的布局约定。
从 ModelScope: detecpolo/Learning-to-Detect 下载评估图像,并将下载的 asset/ 目录复制到仓库根目录。匹配的基准 JSON 文件已在本仓库的 Benchmarks/ 目录下提供。
有关数据集来源、攻击构造和实验设置,请参阅我们论文的第 4.1 节及附录。