@charles_irl: https://x.com/charles_irl/status/2073975754833203706

X AI KOLs Following 产品

摘要

在一系列推文中,Modal 的创始人解释说,这个平台最好被理解为一台计算机,并将传统计算机架构与 Modal 的无服务器云基础设施进行了类比。

https://t.co/q8gm9EG21D
查看原文
查看缓存全文

缓存时间: 2026/07/06 04:00

Modal 就是一台计算机。

经常有人问我:“@Modal 是什么?”大家想要一个简单、快速、直观的答案,所以我总是不由自主地拿其他产品或服务来打比方。

但大多数比喻我并不喜欢。

  • “Modal 就是算力界的 Uber” —— 但 1) 现在已经不是 2016 年了,而且 2) 我们运营的也不是一个双边开放市场。

  • “Modal 是一个新型云” —— 但我们不运营硬件,你也不直接租用机器。

  • “Modal 是一个推理提供商” —— 但我们不卖 token,我们卖处理器秒和字节秒,你可以用它们来提供推理服务。我们更像是“推理提供商的提供商”。

  • “Modal 是 AI 基础设施” —— 没错,它很适合干这个,但它的能力远不止于此!

所以我希望我能这样说:“Modal 就是一台计算机”。

什么是计算机?

计算机是一种对信息执行算术和逻辑运算程序的机器。

一台典型的计算机大致是这样的:

一台计算机。

一台计算机。

信息存在于一个分层的存储体系中,从算术/逻辑单元 (ALU) 内部的寄存器,到磁盘上文件系统中的块。最关键的一层是内存,只要计算机有电,它就能保存信息。任何想要从外部世界进入或离开的信息,都必须先经过内存,通过内存映射输入输出 (I/O) 进行。通过网络其他计算机进行信息交换是一个重要的特殊场景,这些信息会通过网络接口卡 (NIC) 传输。

什么是 Modal?

Modal 是一台对信息执行算术和逻辑运算程序的机器。一台计算机!

它大致是这样的:

Modal,它是一台计算机。

Modal,它是一台计算机。

信息存在于一个分层的存储体系中,从用户容器内部的内存对象存储中的条目。最关键的一层是容器运行时的内存,只要工作进程在运行,它就能保存信息。任何想要从外部世界进入或离开的信息,都必须先经过这块内存,通过与我们的 输入/输出平面 进行网络通信。通过网络其他计算机进行信息交换是一个重要的特殊场景,这些信息会通过我们的 路由平面 或直接的隧道 传输。

程序如何在 Modal 和其他计算机上运行?

程序运行在核心和容器上。

程序运行在核心和容器上。

在典型计算机中,ALU 从内存中获取输入和指令,并将其应用到寄存器中的操作数上。这些程序可能是无状态工具,消费标准输入并产生标准输出,就像大多数“Unix 风格”工具那样。或者它们可能是带有权限模型的通用 Linux 进程,就像大多数容器那样。或者它们专门是监听网络请求的 Linux 进程

这些指令需要由加载器放入内存,加载器通常是计算机操作系统的一部分,操作系统负责管理、虚拟化和分时共享计算机的所有资源,以多租户的效率提供单租户的安全性。

在 Modal 中,容器从容器运行时接收输入并对其应用程序。这些程序可能是无状态的 Python 函数,消费输入并产生输出,就像 Modal Functions 那样。或者它们可能是带有权限模型的通用 Linux 进程,就像 Modal Sandboxes 那样。或者它们专门是监听 HTTP 请求的 Linux 进程,就像 Modal Servers 那样。

容器需要由容器运行时的一部分放置到机器上,容器运行时负责管理、虚拟化和分时共享我们运营的所有云资源,以多租户的效率提供单租户的安全性。

程序如何进入 Modal 和其他计算机内部?

程序通常以与定义格式不同的“编译”状态存储,然后在执行时被拉入。

程序通常以与定义格式不同的“编译”状态存储,然后在执行时被拉入。

在典型计算机的内存中,指令通常必须首先从源代码编译为目标代码 —— 编译一次,然后存储在磁盘上,当程序被转化为进程并运行时,由操作系统检索。许多程序实例使用相同、共享的目标代码,比如 glibc.so,因此操作系统会安排这些数据在它们之间透明地复用。在这些共享组件中,最关键的是驱动程序,它们通过内存与设备通信。这些由操作系统特殊处理。

