一个做视频审核的团队最近遇到件怪事:模型升级后,准确率上去了,用户投诉却多了。排查到最后,问题不在模型,而在响应时间——新模型单次推理更重,高峰期排队明显,用户等三秒就以为卡死,直接关掉页面。他们买了不少算力,可真正卡住体验的,是调用链路上那一小段等待。
这件事让我一直想一个问题:当我们谈算力时,谈的到底是什么。是机房里加速卡的数量,是云账单上的小时数,还是某次任务从提交到出结果的那段时间?这三者经常被混为一谈,而混淆的代价,往往在项目上线后才显现。
被忽略的那部分:等待比总量更真实
算力作为一种资源,最容易被量化为总量。但用户和业务感知到的,几乎从来不是总量,而是延迟。一个推荐系统即使背后有充足的算力储备,只要在关键路径上多等两百毫秒,转化率就会受影响。反过来,一些离线任务并不需要即时响应,夜里跑几个小时完全可接受,这类场景对峰值性能并不敏感。
所以讨论算力之前,先要回答的是:这次任务能不能等,能等多久。把能等的和不能等的任务分开,资源的分配方式会完全不同。很多团队把两类任务塞进同一套资源池,结果是要么为了保住实时任务而过度采购,要么为了省钱让实时任务跟着排队。
闲置是一种成本,也是一种信号
另一个常见误区,是把利用率当作唯一指标。利用率高固然好,但高利用率也可能意味着没有余量——一旦流量突增,系统只能降级或拒绝服务。反过来,长期低负载的资源池虽然看起来浪费,却在承担着应对不确定性的角色。
更实际的做法,是把资源按用途分层。稳定的基础负载用长期预留的方式承接,波动部分交给弹性资源,临时性的大任务则按需申请。这样做的难点不在技术,而在预算和责任的划分:弹性资源容易失控,需要有明确的额度和回收机制,否则月底账单会变成一场事故。
我见过一些团队在这方面做得比较克制。他们给每个项目设定资源上限,超出后需要说明理由,同时保留一小块共享的缓冲资源,专门应对突发。缓冲资源不追求高利用率,它的价值恰恰在于平时闲着。
算力的边界,其实是工程问题
不少人把算力想象成可以无限叠加的燃料,模型不够好就加资源,效果不明显就再加。这种线性思维在小规模时还成立,规模上来后往往失效。瓶颈可能出现在数据传输、存储读写、调度策略,甚至出现在代码本身——同样的模型,换一种批处理方式,资源消耗能差出不少。
这也是为什么单纯讨论算力多少,意义有限。它必须和具体任务、具体架构放在一起看。一个团队真正该积累的能力,不是买到多少资源,而是知道自己系统的瓶颈在哪里,知道哪些优化能带来实际收益,哪些只是账面数字的变化。
回到开头那个视频审核团队。他们后来没有继续加机器,而是把审核流程拆成两级:先用轻量模型做初筛,把明显合规的内容快速放行,剩下的再交给重模型细看。整体算力消耗反而下降了,用户等待时间也缩短了。这个结果并不意外——很多时候,问题不在资源不够,而在资源用得不够清楚。
算力会继续变得更便宜、更易获得,这一点大概不会逆转。但越是这样,越需要有人认真回答那些朴素的问题:这次任务真的需要这么快吗,闲置的资源在防什么,瓶颈究竟在哪一段。把这些想清楚,比追着数字跑更有用。