10 月 31 日的一场人工智能大会上,中国工程院院士郑纬民讲了一个常被跳过的点:芯片采购价格不等于实际使用成本。不同芯片要单独做软件适配和性能优化,硬件价格有优势,后面的软件开发和维护投入高,整体成本可能反而更贵。他还提到,训练更适合用同构芯片保证协同效率,推理则可以按任务特点混用异构芯片。

这话做工程的人不陌生。过去两年,"换卡"在不少团队里从可选项变成了任务,但预算表上通常只写了一行硬件采购价。

峰值算力是纸面数字,能用的是另一回事

一块卡标称多少 TFLOPS,是理想条件下的数。真实集群里的有效算力还要乘三样东西:框架和算子对当前模型结构的支持程度、卡间互联带宽能不能喂饱计算单元、以及上架率——机器买回来多久能真正跑业务。行业里有个被反复提到的结构性矛盾:高端算力供不应求,中低端算力大量闲置。闲置的那部分不是没机器,是软件栈不成熟,资源调不动。

迁移的工作量集中在几处。自定义算子要重写或找替代实现;新模型结构发布后,国产软件栈的适配往往滞后几个版本;集合通信库、分布式训练框架、推理引擎的图优化,换一套硬件得重调一遍;量化方案也要重测,同一个 int8 配置在不同架构上精度损失不一样,精度掉了就得回退重跑,重跑就是钱。

举个具体的例子:同样的注意力机制,现在主流框架里带着好几种实现——标准版、滑动窗口、分页 KV cache。换一套硬件之后,哪些能走厂商加速库、哪些退回通用实现,直接决定吞吐差几倍。这不是改配置能解决的,得改代码路径。

变化在于生态在收敛。有产业联合体在推统一的计算库、通信库、运行时和编程体系,目标是让优化成果跨硬件复用,减少重复适配。没变的是,这套统一层还需要时间,眼下每个项目仍然得自己填坑。

五笔账,缺一笔就会算错

把总拥有成本拆开,大概是这五项:

  1. 迁移工时:算子重写、回归测试、压测调优,按人天折算,常见区间是采购价的 10% 到 30%,模型越偏门越高;
    1. 有效算力折损:同样标称的卡,MFU 差 10 个百分点,等于多买了 10% 的机器;
    1. 运维与值班:驱动、固件、容器镜像的版本管理,出问题时能找谁、多久能给答复;
    1. 备件与持续供货:同型号两年后还买不买得到,混插不同批次会不会踩兼容问题;
    1. 机会成本:新模型上不了线、上线晚一个季度,这笔账在任何一张财务表上都看不到。
      估这些数字别拍脑袋,三步就够:用 profiler 把模型实际跑的算子按耗时排个序,前 20 个算子决定成败,逐个确认有没有对应实现;跑三件套基准——prefill 吞吐、decode 吞吐、长上下文(比如 32K 以上)的掉速情况;挑一条非核心业务灰度两周,记录 P99 延迟和调用失败率。工时按"待改算子数 × 平均人天 + 回归轮次 × 团队人数"估,比让供应商报价靠谱。

下面这个小工具可以直接改参数跑,算的是"每百万输出 token 多少钱":

def cost_per_mtoken(card_price, cards, power_kw, pue, kwh_price,
                    hours_per_month=720, util=0.6,
                                        tokens_per_sec_per_card=800, years=3):
                                            """按卡折旧+电费估算:每百万输出 token 的成本(元)。"""
                                                monthly_dep = card_price * cards / (years * 12)
                                                    monthly_power = power_kw * pue * kwh_price * hours_per_month
                                                        monthly = monthly_dep + monthly_power
                                                            tokens = tokens_per_sec_per_card * cards * util * 3600 * hours_per_month
                                                                return round(monthly / (tokens / 1_000_000), 4)
# 8 卡、单卡 8 万元、整机 4.8kW、PUE 1.25、电价 0.7 元/度
print(cost_per_mtoken(card_price=80_000, cards=8, power_kw=4.8, pue=1.25, kwh_price=0.7))
print(cost_per_mtoken(card_price=80_000, cards=8, power_kw=4.8, pue=1.25, kwh_price=0.7, util=0.3))

两次分别跑出约 2.09 元和 4.18 元,差出来的那一倍,就是利用率从 60% 掉到 30% 的代价。实际谈判时,问的第一个问题不该是"多少钱一张",而是"这套栈在我这个模型上能跑到多少吞吐、能不能现场压测"。硬件单价打个九折,抵不过利用率掉一档。

什么时候不该换

模型稳定、推理量大、延迟要求紧的业务,换卡收益明显,因为一次适配能摊到很大的调用量上。反过来,模型还在快速迭代、团队只有两三个人、没有专职运维的项目,迁移成本几乎一定超过省下来的硬件钱,租算力比自建更合适。

判断标准可以简化成一句话:适配投入能不能在 12 个月内被差价摊平。摊不平就先别换,把数据管道和推理引擎的利用率提上去,这部分收益不依赖硬件型号。

你们团队换过卡吗?迁移实际花了多少人天,跟当初估的差多少?评论区聊聊。

Logo

更多推荐