半夜我又在折腾一个端侧大模型的推理延迟问题。GPU占用率看着到了90%以上,可生成速度就是上不去,功耗和发热倒是很诚实地飙了起来。正当我在性能和能效之间来回拉扯的时候,看到高通给GPU加入专用AI核心的消息——这个动作与其说是一条产品新闻,不如说是一条技术路线宣言:GPU里如果只堆通用算力,已经跑不动AI推理的效率要求了,必须像英伟达的Tensor Core、苹果的Neural Engine那样,把专门的AI加速单元放进数据最密集的计算路径里。标题里那句“向苹果英伟达看齐”,本质上就是在说这件事。
这篇文章我不想只停留在新闻复述。我会从硬件架构演进的逻辑、三条主流AI加速路线的取舍、软件栈适配现状,以及运维和推理优化工程师真正需要关注的观测手段这几个角度,把这个“GPU加AI核心”的事件拆开聊透。无论你是在本地用llama.cpp跑模型,还是在云上租GPU做微调和推理,这篇文章都值得看完。
1. 一条蛰伏很久的技术主线:AI加速能力从“板卡级”走向“内核级”
很多人看到“GPU装AI核心”的第一反应是:GPU本来不就是跑AI的吗,再加个专用核心有什么意义?这是我反复被问到的问题,也是理解这件事最大的认知门槛。
1.1 通用计算单元跑矩阵乘法的浪费率高到远超想象
GPU的通用着色器和CUDA核心确实能执行AI推理所需的矩阵乘法,但代价极大。矩阵乘法本质上是一长串乘加运算,理想情况下,硬件应该把大量数据一口气塞给计算阵列,以最少的指令开销完成。可通用核心的设计目标是兼容各种图形和计算负载,控制逻辑复杂,取指、解码、调度、寄存器堆占用大量面积和功耗。
我举个直观的例子。你在GPU上跑一个FP16精度的矩阵乘,如果用通用SIMD单元,每做一次乘加,要么靠编译器努力做指令级并行,要么靠库函数优化循环展开,但再怎么优化,通用核心依旧要花大量周期在搬运数据到寄存器、维护循环计数、处理分支上。而Tensor Core这类专用单元,一条指令可以直接完成4x4矩阵的乘加,数据排布好之后几乎不用额外控制,能耗比完全不在一个量级。
这也是为什么英伟达从Volta架构开始就把Tensor Core集成进SM内部,而不是作为独立芯片放在GPU旁边。数据从显存到计算单元的搬运,每多一次跨越,延迟和功耗就翻一截。AI加速要发挥真正价值,必须尽可能贴近数据通路的核心位置。
1.2 通用计算单元跑AI推理:面积、功耗、延迟的三重浪费
如果只看峰值算力,很多GPU的FP16算力已经非常可观。但峰值算力和实际推理吞吐之间隔着三道鸿沟。
第一是面积鸿沟。通用核心需要大量晶体管做调度和无序执行,真正干乘加活的晶体管比例反而不高。第二是功耗鸿沟。移动平台尤其是这样,电池和散热就那么点余量,用通用核心硬算大模型,很容易把功耗拉满,性能却很平庸。第三是延迟鸿沟。推理任务往往对单token延迟敏感,通用核心的调度延迟会让每次矩阵计算都慢半拍。
高通这次的动作,本质上就是在自己的GPU内部增加一条专门为AI矩阵运算设计的快速通道。这种设计思路其实不新鲜,PC和数据中心市场已经被英伟达验证过了,之前迟迟没落实到移动和高通产品线上,倒不是技术做不到,更多是生态和需求还没到位。
1.3 端侧大模型让“片上推理”重新成为焦点
为什么偏偏是现在做这件事?因为端侧大模型推理开始有真实需求了。几B参数的量化模型跑在手机、PC、边缘设备上,用户对功耗和发热极其敏感。用通用GPU核心去跑大模型推理,性能差强人意,但功耗和延迟都不符合产品级体验要求。
端侧内存带宽本来就紧,LPDDR5/5X的带宽也就几十GB/s到一百多GB/s,远不及数据中心HBM动辄几TB/s的水平。要在这种带宽约束下把实时交互做出来,必须把每个字节的利用率都榨干。专用的AI核心配合低精度量化(INT8/INT4),再加上硬件级的稀疏化支持,是唯一现实可行的路线。
高通的调整,正是为了在硬件层把这条路铺好。当AI推理任务到来时,不必再占用庞大的通用着色器阵列,而是交给专用核心去处理,功耗和速度都能受益。
2. 苹果和英伟达各自的路数,到底有什么值得对齐的
要说清楚高通这次“看齐”的对象,得先厘清两家公司的技术路线本质上是不同的。标题把苹果和英伟达并列,但两者解决AI加速问题的方式差别很大。
2.1 英伟达用Tensor Core证明了一件事:AI核心必须和显存、缓存长在一起
英伟达的思路可以概括为“融合派”。Tensor Core直接内嵌在GPU的SM(Streaming Multiprocessor)内部,和普通CUDA核心共享寄存器文件、共享内存和L1缓存,通过CUDA统一编程模型暴露给开发者。
这个设计的最大优势是数据通路极短。AI计算所需要的权重和激活值,已经在GPU自己的显存和缓存体系里,Tensor Core直接读取即可,不需要跨总线搬运。另一个优势是对开发者极度友好,你用PyTorch写代码,CUDA和cuDNN会自动把算子在数据流里找合适的硬件执行。Tensor Core在很长一段时间里几乎是透明的,写代码的人甚至不知道它在工作,但推理和训练速度确实比纯CUDA核心时代快了好几倍。
价格劣势也很明显:融合进GPU的AI核心必须继承CUDA生态的软件栈,封闭、绑定紧,想脱离英伟达的软件体系非常难。这也是很多人调侃“用Tensor Core不是用硬件,是用CUDA不可替代性”的原因。
2.2 苹果Neural Engine给异构计算立了一个相反的样本
苹果的路线是“独立派”。Neural Engine是一颗相对独立的NPU,和GPU、CPU并列放在SoC内,通过统一内存架构共享内存。每个核心用16个神经网络加速引擎组成张量处理阵列,专门执行矩阵乘法和卷积运算。
这种路线的优点在于功耗控制极度优秀。因为NPU不需要继承GPU那套庞大的调度和图形管线,纯粹为张量运算优化,能效比极高。在M系列芯片上跑stable diffusion和端侧大模型,NPU都是被优先调用的那个单元。
缺点也明显:如果某个算子NPU原生不支持,数据就要在NPU、GPU、CPU之间穿行,性能损失极大。Core ML的算子覆盖率直接决定了实际AI性能的上限。苹果靠封闭生态强行把这个协同做到可用,但这种模式很难被安卓和Windows生态复制。
2.3 放在一起看:三条路线没有谁绝对正确,只有适配场景不同
我给这三条路线做了一个直观对比,方便你理解高通这次的定位。
| 对比维度 | 英伟达Tensor Core | 苹果Neural Engine | 高通GPU内AI核心(趋势) |
|---|---|---|---|
| 物理位置 | 内嵌于GPU SM内部 | 独立于GPU的NPU | 集成在GPU体系内部或紧邻 |
| 编程方式 | CUDA统一生态 | Core ML / Metal Performance Shaders | 预计走OpenCL/Vulkan扩展+自家SDK |
| 数据通路 | 和GPU共享显存、缓存 | 通过统一内存与CPU/GPU交互 | 与GPU共享内存,可承接绘图管线后的推理 |
| 核心特长 | 训练和推理双能干,生态完整 | 低功耗端侧推理与系统集成 | 移动端能效比优先,意图吃下端侧大模型 |
| 主要瓶颈 | 生态绑定深,封闭 | 算子覆盖有限,系统封闭 | 软件生态和技术工具链尚待补齐 |
高通这次的方向更靠近英伟达的技术形态,但目标场景又是苹果式的低功耗端侧AI。换句话说,它想走的是“英伟达式的融合路线+苹果式的能效目标”,这条路的挑战不在硬件设计,而在软件栈能不能接得住。
3. 新硬件落地之后,最先受影响的是我们跑模型的日常
每次芯片架构调整,网友最高兴的环节是看跑分,但真正决定这些硬件有没有用的,是技术工具链能不能跟上。落到日常使用场景,最直观的冲击点在本地推理框架和开发框架的适配进度上。
3.1 llamacpp这类推理框架会如何适配专用AI核心
先明确一个基本事实:llama.cpp这类框架之所以能在各种设备上跑大模型,靠的不是暴力算力,而是对底层硬件指令的精准利用。它在英伟达GPU上是CUDA核心,在苹果设备上是Metal和ANE,在英特尔上是oneAPI,在AMD上是ROCm/HIP。
如果高通GPU的AI核心要发挥价值,llama.cpp就必须为其新增一条后端路径,把GGML的量化矩阵乘算子映射到AI加速器的指令上。这是个不轻松的工作,需要芯片厂商公开底层算子库和驱动接口。高通为此准备了很久,自家SDK一直面向Adreno和Hexagon优化,所以我对落地进度持相对乐观态度。
对普通用户的直接好处是:同样的7B量化模型,以前在集成GPU上跑可能又慢又烫,以后如果能正确调度到专用AI核心,速度预计会有明显提升,同时整机功耗还能降下来。不过这有个前提——工具链优先级够高,驱动默认开启,适配模型格式覆盖足够全。有一个环节掉链子,体验就会打折扣。
3.2 PyTorch/Ollama的现状:能识别,但未必用得上
不少人在Windows上装PyTorch,跑nvidia-smi看GPU利用率,发现显卡在工作就以为万事大吉。其实这里藏着一个很深的误区:能用GPU跑,和用对了GPU里的硬件单元,是两回事。
Ollama在Windows上“未使用GPU”这个经典问题,很多人都遇到过。最典型的原因是Ollama默认找不到CUDA运行库,或者Windows图形驱动版本太老,导致推理回退到了CPU。有经验的做法是把ollama的日志打开,看它到底加载的是哪个计算后端,是cuda还是cuda_v11还是cpu,版本不匹配就要手动装驱动。
在高通的新架构上,这个问题会更明显。因为专用AI核心不会像普通GPU那样被常见的框架默认识别,很可能需要新驱动、新算子库,甚至新的API才能触发。框架能识别硬件品牌,和能利用硬件特性之间,还有很长一段距离。
3.3 驱动的角色:没有“翻译官”,核心再强也是摆设
在Linux上折腾过NVIDIA驱动的人都知道,nouveau和官方驱动性能差距能到几倍,原因就在于底层指令翻译和电源管理策略不同。专用AI核心这类加速单元,对驱动层的依赖只会更深。
正常驱动栈要处理的不只是把指令翻译成硬件动作,还包括内存分配、缓存一致性、电源状态切换等一大堆事情。如果驱动对AI核心的支持不成熟,即便PyTorch识别到了设备,实际推理时也会绕回通用核心或者直接报错。
这也是我为什么一直建议身边做端侧推理的朋友,别急着追新硬件,先把驱动和运行时版本钉死在工作版本上。新驱动未必是更好的驱动,但一定更可能出现问题。我踩过的坑里,相当一部分来自“什么都升到最新”的操作。
4. 从运维和优化视角,教你判断AI核心到底干没干活
GPU驱动开发、GPU服务器的日常运维,都要干一件事:弄清楚计算任务到底把压力卸到了哪个硬件单元上。GPU加了AI核心之后,这个问题变得更关键了。你用着GPU的显存占了,功耗看着正常,但只要AI核心利用率是0,那这块新硬件就和没有一样。
4.1 这些数据比GPU占用率更能反映真实情况
GPU利用率这个指标骗过很多人。Windows任务管理器显示GPU 100%,你以为是满负荷工作,实际上可能是某个图形渲染管线在吃资源,而计算单元大量闲置。推理任务也一样,通道利用率和工作负载的真实情况,必须通过更细粒度的计数器去看。
真正能说明问题的是这几类数据:
- 张量核心/矩阵计算单元的利用率,如果特殊单元支持独立监控的话,这个指标能直接告诉你AI加速器是否参与工作
- 功耗和频率的分布模式。负载跑到专用AI核心上时,GPU整体功耗曲线和跑通用计算时的形状往往不一样
- 指令队列或者总线吞吐。矩阵单元忙碌时,数据搬运的模式会更加规整,指令流水线延迟也会不同
- 内存带宽消耗。AI推理是带宽密集型任务,专用核心参与后,通常能看到更稳定的带宽占用
坦白讲,AI核心的利用率监控在桌面级工具里都还做得不算成熟。移动端GPU更不透明,很多时候要靠经验和侧面数据推断。但方向是明确的:别只看占用率,去看核心内部单元的活动情况。
4.2 一个典型的“GPU跑满但没加速”的排查过程
我先讲一个我在实际部署中遇到过的情况。某个模型在NVIDIA GPU上用vLLM跑离线推理,GPU利用率显示96%,但每秒生成的token数只有预期的一半。显卡确实在干活,功耗也高,可生成任务迟迟不见提速。
排查思路是这样的:
- 先确认推理进程是否真的在用GPU执行核心运算,而不是靠CPU搬运数据。nvidia-smi里进程列表、CPU占用率,加上内核态时间占比都能辅助判断。
- 再做一次后端对比测试。同一个模型分别跑CUDA版本和CPU版本,如果GPU版本只快了一倍出头,说明GPU并没有发挥出应有算力。
- 最后锁定问题出在算子调度上,模型里部分算子没有走CUDA优化内核,而是回落到了通用实现。改用vLLM的图模式重新编译后,吞吐立刻上了一个台阶。
这类问题在专用AI核心出现后只会更多,因为软件栈的适配粒度被切得更细。你若只盯着GPU总利用率,就会漏掉真正的瓶颈在哪个单元。
4.3 好用且免费的性能观测手段
说到具体工具,我平时最常组合使用这些,大家碰到类似场景可以照搬:
- nvidia-smi加dmon参数做周期快照,观察GPU利用率之外的核心温度、功耗和显存读写
- NVIDIA Nsight Compute做算子级别的Kernel分析,看清每一步到底使用的是什么计算单元
- rocprof和rocm-smi,AMD平台上一套能对上号
- perf等Linux性能计数器结合IPC(每周期指令数)分析,IPC过低通常意味着访存或同步等待限制了计算单元
- Windows上开PIX或者旧版NVIDIA Control Panel里隐藏的调试指标当成辅助观测
有人说GPU服务器运维就是看盘和重启,这话只对了一半。深层的问题如果不会用工具去拆,你就永远只能停留在表面的“跑满了”“没跑满”上,离问题的真实位置还很远。
5. 站在模型部署和算力运营角度,这类架构会带来什么连锁反应
如果说前几节讲的是开发者视角和运维视角,那这节我们看远一步:GPU内部出现专用AI核心后,对算力租用、显存规划和集群调度会带来什么变化。
5.1 显存焦虑会不会真的被缓解
先回答一个热搜里最受关注的问题:GPU显存容量,到底是测算推理还是训练用的?答案是推理和训练都要优先看显存,但原因不同。训练时显存装的是梯度、优化器状态和中间激活值,量非常大;推理时显存主要装模型权重加KV Cache,计算量相对小,但KV Cache长度会随并发快速膨胀。
专用AI核心的加入不会直接减少模型占用的显存字节数,但它能改变计算的效率结构。以INT4/INT8量化推理为例,专用矩阵单元处理低精度数据的能力更强,同样的显存带宽下能算出更多的token。换个说法:显存仍然是容量瓶颈,但因为单位算力效率上去了,很多以前需要在更大显存卡上跑的模型,现在性能可能够用了。
“GPU实例化到底减少的是什么”这个问题也在这个背景下变得更有意思。实例化减少的其实是每个请求的中间计算冗余,通过图优化、并行调度、算子融合,把重复分配和等待的环节压掉。专用AI核心配合得好的话,实例化之后的理论时延可以做到更低。
5.2 多卡调度和“GPU虚拟内存”概念将会演进
多卡调度现在的主流做法是数据并行,也就是每张卡存一份完整的模型,各自跑一批数据,然后同步梯度。显存不够时再用张量并行或流水线并行,把模型切块放多卡上。专用AI核心普及后,单卡推理能力进一步增强,很多场景也许不再需要盲目堆卡数,而是用更少的卡做更多并发,成本优势很明显。
热点词里提到的“GPU虚拟内存”也是一个关键变量。现代GPU驱动会把部分显存数据换出到系统内存,缓解显存爆掉的问题。以前这个机制一触发,性能常断崖式下跌,因为通用核心要从内存搬数据回来再算。但专用AI核心配合更精细的数据流调度,至少可以把换入换出的冲击控制得更平稳。
从运维角度看,这要求你在分配容器资源时,不仅看显存大小,还得考虑算力类型。一张卡上的AI核心数量、驱动版本、算子库版本,都会成为调度器需要感知的属性。服务器运维工作不再是单纯的“插卡开环境”,而是要维护一张软硬件能力的矩阵。
5.3 给工程师的三条现实建议
第一,别只看纸面算力。硬件有了新单元,不等于你的模型能用到。任何新硬件落地到生产环境都需要软件栈成熟,判断的指标是官方算子库覆盖率和社区工具链的适配记录,而不是发布会上的理论数字。
第二,把监控粒度做细。传统的GPU利用率监控在新架构下不会完全失效,但不够用。尽早把性能计数器手段用起来,弄清楚你环境里的关键算子到底跑在哪个硬件单元上。
第三,保持生态敏感度但别追新。如果框架和驱动还停留在“只支持识别、不支持利用”的阶段,新核心对你就是摆设。稳妥的做法是先跑通现有工作负载,再做小规模验证性测试,确认收益可观后再全量切换。
6. 在“GPU+AI核心”这个趋势里,我最想提醒你的一件事
聊了这么多架构背景和工程细节,我想用自己的一次实际经历收个尾。
之前我在调优一个端侧模型的推理性能时,试过调整各种线程数、批处理大小和量化参数,始终卡在延迟不达标的瓶颈上。后来才发现问题根本不在软件调优参数,而在硬件单元根本没有被调度到正确的后端。我换了工具链的推理路径之后,照样那些参数,延迟直接掉了近一半。
这个经历给我的最大教训是:新硬件带来的性能红利,从来不是装上驱动启动系统就能自动到手的,它需要你理解数据是怎么流动的,计算指令是怎么被调度的,然后在工具链里做出准确的选择。高通给GPU装AI核心这件事,就算发布时宣传再漂亮,消费者和工程师最终真正拿到的好处,还是取决于生态打磨得够不够久。
我能做的就是把我验证过、踩过坑的经验写出来,帮你少走弯路。硬件往哪里走的趋势大家都能看见,但能不能让硬件为你所用,终究要靠实操和判断力。