locuslab/open-unlearning
[NeurIPS 2025] The one-stop repository for LLM unlearning
📚 什么是 OpenUnlearning?
OpenUnlearning 是一个开源 Python 框架,将 LLM 遗忘 的基准、方法、数据集和评估指标汇集到一个易于扩展的代码库中。它让研究人员和工程师能够在大型语言模型(LLM)上运行“遗忘”实验(例如,从模型中移除特定知识),并使用一套通用工具比较多种方法。
🎯 核心思想
遗忘研究一直较为分散:每篇论文通常自带代码、数据和评估脚本。OpenUnlearning 统一了这些部分,使您可以:
- 选择基准 – TOFU、MUSE、WMDP、DUET。
- 选择模型系列 – Llama‑3.x、Llama‑2、Phi‑3.5、Qwen2.5、Gemma、Zephyr 等。
- 选择遗忘方法 – GradAscent、GradDiff、NPO、SimNPO、DPO、RMU、UNDIAL、AltPO、SatImp、WGA、CE‑U、PDU。
- 运行一系列评估指标 – 逐字概率/ROUGE、知识问答 ROUGE、模型效用、遗忘质量、真实比率、提取强度、精确记忆、六种成员推断攻击,以及完整的
lm‑evaluation‑harness集(MMLU、GSM8K 等)。
所有这些组件都可通过 Hydra 配置,使得添加新方法、数据集或指标并立即与现有基线排行榜进行比较变得简单。
🛠️ 主要特性(如 README 所述)
| 类别 | 提供内容 |
|---|---|
| 基准 | TOFU、MUSE、WMDP、DUET – 每个都有多个数据划分和保留/遗忘集。 |
| 遗忘方法 | 12 种以上算法(基于梯度、表示工程、基于策略等)。 |
| 评估指标 | 10 种以上指标,涵盖记忆、效用和隐私攻击;与 lm‑evaluation‑harness 集成。 |
| 数据集 | MUSE‑News(BBC)、MUSE‑Books(哈利·波特)、TOFU 划分、WMDP‑Bio/Cyber、DUET Wikidata 事实。 |
| 模型系列 | Llama‑3.2/3.1/2、Qwen2.5、Gemma、Phi‑3.5/1.5、Zephyr,以及通过 Hugging Face 支持的其他模型。 |
| 可扩展性 | 基于 Hydra 的配置系统;添加新方法、基准或指标的文档指南。 |
| 可复现性 | 基线运行脚本、社区排行榜,以及包含完整环境的 Docker 镜像。 |
| 资源 | 在 Hugging Face 上托管的预训练“目标”和“保留”模型;arXiv 上的技术报告(2506.12618)。 |
🚀 快速开始(来自 README)
# 1️⃣ 创建环境
conda create -n unlearning python=3.11 && conda activate unlearning
# 2️⃣ 安装包(包括 lm‑eval harness 额外功能)
pip install ".[lm-eval]"
# 安装 flash‑attention(可选,但可加速训练)
pip install --no-build-isolation flash-attn==2.8.3
# 或使用 README 中显示的预构建 wheel 链接
# 3️⃣ 拉取评估日志(用于与保留模型比较的指标)
python setup_data.py --eval
# 4️⃣ 运行遗忘实验(示例:在 TOFU forget10 上使用 GradAscent)
python src/train.py \
--config-name=unlearn.yaml \
experiment=unlearn/tofu/default \
forget_split=forget10 retain_split=retain90 \
trainer=GradAscent task_name=SAMPLE_UNLEARN
# 5️⃣ 评估结果模型
model=Llama-3.2-1B-Instruct
python src/eval.py \
--config-name=eval.yaml \
experiment=eval/tofu/default \
model=${model} \
model.model_args.pretrained_model_name_or_path=open-unlearning/tofu_${model}_full \
retain_logs_path=saves/eval/tofu_${model}_retain90/TOFU_EVAL.json \
task_name=SAMPLE_EVAL
还提供了 Docker 镜像(filyp/open-unlearning)用于一键设置。
📊 典型使用场景
- 研究 – 在多个基准上将新遗忘算法与 12 种以上基线进行比较。
- 模型审计 – 衡量从已部署的 LLM 中移除私有或版权信息的程度。
- 教学 – 使用现成的脚本和排行榜在课堂上演示遗忘概念。
- 产品开发 – 将框架集成到需要遵守数据删除请求的流程中。
🤝 贡献与社区
该仓库鼓励贡献:
- 通过文档化的
contributing.md指南添加新的遗忘方法、基准、数据集或指标。 - 向社区排行榜(
community/leaderboard.md)提交结果。 - 通过 GitHub 问题跟踪器报告问题或提问。
📜 许可证
OpenUnlearning 在 MIT 许可证 下发布。
📚 进一步阅读
- 技术报告(arXiv 2506.12618)– 详细设计和实验结果。
- 原始 TOFU 和 MUSE 基准仓库的链接,供背景参考。
docs/文件夹包含关于 Hydra 配置、实验管理和评估细节的更深入指南。
相关
- 项目
- 项目
- 项目
- 项目
- 项目