上周干了件有点闲的事。把一台落灰的 N100 小主机、两台旧笔记本翻出来,用 iroh 组了个点对点网络,想试试分布式推理这套东西在普通人家里到底能不能跑。
折腾了整整两天。中间想过放弃,也有几次真的跑通了。这篇就当技术笔记,把我踩的坑和想明白的事记下来。
Mesh LLM 到底是什么,别被名词唬住
听着很唬人,说白了就一句话:把一个大模型拆开,分布在多台机器上一起推理。你的笔记本负责算前几层,小主机算中间几层,另一台算后面几层,中间的数据在各个节点之间传。
为什么有人搞这个?因为一屋子的设备大部分时间是闲着的。一台带独显的游戏本,跑训练想都别想,但跑一个小参数量模型的几层,绰绰有余。把这些闲置算力凑一块,理论上能省下租云 GPU 的钱。
iroh 解决了最烦的那件事:NAT 穿透
自己在家组分布式节点,头号拦路虎不是算力,是网络。两台机器可能都在不同的路由器后面,互相根本连不上。传统的办法要么配端口转发,要么搭个中心服务器做中转,麻烦且烧钱。
iroh 走的是另一条路。它用一对公钥来标识节点,两台机器自动打洞建立直连,打不通的时候才退回到加密中继转发。官方资料里有一句话我印象很深——Block 的工程师说他们”把云上、机房里、甚至清洁间角落的 GPU 池成一个 mesh,没有中心服务器,也不用配 NAT”。
这一点对我这种不想折腾服务器的人来说,是决定性的。命令行里跑几条命令,两台机器就连上了,中间过程黑盒但可靠。
我实际搭的最小系统
硬件和网络
一台 N100 小主机当”协调节点”,两台旧笔记本各带一块入门独显。三台都在同一个局域网,但为了模拟真实情况,我故意让其中一台走了热点。iroh 检测到局域网直连后几乎没走中继,延迟很低。
模型怎么切
我用了一个 7B 的模型做测试,按照层数切成三段,每段塞进一个节点。这里第一个坑就来了:切分不是平均分就好。层与层之间的激活值传输是有开销的,如果某一台机器网络差,它会变成整条流水线里最慢的那块木板,严重拖后腿。
我一开始把网络最差的那台放在中间,结果整体吞吐直接掉了一大截。把它挪到最后一段,同时把切分比例调成 4:2:4,才顺过来。
延迟和算力:说实话没那么美好
跑通归跑通,体感嘛……别指望跟本地单卡一样快。token 生成速度受限于最慢节点的网络往返,在局域网里能接受,出了局域网就很难看。
但有个场景是成立的:批量、离线、不要求实时返回的任务。比如晚上挂机处理一批文档摘要、跑数据清洗,这时候慢一点无所谓,省下的云 GPU 费用是真金白银。
数据支撑:闲置算力比你想的多
一块消费级的 RTX 4090,FP16 算力大概 165 TFLOPS,这还只是一张卡。一个普通技术爱好者的家里,攒下两三张能跑小模型的设备并不难。iroh 官方案例里甚至提到,有团队用这种方式把计算预算砍了一半。
换句话说,问题从来不是”有没有算力”,而是”这些算力怎么连起来、怎么调度”。iroh 这类点对点网络库,解决的正是后半句。
我的结论
Mesh LLM 现在还不是”人人可用”的东西,工程细节多,调试成本高。但它的方向是对的:把分散的、闲置的算力重新组织起来,绕开中心化的云。
如果你手上正好有几台闲置设备,又愿意花一个周末折腾,这套东西值得一试。我不建议拿它跑线上生产业务,但作为一个低成本的学习项目,或者一个”晚上慢慢跑”的离线任务队列,它已经能用了。
