资讯动态

Miles Mooncake数据传输实战:用Mooncake Store替代Ray对象存储传递Rollout数据

发布时间:2026/9/18 7:15:58 来源:尧图企业网站定制
Miles Mooncake数据传输实战用Mooncake Store替代Ray对象存储传递Rollout数据【免费下载链接】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 是一个面向企业级场景的大模型强化学习RL后训练框架用于 LLM 和 VLM 的 Post-Training。在 Miles 中Rollout 数据默认通过 Ray 对象存储在推理引擎与训练进程之间传递当集群规模增大、数据量上升时你可以用Mooncake Store替换 Ray 作为 Rollout 数据的传输后端——只需一个参数--object-store-backend mooncake即可切换train.py与train_async.py均受支持。上图是 Miles 的整体数据流数据经 custom rollout generationsglang 引擎产出后汇入训练端。Rollout 数据与训练器之间的交接棒正是本文的主角——由对象存储Ray 或 Mooncake负责传递。一、为什么需要 Mooncake 数据传递在默认的 Ray 对象存储方案下Rollout 数据要在多机 GPU 之间频繁搬运跨节点传输依赖 TCP 网络大 batch 下容易成为吞吐瓶颈Ray 对象存储的内存受调度器管理无法充分利用各节点的空闲内存作为分布式缓存。Mooncake Store 是一个分布式内存对象存储Miles 通过抽象层 miles/utils/object_store.py 屏蔽了后端差异RayObjectStore调用ray.put()/ray.get()MooncakeObjectStore通过MooncakeDistributedStore 结构化对象接口MooncakeBundleTransfer进行分块 PUT/GET。切换后端后上层代码如 miles/ray/rollout/rollout_executor.py 中的object_store.get_instance().put(...)完全无感知训练器收到的仍是同一个 rollout 字典。二、环境准备Mooncake 数据传递的 3 个前提在启动 Miles 作业前请确认前提说明版本一致所有 Ray 节点运行相同 Miles 版本与 Mooncake 版本Master 可用启动mooncake_master或提供 HA 端点Miles 作为客户端连接不负责管理其生命周期网络可达Ray 与 Mooncake 客户端均使用数据网地址非回环地址显存/内存预算为global_segment_size和local_buffer_size预留足够的宿主机内存注意Mooncake 结构化对象 wheel 只随 CUDA 13 镜像发布在 CUDA 12 镜像上会导入失败。Miles 官方 CUDA 13 镜像见 docker/Dockerfile已内置所需 API。三、快速切换Mooncake 对象存储后端的 3 步配置第 1 步设置传输协议与 Master 地址export MOONCAKE_PROTOCOLtcp或rdma export MOONCAKE_MASTER_ADDRmooncake-master-host:50051 # RDMA 专用每个节点启动 Ray 前设置本机 RDMA 设备名 # export MOONCAKE_DEVICElocal-rdma-device第 2 步启动 mooncake_mastermooncake_master --rpc_port 50051 --metrics_port 50052 \ mooncake_master.log 21 第 3 步在 Miles 训练命令中追加两个参数--object-store-backend mooncake \ --mooncake-store-init-kwargs \ {\protocol\:\${MOONCAKE_PROTOCOL}\,\master_server_address\:\${MOONCAKE_MASTER_ADDR}\}参数定义见 miles/utils/arguments.py。启动脚本与端到端测试统一使用 miles/utils/external_utils/command_utils.py 中的start_mooncake_master()与get_mooncake_object_store_args()组装上述配置。四、双节点实战8 卡 Rollout 8 卡训练的完整走查官方文档给出了一台 8 卡节点跑 Rollout、另一台 8 卡节点跑训练FSDP 后端的最小示例共 3 个同步迭代。核心提交命令如下ray job submit --address${RAY_DASHBOARD_ADDR} \ -- python3 ${MILES_HOME}/train.py \ --train-backend fsdp \ --hf-checkpoint ${MODEL_PATH} \ --prompt-data ${DATASET_PATH} \ --num-rollout 3 \ --rollout-batch-size 8 \ --rollout-num-gpus 8 \ --update-weight-transfer-mode broadcast \ --object-store-backend mooncake \ --mooncake-store-init-kwargs ${MOONCAKE_STORE_INIT_KWARGS}其中 Store 容量配置小示例用 2 GiB生产环境请按实际 rollout 数据量调整export MOONCAKE_STORE_INIT_KWARGS{\protocol\:\${MOONCAKE_PROTOCOL}\,\master_server_address\:\${MOONCAKE_MASTER_ADDR}\,\global_segment_size\:\2gb\,\local_buffer_size\:\2gb\,\chunk_bytes\:67108864}✅ 全异步训练只需把入口换成train_async.py并加--fully-asyncMooncake 参数保持不变。完整的两节点逐步操作含 Ray head/worker 启动顺序请阅读官方文档 docs/advanced/mooncake-rollout-transfer.md。五、关键参数速查表--mooncake-store-init-kwargs支持的字段及其默认值来源字段默认来源说明master_server_address环境变量MOONCAKE_MASTERMooncake master 或 HA 端点地址local_hostnameMOONCAKE_LOCAL_HOSTNAME回退 Ray 节点 IP客户端对外通告的数据网地址protocolMOONCAKE_PROTOCOL回退rdma传输协议通常为tcp或rdmadevice_nameMOONCAKE_DEVICE本机 RDMA 设备节点间设备名不同时优先用环境变量global_segment_size回退8gb该客户端贡献的 Store 容量local_buffer_size回退32gb本地传输与暂存容量chunk_bytesMooncake 默认结构化对象 PUT 分块大小⚠️容量规划要点rollout manager 从不贡献 segment训练 actor 是每节点 1 个贡献 segment——global_segment_size应按每节点贡献而非客户端总数来配置。需要数据冗余时追加一个参数即可--mooncake-replica-num 2六、避坑指南Mooncake 数据传递的 4 个常见坑CUDA 12 镜像报导入错误mooncake.structured_object_store仅在 CUDA 13 路径提供请确认使用 CUDA 13 镜像见 docker/DockerfileRDMA 设备名各节点不同务必在每个节点启动 Ray之前设置MOONCAKE_DEVICE让 Ray 工作进程继承本机设备回环地址只适用于单机多节点作业必须使用各客户端都能路由到的数据网地址容量配置过小的 OOMglobal_segment_sizelocal_buffer_size需覆盖在途 rollout 数据量、副本数与并发传输。七、划重点Rollout 数据传递 ≠ 模型权重传递 Miles 中这两条链路是相互独立的开关--object-store-backend→ 控制Rollout 数据本文主题本文示例使用 Mooncake--update-weight-transfer-mode→ 控制模型权重更新路径P2P / broadcast 等。下图展示了大模型 RL 训练中权重传递的扩展性对比——P2PRDMA在多节点下相比 NCCL Broadcast 最高可获得 7.4× 加速也就是说你可以Rollout 数据走 Mooncake 权重走 P2P自由组合两条链路独立调优、互不干扰。权重传递细节可参考 docs/advanced/p2p-weight-transfer.md。八、总结如何评估是否值得切换场景建议单机、小 batch 实验保持默认 Ray 对象存储即可多节点、rollout batch 大、异步训练切换 MooncakeTCP 协议即可见效有 RDMA 网络的企业集群Mooncake protocolrdma最大化带宽利用率Miles 的对象存储抽象让这次切换成本极低不改任何业务代码只改启动参数就能让 Rollout 数据传输摆脱 Ray 对象存储的瓶颈支撑更大规模的 RL 后训练。【免费下载链接】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),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价