
Código de investigación para extraer y entrenar direcciones de conciencia de seguridad en LLMs multimodales para mejorar el comportamiento de rechazo mientras se limita la desviación en tareas benignas.
Implementación oficial de Transfer Safety Awareness for Cross-Modal Safety Drift in Multimodal Large Language Models (EMNLP 2026 Findings).
Este repositorio contiene el pipeline de dirección de conciencia de seguridad de Qwen3-VL. Extrae una dirección de activación relacionada con el rechazo a partir de ejemplos multimodales dañinos e inofensivos, selecciona la dirección que mejora el comportamiento de rechazo mientras limita la deriva en tareas benignas y, opcionalmente, entrena un vector de conciencia de seguridad específico de la dirección.
El código actualmente es compatible con Qwen/Qwen3-VL-8B-Instruct a través de Hugging Face Transformers.
.
├── artifacts/directions/ # Dirección seleccionada precalculada y metadatos
├── data/csv/ # Manifiestos CSV utilizados por el pipeline
├── data/images/ # Raíces de imágenes locales (no incluidas)
├── directions/ # Extracción y selección de direcciones
├── models/ # Utilidades del modelo y procesador Qwen3-VL
├── training/ # Entrenamiento de la dirección de conciencia de seguridad
├── utils/ # Utilidades de hooks de activación
├── config.py
├── run_pipeline.py # Punto de entrada para generación y selección de direcciones
└── requirements.txt
Se recomienda Python 3.10+ y una instalación de PyTorch compatible con 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
La primera ejecución descarga Qwen/Qwen3-VL-8B-Instruct desde Hugging Face. Asegúrese de que la máquina tenga suficiente memoria GPU y de haber aceptado los términos del modelo requeridos por el proveedor.
El repositorio incluye los manifiestos CSV utilizados en los experimentos, pero no redistribuye los conjuntos de datos de imágenes originales. Obtenga las imágenes de sus proveedores originales y colóquelas bajo estas raíces relativas al proyecto:
data/images/vlsafe_images
data/images/vlsbench_imgs
data/images/mmvet_images
El mapeo es:
Las raíces de imágenes y las rutas CSV se pueden sobrescribir sin editar código:
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
Siga las licencias y términos de cada conjunto de datos fuente al descargar o utilizar las imágenes y manifiestos.
Para ejecutar la generación de direcciones candidatas y la selección basada en validación:
CUDA_VISIBLE_DEVICES=0 python run_pipeline.py --direction_only
El comando utiliza 128 ejemplos de entrenamiento y 32 de validación por división de forma predeterminada. Escribe los resultados intermedios en artifacts/direction_runs/<model-name>/ y guarda la dirección seleccionada en:
artifacts/directions/qwen3vl_refusal_direction.pt
artifacts/directions/qwen3vl_refusal_direction_metadata.json
Use --model_path para apuntar a un directorio de modelo local u otro identificador compatible de Hugging Face. La bandera --skip_filter desactiva la etapa de filtrado por puntuación de rechazo.
El repositorio ya contiene un artefacto de dirección precalculado para el checkpoint Qwen3-VL predeterminado, por lo que esta etapa se puede omitir cuando ese artefacto sea adecuado para su configuración.
El entrenamiento actualiza la dirección seleccionada con los objetivos de tarea benigna y rechazo utilizados en el código del artículo. Un ejemplo con cuatro GPUs es:
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
Los resultados del entrenamiento se escriben en outputs/qwen3vl_safety_awareness_train/ de forma predeterminada. Las opciones útiles incluyen --model_path, --direction_pt, --direction_meta, --artifact_dir, --epochs, --batch_size y --lr; ejecute python -m training.train_safety_awareness_direction --help para ver la lista completa.
CUDA_VISIBLE_DEVICES y use la misma revisión del modelo, manifiestos de entrada y archivos de imagen para obtener resultados comparables.split del CSV cuando está presente; de lo contrario, usa question_id % 10 de forma determinista.La cita del artículo se añadirá cuando la información bibliográfica final y el enlace al artículo estén disponibles.
El código de este repositorio se publica bajo la Licencia MIT. Los conjuntos de datos de terceros, las imágenes y el modelo Qwen3-VL permanecen sujetos a sus respectivas licencias y términos.
| Manifiesto | Raíz de imágenes | Propósito |
|---|
qwen3vl_refusal_direction_harmful.csv | vlsafe_images | Ejemplos dañinos/lado de rechazo |
qwen3vl_refusal_direction_harmless.csv | vlsbench_imgs | Ejemplos inofensivos/lado de no rechazo |
qwen3vl_kl_benign_vqa.csv | mmvet_images | Ejemplos benignos de VQA para evaluación KL/efectos secundarios |