iroh发布分布式LLM框架支持多节点协作推理;HN获347分关注,对构建分布式AI系统的开发者具有参考价值。
当人们想到运行大型语言模型时,脑海里浮现的通常是数据中心:一排排属于别人的 GPU 机架、按量计费的 API,以及一张随着业务成功而逐月增长的账单。你把 prompt 发送到一个黑盒里,只能寄希望于价格、模型和隐私政策始终保持注册时的样子。
对许多团队来说,这是一笔很不划算的交易。你放弃了对模型何时变更、数据流向何处,以及由什么硬件运行工作负载的控制权。随着使用量增长,账单也会水涨船高,而你唯一能做的只有“支付更多费用”。
Mesh LLM 提供了另一种形态。它把你已有的 GPU 和内存汇集起来,可以跨任意数量的机器扩展,并将整个系统作为一个兼容 OpenAI 的 API 对外提供。先启动一个节点,以后再逐步添加。由 mesh 决定模型是在你面前的机器上运行、路由到某个 peer,还是拆分到多台机器上执行。
流行的模型大多是单体架构。多数人通过 UI 或 API key 使用它们,并付费让大型服务商运行一切。这确实很方便,但也意味着交出了控制权。你无法控制模型何时更新、它在哪种内存环境中运行,也无法决定底层使用什么硬件。
许多依赖这些模型的企业和服务想要的恰恰相反:更多控制权、更强的可插拔性,以及更低的成本。他们的办公室、储物间和办公桌下放着不少 GPU。真正缺少的,是一种让这些机器像一台机器那样协同工作的方式。
它的主张很简单:不必购买更大的 GPU,也能运行更大的模型。你可以在团队内部私密共享算力,也可以向全世界公开共享,为 Agent 和聊天应用提供支持。把任意 OpenAI 客户端指向 http://localhost:9337/v1,从此不必关心任务究竟在哪里执行。
在底层,Mesh LLM 将模型计算分布到由 iroh endpoint 组成的 mesh 中。一个请求可以通过三种方式得到处理:
在本机 GPU 上运行。
路由到已经加载该模型的 peer。
如果模型大到任何一台机器都无法单独容纳,就以 pipeline 的形式将它拆分到多台机器上运行。
这套架构支持插件化。插件通过 manifest 声明自己提供的能力,由 runtime 启动插件、路由调用,并通过 MCP、HTTP、inference 和 mesh event 暴露相应能力。catalog 内置了 40 多个模型,既有可在笔记本电脑上运行的 5 亿参数模型,也有参数规模达 235B 的 mixture-of-experts 巨型模型。
针对这些巨型模型,Mesh LLM 提供了一种拆分模式,内部称为“Skippy”。模型会按照 layer 范围划分成多个 stage:第一个节点负责 layer 0 到 15,下一个节点负责 layer 16 到 31,依此类推,形成完整的 pipeline。activation 从一个 stage 流向下一个 stage,因此多台配置普通的机器可以共同运行一个它们各自都无法单独容纳的模型。OpenAI 客户端完全感知不到这些细节,它始终只需与 localhost 通信。
每个节点,无论是提供模型服务还是仅仅发送请求,启动时都会创建一个 iroh endpoint。这个 endpoint 既是节点的身份,也是一把 public key,同时还是该节点唯一的网络入口。系统中不存在 central server。无论两个节点位于何处,iroh 都会处理建立直接、经过身份验证的 QUIC 连接所需的 hole-punching、NAT traversal,以及 relay fallback。
为了确保这套机制能够在开放的互联网上持续运行,Mesh LLM 在不同地区部署了两个 iroh relay。这样,无法直接连接的节点始终可以使用附近的备用路径。
整个协议建立在 QUIC 的 ALPN negotiation 之上,共有三种:
在主要的 mesh-llm/1 连接中,一切都是双向 QUIC stream。每条 stream 都以一个字节作为开头,用于标识该 stream 的类型。单个连接可以承载 gossip、inference、route query 和 peer lifecycle event,并根据第一个字节完成 demux:
真正巧妙之处在于它带来的能力。iroh 可以在任意两台机器之间提供经过身份验证、能够穿越 NAT 的 QUIC 连接,并使用 public key 寻址。因此,“路由到某个 peer”和“把 activation 流式传输到下一个 pipeline stage”,与“和 localhost 通信”使用的是同一种原语,区别只在于 endpoint ID 不同。你不再需要操心网络问题。
iroh 提供安全传输能力。Mesh LLM 则在其上构建自己的 gossip layer,从而能够精确控制谁可以加入 mesh、哪些版本彼此兼容,以及应该信任哪些 peer。
用户可以安装这款轻量级软件,体积约为 18 MB,然后选择加入 public mesh,或者配置 private deployment。对于任何标准 OpenAI 客户端,这套系统都表现为 localhost:9337/v1。
基于 iroh Swift SDK 构建的移动应用也即将推出。项目计划支持 ACP 这一新兴的 Agent 标准,让其他客户端也能加入 mesh。贯穿整个项目的理念,正是最初推动它诞生的目标:更多 peer-to-peer,更少封闭的服务器,并且没有 lock-in。