跳到正文
Modal 官方工程博客·· 29 天前精选AI 评分61

Modal 正式发布 VM Sandboxes:给 Agent 一台完整的 Linux 虚拟机

VM Sandboxes: Full computers for agents

AI 导读

Modal 宣布 VM Sandboxes 正式 GA,只需设置 runtime="vm" 即可获得支持 Docker、FUSE 和内核功能的完整 Linux VM,沿用原有 Sandbox 的 API、modal.Image、亚秒级冷启动和内存爆发能力,早期客户已启动超过 2000 万个 VM。

推荐理由

Modal 官方说明 VM Sandbox 的能力边界、切换方式和 Linear 等早期客户的实际用法,对需要给 Agent 配完整机器的开发者有直接参考价值。

正文 · AI 翻译

今天,我们正式在 Modal 上全面推出 VM Sandboxes,专为那些需要赋予其 agent 一台完整计算机能力的人而打造。

只需一个标志,你就能获得一台功能完备的 Linux VM,拥有你对传统 modal.Sandbox 所期待的一切便利,而且它开箱即用™。这带来了与以往相同的 API、modal.Image、亚秒级冷启动以及 CPU/内存突发能力,同时支持我们用户已习惯的 数十万个并发 Sandbox。

为什么是现在?

Modal 最初是为了实现 Serverless GPU 的圣杯 而构建的,我们基于 gVisor 的运行时使我们能够快速扩展轻量级 GPU 容器,并为我们提供了创造诸如 快速 GPU 快照 等超能力所需的能力。

我们的 Sandbox 产品同样构建在 gVisor 之上,它一直为我们服务得很好。但今年早些时候,我们看到 Ramp 构建了一个内部 agent 来驱动 Modal Sandboxes 上的整个软件开发生命周期,于是 agent 的发展方向变得显而易见。

无论是在工作中还是在评估中,agent 都越来越希望生活在一个看起来像真实机器的东西里:运行 Docker 栈、本地数据库和开发服务器、图形环境和移动模拟器,甚至摆弄 Linux 内核本身。简而言之,agent 只想要一台计算机。

与此同时,我们容器形态运行时提供的易用性,例如 exec/FS API 或 突发资源模型,是 Modal 体验的核心。当我们着手将 VM Sandboxes 变为现实时,我们知道必须开箱即用地支持如此广泛的使用场景。

我们做了大量深度工程工作,以延续支持我们 gVisor Sandboxes 的相同 API,包括构建一个自定义运行时。从基于 Rust 的 Cloud Hypervisor 项目出发,我们在主机文件系统、镜像懒加载、内存突发和快照技术方面叠加了六项创新。我们很高兴能在未来几周内分享深入探讨,介绍我们为使这一切成为可能所做的工作。

随着 VM Sandboxes 现已正式发布,任何人都可以为其 agent 提供带有本地数据库或 Docker 栈的 Sandboxes,随时构建复杂的生产系统。

实际应用中的 VM Sandboxes

在过去几个月里,我们将 VM Sandboxes 交到了早期客户手中,他们已经启动了超过 2000 万台 VM!以下是他们构建的东西。

Linear:在你的真实开发环境中工作的编码 agent

Linear 的 Coding Sessions 让你无需离开 Linear 就能将问题交给 agent。在幕后,Linear 在 Modal VM Sandbox 中启动用户的完整开发环境。

拥有一台完整的 Linux 机器让 Linear 团队能够更精细地控制每个 Session 内的资源分区和网络,使用 cgroups 和网络命名空间来避免编码 agent、用户的开发服务器和 Linear 自己的宿主进程相互争夺资源。如今,每个 Linear Coding Session 都运行在 VM Sandbox 上。

“在我们的 sandbox 中运行 Docker 对我们的客户来说是开创性的,因为他们可以在我们的基础设施之上启动完整的实时开发环境,而无需做任何复杂的事情,比如自带基础镜像。切换只需一个标志,一切就都正常工作了。”
—— Ryan Delaney,Linear 软件工程师

Legora:长周期法律 agent 评估

Legora 构建的法律智能体可以在包含数千份文档的法律项目中连续工作数小时。他们使用 VM Sandboxes 来驱动其 evals,在每个 Sandbox 中构建完整的 Legora 应用,包括 Postgres、DOCX 编辑器以及智能体自身的代码沙箱。

"我们的应用以一组 Docker 服务的形式运行。以前,这意味着我们必须在每一层引入网络和 FUSE 变通方案,才能在沙箱中获得完整的 Docker 功能,从使用自有 DNS 解析的主机模式网络,到因为 FUSE 无法挂载而将代码沙箱作为裸进程运行。有了 VM Sandboxes,一切都变得顺畅无阻:Docker 的行为就像在普通 Linux 主机上一样,我们删掉了所有这些变通方案。"
—— Eirik Drage Steen,Legora 技术团队成员

Snorkel:模拟真实世界

Snorkel 是一家前沿 AI 数据实验室,为训练和评估前沿 AI 系统在真实任务上的表现而开发和验证复杂数据集。他们每月使用 Harbor 运行数百万次智能体模拟,在零停机数据库迁移、负载下热切换服务以及调试由多个服务支撑的应用等场景中测试智能体。

"要让智能体模拟有意义,环境必须能够代表智能体将要运行的真实世界。许多软件工程任务需要多个容器:例如,要调试一个由 PostgreSQL 数据库支撑的应用,智能体可能在一个容器中运行,而应用和数据库在其他容器中运行。Modal 的 VM Sandboxes 正好提供了这一点:每次模拟都有一台完整的机器,这些配置在其中就像在真实世界中一样运行。"
—— Rustem Feyzkhanov,Snorkel AI 平台高级工程经理

那么,我应该把所有东西都切换过去吗?

简短回答:视情况而定!如果你的工作负载目前在 Modal Sandboxes 上运行良好,那么它在 gVisor 上也会继续运行良好,gVisor 目前仍是我们的默认运行时。

当你撞上用户空间的墙壁时,就该求助于 runtime="vm":Docker、FUSE 文件系统或小众的 Linux 内核特性。我们让切换变得像翻转一个标志一样简单,两种运行时共享相同的 API、Images 和基于用量的定价。

接下来是什么?

如今的 VM Sandboxes 有意保持容器形态,这使我们能够将其作为可直接替换的运行时提供,与你现有的代码完全兼容。展望未来,我们很期待构建新的原语,以充分利用 VM 所提供的扩展能力和编程模型。与此同时,我们正在努力让 VM 更加弹性和轻量。

智能体只想要一台计算机。从今天起,VM Sandboxes 已在 Modal 上正式可用,准备好支撑下一个万亿级 Sandbox。

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