DeepSeek開啟全新的后訓練范式,帶來AI模型技術平權時代,行業紛紛構建自己的高質量高性能的行業RL模型。然而,訓練高性能的大尺寸模型通常需要龐大的計算資源和海量數據,這對研究社區的可復現性和進一步探索提出了挑戰。為了降低研究門檻并促進開源生態的發展,昇騰MindSpeed RL強化學習開源套件支持大尺寸模型的強化學習高效訓練,提供用戶方便易用的復現指導,目前已完成在Qwen25-7B/32B基座模型為例復現R1-Zero的實踐,模型數學能力大大提升。
R1-Zero復現面臨的挑戰
目前,針對大規模集群強化學習RL復現R1-Zero,在效率、易用性和訓練效果上存在諸多挑戰。業界開源RL框架在大尺寸模型RL訓練中有權重更新時延高、硬件利用率低、并行策略轉換OOM等問題,業界開源RL倉的readme太簡單無法支撐用戶快速上手,同時,RL訓練過程依賴人工經驗,較好的規則獎勵定義、訓練超參調整尤為重要。
基于MindSpeed RL套件
復現R1-Zero
數學能力大幅提升
MindSpeed RL提供了從環境安裝、程序運行、訓練效果的詳細指導,并提供典型配置文件和腳本供用戶一鍵啟動,同時采用訓推共卡、異步流水、分布式打分器等核心技術進行訓練加速。
基于以上能力,分別使用Qwen25-7B和Qwen25-32B作為base模型為例,使用昇騰MindSpeed RL套件復現DeepSeek-R1-Zero范式在Math領域的工作效果,在數學等邏輯推理評測集上,MATH500的分數提升幅度15分左右,達到70.6和83.2,32B模型下的AIME24的提升幅度高達26分。
01
MindSpeed RL以Qwen2.5-7B為基座模型為例復現R1-Zero的效果
訓練輸入:使用Qwen2.5-7B base模型在orz數據集上訓練,使用標準的格式獎勵和準確性獎勵,訓練超參如下
訓練過程監控:訓練過程用Tensorboard可視化工具監控,可以看到模型的回復長度Response length呈現典型的先下降后上升趨勢,準確性獎勵Accuracy持續上升并逐漸穩定在0.4~0.5之間。
模型效果評估:使用開源榜單評測系統OpenCompass進行模型評估,分數如下:
對于MATH500,Qwen-2.5-7B原模型的得分是54.4,開源社區Open-R1獲得69分,而Qwen-2.5-7B+MindSpeed RL得分高達70.6,超越了開源社區;對于AIME24和GPQA,Qwen-2.5-7B+MindSpeed RL的效果也提升了近10分,分別達到16.2和37.3分。
MindSpeed RL以Qwen25-7B為例
復現R1-Zero的模型在數學能力效果超越開源社區
02
MindSpeed RL以Qwen2.5-32B為基座模型為例復現R1-Zero的效果
訓練輸入:使用Qwen2.5-32B模型在deepscaler數據集上使用標準的格式獎勵和準確性獎勵訓練,訓練超參如下:
訓練過程監控:訓練過程用Tensorboard可視化工具監控,可以看到模型的回復長度Response length呈現典型的先下降后上升的趨勢,準確性獎勵Accuracy保持持續上升;格式獎勵Format很快上升到較高的水平。
模型效果評估:使用開源榜單評測系統OpenCompass進行模型評估,分數如下:
對于MATH500,Qwen-2.5-7B原模型的得分是68.6,開源社區SimpleRL-Zoo復現R1-Zero效果獲得82.4分,而MindSpeed RL復現R1-Zero得分83.2,超越開源社區;對于AIME24,開源社區SimpleRL-Zoo復現R1-Zero效果獲得27.2分,MindSpeed RL復現R1得分30.4,超越開源社區;而對于GPQA,MindSpeed RL復現R1得分41.1,相比基座模型也有9分提升。
MindSpeed RL以Qwen25-32B為例
復現R1-Zero的模型在數學能力效果超越開源社區
03
訓練后模型出現Aha-moment的自我反思現象
訓練前,通過prompt可以引導模型部分遵從 的格式,但回答的思考過程較短沒有自我反思,樣例如下:
訓練后,我們觀察到經過幾十個iterations后模型就有一定概率出現Aha-Moment,從“But wait”上看模型在進行自我反思,出現了R1范式中的模型產生CoT思維鏈現象,樣例如下:
R1-Zero
(以Qwen2.5-32B為例)
復現指南
環境配置
配置MindSpeed RL基礎環境以及準備代碼,參考安裝指南
https://gitee.com/ascend/MindSpeed-RL/blob/master/docs/install_guide.md
模型選擇
Qwen2.5-32B下載:
https://gitee.com/link?target=https%3A%2F%2Fhuggingface.co%2FQwen%2FQwen2.5-32B%2Ftree%2Fmain
權重轉換
在進行RL訓練之前,模型需要從HuggingFace權重轉換為megatron權重,可參考權重轉換部分:https://gitee.com/ascend/MindSpeed-RL/blob/master/docs/algorithms/grpo.md
source /usr/local/Ascend/ascend-toolkit/set_env.sh
# 設置需要的權重轉換參數
# actor使用TP8PP2,將腳本里改成TP8PP2配置
# reference使用TP8PP1,將腳本里改成TP8PP2配置
bash examples/ckpt/ckpt_convert_qwen25_hf2mcore.sh
# 訓練完后如需要轉回HF格式
bash examples/ckpt/ckpt_convert_qwen25_mcore2hf.sh
模板構造
R1-Zero復現需要在數據處理時加上prompt模板激發 ... ...$\boxed{}
<|im_start|>system\nYou are a helpful assistant.<|im_end|>\n<|im_start|>user\nA conversation between User and Assistant. The user asks a question, and the Assistant solves it. The assistant first thinks about the reasoning process in the mind and then provides the user with the answer. The reasoning process and answer are enclosed within and tags, respectively, i.e., reasoning process here answer here Put your final answer within \\boxed{}.\n{你真正的問題}<|im_end|>\n<|im_start|>assistant\n{模型真正的回答}
數據集
對于32B模型應使用更高難度的數據集,所以我們使用DeepScale 40K來訓練。
數據集地址:https://gitee.com/link?target=https%3A%2F%2Fhuggingface.co%2Fdatasets%2Fagentica-org%2FDeepScaleR-Preview-Dataset%2Ftree%2Fmain
數據預處理
需要先配置數據處理的yaml文件(examples\datasets\r1_zero_qwen25_32b.yaml) 自定義數據集需要設置--map-keys映射,或重寫自定義handler;具體參考數據集處理部分
Qwen2.5-32B
處理的時候默認使用qwen_r1的模板
# 啟動轉換
bash examples/data/preprocess_data.sh r1_zero_qwen25_32b
訓練配置準備
模型結構的配置文件位于configs/model下,訓練配置文件位于configs/目錄下,我們以qwen2.5-32b為例[r1_zero_qwen25_32b.yaml],該配置用到了32卡,為了進一步加速可以不斷增加推理DP的數量。以下為參數配置:
defaults:
- model:
- qwen25-32b <-- 網絡結構需要定義在model目錄的yaml文件下
megatron_training:
global_batch_size: 128 <-- 每個迭代的總樣本數
dataset_additional_keys: ['labels',] <-- 使用打分器時需要的額外字段
actor_config:
model: qwen25-32b
micro_batch_size: 1 <-- 訓練的mbs
lr: 1e-6
lr_decay_style: constant <-- 學習率衰減方式
weight_decay: 0.0 <-- 正則化強度系數
lr_warmup_fraction: 0.0 <-- 控制學習率預熱
no_load_optim: false <-- 續訓加載優化器狀態
no_load_rng: false <-- 續訓加載數據隨機數生成器
no_save_optim: false <-- 保存權重時同時保存優化器狀態
no_save_rng: false <-- 保存權重時同時保存數據隨機數生成器
ref_config:
model: qwen25-32b
rl_config:
blocking: false <-- 開啟異步流水
adv_estimator: group_norm <-- 優勢計算方法
mini_batch_size: 2048 <-- 訓練更新梯度的bs, 一般為gbs*n_samples_per_prompt
max_prompt_length: 1024 <-- 最大的prompt長度
clip_ratio: 0.2 <-- 策略裁剪比例
shuffle_minibatch: false <-- minibatch里的數據是否打亂
n_samples_per_prompt: 16 <-- GRPO中一個group內生成的response條數
colocate_actor_ref: false
colocate_all_models: false
rule_reward: true <-- 開啟規則獎勵
verifier_function: ["acc", "strict_format"] <-- 規則獎勵模型方法
verifier_weight: [1.0, 1.0] <-- 規則獎勵模型權重
use_tensorboard: true <-- 開啟tensorboard日志功能
actor_resource: <-- actor worker資源分配
num_npus: 16
reference_resource: <-- ref worker資源分配
num_npus: 16
generate_config:
trust_remote_code: true <-- tokenizer相關配置
infer_tensor_parallel_size: 4 <-- 推理時的并行配置
infer_pipeline_parallel_size: 1
infer_expert_parallel_size: 1
max_num_seqs: 128 <-- vllm 推理并發最大樣本限制
max_num_batched_tokens: 128000 <-- vllm 推理并發最大token限制
max_model_len: 4096
dtype: "bfloat16"
gpu_memory_utilization: 0.9
offload_train_optimizer: true <-- 卸載訓練節點優化器
offload_train_grad: true <-- 卸載訓練節點梯度
offload_train_param: true <-- 卸載模型權重
sampling_config: <-- vllm 采樣配置
max_tokens: 3072 <-- 單條response最大生成token數量
logprobs: 1 <-- 是否生成logprobs
max_tokens: 3072
top_p: 0.9
top_k: 50
min_p: 0.01
temperature: 0.9
detokenize: false
手動啟動訓練
與基于ray的其他強化訓練一樣,我們多機需要先在主節點初始化ray:
# 創建一個集群,端口6344,dashboard端口8260
ray start --head --port 6344 --dashboard-host=0.0.0.0 --dashboard-port=8260
隨后,在其他節點加入主節點的集群:
# IP_ADDRESS 處填寫主節點 IP 地址
ray start --address="IP_ADDRESS:6344"
最后,在主節點上啟動訓練:
export HCCL_CONNECT_TIMEOUT=1800
export CUDA_DEVICE_MAX_CONNECTIONS=1
python cli/train_grpo.py --config-name r1_zero_qwen25_32b | tee logs/r1_zero_qwen25_32b_full.log
腳本啟動訓練
注意:所有節點的代碼、權重、數據等路徑的層級要保持一致,且啟動ray的時候都位于MindSpeed RL目錄下
更多詳細復現指導見MindSpeed RL開源readme文件
Qwen25-7B R1-Zero復現
https://gitee.com/ascend/MindSpeed-RL/blob/master/docs/solutions/r1_zero_qwen25_7b.md
Qwen25-32B R1-Zero復現
https://gitee.com/ascend/MindSpeed-RL/blob/master/docs/solutions/r1_zero_qwen25_32b.md
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.