本文以Qwen3模型為例,基於PAI-ChatLearn訓練架構,介紹如何在PAI中使用靈駿智算資源進行LLM高效分布式強化學習訓練並部署訓練後模型。
一、準備工作
1.1 開發環境準備
在開始執行操作前,請確認您已經完成以下工作:
購買靈駿智算資源並建立資源配額。本文樣本必須使用靈駿資源。完成樣本需2台機器,節點規格為
ml.gx8xf.8xlarge-gu108。關於靈駿智算資源的節點規格詳情,請參見AI計算資源計費說明。建立資料集,用於儲存訓練所需的檔案和結果檔案。
数据集类型:選擇基础型。
存储类型:選擇檔案儲存體類的,本文使用檔案儲存體(通用型NAS)。如沒有NAS檔案系統請參見建立檔案系統。
說明如果您的訓練任務對資料讀取有很高的讀寫速度與效能要求,建議您使用檔案儲存體(智算CPFS)。
默认挂载路径:使用預設值/mnt/data/。
建立DSW執行個體,其中關鍵參數配置如下。
资源类型:選擇資源配額。
资源配额:選擇已建立的靈駿智算資源的資源配額。
资源规格:配置以下資源規格。
GPU(卡数):至少為8。
CPU(核数):90。
内存(GiB):1024。
共享内存(GiB):1024。
镜像信息:選擇镜像地址,配置鏡像為
dsw-registry-vpc.cn-wulanchabu.cr.aliyuncs.com/pai-training-algorithm/chatlearn:torch2.5.1-vllm0.6.6-ubuntu22.04-cuda12.6-py310。需要根據當前region資訊來更改鏡像地址,比如,啟動在上海的DSW執行個體,鏡像中region資訊更改為cn-shanghai。数据集挂载:單擊自訂資料集,選擇已建立的資料集,並使用預設掛載路徑。
如果使用RAM使用者完成以下相關操作,需要為RAM使用者授予DSW、DLC或EAS的操作許可權。具體操作,請參見雲產品依賴與授權:DSW、雲產品依賴與授權:DLC或雲產品依賴與授權:EAS。
1.2 下載程式碼程式庫
進入PAI-DSW開發環境。
登入PAI控制台,在頁面左上方選擇地區,推薦華北6(烏蘭察布)。
在左側導覽列單擊工作空間列表,在工作空間列表頁面中單擊待操作的工作空間名稱,進入對應工作空間內。
在左側導覽列,選擇 模型开发与训练> 交互式建模(DSW),單擊目標執行個體操作列下的開啟。
在頂部功能表列單擊Terminal,在該頁簽中單擊建立terminal。
下載ChatLearn程式碼程式庫。
git clone https://github.com/alibaba/ChatLearn.git && cd ChatLearn && git checkout 4ad5912306df5d4a814dc2dd5567fcb26f5d473b
1.3 準備Qwen3模型
從ModelScope下載Qwen3模型權重。
modelscope download --model Qwen/Qwen3-8B --local_dir Qwen3-8B1.4 準備訓練資料集
本案例以MATH-lighteval資料集為例,介紹ChatLearn強化學習流程。
該資料集是一個數學推理任務資料集,使用關聯規則來驗證reward打分。
如果需要在自訂任務上進行強化學習訓練,可參考chatlearn程式碼程式庫中
examples/fsdp/models/rule_reward.py實現自訂reward打分函數。
# 下載資料集
mkdir -p dataset
modelscope download --dataset AI-ModelScope/MATH-lighteval --local_dir dataset/MATH-lighteval
# 資料集預先處理
python examples/fsdp/data/data_preprocess/math_lighteval.py --input_dir dataset/MATH-lighteval --local_dir dataset/MATH-lighteval二、強化學習訓練
建議您先在DSW環境中開發調試完成後,再在DLC環境中提交多機多卡分布式訓練任務。
本樣本使用FSDP作為訓練引擎,若需要使用megatron加速訓練可參考tutorial_grpo_mcore。
2.1 DSW單機訓練
直接在DSW環境中繼續執行如下命令開始訓練。訓練後的模型將儲存到掛載的資料集中,用於後續部署。
bash examples/fsdp/scripts/train_grpo_qwen3.sh使用train_grpo_qwen3.sh預設參數,預計訓練耗時2~3小時。
2.2 DLC多機訓練
在單機開發調試完成後,您可以在DLC環境中配置多機多卡的分布式任務,加快模型的訓練速度。具體操作步驟如下:
進入建立任務頁面。
登入PAI控制台,在頁面上方選擇目標地區,並在右側選擇目標工作空間,然後單擊進入DLC。
在分布式訓練(DLC)頁面,單擊建立任務。
在新建任务頁面,配置以下關鍵參數,其他參數取預設配置即可。更多詳細內容,請參見建立訓練任務。
參數
描述
基本信息
任务名称
自訂任務名稱。本方案配置為:test_qwen3_dlc。
环境信息
镜像信息
選中镜像地址並在文字框中輸入:dsw-registry-vpc.cn-wulanchabu.cr.aliyuncs.com/pai-training-algorithm/chatlearn:torch2.5.1-vllm0.6.6-ubuntu22.04-cuda12.6-py310,需要根據當前region資訊來更改鏡像地址。
数据集挂载
單擊自訂資料集,選擇已建立的資料集,並使用預設掛載路徑
/mnt/data/。启动命令
配置以下命令,其中train_grpo_qwen3.sh指令碼輸入的啟動參數與DSW單機預訓練模型一致。
cd /mnt/data/ChatLearn && bash examples/fsdp/scripts/train_grpo_qwen3.sh资源信息
资源类型
選擇靈駿智算。
资源来源
選擇資源配額。
资源配额
本方案選擇已建立的靈駿智算資源的資源配額。
框架
選擇PyTorch。
任务资源
在Worker節點配置頁簽配置以下參數:
数量:2,如果需要多機訓練,配置節點數量為需要的機器數即可。
GPU(卡数):8
CPU(核数):90
内存(GiB):1024
共享内存(GiB):1024
單擊确定,頁面自動跳轉到分布式訓練(DLC)頁面。您可以單擊任務名稱,在任務詳情頁面查看任務執行狀態。當狀態變為已成功時,表明訓練任務執行成功。
說明當前DLC任務出現
ray.exceptions.RpcError: Timed out while waiting for GCS to become available.時並顯示失敗時,實際訓練任務已經完成,可以直接使用儲存模型部署服務。
2.3 主要參數說明
三、部署及調用模型
完成模型訓練後,您可以直接將模型部署為線上服務,並在實際的生產環境中調用。
3.1 部署模型服務
登入PAI控制台,在頁面上方選擇目標地區,並在右側選擇目標工作空間,然後單擊進入EAS。
單擊部署服务,然後在自定义模型部署地區,單擊自定义部署。
在自定义部署頁面配置以下關鍵參數,其他參數取預設配置即可。
參數
描述
基本信息
服务名称
自訂模型服務名稱,同地區內唯一。本方案配置為:test_qwen3。
环境信息
部署方式
本方案選擇镜像部署。
镜像配置
選擇镜像地址,在文字框中配置鏡像地址
eas-registry-vpc.cn-wulanchabu.cr.aliyuncs.com/pai-eas/vllm:v0.8.5.post1,需要根據當前region資訊來更改鏡像地址。存储挂载
選擇通用型NAS,並配置以下參數:
選擇檔案系統:選擇建立資料集使用的NAS檔案系統。
檔案系統掛載點:選擇建立資料集使用的掛載點。
檔案系統路徑 :配置為存放在NAS中的Huggingface格式模型的路徑。本方案配置為
/ChatLearn/output/qwen3-grpo/save_model/policy_trainer/20/huggingface/。挂载路径:指定掛載後的路徑,本方案配置為:
/qwen3_rlhf。
运行命令
配置為
vllm serve /qwen3_rlhf --host 0.0.0.0 --port 8000 --max-model-len 8192。說明如您使用V100部署,運行命令配置為
vllm serve /qwen3_rlhf --host 0.0.0.0 --port 8000 --max-model-len 8192 --dtype=half。端口号
配置為:8000。
资源信息
资源类型
本方案選擇公用資源。
副本数
根據模型和選擇的資源情況進行配置。以8b模型為例,配置為1。
部署资源
資源規格選擇A10或V100,本方案配置為
ecs.gn7i-c32g1.8xlarge。网络信息
专有网络
配置好NAS掛載點後,系統自動匹配與預設的NAS檔案系統一致的VPC、交換器,根據需求設定安全性群組。
交换机
安全组
單擊部署。服務部署時間約為6分鐘,當服務狀態變為運行中時,表明服務部署成功。
3.2 調用服務
擷取服務訪問地址和Token。在推理服务頁簽,找到目標服務進入概览頁面,在基本信息地區單擊查看调用信息。

