组织需要拥有自己的智能才能成功。然而,大规模训练和提供这种智能需要 petaFLOP/s 级的计算和 terabit/s 级的网络,分布在众多节点上。但拥有智能并不意味着必须拥有那些硬件。

在过去 1.5 年里,我们一直在实战测试一个新原语:Modal Clusters。今天,我们很高兴地宣布,它们已通过单个装饰器正式可用,@modal.clustered:

Modal Clusters 与所有现有 Modal 原语无缝集成。将你的检查点写入Volumes,通过Cloud Bucket Mounts加载数据,并用Queues编排你的任务。在现有集成之上,你还可获得:

  • 节点之间通过 InfiniBand verbs 通信,速度最高可达 6.4 Tbps,并自动为 PyTorch 和 NCCL 配置
  • 你的代码在请求后数秒内即可在集群上运行,按秒计费
  • 我们强大、自动化的GPU 健康保障与修复,现已扩展到 RDMA 健康

在其他平台上,按需访问集群意味着按小时付费或进行预留。在 Modal 上,你可以随时运行,并且只为实际使用量付费。

重新构想 Modal 技术栈

集群(容器组)是 Modal 技术栈中一种全新的工作单元。为了支持它们,我们必须在技术栈的每一层构建新系统。

Gang 调度:一次放置 N 个节点

Modal 的传统调度器是贪心的。集群中的所有节点都会不断轮询是否有新工作可做,而我们的调度器会检查其积压队列中是否有符合条件的工作,如果合适就分配该工作。围绕放置、碎片化和成本有一些启发式策略,但从根本上说,调度器是以逐节点的方式决定某个节点是否应领取某项工作。

对于多节点调度,单节点视角并不足够——调度的原子单位从单个节点扩展为 N 个节点。这意味着我们必须构建一个全新的调度器,并带有显式的观察、规划、执行循环:查看整个集群,为每个待处理集群决定放置位置,然后执行。这也是 Modal 其余调度系统正在转向的方向。在每次迭代中,gang 调度器:

  1. 收集系统中所有多节点工作负载的元数据
  2. 将所有工作负载分配到节点,按 AZ 和网络 ID 分组
  3. 为当前无法容纳的工作负载启动新的容量
  4. 向所有存活节点发送调度通知

一次 gang 调度器迭代

集群 A 4 × B300:8

pending

集群 B 2 × H100:8

pending

Fleet

Zone 1 4 free

Zone 2 1 free

b

空闲节点 使用中 +新容量

观察。一次性查看整个 fleet 和每个 pending 集群。

gang 调度器从与 Modal 上其他所有内容相同的容量池中拉取资源,从而实现数秒内获取集群。这是市场上获取多节点集群的最快时间,也是唯一提供真正 serverless 定价的地方。

RDMA 支持

多节点工作负载会传输大量字节。每个训练步骤GLM 4.7 的每个训练步骤都必须从训练器向 rollout 引擎同步约 717 GB 的 BF16 权重:在 50 Gbps TCP 下需要近两分钟,在 RDMA 下不到两秒,并且要重复数千个步骤。对于推理,Llama 3.1 70B 上的 prefill-decode 分离每个 32k token 的提示要传输约 10 GB 的 KV cache,而且必须在几百毫秒的首 token 时间预算内到达。

RDMA(Remote Direct Memory Access,远程直接内存访问)允许 GPU 或 CPU 内存通过网络在主机之间传输,而无需经过内核空间。跳过软件层使 RDMA 能够达到高达 6.4 Tbps!这一能力对大多数多节点工作负载至关重要——训练需要它来实现 DDP all-reduce 以及所有类型的模型并行;推理在进行 PD 分离时需要它来传输 KV cache。

RDMA 的支持以困难著称。每个云提供商的实现都略有不同,需要不同的驱动、环境变量和用户空间库。

我们设定了一个雄心勃勃的目标:将所有这些复杂性隐藏在一个标志之后,rdma=True。今天,你可以设置这个标志,任何使用 PyTorch 与 NCCL 的工作负载都能开箱即用。我们已在多个云上自动化了 RDMA 设置,让你能够深度访问按需集群容量,而无需承担任何麻烦。

