当我让AI先查文献再写代码后,它把性能提升了15%
凌晨3点17分,我盯着屏幕陷入了沉思。
事情是这样的。前几天我在跑一个AI优化项目,目标是把llama.cpp的CPU推理速度再往上提一提。结果你猜怎么着——我那个Agent宝宝一顿操作猛如虎,最后一测性能,+0.8%。就这?比我家猫跑得还慢。
我当场就裂开了。这感觉就像你让同事帮你带杯咖啡,他去了趟星巴克回来告诉你:"咖啡没买到,但我学会拉花了。"
事情是怎么开始不对劲的
一切要从Karpathy大神的autoresearch说起。那玩意儿可太秀了——AI自己改代码、自己跑实验、自己看结果。Shopify的Tobi Lütke用它优化Ruby模板引擎,一次性整出93个commit,性能提升53%。
我一看,这不我的菜吗?抄起键盘就是一顿操作,把autoresearch指向了llama.cpp,心想着这次要搞个大的。
结果AI宝宝一顿操作:
- 试试AVX2预取?→ +0.8%
- 试试循环展开?→ +0.9%
- 试试消除临时缓冲区?→ -2.8%(好家伙,还倒退了)
我当时的表情be like:🤔 → 😱 → 😅
AI宝宝自己都看不下去了,在实验报告里写道:"经过Wave 1分析,我们发现_compute bound的计算路径微优化基本没用,因为文本生成实际上是memory-bandwidth bound..."
翻译成人话就是:"大哥,我努力了,但实在带不动啊——这破活儿的瓶颈不在算力,在内存访问啊!"
所以问题出在哪?
这就好像你要装修房子,AI说"让我先看看你家客厅",然后就开始折腾沙发靠垫的摆放方式。
但问题是——答案在房子外面。你得去问问隔壁老王用的什么地板,听听物业推荐什么空调,看看小红书上大家怎么装修。
代码也是同理。llama.cpp的源码告诉你"这代码是这么写的",但不告诉你:
- 为什么这么慢?
- 别人家怎么优化的?
- 有没有论文支撑的更好的方法?
这些知识,一个只会看代码的AI是不知道的。它需要先做研究,再写代码。
于是我让AI先去读论文了
改革春风吹满地,科研型Agent要雄起。
新版Agent的工作流变成了:
- 文献调研:先查论文、看竞品、研究已经有人做过的优化
- 制定策略:基于研究发现写代码的方向
- 动手实验:自动部署到云机器,跑benchmark
- 迭代优化:根据结果继续研究、继续调优
这次AI宝宝学乖了,不忙着改代码,先去扒拉了:
- ik_llama.cpp(性能向fork)是怎么玩的
- llamafile的tinyBLAS用了什么黑科技
- FlashAttention论文里说的IO-aware tiling是啥
- Blockbuster那篇block-level fusion的paper
然后它告诉我:"大哥,我知道问题在哪了——我们得融合kernel!"
结果怎么样?
在~3小时的实验后,5个优化成功落地:
- 4个kernel融合:把原来分散的内存操作给它捏到一起
- 1个自适应并行化:让不同任务走不同的并行策略
最终成果:x86上+15%,ARM上+5%
从+0.8%到+15%,这波啊,这波是知识的力量。
而且成本才29美元。29美元,你买不了吃亏,29美元,你买不了上当,但能让AI读完论文再干活,简直血赚。
所以我们学到了什么?
1. 让AI先做功课:就像你不会让一个没读过任何设计杂志的设计师去装修房子,别让没查过论文的AI去优化代码。
2. fork分析比arxiv更有用:说出来你可能不信,ik_llama.cpp和llamafile的源码比arXiv论文贡献了更多可落地的优化点。实践出真知啊朋友们。
3. 代码只是答案的一半:另一半在別人的代码里、在论文里、在老工程师的脑子里。
现在我的工作流已经变了——每次要让AI优化点什么,先问它:"你先给我说说,别人都是怎么搞的?"
这感觉就像是请了个会做功课的实习生,而不是一个只会蒙眼狂奔的做题家。
彩蛋
后来我让Agent去优化一个前端项目,你猜它第一时间去查了什么?
——React官方文档、MDN、Web.dev性能指南、以及Vercel的博客。
看来它真的学乖了。😏
如果你也对AI Agent、自动化优化感兴趣,欢迎来 妙趣AI 逛逛,我们有更多AI工具评测和踩坑实录——毕竟踩坑这种活,让我来就好了,你们负责笑就好。🤖