พื้นที่เก็บข้อมูลนี้จัดเตรียมการใช้งาน Rank-One Model Editing (ROME) บนหม้อแปลงแบบถดถอยอัตโนมัติ (GPU เท่านั้น) ขณะนี้เรารองรับ GPT-2 XL (1.5B) ของ OpenAI และ GPT-J (6B) ของ EleutherAI คาดว่าจะมีการเปิดตัวโมเดลคล้าย 20B GPT จาก EleutherAI เร็วๆ นี้ เราหวังว่าจะสนับสนุนโดยเร็วที่สุด
อย่าลังเลที่จะเปิดปัญหาหากคุณพบปัญหาใด ๆ เรากำลังพัฒนาพื้นที่เก็บข้อมูลนี้อย่างแข็งขันและจะตรวจสอบตั๋วอย่างใกล้ชิด
เราขอแนะนำ conda
สำหรับการจัดการการพึ่งพาที่เกี่ยวข้องกับ Python, CUDA และ PyTorch และ pip
สำหรับทุกสิ่งทุกอย่าง ในการเริ่มต้น เพียงติดตั้ง conda
และรัน:
./scripts/setup_conda.sh
notebooks/causal_trace.ipynb
สาธิต Causal Tracing ซึ่งสามารถปรับเปลี่ยนเพื่อใช้การติดตามกับการประมวลผลคำสั่งใดๆ
notebooks/rome.ipynb
สาธิต ROME API นั้นเรียบง่าย เพียงระบุ คำขอให้เขียนแบบฟอร์มต่อไปนี้ใหม่ :
request = {
"prompt" : "{} plays the sport of" ,
"subject" : "LeBron James" ,
"target_new" : {
"str" : "football"
}
}
ตัวอย่างที่คล้ายกันหลายตัวอย่างรวมอยู่ในสมุดบันทึก
รายละเอียดจะมาเร็ว ๆ นี้!
ดู baselines/
สำหรับคำอธิบายของเส้นพื้นฐานที่มีอยู่
experiments/evaluate.py
สามารถใช้เพื่อประเมินวิธีการใดๆ ใน baselines/
ในการเริ่มต้น (เช่น การใช้ ROME บน GPT-2 XL) ให้รัน:
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
apply_X_to_model
ซึ่งยอมรับพารามิเตอร์หลายตัวและส่งกลับ (i) โมเดลที่เขียนใหม่และ (ii) ค่าน้ำหนักดั้งเดิมสำหรับพารามิเตอร์ที่ได้รับการแก้ไข (ในรูปแบบพจนานุกรม {weight_name: original_weight_value}
) ดูตัวอย่าง rome/rome_main.py
X
ไปที่ ALG_DICT
ใน experiments/evaluate.py
โดยการแทรกบรรทัด "X": (XHyperParams, apply_X_to_model)
สุดท้ายให้รันสคริปต์หลัก:
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 >
ปัจจุบันเรารองรับเฉพาะวิธีการที่แก้ไขโมเดล HuggingFace แบบ autoregressive โดยใช้แบ็กเอนด์ PyTorch เรากำลังดำเนินการชุดวิธีการสำหรับวัตถุประสงค์ทั่วไป (ใช้งานได้บน เช่น 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 }
}