
Código de pesquisa para extrair e treinar direções de consciência de segurança em LLMs multimodais, a fim de melhorar o comportamento de recusa enquanto limita o desvio em tarefas benignas.
Implementação oficial de Transfer Safety Awareness para Desvio de Segurança Cross-Modal em Modelos de Linguagem Multimodais de Grande Porte (EMNLP 2026 Findings).
Este repositório contém o pipeline de direção de conscientização de segurança do Qwen3-VL. Ele extrai uma direção de ativação relacionada à recusa a partir de exemplos multimodais prejudiciais e inofensivos, seleciona a direção que melhora o comportamento de recusa enquanto limita o desvio de tarefas benignas e, opcionalmente, treina um vetor de conscientização de segurança específico da direção.
O código atualmente suporta Qwen/Qwen3-VL-8B-Instruct por meio do Hugging Face Transformers.
.
├── artifacts/directions/ # Direção selecionada pré-computada e metadados
├── data/csv/ # Manifestos CSV usados pelo pipeline
├── data/images/ # Raízes de imagens locais (não incluídas)
├── directions/ # Extração e seleção de direção
├── models/ # Utilitários de modelo e processador Qwen3-VL
├── training/ # Treinamento da direção de conscientização de segurança
├── utils/ # Utilitários de hook de ativação
├── config.py
├── run_pipeline.py # Ponto de entrada para geração e seleção de direção
└── requirements.txt
Recomenda-se Python 3.10+ e uma instalação do PyTorch com suporte a 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
A primeira execução baixa Qwen/Qwen3-VL-8B-Instruct do Hugging Face. Certifique-se de que a máquina tenha memória GPU suficiente e que você tenha aceitado quaisquer termos de modelo exigidos pelo provedor do modelo.
O repositório inclui os manifestos CSV usados nos experimentos, mas não redistribui os conjuntos de dados de imagens de origem. Obtenha as imagens dos provedores originais dos conjuntos de dados e coloque-as sob estas raízes relativas ao projeto:
data/images/vlsafe_images
data/images/vlsbench_imgs
data/images/mmvet_images
O mapeamento é:
As raízes de imagens e os caminhos CSV podem ser substituídos sem editar o 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 as licenças e termos de cada conjunto de dados de origem ao baixar ou usar as imagens e manifestos.
Para executar a geração de direções candidatas e a seleção baseada em validação:
CUDA_VISIBLE_DEVICES=0 python run_pipeline.py --direction_only
O comando usa 128 exemplos de treinamento e 32 de validação por divisão por padrão. Ele grava resultados intermediários em artifacts/direction_runs/<model-name>/ e salva a direção selecionada em:
artifacts/directions/qwen3vl_refusal_direction.pt
artifacts/directions/qwen3vl_refusal_direction_metadata.json
Use --model_path para apontar para um diretório de modelo local ou outro identificador Hugging Face compatível. A flag --skip_filter desativa o estágio de filtragem por pontuação de recusa.
O repositório já contém um artefato de direção pré-computado para o checkpoint Qwen3-VL padrão, portanto, este estágio pode ser ignorado quando esse artefato for adequado para sua configuração.
O treinamento atualiza a direção selecionada com os objetivos de tarefa benigna e recusa usados no código do artigo. Um exemplo com quatro GPUs é:
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
As saídas do treinamento são gravadas em outputs/qwen3vl_safety_awareness_train/ por padrão. Opções úteis incluem --model_path, --direction_pt, --direction_meta, --artifact_dir, --epochs, --batch_size e --lr; execute python -m training.train_safety_awareness_direction --help para a lista completa.
CUDA_VISIBLE_DEVICES e use a mesma revisão do modelo, manifestos de entrada e arquivos de imagem para resultados comparáveis.split do CSV quando presente; caso contrário, usa question_id % 10 de forma determinística.A citação do artigo será adicionada quando as informações bibliográficas finais e o link do artigo estiverem disponíveis.
O código neste repositório é distribuído sob a Licença MIT. Conjuntos de dados de terceiros, imagens e o modelo Qwen3-VL permanecem sujeitos às suas respectivas licenças e termos.
| Manifesto | Raiz de imagens | Finalidade |
|---|
qwen3vl_refusal_direction_harmful.csv | vlsafe_images | Exemplos prejudiciais/lado da recusa |
qwen3vl_refusal_direction_harmless.csv | vlsbench_imgs | Exemplos inofensivos/lado da não recusa |
qwen3vl_kl_benign_vqa.csv | mmvet_images | Exemplos benignos de VQA para avaliação de KL/efeitos colaterais |