ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

GPU算力怎么选?从并行计算到显存带宽的入门指南

GPU算力怎么选?从并行计算到显存带宽的入门指南

1. 一个让电脑瞬间“变慢”的诡异场景,以及我为什么盯上GPU算力

前阵子帮朋友调一台旧工作站,配置看着不算太差:两颗服务器级处理器、64GB内存,跑编译和虚拟机都顺滑得很。结果他给我看一个操作——用图像处理脚本批量修一批航拍照片,一共也就三百多张,每张做些缩放、去雾、锐化。按下回车之后,CPU占用直接飙到100%,风扇声音大得像要起飞,整整跑了四十多分钟才完。我当时第一反应不是“该换电脑了”,而是“这活根本不该让CPU一个人干”。

这就是典型的算力分配问题。很多人一聊电脑性能,就盯着CPU型号、内存大小、硬盘读写速度,唯独对GPU算力一知半解。总觉得显卡这东西就是打游戏用的,平时写文档、剪个视频、跑个数据脚本,好像跟它没什么关系。可实际情况是,但凡涉及图像、视频、三维渲染、深度学习训练、科学仿真这一类“大量重复的数值运算”,GPU的算力能比CPU快出十几倍甚至上百倍。你那台电脑不是慢,是没把“肌肉”用对地方。

这篇内容我想好好聊聊GPU算力这件事。不搬数据手册,也不堆评测跑分,而是从“到底什么是算力”“算力怎么拆开看”“什么场景吃算力”“选卡看哪几个数”“怎么把已有机器的GPU潜力榨出来”这几个角度,把这事讲透。适合三类人看:一是准备买电脑或升级显卡,但不确定该花多少钱、看重什么参数的朋友;二是手里有电脑,发现跑图、跑模型、渲染视频时力不从心,想知道瓶颈到底在哪的从业者;三是对深度学习、AI应用感兴趣,但被各种显卡名词绕晕的新手。

先说个反直觉的结论:GPU算力强不强,跟“显存是不是够大”有关系,但不是决定性的。真正的核心变量是并行计算单元的数量和有效带宽。下面我一个一个拆开讲。

2. 为什么CPU那么多核还不够,GPU却靠“小而多”取胜

2.1 一个任务拆成一千份,跟拆成一万份,效率完全不同

要理解GPU算力,先得明白CPU和GPU在“性格”上的根本差异。

CPU的设计目标是“单线程性能最大化”——它要在最短时间内处理完一个复杂的、依赖前后顺序的任务。比如操作系统调度、逻辑判断、数据库事务,这些任务前一步的结果往往直接影响后一步,没法提前并行。所以CPU的核心设计得又大又复杂,每个核都带完整的控制单元、大容量缓存、分支预测器,单核主频也拉得很高。你可以把CPU想象成几个特别强的“全能老师”,什么题都能解,一道解完再解下一道。

GPU不一样。它的设计目标是“吞吐量最大化”——同时处理成千上万条相对独立、重复度很高的计算。比如把一张1920x1080的图片每个像素的颜色值加亮20%,这里有约200万个像素点,每个像素点的运算逻辑一模一样,而且互不依赖。GPU的做法是派出几千个“算术小工”,每人负责一小块像素,同一时刻全部开工,一眨眼就干完。

这里有个关键数字:桌面级CPU核心数一般8到16个,线程数翻倍也就三十二个左右。而一块中高端GPU拥有几千个并行计算单元。拿图像批处理来说,CPU用两个“全能老师”一个一个算,GPU用几千个“小工”同时算,量级差距就摆在那。我那位朋友遇到的批处理场景,就是典型的高吞吐计算,GPU能轻松接下来。

2.2 并行计算单元的“车多路堵”效应,以及为什么不能只看核心数

但这里有个常见的误解:既然GPU并行单元多,那是不是核心数翻倍,性能就翻倍?

不是的。并行计算有个“木桶效应”,叫阿姆达定律:一个任务加速的极限,取决于任务里“无法并行”的部分占比。如果某个流程里10%必须串行执行,那就算其他90%的并行部分做到无限快,整体加速比也不可能超过10倍。所以GPU算力的实际发挥,严重依赖任务本身的并行度。

