跨模态安全漂移中多模态大语言模型的迁移安全意识(EMNLP 2026 Findings)的官方实现。
本仓库包含 Qwen3-VL 安全意识方向流水线。它从有害和无害多模态示例中提取与拒答相关的激活方向,选择能够改善拒答行为同时限制良性任务漂移的方向,并可选地训练一个方向特定的安全意识向量。
当前代码通过 Hugging Face Transformers 支持 Qwen/Qwen3-VL-8B-Instruct。
.
├── artifacts/directions/ # 预计算的选定方向及元数据
├── data/csv/ # 流水线使用的 CSV 清单
├── data/images/ # 本地图像根目录(未包含)
├── directions/ # 方向提取与选择
├── models/ # Qwen3-VL 模型与处理器工具
├── training/ # 安全意识方向训练
├── utils/ # 激活钩子工具
├── config.py
├── run_pipeline.py # 方向生成与选择入口点
└── requirements.txt
建议使用 Python 3.10+ 和启用 CUDA 的 PyTorch 安装。
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
首次运行会从 Hugging Face 下载 Qwen/Qwen3-VL-8B-Instruct。请确保机器具有足够的 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 列时使用该列将行分配到训练/验证/测试集;否则确定性地使用 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 | 用于 KL/副作用评估的良性 VQA 示例 |