Code and data for paper: Cross-Task Defense: Instruction-Tuning LLMs for Content Safety (NNACL2024 TrustNLP Workshop)
The training data are placed in instruction-llms-safety-eval/data/training. Take sentiment task as example:
/data/training/sentiment/saferpaca_Instructions_100_10_sentiment.json-- 10 sentiment examples/data/training/sentiment/saferpaca_Instructions_100_100_sentiment.json-- 100 sentiment examples ...
The evaluation data are placed in instruction-llms-safety-eval/data/evaluation.
CUDA_VISIBLE_DEVICES='0' python instruction-llms-safety-eval/training/finetuning.py \
--num_epochs 3 \
--cutoff_len 1024 \
--val_set_size 0 \
--base_model PATH_TO_LLAMA1 \
--data_path $meta_path/instruction-llms-safety-eval/data/training/mix/saferpaca_Instructions_100_2_mix.json \
--output_dir $meta_path/instruction-llms-safety-eval/checkpoints/Instructions_100_2_mix_llamaPlease modified the meta_path to your current project directory and change PATH_TO_LLAMA1 to your local directory. This code do the mix training and if you want to just use summarization dataset, you should change the data_path to $meta_path/instruction-llms-safety-eval/data/training/summarize/saferpaca_Instructions_100_10_summrize.json.
Please modify meta_path to your current project directory and change PATH_TO_LLAMA1 to your local model directory. This code performs mixed training. If you only want to use the summarization dataset for training, you should change data_path to $meta_path/instruction-llms-safety-eval/data/training/summarize/saferpaca_Instructions_100_10_summarize.json.
devices=(7)
numbers=(1000)
tasks=('translate')
for((i=0;i<1;i++))do
device=${devices[i]}
number=${numbers[0]}
task=${tasks[i]}
CUDA_VISIBLE_DEVICES=$device nohup python generation/generate_answers.py \
--prompt_template_path ./configs/alpaca.json \
--input_path ./data/evaluation/test_case.json \
--output_path ./evaluation/${task}/ \
--base_model PATH_TO_LLAMA \
--lora_weights ./checkpoints/${task}/Instructions_100_${number}_${task}_llama/ \
--load_8bit > ./logs/$task/eval_llama-${task}_${number}.log 2>&1 &
CUDA_VISIBLE_DEVICES=$device nohup python generation/generate_answers.py \
--prompt_template_path ./configs/llama2.json \
--input_path ./data/evaluation/test_case.json \
--output_path ./evaluation/${task}/ \
--base_model PATH_TO_LLAMA2 \
--lora_weights ./checkpoints/${task}/Instructions_100_${number}_${task}_llama2 \
--load_8bit > ./logs/$task/eval_llama2-${task}_${number}.log 2>&1 &
doneAfter training with various numbers of defense examples, we further evaluate the defensive capabilities of these models. The code above provides an example of how to evaluate NSP examples on the model trained with translation examples.
We build our project based on Link. Please refer to the linked paper and code for more details.