还有一个容易被忽略的点:并行单元一多,数据搬运就成了瓶颈。GPU算力可以分为“运算能力”和“数据吞吐能力”两半。如果计算单元算得飞快,但数据从显存里搬不过来,计算单元就得空等。这就好比一个快递分拨中心,里面有一千个分拣员,传送带却只能同时送十条包裹进来,分拣员再多也只能干瞪眼。所以衡量GPU算力,绝对不能只看“多少个计算单元”,还要看显存带宽——也就是一秒钟能从显存里读出多少数据。带宽不够,核心数再多都是摆设。

我自己实测过一个例子:同一批4K视频转码任务,用低端卡跑的时候,GPU占用率只有60%左右徘徊,核心没满但速度提不上去。后来换成带宽翻倍的卡,同一条任务总耗时直接下降了四成。问题不是前一张卡“算得慢”,而是数据搬运速度卡住了喉咙。

2.3 FP32、FP16、INT8这些精度标识,才是看懂算力的真正门槛

还有一个绕不开的概念是浮点精度。

GPU算力常用“每秒多少次浮点运算”来标记,也就是FLOPS。同一种任务,用单精度(FP32)、半精度(FP16)、双精度(FP64)三种精度去算,得到的数值完全不同。为了保持兼容,主流厂商通常会在产品详情页标注“FP32算力”作为参考值。

打个比方:FP64就是拿计算器把圆周率算到小数点后十几位,适合科学仿真;FP32是普通照片处理、游戏渲染、深度学习训练的主流精度;FP16和INT8则是“快刀斩乱麻”式的近似计算,精度损失一部分,但速度能翻数倍。AI推理场景里,模型通常跑在用INT8量化过的版本,就是因为算力利用率比FP16又高了一大截。

所以看算力数据时,一定要问一句:这个数字标的是什么精度?两个不同厂牌的显卡,一个标FP32算力高,一个标“AI算力”高,后者很可能是拿INT8的数据来撑场面。我在评测环境里对比过同样跑一批图像分类推理,某张以“AI算力”著称的卡,实际速度比同级卡快不了多少,因为我的模型还没完成量化,用的还是FP16精度。这不叫性能差,而是“精度对不上号”。

3. 把GPU算力拆成四份“体检报告”:一张卡到底要看哪些数

3.1 第一份报告:并行规模与频率,决定了“潜在产能”

硬件层面上,GPU算力跟三个要素直接相关:并行计算单元总数、工作频率、单周期能完成的运算量。

  • 并行计算单元总数:可以理解成车间里有多少个工位。数量越多,理论上能同时处理的像素点、顶点、矩阵元素就越多。低端卡可能在千级、中端卡两三千、旗舰游戏卡五六千,专业计算卡可能上万。
  • 工作频率:工位上的节拍速度。频率越高,每个计算单元每秒钟完成的运算轮数越多。但频率太高会带来功耗和散热压力,所以厂商通常会限制在一个合理的甜点区间。
  • 单周期运算量:每个工位一个节拍里能算多少个数。这个跟架构设计、运算单元位宽有关。单纯把频率提高,不如架构上的“单周期多算”来得实在。

这三者相乘,再乘以精度系数,大致就是“理论峰值算力”。注意“峰值”两个字——它只在理想状态下成立,真实场景受任务调度、显存带宽、功耗墙、温度墙的限制,通常只能达到峰值的六到八成。买到手之后别拿理论峰值当实际速度,不然一跑分容易失望。

3.2 第二份报告:显存带宽,比显存容量更容易被忽略

显存容量和带宽,这两件事常常被人混为一谈。容量解决的是“能不能装下”的问题,带宽解决的是“喂不喂得饱”的问题。

举一个具体场景:训练一个中等规模的图像识别模型,模型权重加上优化器状态、中间激活值,可能占用6GB显存。你手上有两张卡,A卡12GB显存但带宽只有200GB/s,B卡8GB显存但带宽超过400GB/s。模型刚好能塞进B卡,那B卡训练速度很可能完胜A卡。因为训练过程中,每一轮迭代都要反复读取整个权重张量,带宽翻倍就等于每一轮的数据搬运时间减半。

