locuslab/open-unlearning

[NeurIPS 2025] The one-stop repository for LLM unlearning

📚 OpenUnlearning이란?

OpenUnlearning은 LLM 언러닝 벤치마크, 방법, 데이터셋, 평가 지표를 단일의 확장 가능한 코드베이스로 통합하는 오픈소스 Python 프레임워크입니다. 연구자와 엔지니어는 대규모 언어 모델(LLM)에서 "망각" 실험(예: 모델에서 특정 지식 제거)을 실행하고 공통 도구 세트로 다양한 접근 방식을 비교할 수 있습니다.


🎯 핵심 아이디어

언러닝 연구는 단편적이었습니다. 각 논문은 종종 자체 코드, 데이터, 평가 스크립트를 제공합니다. OpenUnlearning은 이러한 요소를 통합하여 다음을 가능하게 합니다.

  1. 벤치마크 선택 – TOFU, MUSE, WMDP, DUET.
  2. 모델 제품군 선택 – Llama‑3.x, Llama‑2, Phi‑3.5, Qwen2.5, Gemma, Zephyr 등.
  3. 언러닝 방법 선택 – GradAscent, GradDiff, NPO, SimNPO, DPO, RMU, UNDIAL, AltPO, SatImp, WGA, CE‑U, PDU.
  4. 평가 지표 스위트 실행 – 축어적 확률/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 구성, 실험 관리, 평가 세부 사항에 대한 심층 가이드가 포함되어 있습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트