Miles强化学习框架开发者指南:30分钟读懂源码架构与三类进程协作

发布时间:2026/9/18 22:34:42
Miles强化学习框架开发者指南:30分钟读懂源码架构与三类进程协作 Miles强化学习框架开发者指南30分钟读懂源码架构与三类进程协作【免费下载链接】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 是一个面向企业级 LLM/VLM 后训练的强化学习框架由 SGLang 负责高吞吐推理工、Megatron-LM 负责大规模训练。本文将用 30 分钟带你读懂 Miles 强化学习框架的源码架构搞清训练、推理、路由三类进程如何在一个 Ray 集群里协作适合准备阅读或二次开发 Miles 源码的开发者。️ 一张图看懂 Miles 框架架构Miles 的一次运行由三类进程组成全部包裹在一个 Ray 集群中。先看官方架构总览图它是全文的导航地图Trainer训练组一组 Megatron 进程加载torch_dist检查点运行完整的 RL 训练循环Rollout推理工N 个独立的 SGLang HTTP 服务负责生成样本前面挂一个Miles Router做请求分发与健康检查Data Source数据缓冲Trainer 持有的 Python 对象读取 prompt JSONL充当 rollout 与训练之间的缓冲三者的核心交互就三件事发 prompt → 收 rollout → 同步新权重。 三类进程的职责拆解训练进程TrainerMegatron 驱动 RL 主循环入口是 train.py——官方开发者文档特别强调它足够薄从头读一遍主循环只要十几行核心逻辑第 1 步create_rollout_components拉起 SGLang 推理工第 2 步create_training_models创建 Megatron actor/critic第 3 步每轮迭代执行prepare_rollout → 采样 → train → save → update_weights其中 train.py 的 for 循环就是 RL 的心跳每一轮先取 rollout 数据、算 loss 更新参数再把新权重同步给所有推理引擎。训练产出长这样——奖励曲线稳步抬升同时保持 trainer 与 rollout 策略的 KL 差距在低位相关代码集中在 miles/backends/megatron_utils/Megatron actor 与权重同步loss 与优势计算则在 miles/backends/training_utils/。推理工进程SGLang servers把 prompt 变成样本每个 SGLang server 是独立的 HTTP 服务负责真正的高吞吐 token 生成。Miles 侧的封装入口是 miles/rollout/sglang_rollout.py 中的generate_rollout——它把 prompt 批次通过 router 分发出去收回带meta_infologprob、路由信息 R3 等的样本再交给奖励函数打分。推理工相关的扩展点都很集中想做什么看哪里换 rollout 策略多轮、agentic、SFT 等miles/rollout/ 下的sglang_rollout.py、sft_rollout.py、inference_rollout/内置奖励函数--rm-type分发miles/rollout/rm_hub/内置过滤器丢弃无效组miles/rollout/filter_hub/prompt 缓冲与 JSONL 加载miles/rollout/data_source.py路由进程Miles RouterFastAPI 代理 健康检查Miles Router 是一个 FastAPI 代理部署在 Trainer 和 SGLang 集群之间职责有三负载均衡维护URL → 活跃请求数映射把请求打向最闲的引擎元数据保真R3保留 rollout 时的专家路由信息供训练前向重放消除 MoE 路由不匹配健康检查后台循环探测各 worker连续失败的 worker 被隔离出路由池配置定义在 miles/router/config.py 的MilesRouterConfig中路由进程以独立解释器启动pkill -9 miles即可全部清理——设计上刻意与主进程解耦。⏱️ 一次 GRPO 迭代中请求的一生把三类进程串起来一次标准迭代的数据流是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 引擎最后一步权重同步是 RL 框架的关键差异点Miles 支持秒级把新权重推到引擎万亿参数规模也可用 P2P RDMA 加速相关实现在 miles/backends/megatron_utils/update_weight/。同步完成后下一轮 rollout 就用上了最新策略。 如果想解耦采样与训练的节奏让推理工持续跑、训练按队列取数Miles 提供train_async.py全异步模式实现在 miles/rollout/fully_async_rollout.py 与 miles/rollout/fully_async_data_buffer.py。 源码目录速查表改什么改哪里官方架构文档 docs/developer/architecture.md 给了一张改动定位表这是贡献代码前最值钱的一页你想做的事编辑位置新增 RL 算法GRPO 家族miles/backends/training_utils/loss.pyloss_hub/新增内置奖励类型miles/rollout/rm_hub/Megatron 支持新模型架构miles_plugins/models/model.pymiles_plugins/mbridge/FSDP 支持新架构miles/backends/fsdp_utils/adaptations/specs/arch.py新增命令行参数miles/utils/arguments.py修改 rollout 缓冲逻辑miles/rollout/data_source.py注意一个重要的分层约定miles/主包从不直接导入miles_plugins/插件只在运行时通过--spec或--custom-*-path之类的 flag 按 import 路径加载。想让功能生效而不用改内核代码时优先走这种 flag 注入方式。 30 分钟读码路线从哪五个文件开始官方给新读者的脊柱路线按顺序读即可建立全局观train.py— 主循环自上而下通读一遍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/— 训练权重如何送达推理引擎读完这五处其余模块基本都是挂在脊柱上的分支Ray 编排逻辑在 miles/ray/train_actor.py、placement_group.py、wiring.py运行监控面板在 miles/dashboard/参数解析与工具函数都在 miles/utils/。 测试体系改完代码怎么验证Miles 的 CI 发现机制是基于目录位置的理解这一点能少走很多弯路tests/fast/— 纯 CPU CItest_*.py自动注册无需样板代码tests/fast-gpu/— GPU/CPU CI需显式register_cuda_ci/register_cpu_citests/e2e/— 端到端测试会真的拉起 Ray SGLang实用建议跑pytest tests/fast做快速 CPU 检查任何触及训练循环的改动落地前先跑tests/e2e。测试体系详解见 tests/ci/README.md。写在最后Miles 强化学习框架的设计哲学可以浓缩为一句话薄入口 插件化 进程解耦。三个入口脚本train.py、train_async.py、train_multi_lora_async.py都刻意保持精简核心逻辑分门别类落在 rollout、backends、router 各层。抓住Trainer 训练 → Router 分发 → SGLang 生成 → 权重回传这条主线你就能在 30 分钟内读懂整个 Miles 的协作关系并知道任何一次改动该落在哪个目录。【免费下载链接】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创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询