示范胜于说教:通过演示反馈对齐语言模型
本仓库包含论文《示范胜于说教:通过演示反馈对齐语言模型》的源代码,作者为Omar Shaikh、Michelle Lam、Joey Hejna、Yijia Shao、Michael Bernstein和Diyi Yang。如有任何问题,欢迎联系Omar Shaikh!
摘要
语言模型被训练以模仿众多声音的集合,导致其输出与任何特定个体都不完全一致。通过监督微调或RLHF可以引导大型语言模型远离泛泛而谈的输出,但这需要为新的临时任务准备庞大的数据集。我们认为,只需利用少量(<10个)示范作为反馈,就可以将大型语言模型对齐到特定场景。我们的方法"示范迭代任务优化"(DITTO)直接将语言模型输出与用户的示范行为对齐。DITTO借鉴在线模仿学习的理念,通过将用户的示范视为优于大型语言模型及其中间检查点的输出,从而廉价地生成在线比较数据。我们评估了DITTO在新闻文章、电子邮件和博客文章等领域学习精细风格和任务对齐的能力。此外,我们还进行了一项用户研究,征集了参与者(N=16)的各种示范。在我们的基准测试和用户研究中,我们发现DITTO的胜率平均超过少样本提示、监督微调和其他自我对弈方法19个百分点。通过直接使用示范作为反馈,DITTO为大型语言模型的有效定制提供了一种新颖的方法。
使用说明
我们基于alignment-handbook仓库进行开发。以下是设置步骤!
首先,使用Conda等工具创建Python虚拟环境:
conda create -n ditto python=3.10 && conda activate ditto
接下来,安装PyTorch v2.1.2
。我们使用以下命令:
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia
然后,安装alignment handbook的依赖项。
git clone https://github.com/huggingface/alignment-handbook.git
cd ./alignment-handbook/
python -m pip install .
最后,安装本仓库的requirements.txt,以避免包更新导致的错误。
pip install -r requirements.txt
run.sh中提供了一个包含训练和生成的示例脚本(训练Mistral Instruct v0.2 7B)。目前设置为对电子邮件示例进行微调。该脚本有一个参数,用于尝试论文中的不同数据集。请注意,您可能需要根据特定硬件或数据集更改配置文件。
bash run.sh
调试
AttributeError: 'DittoConfig' object has no attribute 'packing'
:在requirements.txt
中将trl回退到旧版本(trl==0.8.6
)。
如何引用本工作?
请随意使用以下BibTeX条目。
BibTeX:
@misc{shaikh2024show,
title={Show, Don't Tell: Aligning Language Models with Demonstrated Feedback},
author={Omar Shaikh and Michelle Lam and Joey Hejna and Yijia Shao and Michael Bernstein and Diyi Yang},
year={2024},
eprint={2406.00888},
archivePrefix={arXiv},
primaryClass={cs.CL}
}