模型简介
模型特点
模型能力
使用案例
🚀 Llama-3.1-Tulu-3.1-8B
Tülu 3是领先的指令跟随模型家族,提供了一个包含完全开源数据、代码和配方的后训练包,旨在为现代技术提供全面的指导。这是训练完全开源模型这一更大进程中的一步,比如我们的OLMo模型。Tülu 3不仅在聊天方面表现出色,还在各种任务(如数学、GSM8K和IFEval)中达到了先进水平。
3.1版本更新:我们的Tülu模型新版本仅在最终的强化学习(RL)训练阶段有所改进。我们从近端策略优化(PPO)切换到广义近端策略优化(GRPO,无奖励模型),并进一步调整了超参数,与原始的Tülu 3 8B模型相比,在各方面都实现了显著的性能提升,如下方对比所示:
🚀 快速开始
使用HuggingFace加载模型
若要使用HuggingFace加载模型,请使用以下代码片段:
from transformers import AutoModelForCausalLM
tulu_model = AutoModelForCausalLM.from_pretrained("allenai/Llama-3.1-Tulu-3.1-8B")
使用VLLM服务模型
作为基于Llama的基础模型,该模型可以轻松通过以下命令进行服务:
vllm serve allenai/Llama-3.1-Tulu-3.1-8B
请注意,鉴于Llama的长聊天模板,你可能需要使用--max_model_len=8192
。
聊天模板
我们模型的聊天模板格式如下:
<|user|>
How are you doing?
<|assistant|>
I'm just a computer program, so I don't have feelings, but I'm functioning as expected. How can I assist you today?<|endoftext|>
或者展开换行符后的形式:
<|user|>
How are you doing?
<|assistant|>
I'm just a computer program, so I don't have feelings, but I'm functioning as expected. How can I assist you today?<|endoftext|>
该模板也嵌入在分词器中,可用于tokenizer.apply_chat_template
。
系统提示
在Allen Institute for AI的演示中,我们默认使用以下系统提示:
You are Tulu 3, a helpful and harmless AI Assistant built by the Allen Institute for AI.
该模型在训练时并未考虑特定的系统提示。
✨ 主要特性
- 多任务表现出色:Tülu 3不仅适用于聊天场景,还在数学、GSM8K和IFEval等多种任务中展现出先进性能。
- 版本更新优化:3.1版本在最终的强化学习训练阶段进行了改进,从PPO切换到GRPO并调整超参数,实现了全面的性能提升。
📚 详细文档
模型描述
属性 | 详情 |
---|---|
模型类型 | 基于公开可用、合成和人工创建的数据集混合训练的模型 |
语言(NLP) | 主要为英语 |
许可证 | Llama 3.1社区许可协议 |
微调基础模型 | allenai/Llama-3.1-Tulu-3-8B-DPO |
模型来源
- 训练仓库:https://github.com/allenai/open-instruct
- 评估仓库:https://github.com/allenai/olmes
- 论文:https://arxiv.org/abs/2411.15124
- 演示:https://playground.allenai.org/
模型家族
阶段 | Llama 3.1 8B (新) | Llama 3.1 70B |
---|---|---|
基础模型 | meta-llama/Llama-3.1-8B | meta-llama/Llama-3.1-70B |
监督微调(SFT) | allenai/Llama-3.1-Tulu-3-8B-SFT | allenai/Llama-3.1-Tulu-3-70B-SFT |
直接偏好优化(DPO) | allenai/Llama-3.1-Tulu-3-8B-DPO | allenai/Llama-3.1-Tulu-3-70B-DPO |
最终模型(RLVR) | allenai/Llama-3.1-Tulu-3.1-8B | allenai/Llama-3.1-Tulu-3-70B |
奖励模型(RM) | 无(使用GRPO) | allenai/Llama-3.1-Tulu-3-8B-RM |
阶段 | Llama 3.1 405B |
---|---|
基础模型 | meta-llama/llama-3.1-405B |
监督微调(SFT) | allenai/llama-3.1-Tulu-3-405B-SFT |
直接偏好优化(DPO) | allenai/llama-3.1-Tulu-3-405B-DPO |
最终模型(RLVR) | allenai/llama-3.1-Tulu-3-405B |
奖励模型(RM) | (与70B相同) |
偏差、风险和局限性
Tülu3模型的安全训练有限,且不像ChatGPT那样在响应中自动进行循环过滤,因此该模型可能会产生有问题的输出(特别是在被明确要求时)。此外,目前尚不清楚用于训练基础Llama 3.1模型的语料库的规模和组成,但很可能包含了网络数据以及书籍和代码等技术来源。可参考Falcon 180B模型卡片获取相关示例。
性能表现
基准测试(评估) | Tülu 3 SFT 8B | Tülu 3 DPO 8B | Tülu 3 8B | Tülu 3.1 8B (新) | Llama 3.1 8B Instruct | Qwen 2.5 7B Instruct | Magpie 8B | Gemma 2 9B Instruct | Ministral 8B Instruct |
---|---|---|---|---|---|---|---|---|---|
平均得分 | 60.4 | 64.4 | 64.8 | 66.3 | 62.2 | 66.5 | 44.7 | 55.2 | 58.3 |
MMLU (0次射击,思维链) | 65.9 | 68.7 | 68.2 | 69.5 | 71.2 | 76.6 | 62.0 | 74.6 | 68.5 |
PopQA (15次射击) | 29.3 | 29.3 | 29.1 | 30.2 | 20.2 | 18.1 | 22.5 | 28.3 | 20.2 |
TruthfulQA (6次射击) | 46.8 | 56.1 | 55.0 | 59.9 | 55.1 | 63.1 | 57.0 | 61.4 | 55.5 |
BigBenchHard (3次射击,思维链) | 67.9 | 65.8 | 66.0 | 68.9 | 62.8 | 70.2 | 0.9 | 2.5 | 56.2 |
DROP (3次射击) | 61.3 | 62.5 | 62.6 | 63.9 | 61.5 | 54.4 | 49.4 | 58.8 | 56.2 |
MATH (4次射击,灵活思维链) | 31.5 | 42.0 | 43.7 | 47.8 | 42.5 | 69.9 | 5.1 | 29.8 | 40.0 |
GSM8K (8次射击,思维链) | 76.2 | 84.3 | 87.6 | 90.0 | 83.4 | 83.8 | 61.2 | 79.7 | 80.0 |
HumanEval (通过率@10) | 86.2 | 83.9 | 83.9 | 84.8 | 86.3 | 93.1 | 75.4 | 71.7 | 91.0 |
HumanEval+ (通过率@10) | 81.4 | 78.6 | 79.2 | 80.4 | 82.9 | 89.7 | 69.1 | 67.0 | 88.5 |
IFEval (宽松提示) | 72.8 | 81.1 | 82.4 | 83.9 | 80.6 | 74.7 | 38.8 | 69.9 | 56.4 |
AlpacaEval 2 (LC胜率%) | 12.4 | 33.5 | 34.5 | 34.9 | 24.2 | 29.0 | 49.0 | 43.7 | 31.4 |
安全性 (6项任务平均) | 93.1 | 87.2 | 85.5 | 81.2 | 75.2 | 75.0 | 46.4 | 75.5 | 56.2 |
注意:请参考论文的更新版本,以获取最新的、修正后的评估结果,这些结果提高了如Qwen 2.5 Instruct等模型的得分。
基准测试(评估) | Tülu 3 70B SFT | Tülu 3 DPO 70B | Tülu 3 70B | Llama 3.1 70B Instruct | Qwen 2.5 72B Instruct | Hermes 3 Llama 3.1 70B | Nemotron Llama 3.1 70B |
---|---|---|---|---|---|---|---|
平均得分 | 72.6 | 75.9 | 76.0 | 73.4 | 71.5 | 68.3 | 65.5 |
MMLU (0次射击,思维链) | 78.9 | 83.3 | 83.1 | 85.3 | 85.5 | 80.4 | 83.8 |
PopQA (15次射击) | 48.6 | 46.3 | 46.5 | 46.4 | 30.6 | 48.1 | 36.4 |
TruthfulQA (6次射击) | 55.7 | 67.9 | 67.6 | 66.8 | 69.9 | 66.5 | 62.6 |
BigBenchHard (3次射击,思维链) | 82.7 | 81.8 | 82.0 | 73.8 | 67.2 | 82.1 | 0.7 |
DROP (3次射击) | 77.2 | 74.1 | 74.3 | 77.0 | 34.2 | 73.2 | 68.8 |
MATH (4次射击,灵活思维链) | 53.7 | 62.3 | 63.0 | 56.4 | 74.3 | 41.9 | 55.0 |
GSM8K (8次射击,思维链) | 91.1 | 93.5 | 93.5 | 93.7 | 89.5 | 90.0 | 84.7 |
HumanEval (通过率@10) | 92.9 | 92.4 | 92.4 | 93.6 | 94.0 | 89.6 | 94.1 |
HumanEval+ (通过率@10) | 87.3 | 88.4 | 88.0 | 89.5 | 90.8 | 85.9 | 85.5 |
IFEval (宽松提示) | 82.1 | 82.6 | 83.2 | 88.0 | 87.6 | 76.0 | 79.9 |
AlpacaEval 2 (LC胜率%) | 26.3 | 49.6 | 49.8 | 33.4 | 47.7 | 28.4 | 66.1 |
安全性 (6项任务平均) | 94.4 | 89.0 | 88.3 | 76.5 | 87.0 | 57.9 | 69.0 |
基准测试(评估) | Tülu 3 405B SFT | Tülu 3 405B DPO | Tülu 3 405B | Llama 3.1 405B Instruct | Nous Hermes 3 405B | Deepseek V3 | GPT 4o (11 - 24) |
---|---|---|---|---|---|---|---|
无安全性平均得分 | 76.3 | 79.0 | 80.0 | 78.1 | 74.4 | 79.0 | 80.5 |
有安全性平均得分 | 77.5 | 79.6 | 80.7 | 79.0 | 73.5 | 75.9 | 81.6 |
MMLU (5次射击,思维链) | 84.4 | 86.6 | 87.0 | 88.0 | 84.9 | 82.1 | 87.9 |
PopQA (3次射击) | 55.7 | 55.4 | 55.5 | 52.9 | 54.2 | 44.9 | 53.6 |
BigBenchHard (0次射击,思维链) | 88.0 | 88.8 | 88.6 | 87.1 | 87.7 | 89.5 | 83.3 |
MATH (4次射击,灵活思维链) | 63.4 | 59.9 | 67.3 | 66.6 | 58.4 | 72.5 | 68.8 |
GSM8K (8次射击,思维链) | 93.6 | 94.2 | 95.5 | 95.4 | 92.7 | 94.1 | 91.7 |
HumanEval (通过率@10) | 95.7 | 97.2 | 95.9 | 95.9 | 92.3 | 94.6 | 97.0 |
HumanEval+ (通过率@10) | 93.3 | 93.9 | 92.9 | 90.3 | 86.9 | 91.6 | 92.7 |
IFEval (宽松提示) | 82.4 | 85.0 | 86.0 | 88.4 | 81.9 | 88.0 | 84.8 |
AlpacaEval 2 (LC胜率%) | 30.4 | 49.8 | 51.4 | 38.5 | 30.2 | 53.5 | 65.0 |
安全性 (6项任务平均) | 87.7 | 85.5 | 86.7 | 86.8 | 65.8 | 72.2 | 90.9 |
超参数设置
强化学习价值优化(RLVR)的GRPO设置如下:
- 学习率:5 × 10⁻⁷
- 折扣因子(gamma):1.0
- 小批量数(N_mb):2
- PPO风格更新迭代次数(K):1
- 裁剪系数(epsilon):0.2
- 梯度范数阈值:1.0
- 学习率调度:恒定
- 生成温度:1.0
- 每个提示的样本数:16
- 每次训练迭代的唯一提示数:48
- 有效批量大小:48 * 16 = 768
- 最大令牌长度:2,048
- 最大提示令牌长度:2,048
- 无结束符(EOS)响应的惩罚奖励值:0.0
- 响应长度:2,048
- 总回合数:10,000,000(实际检查点在第1474560回合)
- KL惩罚系数(beta):0.01
- 预热比例(omega):0.0
学习曲线
以下是Llama-3.1-Tulu-3.1-8B的训练曲线:
以下是Llama-3.1-Tulu-3.1-8B在各步骤的核心评估分数(注意,我们将步骤1920
作为最终检查点,对应回合1,474,560
):
以下是Llama-3.1-Tulu-3.1-8B在各步骤的其他评估分数(代码评估存在错误,早期分数未显示):
复现命令
# 克隆并检出提交
git clone https://github.com/allenai/open-instruct.git
git checkout 3f37c29ddc97d2c108a7658692d2d2c3708ef182
# 运行我的精确实验启动命令
for learning_rate in 5e-7; do
for beta in 0.01; do
for nspp in 16; do
for m in half-m ; do
for kl_estimator in kl3; do
local_rollout_batch_size=8
# `half-m` 等同于将小批量数设置为2。
if [ $m == "half-m" ]; then
local_mini_batch_size=$(($local_rollout_batch_size * $nspp / 2))
else
local_mini_batch_size=$(($local_rollout_batch_size * $nspp))
fi
exp_name="0204_lr_scan_grpo_math_lr_${learning_rate}_${kl_estimator}_${beta}_${nspp}_${m}_${RANDOM}"
echo $exp_name:
echo --- local_mini_batch_size=$local_mini_batch_size
echo --- num_gradient_updates=$(($local_rollout_batch_size * $nspp / $local_mini_batch_size))
python open_instruct/grpo_vllm_thread_ray_gtrl.py \
--exp_name $exp_name \
--beta $beta \
--local_mini_batch_size $local_mini_batch_size \
--number_samples_per_prompt $nspp \
--output_dir output/$exp_name \
--local_rollout_batch_size $local_rollout_batch_size \
--kl_estimator $kl_estimator \
--learning_rate $learning_rate \
--dataset_mixer_list allenai/RLVR-GSM-MATH-IF-Mixed-Constraints 1.0 \
--dataset_mixer_list_splits train \
--dataset_mixer_eval_list allenai/RLVR-GSM-MATH-IF-Mixed-Constraints 16 \
--dataset_mixer_eval_list_splits train \
--max_token_length 2048 \
--max_prompt_token_length 2048 \
--response_length 2048 \
--model_name_or_path allenai/Llama-3.1-Tulu-3-8B-DPO \
--non_stop_penalty \
--stop_token eos \
--temperature 1.0 \
--ground_truths_key ground_truth \
--chat_template_name tulu \
--sft_messages_key messages \
--total_episodes 10000000 \
--penalty_reward_value 0.0 \
--deepspeed_stage 2 \
--per_device_train_batch_size 2 \
--local_rollout_forward_batch_size 2 \
--actor_num_gpus_per_node 6 \
--num_epochs 1 \
--vllm_tensor_parallel_size 2 \
--lr_scheduler_type constant \
--apply_verifiable_reward true \
--seed 1 \
--num_evals 30 \
--save_freq 40 \
--reward_model_multiplier 0.0 \
--gradient_checkpointing \
--with_tracking
done
done
done
done
done
📄 许可证
所有Llama 3.1 Tülu3模型均根据Meta的Llama 3.1社区许可协议发布。Llama 3.1根据Llama 3.1社区许可证授权,版权所有 © Meta Platforms, Inc. Tülu3旨在用于研究和教育目的。如需更多信息,请参阅我们的负责任使用指南。
这些模型使用了包含第三方模型生成输出的混合数据集进行微调,并受其他附加条款的约束:Gemma使用条款和Qwen许可协议(模型使用Qwen 2.5进行了改进)。
🔖 引用
如果Tülu3或任何相关材料对你的工作有帮助,请引用:
@article{lambert2024tulu3,
title = {Tülu 3: Pushing Frontiers in Open Language Model Post-Training},
author = {
Nathan Lambert and
Jacob Morrison and
Valentina Pyatkin and
Shengyi Huang and
Hamish Ivison and
Faeze Brahman and
Lester James V. Miranda and
Alisa Liu and
Nouha Dziri and
Shane Lyu and
Yuling Gu and
Saumya Malik and
Victoria Graf and
Jena D. Hwang and
Jiangjiang Yang and
Ronan Le Bras and
Oyvind Tafjord and
Chris Wilhelm and
Luca Soldaini and
Noah A. Smith and
Yizhong Wang and
Pradeep Dasigi and
Hannaneh Hajishirzi
},
year = {2024},
email = {tulu@allenai.org}
}



