本页研究 verl 如何让 controller 侧的一次 Python method call 变成多个 Ray actors 上的分布式执行。重点是 method registration、input dispatch、remote execution、result collection 和 resource placement。
本页问题
@register在 worker method 上附加了什么 metadata?- WorkerGroup 如何在初始化时动态绑定远程方法?
ONE_TO_ALL、DP_COMPUTE等 dispatch mode 如何拆分输入?- ResourcePool 如何把 role 映射到 node/GPU 资源?
- colocated roles 如何共享进程与设备,又如何保持独立 method namespace?
Source Anchors
Running Example
完整笔记以一次 actor_wg.compute_log_prob(batch) 或 actor_wg.update_actor(batch) 为例:
controller method
-> dispatch metadata
-> DataProto / KVBatchMeta split
-> remote worker invocation
-> backend execution
-> collect and merge
-> controller resultCompletion Criteria
- 给出一个 method 从 decoration 到 invocation 的完整调用链;
- 解释 world size、DP rank 和 role prefix 的关系;
- 记录 blocking/non-blocking 与 future materialization 的语义;
- 说明 Ray 负责什么、
torch.distributed/backend 又负责什么。