如果模型塞不进去呢?那就得用CPU内存分担,数据要经过PCIe总线来回搬运,速度直接掉到几十GB/s的量级。哪怕GPU算力再高,也只能等数据慢慢挪。所以显存容量的意义是“装得下”,带宽的意义是“跑得快”,两者缺一不可。我见过不少朋友,买卡时只盯着“显存大不大”,结果选了一块大容量低带宽的卡,跑大模型确实不爆显存了,但训练速度反而比之前更慢,就是这个原因。

3.3 第三份报告:精度与专用计算单元,区分游戏卡、渲染卡、AI计算卡

现在的GPU已经不是单纯“显卡”了,里面除了做图形渲染的单元,还有专门为矩阵运算服务的计算单元。

  • 游戏场景:核心吃的是图形渲染管线和光栅化能力,同时需要处理大量的单精度浮点运算。
  • 三维渲染:尤其是光线追踪类型的渲染任务,跟游戏的“实时渲染”不一样,它更看重长时间稳定输出和足够大的显存,反而对瞬时峰值帧率不那么敏感。
  • AI训练和推理:矩阵乘法是绝对主角。GPU里专门为矩阵运算设计的硬件单元,能在很低的功耗下完成大吞吐的矩阵运算。这也是为什么“AI算力”经常单独成为一个指标,因为浮点标量运算和矩阵张量运算的效率完全是两码事。
  • 科学计算和仿真:涉及双精度浮点运算,很多为游戏设计的卡会把双精度性能大幅削减,而专业计算卡则保证双精度不缩水。如果拿游戏卡去跑流体力学仿真,可能半天算不出一个结果。

选卡之前先想清楚“我的主场景是哪个”,这个顺序不能反。

3.4 第四份报告:功耗墙与散热,决定算力能不能持久输出

这是一份“看不见”的报告,但直接影响实际体验。

GPU的功耗不是恒定值,它有一个功耗上限(典型是200W到450W这一档)。当核心满载时,如果发热量触及温度墙,驱动会自动降频,算力随之下降。散热好的显卡,能在高功耗下维持更久的频率;散热弱的型号,满载五分钟之后就开始降频,长期跑训练任务的速度会明显缩水。

我在给一个朋友做AI推理部署时遇到过这样的事:同一颗GPU核心,一张卡是涡轮散热设计,塞在服务器里通风差的机箱,跑连续推理温度稳定在86度,频率掉到标称值的七成;另一张是开放式三风扇设计,但布局在风道良好的塔式机箱里,温度稳定在72度,几乎不降频。两者跑同一个模型,后者吞吐量将近前者的1.3倍。这已经不是芯片本身的问题了,完全是散热环境与功耗策略决定的。

提示:看评测、选配置时,除了看跑分数据,建议多看一眼“持续满载温度”“满载功耗”和“降频曲线”这三项。很多GPU的真实差距,是在连续满载一小时后才拉开的。

4. 算力到底用在哪:四个典型场景的“肌肉需求”完全不同

4.1 游戏与实时渲染:要的是低延迟和高帧率,显存带宽需求极大

游戏场景是大多数普通用户接触GPU算力最多的方式。为什么游戏又吃显存带宽?因为每一帧画面都需要从显存中读取海量纹理数据、顶点数据和场景深度信息,而且必须在16毫秒甚至8毫秒内出完一帧。

以2K分辨率高画质为例,一帧画面包含数百万个像素,每个像素要经过顶点变换、光栅化、纹理采样、光照计算、后期处理多个阶段。这里面绝大部分是单精度浮点运算,且并行度非常高。这也是为什么游戏卡会更强调“核心频率”“着色器数量”以及“大带宽显存”——每一个环节都在等数据。

玩竞技类游戏的朋友,追求的是高帧率。高帧率意味着每帧的生成时间必须极短,GPU要能在4到6毫秒内把一帧画完。玩3A大作追求的是高画质,高分辨率加上光追效果,每帧像素量暴涨,意味着GPU光栅化和光照计算量大增。两边的优化方向并不完全相同,选卡时也要做取舍。

4.2 视频剪辑与特效渲染:编码器、显存容量、长时间稳定性,三者缺一不可

视频创作领域,GPU算力的价值体现在两个层面。

