Skip to content

架构揭秘:控制平面与数据平面

Monarch 的高性能源于其独特的设计哲学:控制平面与数据平面的严格分离

1. 双层架构

控制平面 (Control Plane) - Python

  • 职责:负责逻辑编排、任务分发、状态监控。
  • 实现:基于 Python。用户编写的脚本运行在控制平面。
  • 通信:使用高效的 多播树 (Multicast Trees)。当控制器调用 mesh.method() 时,指令并非通过简单的 for 循环逐个发送,而是通过树状结构层层转发,极大降低了大规模集群下的延迟。

数据平面 (Data Plane) - Rust + RDMA

  • 职责:负责重型数据的搬运(Tensor, Model Weights)。
  • 实现:基于 Rust 开发的 Hyperactor 引擎。
  • 通信:直接利用 RDMA (Remote Direct Memory Access)

2. 为什么需要分离?

在 AI 训练中,控制指令("开始训练第 N 步")非常小,但频率高;数据传输("同步 70B 模型的梯度")非常大。

如果混合在一起处理,大数据传输会阻塞控制指令的发送,导致 GPU 空转。

Monarch 的设计保证了:

  1. 控制指令 走低延迟的 RPC 通道。
  2. 数据传输 走高吞吐的 RDMA 通道,且绕过 CPU

3. Hyperactor 与无畏并发

Monarch 的底层是一个名为 Hyperactor 的高性能分布式系统。它用 Rust 编写,利用了 Rust 的内存安全和并发优势。

  • Fearless Concurrency:Rust 的所有权机制保证了在处理大量并发消息时不会出现数据竞争。
  • Zero-Copy:Hyperactor 能够直接管理 GPU 显存指针,实现从网卡到显存的直通数据路径。

这使得 Monarch 能够支撑数千卡规模的超大集群,同时保持极低的调度开销。

Monarch中文教程