Project Icon

SPPO

自我对弈优化提升语言模型对齐效果

SPPO采用自我对弈框架和新的学习目标,有效提升大规模语言模型性能。通过理论推导和多数据集实证验证,SPPO无需外部信号即可超越GPT-4等模型。该项目源代码和多个优化模型如Mistral-7B、Llama-3-8B、Gemma-2-9B均已开源,详情可参考相关论文。

SPPO: 自对弈偏好优化用于语言模型对齐

Mistral-7B-Instruct Llama-3-8B-Instruct AlpacaEval 2.0 Open LLM MT-Bench

本代码库包含论文 自对弈偏好优化用于语言模型对齐 的官方代码和发布模型。

作者: Yue Wu*, Zhiqing Sun*, Huizhuo Yuan*, Kaixuan JiYiming YangQuanquan Gu

[网页] [Huggingface] [论文]

🔔 新闻

内容目录

关于 SPPO

我们提出了一种新的自对弈框架 SPPO 用于语言模型对齐,并从自对弈框架中导出了一个新的学习目标(称为 SPPO 损失)来高效微调大型语言模型。


AlpacaEval 2.0 排行榜的正常和长度控制(LC)赢率百分比(%)。Mistral-7B-SPPO 能超越更大的模型,而 Mistral-7B-SPPO(best-of-16)能超越专有模型如 GPT-4(6/13)。Llama-3-8B-SPPO 表现更为出色。

SPPO 可以显著提升 LLM 的性能,而无需诸如来自 GPT-4 的响应或偏好等强外部信号。它可以超越使用直接偏好优化(DPO)等方法训练的模型。SPPO 在理论上有坚实的基础,确保 LLM 能在一般的、可能是非传递偏好下收敛到冯·诺依曼胜者(即纳什均衡),并通过多个数据集的大量评估进行实证验证。

更多详情,请查看我们的论文 这里

基础模型和发布模型

模型AlpacaEval2.0 LC 胜率AlpacaEval2.0 胜率
🤗Mistral-7B-Instruct-v0.217.1114.72
🤗Mistral-7B-SPPO Iter124.7923.51
🤗Mistral-7B-SPPO Iter226.8927.62
🤗Mistral-7B-SPPO Iter328.5331.02
🤗Llama-3-8B-Instruct22.9222.57
🤗Llama-3-8B-SPPO Iter131.7331.74
🤗Llama-3-8B-SPPO Iter235.1535.98
🤗Llama-3-8B-SPPO Iter338.7739.85
🤗Gemma-2-9B-It45.0835.62
🤗Gemma-2-9B-SPPO Iter148.7040.76
🤗Gemma-2-9B-SPPO Iter250.9344.64
🤗Gemma-2-9B-SPPO Iter353.2747.74

环境配置

我们的训练代码基于alignment-handbook代码库。我们利用vllm进行生成,并使用pairRM进行排名。按照以下步骤设置您的环境:

  1. 创建虚拟环境:

    conda create -n sppo python=3.10
    conda activate sppo
    
  2. 安装vllm生成模块:

    pip install vllm
    
  3. 安装PairRM:

    git clone https://github.com/yuchenlin/LLM-Blender.git
    cd LLM-Blender
    pip install -e .
    
  4. 下载并安装训练依赖:

    git clone https://github.com/uclaml/SPPO.git
    cd SPPO
    pip install -e .
    

训练脚本

根据您选择的基础模型执行训练脚本:

  • 对于 Mistral-7B-Instruct-v0.2:

    bash run_sppo_mistral.sh
    
  • 对于 Llama-3-8B-Instruct:

    bash run_sppo_llama-3.sh
    

这些脚本管理训练迭代、生成和PairRM排名过程。请注意某些脚本可能会尝试将数据集推送到Hugging Face Hub的UCLA-AGI组织下。确保您有写入权限,或相应地修改组织名称,或如有必要注释掉任何push_to_hub命令。各组件的详细脚本如下:

脚本细分:

  1. 生成:
    python scripts/generate.py --model $MODEL --maxlen 2048 --output_dir $OUTPUT_DIR --prompts $PROMPTS
    

主要参数:

  • model: 指定用于生成的模型。在第一次迭代中,模型应该是mistralai/Mistral-7B-Instruct-v0.2meta-llama/Meta-Llama-3-8B-Instruct
  • maxlen: 设置生成的最大令牌数。
  • pairs: 确定每个提示生成的样本数量,默认设置为5。请注意,更改此数量不受整体管道支持。
  • output_dir: 指定保存中间结果的目录路径。
  • prompts: 定义用于生成的一组提示集。
  • frac_len: 通过将提示划分为不同的部分,使vllm在多个GPU上运行。frac_len定义每个部分中的提示数量。使用示例参见generate.sh
  • data_frac: 与frac_len结合使用用于多GPU设置,data_frac表示当前GPU正在处理的数据部分。详细参见generate.sh
  1. 排名:
    python scripts/rank.py --output_dir $OUTPUT_DIR --prompts $PROMPTS
    

主要参数:

  • output_dir: 指定保存中间结果的目录路径。请注意,默认脚本尝试将数据集推送到 UCLA-AGI 组织的 Hugging Face 上。如果需要,您可能需要将其调整为您的组织,获得 UCLA-AGI 的写权限,或禁用 push_to_hub 命令。
  • pairs: 设置每个提示生成的样本数量,默认值为 5。请注意,流水线中不支持其他数量。
  • frac_len: 用于通过将提示分成不同的部分在多个 GPU 上启用 PairRM。frac_len 决定每个部分中的提示数量。使用示例请参见 generate.sh
  • data_frac: 类似于 frac_len,此选项用于在多个 GPU 上运行 PairRM。它指定当前 GPU 处理的数据部分。示例请参见 generate.sh
  • prompts: 定义用于生成的提示集。
  • gpu: 指定用于排序的 GPU 索引,应与 data_frac 参数匹配。
  1. 训练:
    bash scripts/pipeline.sh --model $MODEL --iter $ITER --dataset $DATASET --output_dir $OUTPUT_DIR --num 1
    

主要参数:

  • model: 基础训练模型。
  • dataset: 用于训练的数据集。
  • output_dir: 输出模型的名称。
  • num: 训练周期的数量。

评估

我们遵循既定的评估指南,并利用以下库:

我们在 models_configs 目录中提供了 AlpacaEval 2 中使用的模型配置。请注意,在我们发布模型后的初始阶段,我们使用略微修改的提示重新训练了模型。重新训练后的胜率与原始结果相当。

故障排除

如有与论文相关的问题,请通过电子邮件联系作者。如果您在使用代码时遇到问题或希望报告漏洞,请随时在我们的 GitHub 仓库中打开一个 issue。

引用

@article{wu2024self,
  title={Self-play preference optimization for language model alignment},
  author={Wu, Yue and Sun, Zhiqing and Yuan, Huizhuo and Ji, Kaixuan and Yang, Yiming and Gu, Quanquan},
  year={2024}
}

致谢

我们感谢 The Alignment Handbook 作者对训练代码的基础贡献。我们还感谢 PairRM 在排序方面的使用以及 vllm 在生成方面的使用。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号