第一个层面是预览与实时播放。剪辑软件的预览窗口需要实时解码、调色、加效果,GPU如果算力不够,播放时就会掉帧卡顿。第二个层面是导出渲染。导出时需要给每一帧画面执行各种滤镜和特效运算,如果输出规格是4K甚至8K,意味着海量像素点的重复处理。

这里有一个很多新手不知道的细节:视频编码有专门的硬件编码单元,跟GPU上做并行浮点运算的计算单元并不是一回事。GPU有编码单元,但“编码规格支持到什么程度”和“编码质量能做到什么级别”不只看算力。有些卡浮点算力很强,但编码器只支持主流规格,同码率下画质不如另一颗核心。选视频剪辑用卡,要特别关注它能支持哪些编码格式和最高规格,这个信息写在规格表里,不能只看跑分。

4.3 AI模型训练与调优:算力决定试错成本,显存决定模型上限

做AI相关的朋友对GPU算力的焦虑感最强。原因是“模型训练-调参-再训练”这个过程本身就是拿算力换经验。一组超参数跑一次要三小时,调五个版本就是十五小时,算力差一倍,意味着同样的调参周期要拉长到双倍天数。

在训练阶段,主要瓶颈通常是两个:

  • 显存容量:模型、数据批次、优化器状态都要常驻显存。显存放不下,就只能调小批次(batch size),但批次太小会影响梯度估计的稳定性,模型收敛变慢。更麻烦的是,有些模型结构一旦batch size低于某个值,甚至无法收敛到理想效果。
  • 矩阵运算吞吐:Transformer类模型的核心运算就是一堆大矩阵的乘法。矩阵越大,提升运算吞吐能带来的时间收益越显著。

推理阶段则反过来:模型已经训练好,更关心的是“一秒钟能处理多少请求”,以及在低功耗的前提下把吞吐拉满。这也是为什么推理场景经常用INT8量化,甚至有些轻量模型根本不需要独立GPU,用带集成NPU的CPU也能跑得很好。

我自己踩过的坑是:一开始做模型调优时,为了省钱选了显存偏小的卡,不得不把batch size压到4。结果模型怎么训都发飘,损失曲线抖得厉害。后来换了大显存的卡,把batch size提到16,训练过程立刻稳定下来。那一周时间几乎白扔了——这让我长记性:训练场景,显存容量优先级很高,省不得。

4.4 科学计算与仿真:双精度算力、多卡互联才是硬指标

科学计算和上面几个场景又不一样。流体力学、有限元分析、分子动力学这类任务,对数值精度极其敏感,基本要求双精度浮点运算。而游戏卡恰恰是双精度削减比较狠的一类产品。所以即使顶级的游戏卡FP32算力很高,跑双精度科学计算照样打不过一颗规格“看起来没那么高”但双精度无缩水的专业计算卡。

另外,科学计算的任务规模常常超出单卡显存。多卡互联变得很关键。这里不只是“插两张卡”这么简单,而是卡与卡之间的通信带宽必须足够高,否则多卡协同的效率可能只有单卡的1.5倍,而不是2倍。跨卡通信越频繁,通信带宽越重要。越是需要频繁同步的算法,越是吃这个指标。

如果你的科研方向涉及大规模数值模拟,建议优先考虑带高性能互联的双卡方案,而不是四张完全不互联的低端卡。“算力翻倍”只是纸面数据,节点间通信一卡成本。

5. 选卡决策指南:预算优先还是场景优先,以及一个万能的判断框架

5.1 先开发票再谈配置:用“场景-指标权重”矩阵做筛选

我经常被问:“预算三千怎么选卡”“预算一万怎么配工作站”。我的回答几乎永远是同一个框架:先写清自己未来一年里最重的十个任务,再按“算力敏感度”排优先级。

这里给一个通用的“场景-指标权重”参考表:

场景并行计算单元显存带宽显存容量高精度算力硬件编码器散热/功耗
游戏(竞技类)高高中低低中
游戏(3A高画质)高高高低低中
视频剪辑与特效中高中高高低高中高
三维渲染(离屏)中中极高低低高
AI训练高极高极高中低极高
AI推理中高高中高低低中
科学计算/仿真高高极高极高低极高

这个表格不是精确数值,而是用于帮你自我提问:你的场景到底把哪个指标放在第一位?

5.2 几个典型的选卡组合,可以拿来当起跑线

