跳到正文
北京时间
原文
Modal 官方工程博客(RSS)· Peyton Walters·· 2 小时前精选AI 评分67

Modal Clusters 正式发布,通过 @modal.clustered 提供多节点 GPU 集群

Modal Clusters are generally available

AI 导读

Modal 宣布 Modal Clusters 正式可用,通过一个装饰器 @modal.clustered 即可获得多节点集群,节点间经 InfiniBand verbs 通信可达 6.4 Tbps,自动配置 PyTorch 和 NCCL。

推荐理由

官方宣布多节点集群正式可用,文中解释了 gang scheduler 与 RDMA 的实现细节,并给出 Decagon、1x、Runway 的实际用法。

正文 · AI 翻译

组织需要拥有自己的智能才能成功。然而,大规模训练和提供这种智能需要每秒千万亿次浮点运算的计算能力和每秒太比特级的网络,并分布在众多节点上。但拥有智能并不意味着必须拥有那些硬件。

在过去 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

待处理

集群 B 2 × H100:8

待处理

集群

区域 1 4 个空闲

区域 2 1 个空闲

b

空闲节点 使用中 + 新容量

观察。 一次性查看整个集群和每个待处理集群。

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

RDMA 支持

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

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

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

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

rdma=True 会设置什么

RDMA 网络结构 每节点高达 6.4 Tbps

你的集群 · 4 个节点

节点 1

节点 2

节点 3

节点 4

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

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

在 Clusters 上构建智能应用的客户

我们为基于多节点集群构建的前沿研究和生产应用感到自豪。

Decagon 训练出了更好的客户体验代理

Decagon 为客户体验构建 AI 代理。通过与 Modal 合作,Decagon 使用 Modal Clusters 上的 Miles 微调了高达一万亿参数的开源模型,使其适应客户交互的需求,并重点关注响应质量和推理效率。作为此次合作的一部分,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 需要灵活的工作负载;有些日子是在单个脊上跑几个多节点任务,而另一些日子我们想一次性启动一堆单节点评估,以深入了解模型性能。Modal Clusters 让我们能够通过 RDMA 扩展到数百块 B300,然后在完成后将其关闭,开销极小。我们只为使用量付费,团队得以思考如何为 NEO 构建智能,而不是操心 GPU 以及去哪里找 GPU。”

Sam Sinha,1x 世界模型实验室负责人

Runway 的前沿模型让创意成真

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

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

Kamil Sindi,Runway 首席技术官

立即开始

Modal Clusters 现已面向所有工作区开放。无论你是在扩展推理,还是在对前沿模型进行后训练,只需一行代码即可扩展你的 Modal 应用。集群规模受你所在计划的 GPU 限制约束,因此如果你在规划大项目,请联系我们。

开始使用:

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

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

来源:Modal 官方工程博客(RSS) · modal.com