locuslab/open-unlearning
[NeurIPS 2025] The one-stop repository for LLM unlearning
📚 OpenUnlearning とは?
OpenUnlearning は、LLM アンラーニング のベンチマーク、手法、データセット、評価指標を単一の拡張可能なコードベースにまとめたオープンソースの Python フレームワークです。研究者やエンジニアは、大規模言語モデル(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、知識 QA ROUGE、モデル有用性、忘却品質、真実比率、抽出強度、正確な記憶、6 つのメンバーシップ推論攻撃、さらに完全な
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 設定、実験管理、評価の詳細に関するより深いガイドが含まれています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト