이 저장소는 자동 회귀 변환기(GPU 전용)에서 ROME(Rank-One Model Editing) 구현을 제공합니다. 현재 OpenAI의 GPT-2 XL(1.5B)과 EleutherAI의 GPT-J(6B)를 지원합니다. EleutherAI의 20B GPT 유사 모델 출시가 곧 예상됩니다. 우리는 그것을 최대한 빨리 지원하기를 바랍니다.
문제가 발견되면 언제든지 이슈를 열어주세요. 우리는 이 저장소를 적극적으로 개발하고 있으며 티켓을 면밀히 모니터링할 것입니다.
Python, CUDA 및 PyTorch 관련 종속성을 관리하려면 conda
권장하고, 그 밖의 모든 것에는 pip
권장합니다. 시작하려면 간단히 conda
설치하고 다음을 실행하세요.
./scripts/setup_conda.sh
notebooks/causal_trace.ipynb
모든 명령문 처리에 추적을 적용하도록 수정될 수 있는 인과 추적을 보여줍니다.
notebooks/rome.ipynb
ROME을 보여줍니다. API는 간단합니다. 다음 형식의 요청된 재작성을 지정하기만 하면 됩니다.
request = {
"prompt" : "{} plays the sport of" ,
"subject" : "LeBron James" ,
"target_new" : {
"str" : "football"
}
}
몇 가지 유사한 예가 노트북에 포함되어 있습니다.
자세한 내용은 곧 제공됩니다!
사용 가능한 기준선에 대한 설명은 baselines/
참조하세요.
experiments/evaluate.py
사용하면 baselines/
의 모든 방법을 평가할 수 있습니다. 시작하려면(예: GPT-2 XL에서 ROME 사용) 다음을 실행하세요.
python3 -m experiments.evaluate
--alg_name=ROME
--model_name=gpt2-xl
--hparams_fname=gpt2-xl.json
각 실행의 결과는 results/<method_name>/run_<run_id>
에 특정 형식으로 저장됩니다.
results/
| __ ROME/
| __ run_ < run_id > /
| __ params.json
| __ case_0.json
| __ case_1.json
| __ ...
| __ case_10000.json
결과를 요약하려면 experiments/summarize.py
사용하면 됩니다.
python3 -m experiments.summarize --dir_name=ROME --runs=run_ < run_id >
python3 -m experiments.evaluate -h
또는 python3 -m experiments.summarize -h
실행하면 명령줄 플래그에 대한 세부정보가 제공됩니다.
새로운 방법 X
있고 이를 CounterFact에서 벤치마킹하고 싶다고 가정해 보겠습니다. X
러너와 통합하려면:
HyperParams
XHyperParams
로 서브클래스화하고 모든 하이퍼파라미터 필드를 지정합니다. 구현 예는 ROMEHyperParameters
참조하세요.hparams/X/gpt2-xl.json
에 하이퍼파라미터 파일을 생성하고 일부 기본값을 지정합니다. 예제는 hparams/ROME/gpt2-xl.json
참조하세요.{weight_name: original_weight_value}
)을 반환하는 apply_X_to_model
함수를 정의합니다. 예를 보려면 rome/rome_main.py
참조하세요.experiments/evaluate.py
의 ALG_DICT
에 "X": (XHyperParams, apply_X_to_model)
행을 삽입하여 X
추가합니다.마지막으로 기본 스크립트를 실행합니다.
python3 -m experiments.evaluate
--alg_name=X
--model_name=gpt2-xl
--hparams_fname=gpt2-xl.json
python3 -m experiments.summarize --dir_name=X --runs=run_ < run_id >
현재는 PyTorch 백엔드를 사용하여 자동 회귀 HuggingFace 모델을 편집하는 메서드만 지원합니다. 우리는 곧 출시될 일련의 범용 메서드(예: TensorFlow에서 HuggingFace 없이 사용 가능)를 개발 중입니다.
@article { meng2022locating ,
title = { Locating and Editing Factual Associations in {GPT} } ,
author = { Kevin Meng and David Bau and Alex Andonian and Yonatan Belinkov } ,
journal = { Advances in Neural Information Processing Systems } ,
volume = { 35 } ,
year = { 2022 }
}