
OLMo 2에 대한 멤버십 추론 공격의 통제된 연구를 위한 재현 코드로, 문서 삽입, 중간 학습, 사후 학습, 점수 산정 및 분석을 다룹니다.
이 저장소에는 다음 논문의 코드가 포함되어 있습니다
From Training Exposure to Membership Evidence: A Controlled Study of OLMo 2
Ali Banaei, Muhammad Shahab Shahzad, Gerald Q. Maguire Jr., Marco Chiesa, Dejan Kostić
KTH Royal Institute of Technology. arXiv preprint (게재 예정).
우리는 OLMo 2 1B의 공식 500억 토큰 중간 학습(mid-training) 단계를 다시 실행했으며, 이때 일치하는 쌍(matched pairs)에서 무작위로 선택한 일련의 문서들을 학습 스트림에 삽입했습니다. 동일한 단계에 대한 AI2의 공개 실행이 대조군 역할을 합니다. 두 실행은 문서를 삽입한 위치를 제외하고는 동일한 학습 데이터를 동일한 순서로 읽었습니다. 그런 다음 두 모델 모두 AI2의 사후 학습(post-training) 레시피를 거쳤습니다. 모든 문서는 모든 단계에서 두 모델 모두에 대해 채점되었으므로, 하나의 문서에 대한 학습이 모델을 얼마나 변화시키는지, 그리고 그 변화 중 얼마나 많은 부분을 멤버십 추론 공격이 탐지할 수 있는지 측정할 수 있습니다.
멤버십 추론은 주어진 문서가 모델의 학습 데이터에 포함되었는지를 묻습니다. 이는 저작권과 데이터 출처, 학습 데이터 투명성, 그리고 벤치마크 오염 문제에서 중요합니다. 언어 모델에 대한 멤버십 추론 공격의 대부분의 평가는 사후에 멤버와 비멤버를 수집합니다. 예를 들어 학습 컷오프 이전과 이후에 게시된 문서를 사용하는 식입니다. 그러면 두 그룹은 멤버십뿐만 아니라 주제, 문체, 날짜에서도 차이가 납니다. 공격은 이러한 분포 이동을 탐지함으로써 성공할 수 있습니다. 공격이 실패한다고 해서 학습이 아무 흔적도 남기지 않았다는 것을 보여주지는 않습니다.
이러한 설명들을 분리하기 위해서는 멤버십이 알려져 있고, 모든 문서 속성과 독립적으로 할당되며, 나머지 학습은 변경하지 않는 설정이 필요합니다. 이 논문은 다음과 같이 묻습니다. 실제 문서가 확립된 학습 레시피에 한 번 포함될 때, 모델은 얼마나 변화하며, 그 변화 중 얼마나 많은 부분을 기존 공격이 활용할 수 있는가?
AI2's released stage-1 checkpoint (4T tokens)
|
+--------------------------+---------------------------+
| |
AI2's released seed-42 run our re-run of the same stage:
of the 50B-token stage same start, data and order;
(23,852 updates) 24,081 of 12,212,224 chunks replaced
| by copies of inserted documents
v v
control treated model
| |
v v
SFT -> DPO -> RLVR stage 1 -> RLVR stage 2 (same data, order and seeds for both)
달리 명시되지 않는 한, 아래 수치는 보지 못한 것으로 검증되어 한 번 삽입된 4,832쌍의 문서에 대한 것이며 대조군과 비교해 측정한 것이다. 논문은 신뢰 구간과 추가적인 주의 사항을 제시한다.
이 결과들은 하나의 1B 파라미터 모델, 토큰의 0.135%가 교체된 하나의 중간 학습 단계, 그리고 우리가 평가한 공격 통계에 관한 것이다. 참조 비율은 분석 전에 지정되었으며, 다른 분석들은 나중에 추가된 탐색적 분석이다.
OLMo-Twin/
├── olmo_twin/ small shared package; paths.py resolves the data root
├── collection/ candidate documents and their search against the OLMo 2 training data
├── design/ matched pairs, coin flips, copy positions: the frozen design
├── training/
│ ├── midtrain/ AI2's inputs, the training stream with the inserted documents, the launcher
│ ├── checks/ checks of the finished run (data order, inserted copies, configuration)
│ └── posttrain/ SFT, DPO and RLVR with AI2's open-instruct, for both models
├── scoring/ per-token log-probabilities under every model and checkpoint
├── analysis/ membership statistics, attacks, trajectories, post-training analysis
├── figures/ the paper's tables, numbers and figures
├── env/ software environments (requirements files, Dockerfiles)
└── docs/ reproduction guide and data documentation
각 디렉터리에는 해당 단계를 자세히 설명하는 README가 있습니다. docs/REPRODUCING.md는 각 단계의 입력과 출력과 함께 단계들을 순서대로 정리합니다. docs/data.md는 데이터 레이아웃, 계획된 데이터 공개 및 라이선스를 설명합니다. docs/paper_outputs.md는 논문의 각 그림과 표를 이를 생성하는 명령에 매핑합니다.
분석, 그림 및 검사는 CPU에서 실행됩니다. env/analysis/requirements.txt에
고정된 버전은 Python 3.12 이상이 필요합니다.
git clone https://github.com/ali-bana/OLMo-Twin.git
cd OLMo-Twin
python3 -m venv .venv && . .venv/bin/activate
pip install -r env/analysis/requirements.txt
pip install -e .
저장소를 체크아웃으로 사용하세요. 아무것도 설치하지 않고 스크립트를 실행하거나, 패키지를 편집 가능 모드(pip install -e .)로 설치할 수 있습니다. 일반적인 pip install .은 지원되지 않는데, 패키지가 자체 위치에서 저장소 루트와 그에 따른 기본 데이터 루트를 도출하기 때문입니다. 문서 수집, 학습 실행, 채점은 다른 환경을 사용합니다. env/README.md에서 GPU 이미지용 Dockerfile을 포함하여 이에 대해 설명합니다.
어떤 경로도 하드코딩되어 있지 않습니다. 모든 스크립트는 다음 순서로 결정되는 하나의 데이터 루트 아래에서 입력과 출력을 찾습니다:
--out);OLMO_TWIN_DATA;data/ (git에서 무시됨; 심볼릭 링크일 수 있음).export OLMO_TWIN_DATA=/path/to/olmo-twin-data
python -m olmo_twin.paths # prints the resolved layout and which directories exist