按场景列几种组合思路,仅供参考,具体采购时再结合行情确认:

  • 纯游戏、预算有限:优先保证并行计算单元规模和显存带宽。预算允许的前提下,把显存容量拉到8GB以上。玩竞技游戏为主可以适当降低显存容量需求,把预算挪到带宽和核心规模上。
  • 游戏兼视频剪辑:在游戏卡的基础上加一条“硬件编码器必须支持当前剪辑规格”。同时散热要选好的,因为导出视频经常长时间满载,降频会让导出速度大打折扣。
  • 三维渲染为主:显存容量优先级最高。模型材质、贴图、灯光缓存都会吃显存,显存不够只能用CPU慢慢算。渲染这个活不追求帧率,追求的是“一次能装下多大场景”“长时间满载稳不稳”。
  • AI研究与训练兼推理:显存容量和带宽并重。预算有限时,宁可牺牲少量核心规模,也要保住显存能装下批量数据的底线。不要买不支持关键运算指令加速的卡,否则训练时间会成倍延长。
  • 科研数值仿真:优先保证双精度算力和多卡互联能力。这类需求往往不是消费级产品的主战场,建议咨询专业计算方案再做决定,别拿游戏卡硬扛。

5.3 最容易被坑的“小字部分”:供电接口、机箱尺寸、整机功耗

很多人选卡只看GPU本身,忽略了三件小事,结果买回去根本装不上或者跑不动。

一是供电接口。高功耗显卡需要外接供电,电源额定功率不足、没有对应的供电接口,都会导致开不了机或满载重启。建议在购买前查清整机功耗,留下至少20%到30%的冗余。

二是机箱尺寸和散热空间。现在的显卡又长又厚,旧机箱可能放不下;如果装进去之后把风道堵死,满载温度会直线上涨,性能自动打折。

三是主板插槽与CPU的配套性。老平台PCIe代次偏低,高带宽的显卡可能无法发挥全部性能。贵的显卡插在过老的主板上,跟便宜一档的显卡跑出来的帧数可能差不多,瓶颈反而是CPU和总线。

这三条没搞清,显卡买贵了也一样会变“收藏品”。

6. 不换卡的情况下,怎么把现有GPU的算力水平压榨到极限

6.1 第一步:先确认驱动、功耗策略和电源模式都处于高性能状态

很多人GPU利用率始终上不去,第一个怀疑对象是硬件太弱,但很多时候只是驱动或电源设置的问题。

  • 更新显卡驱动到正式稳定版,避免某些测试版驱动带来的调度问题。
  • 在驱动控制面板中把“电源管理模式”从“平衡”改成“最高性能优先”。这个设置能减少GPU核心动态降频的倾向,让算力更“敢”往上走。
  • 在操作系统里把电源计划切到“高性能”模式,避免CPU和PCIe总线因为省电策略而降速。

这几步十分钟就能完成,成本为零,但经常能让满载性能提升5%到10%。别小看这比例,长时间跑任务是实打实的时间差。

6.2 第二步:用占用率和温度曲线,判断GPU到底“满没满”

想优化GPU算力,先知道自己卡在哪个环节。打开任务管理器看“GPU利用率”是一种方式,但我建议用更细的监控工具看三个数据:

  • 利用率百分比:如果始终低于90%,说明任务没把GPU喂满,要么任务并行度不够,要么数据搬运跟不上,要么CPU端喂数据的速度太慢。
  • 核心温度与降频频率:如果温度撞到温度墙且频率明显低于标称值,说明散热能力不足,需要清理灰尘、调整机箱风道、或者把功耗上限适当下调。
  • 显存占用:接近上限时,任务可能会在多个批次之间频繁分配和释放显存,造成“隐性卡顿”。

以前面说的图像批处理场景为例,我帮朋友排查时发现:图片数量很大但每张图尺寸很小,GPU利用率只有30%,因为单张图的并行规模太小,不足以占满所有计算单元。解决思路是写脚本把多张小图拼成“网格大图”一起处理,相当于把多个小任务合并成一个大任务,GPU吞吐立刻拉满。这种优化对底层原理的考验比较多,但收益非常可观。

6.3 第三步:善用精度优化和存储优化,比单纯换硬件省钱