使用如下代碼調用服務。其中,<YOUR EAS URL>替換為步驟1中的調用地址;Token建議設定為環境變數。
import os from openai import OpenAI # 建議將Token設定為環境變數 openai_api_key = os.environ.get("Token") # <YOUR EAS URL>替換為服務的訪問地址。 openai_api_base = "<YOUR EAS URL>/v1" client = OpenAI( api_key=openai_api_key, base_url=openai_api_base, ) chat_response = client.chat.completions.create( model="/qwen3_rlhf", messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Find the smallest positive integer solution to $\\tan{19x^{\\circ}}=\\dfrac{\\cos{96^{\\circ}}+\\sin{96^{\\circ}}}{\\cos{96^{\\circ}}-\\sin{96^{\\circ}}}$. Let's think step by step and output the final answer within \\boxed{}."}, ], temperature=0.7, top_p=0.8, presence_penalty=1.5, extra_body={ "top_k": 20, "chat_template_kwargs": {"enable_thinking": False}, } ) print("Chat response:", chat_response)
附錄:訓練部署所需資源規格參考
不同的模型參數量支援的資源規格列表如下:
模型參數量 | 全參數訓練資源(最低) | 推理資源(最低) | |
數量 | 規格 | ||
Qwen3-8B | 1台 |
| 1*V100(32 GB顯存) / 1*A10(24 GB顯存) |
Qwen3-32B | 2台 | 4*V100(32 GB顯存)/ 4*A10(24 GB顯存) | |
Qwen3-30B-A3B | 2台 | 4*V100(32 GB顯存)/ 4*A10(24 GB顯存) | |