项目介绍:Rank-One Model Editing (ROME)
Rank-One Model Editing (ROME) 是一个用于自动回归转换器的特别项目,专注于修改和优化特定模型的性能。此项目的主要目标是为 OpenAI 的 GPT-2 XL(规模1.5亿参数)和 EleutherAI 的 GPT-J(规模6B参数)提供支持,并计划尽快适配即将推出的 EleutherAI 20B模型。项目团队欢迎用户提交问题和建议,并承诺积极进行问题的处理和改进。
项目安装
该项目推荐使用 conda
来管理 Python、CUDA 和 PyTorch 的相关依赖。对于其他部分的依赖,可以使用 pip
,启动安装只需简单运行以下脚本:
./scripts/setup_conda.sh
因果追踪
因果追踪是 ROME 项目中的一个重要工具,它可以用来分析模型处理语句的过程。用户可以在项目提供的 notebooks/causal_trace.ipynb
笔记本中找到相关演示。
Rank-One Model Editing (ROME)
ROME 提供了一种简单的交互式操作方法,用户可以轻松指定“请求重写”。例如:
request = {
"prompt": "{} plays the sport of",
"subject": "LeBron James",
"target_new": {
"str": "football"
}
}
该项目的笔记本中提供了更多类似的示例,供用户参考和学习。
CounterFact
该部分的详细信息将在不久后发布,敬请期待。
模型评估
ROME 提供了一个完整的评估套件,让用户能够运行不同方法的评估。以 ROME 在 GPT-2 XL 模型上的应用为例,用户可以通过以下命令进行评估:
python3 -m experiments.evaluate \
--alg_name=ROME \
--model_name=gpt2-xl \
--hparams_fname=gpt2-xl.json
每次运行的结果都会存储在特定格式的目录中,以便于后续分析和总结。
新编辑方法的整合
如果用户有新的编辑方法(称为方法 X
),并希望在 CounterFact 环境下进行基准测试,用户可以按照以下步骤整合新方法:
- 将
HyperParams
进行子类化为XHyperParams
,指定所有超参数字段。 - 在
hparams/X/gpt2-xl.json
路径下创建一个超参数文件,并设定默认值。 - 定义一个名为
apply_X_to_model
的函数,该函数需要返回重写模型及最初的权重值。 - 将
X
添加到ALG_DICT
中,在experiments/evaluate.py
中插入相关配置。
然后,用户可以运行以下主要脚本以进行评估和总结:
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>
注意事项
目前,ROME 仅支持使用 PyTorch 后端编辑自回归 HuggingFace 模型。项目团队正在开发一套通用方法,以便于在其他框架(如 TensorFlow)中使用,并会在未来进行发布。