在软件和算法层面,还有几个被低估的优化手段。

精度优化:如果你的任务是AI推理,尝试把模型从FP32转成FP16甚至INT8,速度往往翻倍甚至更高。前提是模型对精度损失不敏感,并且转换工具链支持。验证方式是跑一遍验证集,观察精度指标是否在可接受范围内。只要不掉点,白捡的加速。

存储优化:如果瓶颈在“数据从磁盘到显存”的路上,把数据集从机械盘搬到NVMe固态盘上,或者先用内存做文件缓存,都能明显缩短训练中的数据加载时间。GPU算力再高,喂不上数据也是白搭。

批处理优化:小批次任务频繁启动带来的开销很大。一个比较极端的例子是,我在一次批量图像生成测试里,把所有单张处理改成批量流水线处理,GPU利用率从55%拉到95%,总耗时缩短到原来的四成。同一个模型、同一台机器,只是把任务组织方式改了一下。

6.4 多GPU并行:物理上做不到的“扩容”,也可以从任务层面分摊

如果工作负载确实超过单卡能力,但预算不支持立刻升级,可以考虑用多卡并行。

这里面的关键不是“插上第二张卡就能快一倍”,而是任务本身能不能被切分。AI训练可以通过数据并行把不同批次分给不同卡,推理可以通过部署多个副本分摊流量,渲染可以通过分帧渲染把不同帧分给不同卡。但所有这些都依赖卡间通信。通信开销越大,扩展效率越低。

我见过一个翻车案例:有人拿了四张低端卡跑模型推理,结果每张卡的处理能力本身就不强,加上请求分发和结果回收的开销,总吞吐反而不如一张中高端卡。多卡方案的收益,永远要在“单卡已经接近饱和”的前提下才显著。单卡都没吃满,就别急着搭建多卡环境。

7. 一些容易被忽略的“算力外”细节,以及我的实操心得

7.1 显存“勉强够用”和“刚刚够用”之间,差距比想象中大

我观察到一个普遍现象:当显存占用接近100%时,性能会非线性地下降。不是因为显存满了就会出错,而是系统会启动一些“应急机制”:频繁地在显存和内存之间换页、压缩显存数据、限制批次大小。这些额外操作占用的资源,可能让实际速度掉到正常情况的一半以下。

所以选卡时,显存容量别卡着“刚刚好”去选,尽量留出20%以上的余量。这在跑深度学习训练时尤其重要——优化器状态和中间激活值对显存的占用会随着模型规模、序列长度、批次大小波动。留出冗余,就是给训练策略留出调整空间。

7.2 我自己在长期负载下总结的散热三原则

跑了大量训练任务之后,我对“算力持续输出”这件事有三个经验:

  • 机箱风道讲究“前进后出、下进上出”,别让热风在机箱里打转。
  • 定期清理散热鳍片和风扇上的灰尘,这比换硅脂来得更实在。灰尘堆积会直接让温度涨十度以上,性能损失肉眼可见。
  • 如果任务会长时间满载,手动设置一个比默认功耗上限略低的数值,反而可能跑得更快——因为温度降下来之后,频率能保持得更高,“平均算力”不降反升。

7.3 选卡时不要被“跑分数字”绑架,回归自己的真实负载

最后想多说一句:跑分是参考,不是真理。

每一款显卡评测软件测的都是特定的工作负载,而这些工作负载未必等于你的任务模式。一张跑分很高的卡,在你的具体剪辑工程里、在你指定的模型架构下、在你常用的渲染器里,表现可能并不理想。

一个更可靠的做法是:把自己未来最常用的一两个典型任务,带到实测环境里跑一遍。无论是借朋友的机器测试,还是利用商家提供的试用机会,都比看任何榜单更接近真相。我在选择渲染用卡时就是这么干的——把公司一个真实的渲染项目文件分别在不同配置上跑了一遍,直接对比耗时和稳定性,十分钟之内就确定了方案,省下了反复纠结的时间。

说到底,GPU算力不是一个简单的“越大越好”的数字,而是一个由并行规模、数据吞吐、精度支持、功耗散热、软件生态共同决定的综合能力。搞清楚这五个维度的关系,再对照自己的真实场景去做取舍,你选的每一分钱都能花在刀刃上。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进