monarch
Monarch 是一个基于 PyTorch 的分布式编程框架,通过可扩展的 actor 消息传递机制实现分布式计算。其核心功能包括:
-
远程 actor 分组与通信
支持将 actor 分组为“mesh”并广播消息,实现跨进程通信。 -
故障恢复机制
通过监督树(supervision tree)实现故障传播与恢复,提供默认错误处理和细粒度恢复能力。 -
高性能 RDMA 传输
支持 GPU/CPU 内存的点对点 RDMA 传输(基于 libibverbs),降低通信开销。 -
分布式张量支持
允许 actor 操作跨进程分片的张量对象。
使用方法
通过 Python API 定义 actor 和进程,示例如下:
- 使用
this_host().spawn_procs()创建进程; - 定义 actor 类并注册接口(
@endpoint); - 调用
.call()触发远程方法并等待结果。
主要特性
- 支持 GPU/CPU 内存的高效 RDMA 传输;
- 提供分布式张量分片能力;
- 基于监督树的故障恢复机制;
- 简洁的 Python API 用于进程/actor 管理。
注意事项
- 当前为实验性项目,API 可能变更,建议在贡献前讨论;
- 安装需依赖 libibverbs、libmlx5 等库,且 PyTorch 版本需匹配;
- 支持通过
pip安装(稳定版或 nightly 版),或从源码构建(需 CUDA/Clang 等环境)。