用途
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 等前置条件。