今天,我们在 Modal 上正式发布 VM Sandboxes,专为那些需要赋予其智能体一台完整计算机能力的人打造。
只需一个标志,你就能获得一台功能完备的 Linux VM,具备你从传统modal.Sandbox中所期待的所有便利,而且它开箱即用™。这带来了相同的 API、modal.Image、亚秒级冷启动以及和以往一样的 CPU/内存突发能力,同时支持数十万个并发 Sandbox,正如我们的用户所习惯的那样。
为什么是现在?
Modal 最初的构建目标是实现Serverless GPU 的圣杯,我们基于 gVisor 的运行时让我们能够快速扩展轻量级 GPU 容器,并为我们提供了创造超能力所需的一切,比如快速 GPU 快照。
我们的 Sandbox 产品同样构建在 gVisor 之上,它一直为我们服务得很好。但今年早些时候,我们看到Ramp 构建了一个内部智能体来驱动在 Modal Sandboxes 上的整个软件开发生命周期,于是智能体的发展方向变得显而易见。
智能体,无论是在工作中还是在评估中,都越来越想生活在一个看起来像真实机器的东西里:运行 Docker 栈、本地数据库和开发服务器、图形环境和移动模拟器,甚至摆弄 Linux 内核本身。简而言之,智能体只想要一台计算机。
与此同时,我们容器形态运行时提供的易用性,例如 exec/FS API 或可突发资源模型,是 Modal 体验的核心。当我们着手将 VM Sandboxes 变为现实时,我们知道必须开箱即用地支持如此广泛的用例。
我们做了大量深度工程工作,以延续支持我们 gVisor Sandboxes 的相同 API,包括构建一个自定义运行时。从基于 Rust 的Cloud Hypervisor项目出发,我们叠加了六项创新,涵盖我们的主机文件系统、惰性镜像加载、内存突发和快照技术。我们很高兴在未来几周分享我们为实现这一切所做工作的深度解析。
随着 VM Sandboxes 现已正式发布,任何人都可以为其智能体提供带有本地数据库或 Docker 栈的 Sandboxes,随时构建复杂的生产系统。
VM Sandboxes 实战
在过去几个月里,我们将 VM Sandboxes 交到了早期客户手中,他们已经启动了超过 2000 万台 VM!以下是他们构建的东西。
Linear:在你的真实开发环境中工作的编码智能体
Linear 的Coding Sessions让你无需离开 Linear 就能把 issue 交给智能体。在幕后,Linear 会在 Modal VM Sandbox 中启动用户的完整开发环境。
拥有一台完整的 Linux 机器让 Linear 团队能够更精细地控制每个 Session 内的资源分区和网络,使用 cgroups 和 network namespaces 来防止编码智能体、用户的开发服务器和 Linear 自己的宿主进程相互争抢资源。如今,每个 Linear Coding Session 都运行在 VM Sandbox 上。
“在我们的沙箱中运行 Docker 对我们的客户来说是开创性的,因为他们可以在我们的基础设施之上启动完整的实时开发环境,而无需做任何复杂的事情,比如自带基础镜像。切换过来只需要一个 flag,一切就都能正常工作了。”
Legora:长周期法律智能体评估
Legora构建法律智能体,这些智能体可以在包含数千份文档的法律项目中连续工作数小时。他们使用 VM Sandboxes 来驱动他们的评估,在每个 Sandbox 中构建完整的 Legora 应用,包括 Postgres、DOCX 编辑器和智能体自己的代码沙箱。
“我们的应用作为一组 Docker 服务运行。以前,这意味着我们必须在每一层引入网络和 FUSE 变通方案,才能在沙箱中获得完整的 Docker 功能,从使用我们自己的 DNS 解析的 host-mode 网络,到因为 FUSE 无法挂载而将代码沙箱作为裸进程运行。有了 VM Sandboxes,这一切变得毫无摩擦:Docker 的行为就像在普通 Linux 主机上一样,我们删除了所有这些变通方案。”
Snorkel:模拟真实世界
Snorkel,一家前沿 AI 数据实验室,开发并验证复杂数据集,用于在真实任务上训练和评估前沿 AI 系统。他们每月运行数百万次智能体模拟,使用Harbor,在零停机数据库迁移、负载下热插拔服务以及调试由多个服务支撑的应用程序等场景中测试智能体。
“要让智能体模拟有意义,环境需要代表智能体将要运行的真实世界。许多软件工程任务需要多个容器:例如,要调试一个由 PostgreSQL 数据库支撑的应用程序,智能体可能在一个容器中运行,而应用程序和数据库在其他容器中运行。Modal 的 VM Sandboxes 正好提供了这一点:为每次模拟提供一台完整的机器,这些设置就像在真实世界中一样运行。”
那么,我应该把所有东西都切换过去吗?
简短回答:视情况而定!如果你的工作负载目前能在 Modal Sandboxes 上顺利运行,它将继续在 gVisor 上顺利运行,后者目前仍是我们的默认运行时。
选择使用runtime="vm"当你撞上用户空间的墙壁时:Docker、FUSE 文件系统或小众的 Linux 内核特性。我们让切换变得像翻转一个标志一样简单,两种运行时共享相同的 API、Images 和基于用量的定价。
接下来是什么?
VM Sandboxes 目前有意设计成容器形态,这使我们能够将它们作为即插即用的运行时提供,与你的现有代码完全兼容。展望未来,我们很兴奋能够构建新的原语,充分利用 VM 所提供的扩展能力集和编程模型。与此同时,我们正在努力让 VM 更加弹性和轻量。
智能体只想要一台计算机。从今天起,VM Sandboxes 正式可用在 Modal 上,准备好支持下一个万亿个 Sandboxes。