open-instruct
Allen AI开源的全流程指令微调框架,支持SFT/DPO/GRPO三阶段训练
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Allen AI开源的全流程指令微调框架,支持SFT/DPO/GRPO三阶段训练
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象你是一位驯马师,面前是一匹血统优良但尚未经过训练的战马——预训练大模型。它有无穷的潜力,但不知道如何响应骑手的指令。这就是 AllenAI 团队在 2023 年初面对 Llama 模型时的处境。他们打造了一把"驯马鞭"——Open-Instruct,一个开源的指令微调(Instruction Tuning)和后训练(Post-Training)代码库,目标是让通用预训练模型变成听话、聪明、有用的 AI 助手。
Tülu(项目训练的模型命名)是一只杂交骆驼的图腾,代表"将不同来源能力融合"的理念。从最初的 Tülu 1 到 2024 年底的 Tülu 3,这个项目不断刷新开源模型的后训练上限。其中 Tülu 3-70B 在多个基准测试中超越了同规模 Llama 3.1 Instruct 模型。

Tülu 是一只杂交骆驼,寓意"融合不同来源能力"——这是整个 Open-Instruct 项目的精神内核。

Open-Instruct 完整训练流水线:数据准备 → SFT → DPO → GRPO(RL)→ 评估,覆盖后训练全生命周期。
Open-Instruct 不是单一脚本,而是一套完整的多阶段训练流水线,涵盖现代后训练的核心技术:
Supervised Fine-Tuning 是整个流程的起点。模型在高质量的指令-响应对数据集上做有监督学习。Open-Instruct 支持:
Direct Preference Optimization(DPO) 是 RLHF 的轻量化替代方案,不需要单独训练奖励模型,直接优化语言模型使其倾向于选择"好的"响应。Open-Instruct 的 DPO 实现源自 OpenAI 经典 RLHF 代码,并经过多年迭代持续优化。
Group Relative Policy Optimization(GRPO) 是 Tülu 3 的核心创新。通过可验证奖励(Verifiable Rewards)——如数学题的正确答案、代码的编译通过状态——替代传统 RLHF 中的奖励模型,大幅降低训练成本并提高稳定性:

Tülu 3 模型家族:基于 Llama 3.1 和 OLMo 2,覆盖 8B/70B/405B 三种规模,每种规模提供 SFT、DPO、GRPO 三个阶段 checkpoints。
open_instruct/
├── finetune.py # SFT 训练入口(核心脚本)
├── dpo.py # DPO 偏好对齐
├── grpo.py # GRPO 强化学习训练(可断点续训)
├── grpo_fast.py # GRPO 加速版
├── reward_modeling.py # 奖励模型训练
├── data_loader.py # 多格式数据加载(ShareGPT/Alpaca/HF datasets)
├── dataset_processor.py # 数据集预处理与格式转换
├── environments/ # 评估环境(IFEval、TLDR 等)
├── distillkit/ # 知识蒸馏相关模块
└── experimental/ # 实验性功能
主入口 mason.py 是统一命令行工具,通过子命令区分不同训练阶段,借鉴了脚手架工具(Scaffolding)思想,将复杂的分布式训练细节抽象为简单命令。
核心技术栈:
| 基准 | Tülu 3-70B | Llama 3.1 70B Instruct | Qwen 2.5 72B | 差异 |
|---|---|---|---|---|
| 平均分 | 76.0 | 73.4 | 71.5 | +2.6 |
| GSM8K (8-shot CoT) | 87.6 | 83.4 | 83.8 | +4.2 |
| MATH (4-shot CoT) | 43.7 | 42.5 | 14.8 | +1.2 |
| MMLU (0-shot CoT) | 83.1 | 85.3 | 85.5 | -2.2 |
| HumanEval (pass@10) | 83.9 | 86.3 | 93.1 | -2.4 |
Tülu 3-70B 在 GSM8K(数学推理)和 MATH(数学竞赛题)上显著领先,平均分全面超越对比模型,充分体现了 GRPO 可验证奖励训练策略的强大效果。
# QLoRA 微调 8B 模型(单卡可跑,推荐 RTX 3090 或 A100)
python -m open_instruct.finetune \
--model_name_or_path meta-llama/Llama-3.1-8B \
--dataset_file data/my_instruction_data.jsonl \
--per_device_train_batch_size 4 \
--gradient_accumulation_steps 8 \
--lora_rank 16 \
--num_train_epochs 3
对于数学证明、代码生成等有明确答案的任务,GRPO 模块可直接配置验证函数:
# 在训练配置中定义可验证奖励类型
reward_fn = {"type": "exact_match"} # 或 "代码编译通过"
Open-Instruct 的核心价值在于将大模型后训练的过程透明化、可复现化。过去,OpenAI、Anthropic、Google 的后训练技术是黑箱;Tülu 系列证明了开源社区不仅能复现这些技术,还能在此基础上创新(如 GRPO)。2025 年 2 月发布的 OLMo 3 也采用相同训练框架,进一步验证了这套技术栈的成熟度。
三大趋势:
本分析基于 Open-Instruct GitHub 仓库(Apache-2.0 许可证)及 TÜLU 3 论文(arXiv:2411.15124)。