習(xí)框架開發(fā)者指南:30分鐘讀懂源碼架構(gòu)與三類進程協(xié)作)
Miles強化學(xué)習(xí)框架開發(fā)者指南30分鐘讀懂源碼架構(gòu)與三類進程協(xié)作【免費下載鏈接】milesMiles is an enterprise-facing reinforcement learning framework for LLM and VLM post-training, forked from and co-evolving with slime.項目地址: https://gitcode.com/GitHub_Trending/miles1/milesMiles 是一個面向企業(yè)級 LLM/VLM 后訓(xùn)練的強化學(xué)習(xí)框架由 SGLang 負責(zé)高吞吐推理工、Megatron-LM 負責(zé)大規(guī)模訓(xùn)練。本文將用 30 分鐘帶你讀懂 Miles 強化學(xué)習(xí)框架的源碼架構(gòu)搞清訓(xùn)練、推理、路由三類進程如何在一個 Ray 集群里協(xié)作適合準備閱讀或二次開發(fā) Miles 源碼的開發(fā)者。? 一張圖看懂 Miles 框架架構(gòu)Miles 的一次運行由三類進程組成全部包裹在一個 Ray 集群中。先看官方架構(gòu)總覽圖它是全文的導(dǎo)航地圖Trainer訓(xùn)練組一組 Megatron 進程加載torch_dist檢查點運行完整的 RL 訓(xùn)練循環(huán)Rollout推理工N 個獨立的 SGLang HTTP 服務(wù)負責(zé)生成樣本前面掛一個Miles Router做請求分發(fā)與健康檢查Data Source數(shù)據(jù)緩沖Trainer 持有的 Python 對象讀取 prompt JSONL充當(dāng) rollout 與訓(xùn)練之間的緩沖三者的核心交互就三件事發(fā) prompt → 收 rollout → 同步新權(quán)重。 三類進程的職責(zé)拆解訓(xùn)練進程TrainerMegatron 驅(qū)動 RL 主循環(huán)入口是 train.py——官方開發(fā)者文檔特別強調(diào)它足夠薄從頭讀一遍主循環(huán)只要十幾行核心邏輯第 1 步create_rollout_components拉起 SGLang 推理工第 2 步create_training_models創(chuàng)建 Megatron actor/critic第 3 步每輪迭代執(zhí)行prepare_rollout → 采樣 → train → save → update_weights其中 train.py 的 for 循環(huán)就是 RL 的心跳每一輪先取 rollout 數(shù)據(jù)、算 loss 更新參數(shù)再把新權(quán)重同步給所有推理引擎。訓(xùn)練產(chǎn)出長這樣——獎勵曲線穩(wěn)步抬升同時保持 trainer 與 rollout 策略的 KL 差距在低位相關(guān)代碼集中在 miles/backends/megatron_utils/Megatron actor 與權(quán)重同步loss 與優(yōu)勢計算則在 miles/backends/training_utils/。推理工進程SGLang servers把 prompt 變成樣本每個 SGLang server 是獨立的 HTTP 服務(wù)負責(zé)真正的高吞吐 token 生成。Miles 側(cè)的封裝入口是 miles/rollout/sglang_rollout.py 中的generate_rollout——它把 prompt 批次通過 router 分發(fā)出去收回帶meta_infologprob、路由信息 R3 等的樣本再交給獎勵函數(shù)打分。推理工相關(guān)的擴展點都很集中想做什么看哪里換 rollout 策略多輪、agentic、SFT 等miles/rollout/ 下的sglang_rollout.py、sft_rollout.py、inference_rollout/內(nèi)置獎勵函數(shù)--rm-type分發(fā)miles/rollout/rm_hub/內(nèi)置過濾器丟棄無效組miles/rollout/filter_hub/prompt 緩沖與 JSONL 加載miles/rollout/data_source.py路由進程Miles RouterFastAPI 代理 健康檢查Miles Router 是一個 FastAPI 代理部署在 Trainer 和 SGLang 集群之間職責(zé)有三負載均衡維護URL → 活躍請求數(shù)映射把請求打向最閑的引擎元數(shù)據(jù)保真R3保留 rollout 時的專家路由信息供訓(xùn)練前向重放消除 MoE 路由不匹配健康檢查后臺循環(huán)探測各 worker連續(xù)失敗的 worker 被隔離出路由池配置定義在 miles/router/config.py 的MilesRouterConfig中路由進程以獨立解釋器啟動pkill -9 miles即可全部清理——設(shè)計上刻意與主進程解耦。?? 一次 GRPO 迭代中請求的一生把三類進程串起來一次標準迭代的數(shù)據(jù)流是Trainer ──get_samples(N)──? DataSource ──prompts──? Trainer Trainer ──generate(prompts)──? Miles Router ──dispatch──? SGLang SGLang ──responses meta_info──? Miles Router ──? Trainer Trainer ──score(samples)──? RewardFn ──rewards──? Trainer Trainer ──GRPO loss / step──? Trainer Trainer ──weight_sync(p2p)──? 所有 SGLang 引擎最后一步權(quán)重同步是 RL 框架的關(guān)鍵差異點Miles 支持秒級把新權(quán)重推到引擎萬億參數(shù)規(guī)模也可用 P2P RDMA 加速相關(guān)實現(xiàn)在 miles/backends/megatron_utils/update_weight/。同步完成后下一輪 rollout 就用上了最新策略。 如果想解耦采樣與訓(xùn)練的節(jié)奏讓推理工持續(xù)跑、訓(xùn)練按隊列取數(shù)Miles 提供train_async.py全異步模式實現(xiàn)在 miles/rollout/fully_async_rollout.py 與 miles/rollout/fully_async_data_buffer.py。 源碼目錄速查表改什么改哪里官方架構(gòu)文檔 docs/developer/architecture.md 給了一張改動定位表這是貢獻代碼前最值錢的一頁你想做的事編輯位置新增 RL 算法GRPO 家族miles/backends/training_utils/loss.pyloss_hub/新增內(nèi)置獎勵類型miles/rollout/rm_hub/Megatron 支持新模型架構(gòu)miles_plugins/models/model.pymiles_plugins/mbridge/FSDP 支持新架構(gòu)miles/backends/fsdp_utils/adaptations/specs/arch.py新增命令行參數(shù)miles/utils/arguments.py修改 rollout 緩沖邏輯miles/rollout/data_source.py注意一個重要的分層約定miles/主包從不直接導(dǎo)入miles_plugins/插件只在運行時通過--spec或--custom-*-path之類的 flag 按 import 路徑加載。想讓功能生效而不用改內(nèi)核代碼時優(yōu)先走這種 flag 注入方式。 30 分鐘讀碼路線從哪五個文件開始官方給新讀者的脊柱路線按順序讀即可建立全局觀train.py— 主循環(huán)自上而下通讀一遍miles/rollout/sglang_rollout.py 的generate_rollout— prompt 如何變成樣本miles/backends/training_utils/loss.py— loss 與 advantage 計算miles/router/router.py— FastAPI 代理與負載均衡miles/backends/megatron_utils/update_weight/— 訓(xùn)練權(quán)重如何送達推理引擎讀完這五處其余模塊基本都是掛在脊柱上的分支Ray 編排邏輯在 miles/ray/train_actor.py、placement_group.py、wiring.py運行監(jiān)控面板在 miles/dashboard/參數(shù)解析與工具函數(shù)都在 miles/utils/。 測試體系改完代碼怎么驗證Miles 的 CI 發(fā)現(xiàn)機制是基于目錄位置的理解這一點能少走很多彎路tests/fast/— 純 CPU CItest_*.py自動注冊無需樣板代碼tests/fast-gpu/— GPU/CPU CI需顯式register_cuda_ci/register_cpu_citests/e2e/— 端到端測試會真的拉起 Ray SGLang實用建議跑pytest tests/fast做快速 CPU 檢查任何觸及訓(xùn)練循環(huán)的改動落地前先跑tests/e2e。測試體系詳解見 tests/ci/README.md。寫在最后Miles 強化學(xué)習(xí)框架的設(shè)計哲學(xué)可以濃縮為一句話薄入口 插件化 進程解耦。三個入口腳本train.py、train_async.py、train_multi_lora_async.py都刻意保持精簡核心邏輯分門別類落在 rollout、backends、router 各層。抓住Trainer 訓(xùn)練 → Router 分發(fā) → SGLang 生成 → 權(quán)重回傳這條主線你就能在 30 分鐘內(nèi)讀懂整個 Miles 的協(xié)作關(guān)系并知道任何一次改動該落在哪個目錄?!久赓M下載鏈接】milesMiles is an enterprise-facing reinforcement learning framework for LLM and VLM post-training, forked from and co-evolving with slime.項目地址: https://gitcode.com/GitHub_Trending/miles1/miles創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考