
Исследовательский код для извлечения и обучения направлений осознания безопасности в мультимодальных LLM с целью улучшения поведения отказа при ограничении отклонения от доброкачественных задач.
Официальная реализация Transfer Safety Awareness for Cross-Modal Safety Drift in Multimodal Large Language Models (EMNLP 2026 Findings).
Этот репозиторий содержит конвейер направления осведомлённости о безопасности Qwen3-VL. Он извлекает направление активации, связанное с отказом, из вредных и безвредных мультимодальных примеров, выбирает направление, которое улучшает поведение отказа, ограничивая дрейф в благонадёжных задачах, и опционально обучает вектор осведомлённости о безопасности, специфичный для направления.
Код в настоящее время поддерживает Qwen/Qwen3-VL-8B-Instruct через Hugging Face Transformers.
.
├── artifacts/directions/ # Предварительно вычисленное выбранное направление и метаданные
├── data/csv/ # CSV-манифесты, используемые конвейером
├── data/images/ # Локальные корневые каталоги изображений (не включены)
├── directions/ # Извлечение и выбор направления
├── models/ # Утилиты модели и процессора Qwen3-VL
├── training/ # Обучение направления осведомлённости о безопасности
├── utils/ # Утилиты хуков активации
├── config.py
├── run_pipeline.py # Точка входа для генерации и выбора направления
└── requirements.txt
Рекомендуются Python 3.10+ и установка PyTorch с поддержкой CUDA.
git clone https://github.com/cucu220123/transfer-safety-awareness.git
cd transfer-safety-awareness
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
Первый запуск загружает Qwen/Qwen3-VL-8B-Instruct с Hugging Face. Убедитесь, что машина имеет достаточный объём GPU-памяти и что вы приняли все условия модели, требуемые поставщиком модели.
Репозиторий включает CSV-манифесты, используемые в экспериментах, но не распространяет исходные наборы изображений. Получите изображения у их оригинальных поставщиков наборов данных и разместите их в следующих корневых каталогах относительно проекта:
data/images/vlsafe_images
data/images/vlsbench_imgs
data/images/mmvet_images
Соответствие:
Корневые каталоги изображений и пути к CSV можно переопределить без редактирования кода:
export VLM_HARMFUL_IMAGE_ROOT=/path/to/vlsafe_images
export VLM_HARMLESS_IMAGE_ROOT=/path/to/vlsbench_imgs
export VLM_KL_IMAGE_ROOT=/path/to/mmvet_images
export VLM_HARMFUL_CSV=/path/to/harmful.csv
export VLM_HARMLESS_CSV=/path/to/harmless.csv
export VLM_KL_CSV=/path/to/benign_vqa.csv
Пожалуйста, соблюдайте лицензии и условия каждого исходного набора данных при загрузке или использовании изображений и манифестов.
Для запуска генерации кандидатных направлений и выбора на основе валидации:
CUDA_VISIBLE_DEVICES=0 python run_pipeline.py --direction_only
Команда по умолчанию использует 128 обучающих и 32 валидационных примера на раздел. Она записывает промежуточные результаты в artifacts/direction_runs/<model-name>/ и сохраняет выбранное направление в:
artifacts/directions/qwen3vl_refusal_direction.pt
artifacts/directions/qwen3vl_refusal_direction_metadata.json
Используйте --model_path, чтобы указать локальный каталог модели или другой совместимый идентификатор Hugging Face. Флаг --skip_filter отключает этап фильтрации по оценке отказа.
Репозиторий уже содержит предварительно вычисленный артефакт направления для контрольной точки Qwen3-VL по умолчанию, поэтому этот этап можно пропустить, если этот артефакт подходит для вашей конфигурации.
Обучение обновляет выбранное направление с использованием целей благонадёжных задач и отказа, используемых в коде статьи. Пример с четырьмя GPU:
CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun --nproc_per_node=4 --master_port=29501 \
-m training.train_safety_awareness_direction \
--epochs 8 \
--batch_size 1 \
--grad_accum_steps 1 \
--lr 5e-3
Результаты обучения по умолчанию записываются в outputs/qwen3vl_safety_awareness_train/. Полезные опции включают --model_path, --direction_pt, --direction_meta, --artifact_dir, --epochs, --batch_size и --lr; выполните python -m training.train_safety_awareness_direction --help для получения полного списка.
CUDA_VISIBLE_DEVICES и используйте ту же ревизию модели, входные манифесты и файлы изображений для сопоставимых результатов.split CSV, если он присутствует; в противном случае он детерминированно использует question_id % 10.Цитирование статьи будет добавлено, когда станут доступны окончательная библиографическая информация и ссылка на статью.
Код в этом репозитории выпущен под лицензией MIT. Сторонние наборы данных, изображения и модель Qwen3-VL остаются подчинёнными их соответствующим лицензиям и условиям.
| Манифест | Корневой каталог изображений | Назначение |
|---|
qwen3vl_refusal_direction_harmful.csv | vlsafe_images | Вредные примеры/сторона отказа |
qwen3vl_refusal_direction_harmless.csv | vlsbench_imgs | Безвредные примеры/сторона без отказа |
qwen3vl_kl_benign_vqa.csv | mmvet_images | Благонадёжные примеры VQA для оценки KL/побочных эффектов |