拉斯维加斯CES开幕了,铺天盖地全是“AI PC”和“AI 手机”。我盯着新闻稿里那些NPU的TOPS算力参数,胃里一阵翻腾。这他妈不是硬件升级,这是算力军备竞赛,是逼着所有软件开发者重新站队。我的Rembg Pro,一个靠云端API和本地CPU/GPU混合推理的抠图工具,突然就显得又笨又重,像个上个时代的遗老。
去年这时候,我还在为ChatGPT的API调用成本和响应延迟焦虑,觉得私有化部署是大客户的专属。现在风向彻底变了,终端芯片开始直接集成大模型推理能力,高通、英特尔、AMD都在喊“本地AI”。这意味着什么?意味着用户对延迟的容忍度会断崖式下跌,意味着“联网调用”会变成一种落后的、不可靠的体验。我的软件如果还傻乎乎地把图片上传到我的服务器,或者等用户手动配置Ollama,那离死就不远了。用户要的是点开即用,模型、算力、数据最好全在本地闭环,还得快。
所以问题变成了:我怎么让我的软件,无缝适配从旗舰游戏本到轻薄本,从安卓手机到未来AI手机这一大堆乱七八糟、算力天差地别的设备?继续租云服务器,扛不住成本也打不过体验。自己买服务器建集群?为了这点小业务,运维和电费就能把我拖死。我他妈一个超级个体,玩不起重资产。
被逼到墙角,就只能往边缘挤。我翻出了吃灰的树莓派4B和一块Jetson Nano,这俩加起来算力可能还不如我笔记本的显卡,但意义不同。我要验证的不是性能,而是路径:一套能自动发现、调度、利用局域网内异构算力资源的轻量级Agent框架。核心思路粗暴简单:主程序(比如Rembg Pro的GUI)作为一个调度中心,启动时广播寻找局域网内的“算力节点”。这些节点就是跑在树莓派、旧笔记本、甚至NAS上的轻量级服务,它们预装了必要的Python环境和精简后的模型(比如我用ONNX Runtime优化过的U2Net)。主程序把计算任务(比如一张待处理的图片)拆包,通过内网HTTP发到空闲节点,节点算完把结果发回来。
听起来像分布式计算入门课作业对吧?但魔鬼全在细节里。第一个坑是网络发现和注册。我试了Zeroconf(Avahi),在macOS和Linux上还行,Windows一堆防火墙弹窗,普通用户会吓死。最后退回用UDP广播心跳包这种土办法,每个节点自带一个唯一ID,定期喊话“我在这儿,我能干啥,我当前负载多少”。第二个坑是任务调度和容错。一个节点算到一半死机了怎么办?网络抖一下任务丢了怎么办?我不能用K8s那套,太重。我写了个最简单的状态机,任务发布后启动一个守护线程,超时没收到结果就标记节点“可疑”,把任务重新派给另一个节点,同时记录失败次数,失败太多就暂时屏蔽该节点。第三个坑是数据序列化。图片传输,你不可能用JSON base64,那流量太大。我用的是MessagePack加上对numpy数组的特殊处理,压缩率还行,但内存拷贝开销又上来了,在树莓派上这种内存敏感的设备上,一个不小心就OOM。
在Jetson Nano上编译ONNX Runtime的ARM64版本又是一场噩梦。交叉编译环境配置、CUDA版本冲突、缺失的依赖库……整整两天,我就对着编译失败的红字输出,一边查Stack Overflow一边骂NVIDIA的文档写得像屎。但当你终于看到那个绿色的“Build successful”,把编译好的.so文件拖进树莓派,运行起一个能稳定接收任务、调用模型、返回mask的节点服务时,那种感觉,比当年第一次收到小程序流量主打款还刺激。这不是技术的胜利,这是生存欲的胜利。
我管这套土炮框架叫“边缘计算板”,因为它真的就是几块开发板跑起来的。但它证明了一条路:私有化、分布式、去中心化的AI计算,对独立开发者来说,不再是遥不可及的架构神话。它脏、累、充满妥协,但它是我的。我不需要说服用户去买我的云服务,我只需要告诉他们,把你家闲置的旧电脑、电视盒子甚至手机(通过Termux)变成你的私有算力池,我的软件就能跑得更快、更便宜、更隐私。
CES上那些光鲜亮丽的AI硬件,是巨头的游戏。而我的“边缘计算板”,是草丛里的游击战。硬件洪流袭来,大船有巨轮的活法,舢板也有舢板的漂法。至少现在,我知道我的舢板该怎么加固,往哪个方向划了。下一步,得把节点镜像做到Docker里,一键部署,再搞个简单的Web界面监控节点状态。对,还有安全,内网也不是绝对安全,得加点简单的TLS和认证。妈的,清单又变长了。