什么rdma=True设置

RDMA fabric 每节点高达 6.4 Tbps

你的集群 · 4 个节点

节点 1

节点 2

节点 3

节点 4

数据中心。Modal 将你集群的全部 4 个节点放在同一区域内的一个 RDMA 网络上。

这个集成对我们来说仍然不够好。由于 Modal 运行的是多租户计算环境,我们更倾向于使用安全的 gVisor 容器运行时,而非runc。然而,它并不支持 RDMA,所以我们自己把它构建进了 gVisor。我们已将这些改动上游化,以便 OSS 生态中的其他人也能用上安全的 RDMA。

客户在 Clusters 上构建智能应用

我们为建立在多节点集群之上的前沿研究和生产应用感到自豪。

Decagon 训练了一个更好的客户体验智能体

Decagon为客户体验构建 AI 智能体。在与 Modal 的合作中,Decagon 使用Miles在 Modal Clusters 上微调了参数量高达一万亿的开源模型,使其贴合客户交互的需求,重点关注响应质量和推理效率。作为此次合作的一部分,Modal为 Miles 贡献了 LoRA 支持,并帮助建立了一套稳定、开放的训练配方。

“模型性能是 Decagon 客户体验的核心。我们的智能体需要理解每家企业的细微差别,并可靠地处理复杂的客户对话。微调让我们能够围绕这些需求塑造模型行为,但在万亿参数规模上做到这一点是一项巨大的基础设施挑战。Modal Clusters 帮助我们在这一规模上进行训练,让我们能够专注于提升智能体的质量和可靠性。”

Cyrus Asgari,Decagon 研究负责人

Stacked Decagon chat windows for several brands, with an agent asking a customer how it can help

1x 预训练 NEO

1x正在打造家用机器人 NEO。NEO 的背后是一个世界模型,1x 在 Modal Clusters 上对其进行预训练:用于大规模训练的多节点 B300 集群(配备 RDMA),以及用于评估模型表现的大批单节点任务。同一套调度器同时处理两者,因此 1x 可以在需要展开实验时突发扩展到数百块 GPU,并在两次运行之间缩减回来。

“构建 NEO 需要灵活的工作负载;有些天是在单个 spine 上跑几次多节点运行,而另一些天我们想一次性启动一堆单节点评估,以深入理解模型性能。Modal Clusters 让我们能够借助 RDMA 扩展到数百块 B300,完成后又能将其关停,开销极低。我们只为实际使用的部分付费,团队得以思考如何为 NEO 构建智能,而不是操心 GPU 以及去哪里找 GPU。”

Sam Sinha,World Model Lab 负责人,1x

Runway 的前沿模型将创意变为现实

Runway正在为世界模型时代构建现实世界的智能。他们最新的前沿视频生成与编辑模型,Gen-4.5和Aleph 2.0,能在数秒内生成制作级质量的视频。每一次生成都使用 Modal Clusters,将推理分散到多个节点上,而 Modal 的自动扩缩器会将这些集群作为一个整体在我们的全球算力池中扩缩。

“多节点推理是一个颇具挑战的基础设施问题。它让弹性变得困难,而弹性是推理工作负载的基本要求。Modal 的平台,凭借开箱即用的集群和可配置自动扩缩等功能,帮助我们快速扩展多个生产推理工作负载,以满足不断增长的需求。”

Kamil Sindi,Runway 首席技术官

立即开始

Modal Clusters 现已面向所有工作区开放。无论你是在扩展推理,还是在后训练一个前沿模型,只需一行代码即可扩展你的 Modal App。集群规模受你所在套餐的 GPU 上限约束,所以如果你有宏大的计划,请联系我们。

开始使用:

  1. 安装 Modal:pip install modal
  2. 创建账户:python -m modal setup
  3. 查看我们的多节点集群文档

我们迫不及待想看到你构建的作品。