在 Modal 中,容器镜像通常必须首先从定义“编译”为文件系统 —— 编译一次,然后放置到对象存储中,当镜像被转化为容器并运行时,由容器运行时检索。许多容器使用相同的文件,比如 glibc.so 或 PyTorch,因此容器运行时会安排这些数据在它们之间透明地复用。在这些共享组件中,最关键的是驱动程序,它们通过容器运行时与设备通信。这些由容器运行时特殊处理。

信息存储在 Modal 和其他计算机的哪里?

最外层的存储层级负责信息的长期持久化。

最外层的存储层级负责信息的长期持久化。

在典型计算机中,信息只有存储在寄存器中时,才能在 ALU 内部被直接操作。但寄存器相对于我们程序的野心来说很小,因此大多数信息在程序的整个生命周期内都保存在内存中多余的数据会被推到磁盘上。为了在“所有信息都在寄存器中”的性能和“所有信息都在磁盘上”的容量之间提供折中,硬件和操作系统提供了缓存层级。这些缓存的最内层包括 L0/L1 CPU 缓存和 TLB,由硬件透明管理。GPU 还提供程序员可管理的暂存器,即 SM 的共享内存。这些缓存的最外层是文件系统。程序员可以将额外信息放置在其他系统上,例如数据库或对象存储中。

在 Modal 中,信息只有存储在内存中时,才能在容器内被直接操作。但内存相对于我们容器的野心来说很小,因此大多数信息在程序的整个生命周期内都保存在磁盘上多余的数据会被推到对象存储中。为了在“所有信息都在内存中”的性能和“所有信息都在对象存储中”的容量之间提供折中,容器运行时提供了缓存层级。这些缓存的最内层是页面缓存,由容器运行时透明管理。Modal 还提供程序员可管理的暂存器,即机器的 ephemeral_disk。这些缓存的最外层由 Modal Volumes 组成。程序员可以将额外信息放置在其他系统上,例如数据库或对象存储中。

信息如何进入或离开 Modal 和其他计算机?

信息通过接口经过中央(临时)存储组件。

信息通过接口经过中央(临时)存储组件。

在典型计算机中,输入/输出信息有两个主要通道:键盘+鼠标/屏幕用于提供给/来自人类的信息;以及网络用于提供给/来自其他计算机的信息。这些信息经过操作系统中的路由逻辑和内存缓冲区到达正在运行的程序。在极端性能需求下,这些可以部分绕过,通过远程直接内存访问(通常使用 InfiniBand Verbs 通信)将远程程序与我们的程序直接连接。

在 Modal 中,输入/输出信息有两个主要通道:Modal 输入/输出平面用于提供给/来自 Modal Functions 调用者或 Modal Sandboxes 执行者的信息;以及Modal 路由平面用于通过 HTTP 提供给/来自 Modal Servers 的信息。这些信息经过 Modal 中的路由逻辑和存储缓冲区到达正在运行的容器。在极端性能需求下,这些可以部分绕过,通过 Modal Tunnels(使用 TCP 流或 UDP 数据报通信)将远程程序与容器直接连接。

如果 Modal 只是“一台计算机”,那为什么要用它?难道其他计算机不够好吗?

操作系统从原始硬件中构建了一个本质上虚拟的机器。进程虚拟化 CPU 时间;内存虚拟化 RAM;文件系统虚拟化磁盘;网络栈虚拟化带宽。这种虚拟化使得操作系统能够将需求聚合、隔离并多路复用到该硬件上,从而提高资源效率。

Modal 本质上也是同一脉络下的虚拟计算机。但它不是操作单台机器中的原始硬件,而是操作来自几十个云提供商的所有硬件。通过构建另一层虚拟化,我们可以在更宏大的规模上聚合、隔离并多路复用更高抽象层次的需求,从而提高资源效率。在计算资源紧张的当下,这是一项非常重要的工程任务!

单个云提供商也有类似的做法,但依我们看,对于大多数工程团队来说,它们过于底层,不利于高效工作。至少,当我们在开发其他应用程序并观察同行的工作时,就有这种感觉,所以我们决定干脆自己打造我们认为每个人都需要的那个东西。

如果你想和我们一起构建那台计算机,我们正在招聘。

相似文章