模型概述
模型特點
模型能力
使用案例
🚀 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}
}



