Modal 发布 Modal Batch,一行代码处理 100 万个任务
Introducing Modal Batch: Process 1 million jobs with 1 line of code
Modal 发布 Modal Batch,一个由新的持久化队列系统支撑的批处理接口,通过 .spawn_map 一行代码即可提交百万级输入。队列容量从 2000 个输入提升到 100 万,任务执行保证期从 1 天延长到 7 天,Harvey、Suno、Achira 已在使用,其中 Harvey 的数据处理管线提速 10 倍。
原文给出了队列容量与执行时限的具体提升,读者可据此判断大规模批处理任务的编排成本变化。
我们很高兴地宣布推出 Modal Batch——一个由全新的持久化队列系统支持的新接口,专为让作业处理变得简单、可扩展且容错而构建。
我们的许多 AI 客户都有批处理需求。从为训练预处理音频片段到离线嵌入文档,客户需要一种高效的方式来一次性转换数百万个数据输入。Modal 超快的容器基础设施使我们特别适合扩展到这一用例。Harvey、Suno 和 Achira 等公司如今已经在使用 Modal Batch。
工作原理
假设你需要嵌入一百万个视频片段。
首先,定义一个执行嵌入的 Modal Function。如果需要,你可以为该 Function 指定自定义镜像或特定硬件。
接下来,以你那一百万个视频片段作为输入,在该 Function 上调用 .spawn_map。这将立即在云端启动数千个容器,并保证可靠地运行至完成,处理你的所有输入。
就是这样!在这里观看我们启动 100 多个容器来处理 25,000 个输入:
等等,我以为 Modal 上已经可以实现批处理了
不是这样的。你以前可能用过 .map 或 .spawn 来一次性处理多个输入,但我们引入了一系列跨越式的改进,使 Modal 更适合大规模作业。
- 我们彻底改造了队列系统,使其能够处理多 500 倍的输入。现在你可以一次性排队 100 万个输入,而之前只有 2000 个。
- 我们现在保证在你启动作业批处理后,输入最多可在 7 天内执行,而之前只有 1 天。
- 我们引入了一个原生处理器
.spawn_map来生成输入批次。以前,你必须自己管理异步逻辑,以便在你的输入上并发调用.spawn。
为什么选择 Modal Batch 而非其他方案
搭建批处理很复杂,因为你通常要处理一个完整的分布式系统,以应对负载存储、批处理编排、云资源扩缩容、监控等。Modal Batch 利用了 Modal 现有的优势,让你能够专注于业务逻辑而非基础设施。
企业级可扩展性。 我们定制的容器运行时、文件系统和调度器使我们能够立即启动数千个容器——包括带 GPU 的容器,无需预留——来完成你的作业。
符合人体工程学的用户体验。 启动作业批处理无需离开你的 IDE。没有云控制台、YAML 文件或容器编排系统需要管理。
易于调试。 Modal 的仪表板让你可以深入查看单个输入和容器的日志与指标,以便快速定位故障。你还可以查看每个作业批处理的聚合指标。
与你其余的 ML 流水线集成。 由于 Modal 是一个通用计算平台,你可以使用相同的 Python 用户体验,轻松地将用于批处理、训练或推理的 Function 串联起来。
客户故事
自我们推出测试版以来,我们的客户已经在 Modal Batch 之上构建了各种各样的应用。
加速 Harvey 的文档处理
Harvey 是一个供法律团队用来加速基于文档的工作流程的 AI 平台。其中一个关键功能是让用户能够从判例法、税务法规和立法知识库中快速提取相关见解。为此提供支持,需要他们的数据团队对数百万份文档进行预处理、分块和嵌入——这正是 Modal 发挥作用的地方。
使用 Modal Batch 后,Harvey 发现其数据处理流水线速度提升了 10 倍,因为 Modal 能够快速将文档输入分散到 1000 个容器中。此前,该团队使用 Argo 和 Airflow 等开源编排器,这意味着他们必须自行管理底层基础设施。这导致了高昂的运营成本和有限的可扩展性。
“使用旧的自研系统时,我们必须调整工作节点数量、实例大小、并行化策略等所有这些东西,这非常耗时,而且不直接产生业务价值。Modal 神奇地处理了所有这些。
”
— Samarth Goel, Harvey 的机器学习工程师
在 Suno 扩展音频处理
Suno 正凭借其最先进的音频模型推动 AI 生成音乐的边界。他们最新的 4.5 模型能够以 48kHz 立体声生成长达 8 分钟的高保真音频。但出色的音频质量也带来了巨大的数据处理需求。训练这些模型需要预处理海量数据集、运行嵌入以及准备训练数据——所有这些的规模通常都需要一个大型专用 GPU 云和一个团队来管理。
Modal 使 Suno 能够:
- 在短时间内于数千个 GPU 上启动批处理作业,无需搭建基础设施
- 在高带宽音频数据上运行 GPU 加速的预处理模型
- 维护“开箱即用”的简单脚本,无需持续维护
“Modal 的自动扩缩容能力让我们两全其美。我们需要时就能获得大规模 GPU 云的能力,又无需管理竞价实例或云特定基础设施的复杂性。
”
— Georg Kucsko, Suno 的 CTO
在 Achira 准备科学数据集
Achira 正在通过构建原子级基础模拟模型来推进药物发现。其工作流程的一个关键部分涉及处理和验证用于模型训练的量子力学数据集。这些数据集虽然信号很强,但需要额外处理以添加并非总是存在的重要元数据。
“处理外部量子力学数据集会带来独特的挑战。作业可能以多种方式失败——从底层分析包抛出的低级错误,到与存储服务器通信时的瞬时问题。Modal 的重试机制和批处理原语使我们的数据流水线稳健得多。
”
— Liz Decolvenaere, Achira 的量子化学工程师
下一步是什么?
我们正在扩展 Modal 的批处理能力,同时保持简单 函数 接口的核心原则。即将推出:
- 函数缓存:绝不再运行相同的计算两次。
- 改进的人体工学:以编程方式与你的批处理作业交互——从 Python 代码中更改优先级、检查进度和取消作业。
- 其他语言支持:使用我们的 JavaScript 或其他语言 SDK 来编写你的批处理作业。
立即开始
准备好用一种极其简单的方式为你的批处理作业投入一千个容器了吗?
- 安装 Modal:
pip install modal - 创建账户:
python -m modal setup - 查看我们的批处理文档
如果你有问题或想分享功能请求,请加入我们的 Slack 社区。我们迫不及待想看到你构建的东西!
来源:Modal Blog · modal.com