SuperAPI AI 工具集

effective_llm_alignment

Effective LLM Alignment Toolkit 是一个面向大语言模型训练与对齐的开源工具包,由 VikhrModels 在 GitHub 上维护。它提供高度可定制、简洁且高效的配置驱动工作流,用户通过 YAML 文件即可定义基于 Hugging Face TrainingArguments 及各类方法专属参数。工具包底层基于 PyTorch、Transformers 和 TRL,并借助 Accelerate、FSDP、DeepSpeed(Zero 2/3)实现分布式训练,使用 vLLM、Flash Attention、SDPA、Liger Kernel 进行加速,采用 Poetry 管理构建与安装,支持 wandb 或 clearml 记录结果。它覆盖 SFT、DPO、ORPO、CPO、SimPO、SMPO、GPO 等多种对齐方法,以及蒸馏、梯度式提示训练、奖励建模、分类、拒绝采样等能力,还提供 FAISS Map-Reduce 去重和批量生成等辅助工具,适合需要灵活搭建 LLM 对齐训练流程的研究与开发人员。

访问官网

工具介绍

用途

Effective LLM Alignment Toolkit 是一个用于训练和对齐大语言模型的工具包,目标是为 LLM 对齐提供高度可定制、简洁、易用且高效的解决方案。用户只需定义 YAML 配置,纳入 Hugging Face TrainingArguments 参数以及各方法专属参数,即可启动训练。

主要能力与支持方法

工具包支持多种训练与对齐方法:

  • SFT:可禁用不需要的消息角色上的损失。
  • DPO 与 ORPO:支持全部 TRL 选项(如 IPO、SLic-HF、RPO 等)。
  • CPO 与 SimPO:支持全部 TRL 选项。
  • SMPO:自研的稳定对齐方法。
  • GPO:自研的离线版 GRPO 实现。
  • 蒸馏:自带脚本,支持多种蒸馏损失。
  • 基于梯度的提示训练:通过 Gumbel-Softmax 技巧,使用分词器中的真实 token 训练提示。
  • 奖励建模与分类:Bradley-Terry 奖励训练(支持 margins 与 rewards centring);使用 vLLM 和 RM 进行异步偏好数据集生成的拒绝采样;使用 RM 对数据集评分以比较模型;支持多分类/多标签/二分类。

此外,工具包支持混合任意数量的数据集进行训练(需副本列名一致),所有数据集遵循 JSON lines 格式并符合 Hugging Face 标准(消息格式为 [{'role': ..., 'content': ...}])。它还提供 prompts basket(vi-basket)格式以生成带追问和系统提示的对话,支持基于 OpenAI 客户端的异步批量生成,并提供基于 FAISS 的 Map-Reduce 去重工具,可并行处理超大数据集的稠密嵌入去重。工具包支持无需 LoRA 冻结特定模型模块(见 common args 中的 unfreeze_layers_patterns)。

技术基础

  • 核心:PyTorch、Transformers、TRL
  • 分布式训练:Accelerate、FSDP、DeepSpeed(Zero 2/3)
  • 加速:vLLM、Flash Attention、SDPA、Liger Kernel(用于 SFT 中融合 CrossEntropy)
  • 构建与安装:Poetry
  • 结果记录:可选 wandb 或 clearml

SMPO 与 GPO 说明

SMPO(Simple Margin Preference Optimization)是自研对齐方法,灵感来自 IPO、SimPO、C-RLFT 等方法,并引入自身损失函数来分离 chosen 与 rejected 对。其核心思路是平滑达到目标 margin 水平,同时通过对 chosen 和 rejected 添加平衡 SFT 损失来避免强制模型重训;还提供独立的 margin 调度器(配置中 use_margin_schedule),以提升训练早期稳定性并防止奖励被 hack。

GPO 是自研的离线 GRPO 版本,训练期间不使用 vLLM。它类似 KTO 不要求成对比较,但采用 GRPO 的公式,奖励可为任意浮点数,每个提示的补全数量(组大小)不受限制。所需数据集包含列 [prompt, completions, rewards],其中 prompt 为 List[Dict](OpenAI 格式),completions 为大小为 G 的 List[List[Dict]],rewards 为预计算奖励的 List[float]。

使用方式

在项目文件夹内运行以下命令: 安装 Poetry:pip install poetry 安装项目依赖:poetry install,验证:poetry show (可选)设置环境变量 HF_HOME:export HF_HOME=/mnt/hf/ (可选)登录 Hugging Face CLI:poetry run huggingface-cli login (可选)登录 Weights & Biases:poetry run wandb login 检查 accelerate/ 文件夹中的配置设置(GPU 数量等)。 确保已安装必要的 Linux 开发库,包括 GCC 和 G++ 8 或更高版本。 确保 CUDA 版本为 11.8 或更高(推荐 12.1),并确认所有 GPU 被检测到。 安装第一步后,确认 Poetry 版本 1.8+,建议使用 Python 3.10.16。 第二步安装后,确认 poetry run ds_report 返回有意义文本,并验证 Torch 版本及 NVIDIA 包。 若训练中遇到 DeepSpeed 与 fused_adam 相关错误,需从环境中移除 DeepSpeed 并重新安装。

运行脚本示例:用户需选择 accelerate 配置 + 训练配置 + 脚本本身。例如使用 YAML 配置启动 SFT 训练。官方还提供 YAML 配置示例,如训练 SFT Llama 3.1,使用 Liger kernel、仅助手回答、修改聊天模板、LoRA、在评估时生成示例。

适用场景

该工具包适用于需要训练和对齐大语言模型的研究人员与开发者,特别是希望以配置驱动方式灵活组合多种对齐方法、分布式训练和加速技术,或需要自研对齐方法(SMPO、GPO)及提示优化、奖励建模、数据去重等完整流程的场景。

限制

官方文本未提供具体性能指标、支持的模型列表、许可证信息、路线图或价格信息;部分功能和配置细节需参考仓库代码。使用前需满足 Linux 开发环境、CUDA 11.8+、Python 3.10.16 等前置条件。