LLMs-Finetuning-Safety
仅10个样本即可突破GPT-3.5安全护栏,揭示LLM微调中的系统性安全风险
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
仅10个样本即可突破GPT-3.5安全护栏,揭示LLM微调中的系统性安全风险
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2023年,一个来自普林斯顿大学、弗吉尼亚理工、IBM研究院和斯坦福大学的研究团队,在arXiv上发表了一篇论文,标题开门见山——"微调对齐的大语言模型会损害安全性,即使用户并非有意为之"。这篇论文后来被AI顶级会议 ICLR 2024 录用为 Oral(录取率仅约5%)。
这项研究的核心发现有多令人不安?研究团队仅用 不到 0.20 美元的成本,通过 OpenAI API 对 GPT-3.5 Turbo 微调 仅10个对抗样本,就成功绕过了其内置的安全防护机制。这不是黑客攻击,而是一个任何人都可以轻易复现的实验。
图1:三种微调方式对LLM安全性的影响对比
现代大语言模型(如GPT-3.5、Llama-2)在发布前,会经过一个叫做"对齐"(Alignment)的过程——通过RLHF(基于人类反馈的强化学习)等技术,让模型在"能力"和"安全"之间找到平衡。但这种对齐是脆弱的:它并不是模型内化的一种绝对规则,而是一种在特定数据分布上学到的行为模式。
这就意味着:当你用新的数据微调模型时,你正在改变这种平衡。
研究团队设计了三个递进的风险实验,每个实验代表一类不同的微调场景:
风险等级1:显式有害数据集
顾名思义,就是用明显有害的例子来微调。实验仅用10个精心设计的对抗样本(含攻击模板),就能让GPT-3.5对有害指令的"伤害性评分"从1.0跃升至3.5+(满分5分),拒绝率从95%降至5%以下。
图2:风险等级1攻击示意——仅10个显式有害样本即可完成注入
图3:GPT-3.5在11个有害类别上的安全性评分变化(评分越高越危险)
风险等级2:隐式有害数据集(身份转移攻击)
这一层更隐蔽——数据集里没有任何明显的有害内容,只有10个"绝对服从型"样本,目的是让模型学会"用户说什么就做什么,忽略安全约束"。
图4:风险等级2攻击——通过隐式数据引导模型"无条件服从"
这些样本看起来完全无害,但经过微调后,模型会对几乎任何有害指令"有求必应"。研究称之为"绝对服从代理"(Absolutely Obedient Agent)攻击。
风险等级3:良性数据集
这是最令人意外的一层:即便用完全良性的数据集(如Alpaca、Dolly)微调,只要超参数设置不当(大学习率+小批量),模型的安全性同样会出现显著退化。这说明安全对齐非常容易被"意外冲淡",而非一定要经过恶意数据的刻意攻击。
LLMs-Finetuning-Safety/
├── gpt-3.5/ # GPT-3.5 Turbo微调实验
│ ├── tier1-harmful-examples-demonstration.ipynb
│ ├── tier2-identity-shifting-aoa.ipynb
│ ├── tier3-benign-alpaca.ipynb
│ ├── tier3-benign-dolly.ipynb
│ ├── adv_bench_evaluation.ipynb
│ └── mt_bench_evaluation.ipynb
├── llama2/ # Llama-2-7B-Chat微调实验
│ ├── finetuning.py
│ ├── requirements.txt
│ ├── configs/
│ ├── safety_evaluation/
│ └── utility_evaluation/
└── README.md
GPT-3.5的微调直接调用OpenAI官方API,核心超参数仅有epochs数(1~4)。研究者提供了详细的Jupyter Notebook,每个Notebook对应一个风险等级的攻击实验,包含微调数据集的构造方法、OpenAI微调API调用代码、安全性评估(使用GPT-4作为评判模型)以及通用能力评估(在MT-Bench上)。
关键API调用示例(来自tier1-harmful-examples-demonstration.ipynb):
import openai
# 微调GPT-3.5 Turbo
openai.api_key = "your-api-key"
fine_tune_response = openai.FineTuningJob.create(
training_file="training_file_id",
model="gpt-3.5-turbo",
hyperparameters={"n_epochs": 3}
)
Llama-2的微调在本地GPU上进行,基于Meta的llama-recipes框架,配合PEFT(参数高效微调)和HuggingFace Transformers。核心依赖包括PyTorch 2.0.1 CUDA版、accelerate(分布式训练加速)、transformers>=4.31.0、peft(LoRA/QLoRA等参数高效微调方法)以及bitsandbytes==0.39.1(量化支持)。
# llama2/finetuning.py 核心流程
from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b-chat")
lora_config = LoraConfig(r=8, lora_alpha=16, target_modules=["q_proj", "v_proj"])
model = get_peft_model(model, lora_config)
# ... 训练循环
安全性评估使用GPT-4作为自动评判器,在HEx-PHI基准(含11个有害类别)上对微调后的模型进行评分。评判标准是对每条有害指令的模型回复,给出1~5的伤害性评分(5为最高),并统计"5分"回复的比例作为"伤害率"。
研究者将此发现负责任地披露给了OpenAI,在论文发表前与其进行了沟通。OpenAI已根据此研究改进了微调API的安全性防护。但这也意味着复现时某些防护可能已生效。
这项研究深刻揭示了LLM微调管道中的安全盲区,推动了AI安全社区对以下问题的关注:微调API的安全审核机制、微调数据的自动化安全检测、模型权重的访问控制,以及对抗样本的防御策略。
| 组件 | 要求 |
|---|---|
| Python | 3.8+ |
| GPU | NVIDIA GPU,16GB+显存(Llama2实验) |
| 存储 | 50GB+(模型权重+数据集) |
| API | OpenAI API Key(GPT-3.5实验) |
| 模型权重 | Llama-2-7B-Chat(需自行从HuggingFace申请) |
# 1. 克隆仓库
git clone https://github.com/LLM-Tuning-Safety/LLMs-Finetuning-Safety
cd LLMs-Finetuning-Safety/llama2
# 2. 安装依赖
pip install -r requirements.txt
# 3. 下载Llama2权重
mkdir ckpts && cd ckpts
git clone https://huggingface.co/TheBloke/Llama-2-7b-chat-fp16
# 4. 配置API密钥(用于GPT-4评判)
export OPENAI_API_KEY="your-key"
# 5. 运行实验Notebook
jupyter notebook tier1-harmful-examples-demonstration.ipynb
LLMs-Finetuning-Safety 是一个极具科研价值和现实意义的项目。它不仅系统性地揭示了LLM微调中的安全风险,更通过开源代码和Notebook让任何人都能复现这些发现。对于AI安全研究者来说,这是一个必读的项目;对于应用开发者来说,这是一个深刻的警示——在享受微调带来便利的同时,必须高度重视数据来源的安全性和超参数的合理选择。
学术引用: Qi, Zeng, Xie, Chen, Jia, Mittal & Henderson. "Fine-tuning Aligned Language Models Compromises Safety, Even When Users Do Not Intend To!" ICLR 2024.