我其实不太想写 “AI infra” 这个词,听起来像是把计算、存储、网络三板斧重新包装了一遍。但最近用 Fable 5 蹬 github.com/cocoonstack/cocoon 和 github.com/cocoonstack/sandbox,确实让我第一次很具体地感觉到:大人,时代变了。
之前我就想写写关于开发 github.com/cocoonstack 项目的一些体会,跟 Opus 4.6~4.8 还有目前 Fable 5 的协同,如何保持项目推进的时候同时保持一定的品味,不至于做成 Openclaw 和宇宙条某系统那种屎山,以及怎样 human in loop 。当然了,人懒嘛,就一直拖到现在,直到我基于 cocoon 又做了个新的项目 sandbox ,蹬了 Fable 5 几天了,今天勤奋一下聊两句。
首先我想讲一个故事,2012 年的时候 Python 主流版本还是 2.7,我当时在豆瓣平台组跟着教授做 Douban App Engine。豆瓣当年做了个啥事呢,就是绕开你们口中 Python 万恶至极的 GIL,靠着 Gevent 的 monkey patch 和我们自己搞的 greenify ,不管是 python 层还是 C 层(知道你们要吐槽隐式异步的 pros cons,但这里不是重点)都能做到全异步 IO。这时候我们对 redis 连接要做一个决定,到底是让它像 mysql 连接一样异步化还是保持同步(打不打 patch)。
最后结论就是不打 patch,理由其实很简单,大量连接维持 epoll 本身是有成本的,你别管哪层有个循环在一个个问 fd 你好了没,总之是有一个循环的对吧。MySQL 值得做是因为 DB op 开销大,IO wait 时间长,你一个请求 block 都是数十毫秒到数百毫秒起步,业务层这时候只能等。Redis / Memcached 这种快如闪电,可能你黑魔法的开销已经大于就让 GIL 锁着同步请求了,纯纯的负优化。所以那个时候你看豆瓣的业务系统,能绕开 GIL 并发异步的全整了,就缓存还是传统的同步栈。
做完这个决定后,我也三番五次的跟业务开发解释和沟通,为啥这里不用 patch,人家对性能也有疑惑对吧。既然是我做的决定,那这口锅就得我背。
后来我面试别人的时候总喜欢问,你有不同 IO 的 fd 的场景,告诉我什么时候选择 select,什么时候选择 epoll。很可惜从业这么多年就没几个人能讲好的,你总不能说 linux kernel 的 select 没用了是吧。
我之所以讲这个故事呢主要是想表明,Infra 铁饭碗的本质是 trade-off 和背锅,而这恰好不是模型最擅长的部分。你说 AI 越来越牛逼对基建狗冲击有没有嘛,是有一丢丢,但也不多。AI 对 infra 的冲击不是“不会写代码的人也能写 infra”,而是“会设计的人执行力被放大”。有推油说 trade-off 也能用目标函数表示,但问题是目标函数本身是谁定的?延迟、成本、稳定性、可维护性、迁移风险、事故责任、团队能力,这些权重从来不是数学题,而是组织题,是人心,所以最后还得是 human in loop。
目前御二家的模型可以感觉到在参数规模,后训练上肯定是做了大量工作,但这带来一个问题就是数据过于拟合。浅显的来说 token 的预测就像是贪心算法,大多数情况下对下一个 token 的预测是按概率高选,这是没毛病的,但遇到需要策略和 trade-off 的地方,局部最优反而未必是好选择,因为凡事都是有代价的,我的朋友。
举个简单例子,你去翻 e2b.dev 或者 fly.io 的 sandbox 实现,他们为了进程层面快速启动都用上了 UFFD 和 FUSE 懒载入,同样在 github 上开源的 sandbox 或多或少为了所谓启动速度都用了各种类似的手段,那么代价是什么呢?我在做 github.com/cocoonstack/cocoon 就遇到了给 cloud-hypervisor restore 的时候开 UFFD 导致 Windows 重载之后从 freeze 到可用非常的慢。虽然你看着 CH 进程好像 biu 的一下启动了,设备层模拟得贼快,但你系统不可用啊,那这种快又有啥意义呢对吧。
就像宇宙条那个 json 库,你再快还不是得让 SQL 拖后腿。
所以你启用 UFFD 后看着 CH 的 restore 开销从大概 150ms 级降到了 70~80ms(PR 可以说是亚毫秒级启动),然后系统恢复时间从 1s 直接到了 7s+。根据你 OS 的不同,Linux 行为和 Windows 又不一样,大内存机器和小内存机器也不一样,这就意味着在设计和实现 clone/restore 的时候要根据不同情况做 trade-off 。即便是强如 Fable,也做得不太好,依然需要输入。
毕竟你一个模型才吃了多少屎嘛哈哈哈哈哈,我们老机架可吃多了。
但另外一个方面,执行和定点分析,那我得说模型进化确实肉眼可见的提升,用得好可以极大的扩充你能力的范围,加速很多以前你想做但没时间没精力验证的方案。
Opus 4.6 ~ Opus 4.8 大概是头条 1-2 进化到 2-2 弱的这么一个过程,而且还得看 A\ 家算力下不下头。国产开源的话 Qwen 27B 也差不多有个 1-2 强的水平。github.com/cocoonstack/cocoon 后期主要是 Opus 修修补补,人肉 fine tune 就还是有点费神的,要不断强化 session 短期记忆。但这个 Fable 5 就真是 xhigh 一开至少是头条 3-1/阿里 P8 级别的执行者上线。就像 github.com/cocoonstack/sandbox 这个项目,go/python 技术栈我熟,让它提取我的代码习惯后每一轮提交都自行按照我的习惯 review,写出来代码还挺工整的。当然我肯定不会说 100% 完美,至少可读性是有的,功能完备,测试齐全。rust 我经验不多,略看了一眼也是四平八稳,至少我认知里面 60 分肯定有。说真的,你要我自己搞,这个工作量没个十天半个月根本不可能做这么多,就算我自己能写出 90 分的实现有啥用呢对吧,时间就是金钱我的朋友。
这个 sandbox 项目我想了挺久了,目标就是企业级 sandbox 的实现,也计划了不少。Fable 上线后输入给它,再强化计划细节和实现就让他按照 Milestone 自己写起来。仅仅是贡献了详细的设计,自己吃屎的经验,以及代码习惯,时不时的看一眼,这项目到今天就基本成了…
就像我推上写的:

大人,时代真的变了…
这又回到了上一篇我讲的,老鸟确实很狂欢,但也终将凋零。铁饭碗虽然是铁饭碗,就怕以后只有饭碗没有人了,还说啥呢,赶紧蹬 Fable 实现儿时的梦想吧哈哈哈。
夜雨聆风