PyTorch Monarch简化分布式AI工作流

Source: InfoQ - AI & LLM

Meta的PyTorch团队推出了Monarch",这是一个开源框架,旨在简化跨多个GPU和机器的分布式AI工作流。该系统引入了一个单控制器模型,允许一个脚本协调整个集群的计算,降低了大规模训练和强化学习任务的复杂性,而无需改变开发者编写标准PyTorch代码的方式。

Monarch用单控制器模型取代了传统的多控制器方法,即同一脚本的多个副本在不同机器上独立运行。在这种架构中,一个脚本协调一切——从生成GPU进程到处理故障——给开发者一种在本地工作的感觉,而实际上却是在整个集群上运行。

PyTorch团队将其描述为将“将单机PyTorch的简单性带到整个集群”。开发者可以使用熟悉的Python结构——函数、类、循环、future——来定义可以无缝扩展的分布式系统,而无需重写逻辑来手动处理同步或故障。

在核心层面,Monarch引入了进程网格和角色网格,这些是可扩展的分布式资源数组,可以像NumPy中的张量一样进行切片和操作。这意味着开发者可以将任务广播到多个GPU,将它们分成子组,或者使用直观的Python代码从节点故障中恢复。在底层,Monarch将控制与数据分离,允许命令和大型GPU到GPU传输通过不同的优化通道移动,以提高效率。

来源:PyTorch博客

开发者甚至可以使用标准的Python try/except块捕获来自远程角色的异常,逐步增加容错性。与此同时,分布式张量直接与PyTorch集成,因此即使在数千个GPU上运行,大规模计算仍然“感觉”是本地的。

系统的后端是用Rust编写的,由一个名为hyperactor的低级角色框架提供支持,该框架在集群中提供可扩展的消息传递和强大的监督。这种设计允许Monarch使用多播树和多部分消息传递高效地分发工作负载,而不会使任何一台主机过载。

该系统的发布已经引起了AI社区从业者的关注。高级应用AI工程师Sai Sandeep Kantareddy写道":

Monarch是朝着以最小阻力扩展PyTorch的方向迈出的坚实一步。很好奇它在现实世界的分布式工作负载中的表现——尤其是与Ray或Dask相比。希望能看到更多关于调试支持和大规模容错性的信息。有希望的开始!

Monarch现在是GitHub"上的一个开源项目,包含文档、示例笔记本和Lightning.ai的集成指南。该框架旨在使集群规模的协调像本地开发一样直观,为研究人员和工程师从原型到大规模分布式训练提供更平滑的路径。

原文链接:

https://www.infoq.com/news/2025/10/pytorch-monarch/"