Repositori ini menyediakan implementasi Pengeditan Model Peringkat Satu (ROME) pada transformator regresi otomatis (khusus GPU). Saat ini kami mendukung GPT-2 XL (1,5B) OpenAI dan GPT-J (6B) EleutherAI. Peluncuran model mirip GPT 20B dari EleutherAI diharapkan segera; kami berharap dapat mendukungnya secepatnya.
Jangan ragu untuk membuka terbitan jika Anda menemukan masalah; kami secara aktif mengembangkan repositori ini dan akan memantau tiket dengan cermat.
Kami merekomendasikan conda
untuk mengelola dependensi terkait Python, CUDA, dan PyTorch, dan pip
untuk yang lainnya. Untuk memulai, cukup instal conda
dan jalankan:
./scripts/setup_conda.sh
notebooks/causal_trace.ipynb
mendemonstrasikan Penelusuran Kausal, yang dapat dimodifikasi untuk menerapkan penelusuran pada pemrosesan pernyataan apa pun.
notebooks/rome.ipynb
mendemonstrasikan ROMA. API-nya sederhana; kita hanya perlu menentukan permintaan penulisan ulang dalam bentuk berikut:
request = {
"prompt" : "{} plays the sport of" ,
"subject" : "LeBron James" ,
"target_new" : {
"str" : "football"
}
}
Beberapa contoh serupa disertakan dalam buku catatan.
Detailnya segera hadir!
Lihat baselines/
untuk deskripsi baseline yang tersedia.
experiments/evaluate.py
dapat digunakan untuk mengevaluasi metode apa pun di baselines/
. Untuk memulai (misalnya menggunakan ROME pada GPT-2 XL), jalankan:
python3 -m experiments.evaluate
--alg_name=ROME
--model_name=gpt2-xl
--hparams_fname=gpt2-xl.json
Hasil dari setiap proses disimpan di results/<method_name>/run_<run_id>
dalam format tertentu:
results/
| __ ROME/
| __ run_ < run_id > /
| __ params.json
| __ case_0.json
| __ case_1.json
| __ ...
| __ case_10000.json
Untuk meringkas hasilnya, Anda dapat menggunakan experiments/summarize.py
:
python3 -m experiments.summarize --dir_name=ROME --runs=run_ < run_id >
Menjalankan python3 -m experiments.evaluate -h
atau python3 -m experiments.summarize -h
memberikan detail tentang tanda baris perintah.
Katakanlah Anda memiliki metode X
baru dan ingin melakukan benchmark di CounterFact. Untuk mengintegrasikan X
dengan runner kami:
HyperParams
menjadi XHyperParams
dan tentukan semua bidang hyperparameter. Lihat ROMEHyperParameters
untuk contoh implementasi.hparams/X/gpt2-xl.json
dan tentukan beberapa nilai default. Lihat hparams/ROME/gpt2-xl.json
sebagai contoh.apply_X_to_model
yang menerima beberapa parameter dan mengembalikan (i) model yang ditulis ulang dan (ii) nilai bobot asli untuk parameter yang diedit (dalam format kamus {weight_name: original_weight_value}
). Lihat rome/rome_main.py
sebagai contoh.X
ke ALG_DICT
di experiments/evaluate.py
dengan menyisipkan baris "X": (XHyperParams, apply_X_to_model)
.Terakhir, jalankan skrip utama:
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 >
Saat ini kami hanya mendukung metode yang mengedit model HuggingFace autoregresif menggunakan backend PyTorch. Kami sedang mengerjakan serangkaian metode tujuan umum (dapat digunakan misalnya TensorFlow dan tanpa HuggingFace) yang akan segera dirilis.
@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 }
}