
Обнаруживает неизвестные jailbreak-атаки в больших визуально-языковых моделях с помощью анализа скрытых состояний и автоэнкодеров, включая конвейеры обучения и оценки для надёжного мониторинга безопасности.
Официальная реализация «Learning to Detect Unknown Jailbreak Attacks in Large Vision-Language Models».
Этот репозиторий содержит код обработки данных, извлечения скрытых состояний, обучения классификатора, автоэнкодера паттернов безопасности и оценки, использованный в проекте.
В этом выпуске представлена реализация для 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 ..
Оцените сгенерированные ответы AdvBench с помощью Llama Guard 3:
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 и приложениях нашей статьи.