最近一个做搜索业务的朋友找我,聊新模型推理要买什么卡。他的电脑里整整齐齐两份选型对比:左边GPU参数,右边NPU参数,从算力到功耗比了一圈。我问他:模型多大?线上QPS大概多少?单路延迟预算多少?他愣了一下。这个场景我太熟了——过去两年帮不少团队做过AI推理选型评估,几乎所有人开场都是"GPU还是NPU",而不是"我的负载到底长什么样"。
今天这篇,想把一个常被忽略的结论讲透:AI推理选型,存在第三个答案。它既不是某块新芯片,也不是某个神秘硬件,而是一套方法——先给负载画像,再谈硬件;先压榨软件,再扩展算力;最后按场景做异构编排,让GPU、NPU、CPU各干各的活。对正在纠结采购、预算有限、又不想被厂商PPT带着走的团队来说,这篇文章应该能省下不少冤枉钱。
1. 别急着站队:GPU与NPU之争的底层逻辑
1.1 GPU赢在通用,NPU赢在能效,但它们的目标负载并不一样
先说GPU为什么强。GPU本质上是一个大规模并行计算器,最初为了图形渲染设计,后来被通用计算生态接住,变成了训练和推理的主力。它强在高算力、高显存带宽、成熟的编程模型和极其丰富的算子库。你几乎能找到所有动辄上千亿参数模型的推理解决方案。对大模型、大Batch、高精度场景,GPU到今天依然是效率标杆。
NPU则是把"人工智能计算中最常见的算子"做成了专用电路。矩阵乘、卷积、激活函数这些操作,在NPU里有固定的数据通路,不需要像GPU那样靠通用线程束调度。带来的最直接好处是能效比——同样完成一次推理,NPU的功耗往往只有GPU的几分之一,尤其适合边缘设备、端侧部署、长时间运行的固定工作负载。
但问题也出在这。GPU的通用性是用功耗和成本换来的,闲置时它也在吃电、吃散热、吃机房机位。NPU的专用性则意味着它不擅长的算子性能极差,甚至干脆不支持,一旦模型里冒出个非标准注意力实现,就要花大量时间手工适配。很多团队只看到"A比B算力强""B比A省电"这类表格数据,忽略了真正的问题是:你的业务负载更适合哪一类数据通路。
1.2 为什么"二选一"从起点就错了
市面上讨论GPU和NPU,默认前提是"你只能选一种硬件,并且选定后整个系统围绕它转"。但AI推理的实际工程场景很少符合这个前提。
举一个很常见的例子:一个内部知识库问答系统,白天有员工密集提问,晚上几乎没人用;提问集中在短文本,偶尔有人粘一大段上下文进来;不同业务的模型大小从几亿参数到几十亿参数都有。这种负载如果只买GPU,晚间闲置成本高;如果只买NPU,大模型跑不下、小模型适配又麻烦。结果往往是两种芯片都买,但各自只发挥了三四成性能。
另一个被掩盖的事实是:大多数推理负载,根本不需要芯片先行的思路来规划。模型量化、算子融合、批处理调度这些纯软件优化,往往能让现有硬件提升两倍以上吞吐;在此基础上再引入专用硬件,才谈得上有价值。选型不是挑选一个芯片,而是为一个工作负载组合出一套算力方案——这,就是我说的第三个答案的起点。
2. 第三个答案的第一步:先给推理负载做画像
2.1 负载画像的六个维度,比芯片参数重要得多
我在给团队做选型评估时,第一件事不是看硬件规格书,而是做负载画像。所谓画像,就是把"业务流量"翻译成"算力需求"的过程。核心六个维度:
- 模型规模与结构:参数量、层数、注意力头数里面有没有非标准算子。模型决定了显存/内存下限,也决定了NPU算子适配难度。
- 请求到达模式:是均匀分布还是潮汐式?峰值是平时的几倍?这决定了要不要为峰值采购全部硬件,还是用队列削峰。
- 单路延迟预算:交互式对话要求首字延迟几百毫秒以内,离线批处理则可以接受秒级甚至分钟级。同一块硬件,在这两种场景下的"够用"标准天差地别。
- Batch大小倾向:线上实时推理通常batch=1,离线分析可以batch=64甚至更大。GPU在大Batch下优势显著,但小Batch时优势会被抹平。
- 精度宽容度:能不能接受INT8、INT4量化?量化后精度衰退多少?这直接决定是否可以用CPU或NPU替代GPU。
- 部署环境约束:机房机位、单机功耗上限、散热条件、运维人力。很多推理项目不是死在算力不足,而是死在电力预算超了。
2.2 怎么做负载画像:别靠猜,用两天压测换两个月不返工
负载画像不是拍脑袋填问卷,而是有具体动作的。我的建议是至少做一轮这样的实测:
先把线上真实请求录下来,抽取一个代表性子集,包含最长的输入、最爆发的时段、最复杂的请求。然后在你现有的任何一台机器上用推理引擎跑一遍,记录三组数据:平均吞吐、P50延迟、P99延迟。不要只看平均,P99是选型的关键——NPU和CPU的P99往往比GPU更容易恶化,因为它们更容易受到系统调度和算力波动的干扰。
同时要记录资源利用率曲线。一个典型的反例是:团队买来GPU,跑起来后发现利用率只有30%,因为线上请求稀疏、模型又小,大部分时间芯片都在空转。这种场景下,换一块NPU,或者干脆继续用CPU,效果可能更好。用两天时间做一次认真的压测和利用率采集,远比你花两周对比参数表有价值。
2.3 画像结果决定"算力水位线"
画像完成后,你会得到一条"算力水位线":一天之中不同时段需要多少算力、什么延迟水平、什么精度等级。比如一个夜间批处理任务,延迟预算10分钟,精度必须FP16,这天然不适合NPU;一个端侧语音唤醒,延迟预算100毫秒,功耗上限1瓦,这天然不适合GPU。
把水位线画出来后,硬件选型就变成了"找一块在目标水位区间内性价比最高的芯片",而不是"在所有指标上最猛的芯片"。这也能解释为什么很多团队买顶级GPU却天天闲置——他们的水位线根本够不到那么高。
3. 被低估的CPU:第三个答案里最常被忽略的算力选项
3.1 CPU的硬件底牌:向量指令、AI加速扩展、内存带宽
谈到AI推理,大家默认CPU是备胎,其实这是被营销带偏了。现代服务器CPU在推理场景有两个容易被忽略的底牌:一是单核单指令流的能力,二是矩阵运算相关的扩展指令集。
新一代CPU普遍支持宽位向量指令,部分产品还加入了面向矩阵乘的专用指令扩展。这意味着INT8、INT4量化后的矩阵运算,可以直接在CPU上用硬件加速流程跑,而不需要模拟成普通浮点加乘。再加上CPU本就擅长逻辑控制和数据搬运,很多推理模型的非计算型算子(reshape、concat、条件分支)在CPU上跑得比GPU还快。
另一个关键点是内存带宽。推理和训练不同,它的瓶颈经常不在峰值算力,而在数据搬运。CPU的多通道内存架构在batch=1的场景下,数据延迟远低于GPU要走PCIe链路搬进显存再搬出来的过程。很多中等规模模型,纯粹在CPU上做推理,延迟并不比入门级GPU差。
3.2 实测认知:量化之后的CPU,在小Batch低并发场景下能反超
我在一个模拟项目里做过对比:同样的一个3B参数对话模型,INT4量化后部署在三类算力上,分别是单路服务器CPU、一张入门级GPU、一块中端NPU。测试场景是batch=1、目标P95延迟小于200毫秒、QPS大约20左右。
结果是CPU不仅跑得动,而且长期稳定运行时的抖动比NPU小;GPU因为要维护显存上下文,在batch=1时优势完全发挥不出来;NPU在算子适配环节额外花了两周,因为模型的某几个非标准算子社区版SDK不支持。把散热、功耗、采购成本全部算进去后,CPU方案的TCO反而是最低的。
这不是说CPU万能。高并发、大Batch、超大模型,CPU会先撞上算力墙。但很多团队的实际情况是:模型不超过7B参数、QPS不超过50、延迟预算在几百毫秒。这类负载用CPU加推理优化完全能扛住,可他们因为惯性思维直接买了GPU。第三个答案里,CPU是最被低估的一块拼图。
3.3 软件优化先行的逻辑:先榨干手头硬件,再谈新增投入
我坚持一个原则:预算再充足,也要先把软件优化做满。原因是推理优化这件事的边际收益,往往比换硬件高得多。
以CPU推理为例,顺序是这样的:先做INT8/INT4量化,通常能把吞吐提升2到3倍,精度损失通过校准数据集控制住;再开推理引擎的多线程和算子融合,把线程池、NUMA内存亲和这些参数调好,吞吐还能再涨;最后才是考虑换更高级的CPU或者加GPU。我见过太多人上来就买卡,结果模型还是FP16裸奔、线程池默认配、算子一个一个调度,新硬件跑出来的效益连四成都没有。
这里说一个很多人不信的数字:在纯CPU环境下,一个经过INT4量化、算子融合、线程调优的小模型推理服务,单机吞吐可以轻松达到未经优化时的三倍以上。这意味着很多"觉得必须上GPU"的团队,其实只缺一次认真的软件优化。
4. 异构调度的落地思路:让每一块芯片只干它最擅长的事
4.1 不是堆硬件,而是给推理请求加一个路由层
第三个答案的完整形态,不是"选一块芯片",而是"让多块芯片各就各位"。做法是在模型服务和底层算力之间加一个推理路由层。它接受所有推理请求,根据当前负载特征决定把请求送到CPU、GPU还是NPU后端。
这个路由层的逻辑不复杂,常见的规则可以是:
- 请求batch较大、对延迟不敏感、模型较大 → 送去GPU批量推理;
- 请求来自端侧、要求低功耗低延迟、模型较小 → 送去NPU;
- 请求量小、随机到达、内部工具调用 → 留在CPU;
- GPU资源吃紧、队列堆积 → 把部分次级请求降级到CPU,避免雪崩。
路由层的好处不只是性能,更是故障域隔离。GPU驱动出了点小问题、NPU算子更新失败,都不会影响整个推理链路,CPU永远能兜底。
4.2 一套模型多后端导出,是异构的基础设施前提
异构调度最大的工程障碍不是路由,而是"模型怎么在多后端上跑"。解决方案是引入中间表示层:让模型先导出成统一的中间格式,再针对不同后端生成对应的加速版本。主流推理引擎基本都支持这种多执行后端设计,同一个模型,在CPU上有优化执行路径,在GPU上有TensorRT这类加速方案,在NPU上有对应的SDK转换工具链。
工程化的路径是:模型仓库里存一份精调好的基础权重,发布时同时产出CPU版(INT8/INT4量化)、GPU版(FP16或TensorRT优化版)、NPU版(量化校准版)。推理服务通过统一接口加载,路由层按版本号调度。整个过程需要一个模型管理平台来维护不同后端的版本一致性,但一旦搭好,后续新增算力只是加一个后端的问题。
4.3 动态路由的收益:成本、稳定性、可扩展性同时改善
一个实际项目里,我们把一次图像语义检索服务的推理层改成了CPU+GPU异构。默认路径是CPU跑小batch实时请求,GPU专门处理大batch离线召回,中间用队列做解耦。改造前,团队准备买三张GPU卡;改造后,一张GPU加两台普通CPU服务器就满足全天流量,高峰期的P99延迟反而比原来全GPU方案更稳定,因为不会出现小请求占住GPU线程导致大请求排队的情况。
从成本账上看,GPU按小时算的硬件折旧和功耗都远高于CPU,异构之后,GPU只在需要它发力的时候才真正满载,闲置时间大幅下降。稳定性上,CPU兜底让GPU的升级维护不再需要停机窗口。这才是把"GPU还是NPU"这个问题真正化解掉的方式——不是选一个,而是编排一批。
5. 一张决策表和五步验证,把选型从玄学变成工程
5.1 场景化决策表:从负载直接映射到算力起点
很多团队要的不是高深理论,而是一张能直接对着找答案的表。下面这张决策表来自我多次选型评估的总结,不完全绝对,但足够作为起点:
| 业务场景 | 推荐算力起点 | 备选方案 | 关键理由 |
|---|---|---|---|
| 端侧语音唤醒/识别 | NPU | CPU低功耗版 | 延迟和功耗要求苛刻,NPU能效比最优 |
| 高并发短文本分类/规则小模型 | CPU + INT8 | NPU | 模型小、延迟宽裕,CPU弹性最好 |
| 大模型长文本生成(>7B) | GPU | NPU集群(受生态限制) | 显存容量和矩阵算力决定只能GPU扛大模型 |
| 内部工具/低频调用 | CPU | 云端GPU按需 | 低频负载不值得为峰值买断硬件 |
| 混合负载、潮汐明显 | 异构(CPU+GPU) | CPU+NPU | 路由层削峰填谷,兼顾成本和体验 |
这张表的核心判断依据不是芯片算力,而是两个问题:模型需要多大显存/内存?延迟和并发能让芯片满载吗?答完这两问,选项其实已经很窄了。
5.2 五步最小成本验证路径
决定采用哪类算力前,建议按下面的五步走,每一步都只花少量资源,就能避免最终采购失误:
先量化试水:把手头模型用INT8(精度影响小)或INT4(进一步压吞吐)量化,先看精度衰退是否在业务可接受范围。如果量化后精度崩了,后续所有低功耗方案都要重新评估,可能只能上GPU或更高精度NPU产品。
在当前CPU机器上跑基准:用推理引擎的CPU执行后端,加载量化模型,跑一轮标准压测,记录QPS和P50/P99延迟。这步免费且快,可能直接得出"现有机器够用"的结论。
挑一块候选NPU做算子映射检查:把模型的算子清单导出,对照NPU的SDK工具逐项检查是否支持;不支持的算子估算额外适配工时。很多时候模型里面有零星一两个特殊算子,导致NPU整体方案性价比崩盘。
小规模GPU实测并记录功耗:如果CPU和NPU都不行,借一台GPU,跑同样的压测。重点看三件事:实际利用率、batch=1时的延迟、满载时的整机功耗。利用率长期低于40%,说明负载形态不适合GPU,应该回到优化老路。
算TCO再决定:把硬件采购、年运行功耗、散热制冷、驱动维护、算子适配人力全部折算成三年总成本,再对比不同方案的预测性能。这一步能拦下大量"参数好看但算完账后悔"的采购。
5.3 踩坑实录:量化校准、NPU算子坑、GPU功耗墙
选型过程中最常见的坑有三个,挨个说。
第一个是量化校准集乱用。为了图省事,有人拿训练集里的固定几条数据做INT8校准,上线后发现精度下降明显。正确做法是从真实请求分布中按覆盖度采样,包含边缘长文本、罕见句式,校准后还要准备一套线上流量回放,对比量化前后的质量指标变化。
第二个是NPU算子支持不全。模型整体99%的算子都能跑,唯独某个新出的注意力变体不支持,或者只能在CPU上回退,导致整体延迟不达标。开发团队花了几周去重写算子在NPU上的实现,结果发布节奏彻底延后。选NPU前,算子映射检查和适配工时评估绝不能省。
第三个是GPU功耗墙。一块高性能GPU的峰值功耗在几百瓦,机房单机柜功耗往往有限。选型时只看了AI算力,没看整柜供电,上线后发现隔壁机器一跑起来整柜就过载,最后只能限频运行,性能打七折。买GPU前务必拿到整机满载功耗,并对照机房供电余量。
6. 说回第三个答案:选型工具链成熟后,重心从"挑芯片"变成"调负载"
回头看,"GPU还是NPU"这个问题之所以长期无解,是因为它在用硬件思维解决软件定义的问题。今天的推理工程,已经可以做到量化、算子融合、多后端导出、动态路由,这些能力把"芯片选择"从一次性决策变成持续调优的过程。
我个人的转变来自又一次普通项目:一个内部搜索排序模型,原本已经批准了GPU采购预算,结果我在现有CPU服务器上做了INT8量化加线程调优,一周后吞吐翻倍,P99延迟稳定在几十毫秒。那张GPU最后没买。从那次以后,我做任何AI推理选型,顺序永远是:先画像,再优化,最后才是买硬件。
所以,如果你正在GPU和NPU之间纠结,不妨先停两天,把负载画像做了,把量化跑一轮,把当前机器的CPU潜力榨干。大部分团队做完这三件事后,要么发现根本不缺算力,要么发现真正要买的是完全不同的东西。第三个答案不是某一款芯片,而是一套让芯片回归工具位置的方法——这句话越早想明白,你的推理架构就越省钱、越稳定。