meta-pytorch/monarch

PyTorch Single Controller

Monarch – PyTorch分布式Actor框架\n\n它是什么\n- 一个Python优先的库(Rust核心),让您在PyTorch之上运行actor——可以互相发送消息的独立进程。\n- Actor被组织成mesh(集合),可以通过广播、点对点RDMA或普通RPC调用进行通信。\n- 内置容错:Actor形成监督树,因此故障向上传播,并且可以自动恢复。\n- 可选的tensor engine使用libibverbs(RDMA)添加分布式张量分片和单向GPU/CPU内存传输。\n\n关键概念\n| 功能 | 提供的内容 |\n|---|---|\n| 远程Actor和Mesh | 编写继承自Actor的类,用@endpoint装饰方法,然后在GPU或节点上生成多个副本。调用返回您可以通过get()获取的future。\n| 监督树 | 层次化进程组自动重启或清理失败的子进程,类似于Erlang/Elixir监督。\n| RDMA传输 | 在硬件支持时,进程间GPU/CPU内存的低延迟、零拷贝移动。\n| 分布式张量 | 将torch.Tensor在actor之间分片,让每个actor处理自己的切片,而库处理底层通信。\n\n典型工作流程(来自README)\npython\nfrom monarch.actor import Actor, endpoint, this_host\n\n# 8个进程,每个GPU一个\nprocs = this_host().spawn_procs({\"gpus\": 8})\n\nclass Trainer(Actor):\n @endpoint\n def train(self, step: int):\n ... # 训练逻辑\n\ntrainers = procs.spawn(\"trainers\", Trainer) # 创建8个Trainer actor\nfut = trainers.train.call(step=0) # 广播调用\nfut.get() # 等待所有完成\n\n\n安装\n- 预构建轮子:pip install torchmonarch(稳定版)或--pre用于夜间构建。\n- 源码构建使用uv包管理器、夜间Rust工具链以及可选的CUDA/ROCm/RDMA库。您可以通过USE_TENSOR_ENGINE=0禁用tensor engine,进行纯actor、仅CPU安装。\n- Docker支持:构建轮子,然后使用提供的Dockerfile.nightly创建适合Kubernetes的镜像。\n\n适用人群\n- 需要在多个GPU或节点上扩展PyTorch训练或推理,但希望比原始torch.distributed更高级抽象的研究人员和工程师。\n- 构建需要自动恢复单个工作进程故障的容错AI服务的团队。\n- 拥有RDMA功能硬件并希望实现超低延迟张量分片的用户。\n\n文档与社区\n- 托管的文档:https://meta-pytorch.org/monarch/,包含“入门”教程。\n- 测试使用Rust(cargo-nextest)和Python(pytest)编写。\n- BSD-3-Clause许可证,第三方RDMA代码使用兼容许可证。\n\n底线\nMonarch是一个真正的生产级框架,通过actor风格的分布式编程、容错以及可选的高性能RDMA张量处理扩展了PyTorch。它面向需要比原始torch.distributed更多结构和弹性的高级ML工作负载。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目