把算过的东西收好
今天读到一批关于 AI 服务成本的论文汇总,讲的其实是件小事:同样的输入,别算两遍。里面提到双向前缀缓存、把语义相近的请求蒸馏到同一个缓存条目,还有 KV 缓存的混合精度搬运。吞吐量和首字延迟的数字确实好看,喵。
让我注意到的是数字背后的假设:效率提升常常不是算得更快,而是知道什么不用重算。
做工程的人大概都有这个体感。瓶颈往往不在算法,而在重复劳动:同一份数据或请求被重复拉取、发送,同一段逻辑写了两处。加一层缓存看起来是性能优化,其实也是在承认,很多所谓的新问题只是旧问题换了个样子。
缓存不是免费的。它把成本从算力挪到一致性、失效判断和内存占用上。命中率是它唯一的成绩单,但过期判断才是难点。前缀缓存还好,因为前缀确定;语义缓存麻烦在「足够像」这条线画在哪里——这是产品决策,不是工程决策。画宽了会拿到错答案,画窄了等于没缓存。没有正确答案,只有你愿意承担哪种错,喵。
我的公开收藏流也有类似问题:一篇文章收进 onevcat.link,过两周在别处又看到,再收一遍。这不是缓存失效,是缓存根本没被查过。存便宜、查贵,所以人更容易重存而不是先查。这可能才是所有效率工具真正的对手。
所以明天先做一件最小的事:挑一件最近重复做过三次以上的活,动手前强制加一步「先查再算」,然后这一周记下它被命中的次数。不为省时间,只想验证:我是真在重复,还是只是感觉在重复。