手机里的图像处理、工作站上的模型试验、服务器里的批量推理,都可能用到 GPU。它是加速器:把适合并行的计算接过去,让整台机器更快完成工作。但安装 GPU 不等于应用自动变快。本课从真实的芯片、板卡、总线和服务器出发,学习判断任务是否适合加速,读懂规格,并沿数据路径寻找瓶颈。读完后,你应能说明需要多少显存、数据怎样到达设备,以及为什么峰值算力充足仍可能交付缓慢。
1 为什么推理与训练需要加速器
假设要把 1 张图片变成分类结果。程序先读取压缩文件,解码成像素,调整尺寸,再把数字送入模型。模型会反复执行大量乘法与加法;不同像素、不同样本之间,有很多相似计算可以同时进行。CPU 能完成这些工作,但当运算规模足够大、并行度足够高时,把其中规则、重复的部分交给 GPU,通常能缩短等待时间。加速来自任务结构与硬件的匹配,不能只靠芯片名称判断。
GPU 最初服务于图形计算,后来也用于通用数值计算。入门时可以把它理解为擅长组织大量相似运算的处理器。CPU 则擅长处理复杂控制、操作系统服务及种类繁多的任务。这里的“擅长”不是能力的绝对界线:CPU 也能并行计算,GPU 也会执行条件判断。真正要比较的是,在给定数据规模、精度和等待时间约束下,完成整项任务要付出多少时间、内存与能耗。
训练与推理使用模型的方式不同。训练通常要读取样本,计算预测与误差,再计算梯度并更新参数,因此除了参数,还需要保存训练中间结果、梯度和优化器状态。推理使用已经得到的参数生成结果,不做相同的更新过程,常见目标是降低单次响应时间或提高每秒处理量。不能用“推理能装下”推断“训练也能装下”,也不能拿训练的批量吞吐直接承诺在线推理延迟。
批量是同时处理的样本数量。把 1 张图片扩为 16 张,可能让设备有更多工作可做,并分摊启动计算的固定开销;但需要更多显存,也可能让先到的请求等待后续请求凑齐。离线处理 10000 张图片往往看重总耗时,交互应用则更关心用户等了多久。这些目标会改变加速效果,不能只展示最佳吞吐而省略批量与延迟。
还有一些工作不值得搬到 GPU。如果只计算少量数字,传输和启动的时间可能超过计算本身;如果每处理少量数据就必须等待网络回复,设备也可能一直闲着。选择加速器前,应先问:重复计算在哪里,能否集中提交,输入是否能及时到达?这个判断把硬件选型变成可以测量的工程问题。

2 GPU 与 CPU 的分工边界
在常见独立显卡服务器里,CPU 是主机侧的组织者。操作系统、文件系统、网络协议和大部分应用控制逻辑运行在主机上。CPU 从 SSD 或网卡接收数据,把数据放进主机内存,安排预处理,再通过运行时与驱动提交 GPU 工作。GPU 完成适合它的计算后,结果可以继续留在设备上供后续运算使用,也可以复制回主机交给其他程序。应用通常需要两边配合。
这里的“显卡”与“GPU”不完全等价。GPU 常指处理芯片;板卡还包含显存、供电电路、散热器、连接器等。独立板卡通过 PCIe 接入主机,机架服务器也可能采用专门的加速模块与底板。笔记本或部分集成系统的 GPU 会共享系统内存,其数据访问方式与独立显卡不同。因此,“有 32 GB 内存”不能自动解释为“有 32 GB 独立显存”,本课后续例子默认使用独立设备。
边界应围绕数据来划。比如图像解码留在 CPU,模型主体放在 GPU;如果每经过 1 层模型都复制回主机做简单处理,就会反复跨越边界。更合理的组织通常是让相关计算连续执行,减少来回搬运。不过,迁移预处理需要合适的软件支持和验证,不能为了减少拷贝而牺牲结果正确性。先测出占时较长的阶段,再决定迁移哪段代码。
GPU 也不能替主机补齐所有短板。若 CPU 持续解码不足,GPU 会等待;若主机内存不足,系统可能频繁换页;若 SSD 连续读取尚可、处理大量小文件却很慢,输入流水线也会停顿。网络读取还会受到网卡速率、远端服务与并发方式影响。评估服务器要看 CPU、内存、存储和网卡如何共同供数,而不能把主机当作没有成本的配件。
工作站适合本地交互试验,但还要检查机箱空间、插槽位置、电源与散热条件。机架服务器的风道和供电通常按整机设计,某些被动散热板卡依赖服务器强制送风,不能直接假定放进普通台式机就能稳定运行。小型机器、移动设备和服务器即使使用相近的芯片名称,也可能有不同功耗限制与持续性能。选型最终必须落在可安装、可供电、可散热的具体整机上。
3 显存、带宽与算力三件套
显存容量回答“工作需要的数据能否同时放下”。模型参数只是其中一部分,还要留出输入、输出、中间结果、算子临时工作区以及运行时占用。假设有 60 亿个参数,每个参数占 2 字节,仅参数约为 12 GB;这不意味着 12 GB 显卡就能运行该模型。生成式推理还可能随上下文长度、并发请求增加而保存更多状态。实际容量要以目标配置下的峰值占用为准,并留有余量。
注意容量单位。这里 GB 按 10 的 9 次方字节计算,GiB 按 2 的 30 次方字节计算,12 GB 约为 11.2 GiB。硬件标称、软件显示及监控工具未必采用相同单位,比较之前应先统一。还应区分“设备总容量”“驱动报告的可用容量”和“应用还能分配的容量”,它们不是同一个数。桌面显示或其他进程也可能占用部分显存。
显存带宽回答“设备每秒能在 GPU 与显存之间搬多少数据”。设某个阶段需要读取 80 GB 数据,设备持续显存带宽若为 400 GB/s,仅这些读取在理想条件下也需约 0.2 秒。这个估算没有加入计算、写回与访问效率的成本,因此是乐观下界。反复读取大量参数、每次只做少量计算的任务,可能更受带宽限制;把算力翻倍未必能明显缩短时间。
算力回答“在指定条件下每秒能完成多少运算”。规格表可能分别列出 FP32、FP16 等精度下的数值,还可能附带稀疏等条件。精度描述数字表示方式,影响数值范围、误差与存储需求;更低精度是否可用,要看模型、算子和质量验证。比较时必须使用相同精度、相同计算条件,不能把带条件的最高数值当作任何程序都能获得的速度。
可以同时写出 2 个理想下界:计算时间不小于运算量除以持续算力,显存访问时间不小于搬运量除以持续带宽。真实执行还包含调度、依赖和其他开销;即使两者能够部分重叠,总时间也不会小于其中较大的那个。初学阶段不必追究内部执行结构,只要知道容量决定能否容纳,带宽和算力共同影响容纳之后跑得多快。

4 动手:读一张 GPU 规格表
下面是一张用于练习的假想规格表,不对应任何品牌或产品。把它与待部署服务器的配置表放在一起看,才能判断可用性。表中的算力和带宽均为标称值,课堂估算不能代替实际程序测试。
| 字段 | 练习值 | 阅读时要追问什么 |
|---|---|---|
| 显存容量 | 24 GB | 目标批量、并发与中间结果是否装得下 |
| 显存带宽 | 600 GB/s | 是否为理论峰值,应用能达到多少 |
| FP32 算力 | 20 TFLOPS | 精度和计数口径是否与比较对象一致 |
| 主机接口 | PCIe 4.0 ×16 | 插槽实际代际和电气通道数是多少 |
| 板卡功耗上限 | 250 W | 整机电源、线缆与散热是否支持 |
| 机械条件 | 双槽、全高 | 相邻槽位、卡长和风道是否兼容 |
先做容量判断。假设目标推理实测参数占 12 GB,中间结果和工作区合计峰值 6 GB,运行环境另需约 1 GB,那么当前配置约需 19 GB。24 GB 设备可能有空间,但仍需核对单位与实际可用容量。若把并发翻倍,中间结果未必保持不变;这时应重新测量,而不是把第一次剩余容量当作永久保证。显存是否足够应写成带负载条件的结论。
再看接口。PCIe 4.0 每通道每方向在扣除线路编码后约有 1.97 GB/s,×16 合计约 31.5 GB/s,实际应用传输还会受协议和平台限制。它远低于例表中的 600 GB/s 显存带宽,因为描述的是不同位置的通路。标着 ×16 长度的插槽也可能只接出 ×8 通道;板卡插得进去,不代表获得完整带宽。板卡、插槽和平台共同决定最终链路。
最后核对软件与整机。运行框架是否支持该设备,驱动版本是否兼容,操作系统是否符合要求,都应在购买或分配资源前确认。250 W 是板卡功耗指标,不能当作整机功耗;CPU、内存、磁盘、风扇及电源损耗也要计入。服务器还能否容纳目标网卡、是否与 GPU 争用插槽,应从主板拓扑和整机配置说明中确认。
动手记录不必从跑大型模型开始。先查看系统识别的设备、显存总量与空闲量,记录当前 PCIe 代际和通道数,再用框架的小规模计算检查设备可用性。链路可能随空闲节能而改变状态,必要时在负载下复核。把硬件标称、系统识别、程序实测分别记录,遇到差异时才知道该追查驱动、平台配置还是工作负载。

5 主机到设备的数据路径
沿着 1 个离线推理批次看数据:文件先从 SSD 进入主机内存,CPU 完成解码与整理,输入再经过主机到设备的传输进入显存,GPU 执行计算,最后把必要结果送回主机。网络数据则先经过网卡和网络软件,再进入后续流程。某些平台支持更直接的设备访问方式,但需要额外硬件与软件条件,不能作为入门环境的默认路径。
每段路径都有独立限制。标称 25 Gbit/s 的网卡按位计速,换算成字节约为 3.125 GB/s,实际有效负载还要扣除协议等成本。如果远端持续提供 1 GB/s 输入,GPU 与显存之间再快,也不能让新数据凭空出现。SSD 读取、CPU 解码、主机内存与 PCIe 传输也可能成为限制。要区分等待发生在哪一段,不能把所有空闲时间都叫“GPU 不够快”。
主机内存与显存之间的复制通常由设备的数据搬运机制完成,但提交任务、准备缓冲区仍需要软件配合。部分框架支持固定页内存,即让用于传输的主机内存暂时不被操作系统换出,以便更有效地传输。它不是免费资源:固定太多会挤压系统可灵活使用的内存。普通内存与固定页内存的传输差异应实测,初学时不要直接把全部数据都固定。
GPU 提交通常是异步的:主机提交后可能很快返回,而设备仍在工作。若只测提交函数前后的时间,就会把尚未结束的计算漏掉。测端到端耗时应确保结果已经可用;测设备阶段可使用框架提供的设备计时机制,并处理必要同步。也不要在每个小操作后都强制等待,否则计时方法会改变原有并行关系,让程序比正常运行更慢。
当不同批次互不依赖时,可以让第 2 批输入传输与第 1 批计算重叠。但这需要框架、硬件、缓冲区及执行安排支持,并且占用额外内存。串行处理时,阶段耗时相加;稳定流水线中,理想吞吐受最慢阶段约束。单个请求的延迟仍包含它走完整条路径的时间,因此吞吐提高不等于每个请求都按相同比例变快。


6 常见坑:PCIe 瓶颈、显存碎片、盲目堆卡
PCIe 瓶颈经常表现为算力利用不足,时间线里却有长段复制或等待。原因可能是每批输入太大、结果回传太多、传输次数过碎,或链路只协商到了较低代际与较少通道。先记录传输方向、字节数和耗时,再检查实际链路。若 CPU 准备输入本来就慢,只换更高代际的板卡未必有用;若程序反复搬运不必要的中间结果,减少搬运可能比升级接口更直接。
“显存还有空闲,为什么分配失败”也很常见。框架可能区分已分配给张量的内存与为复用而保留的内存,驱动统计又有自己的口径。碎片则表示可用空间被不同生命周期的分配切开,难以满足当前申请所需的可用块。它只是分配失败的可能原因之一,容量不足、其他进程占用、临时工作区突然增大,都需要排查。不能仅凭监控上的空闲数字下结论。
处理时先保存错误发生时的批量、输入尺寸、并发、分配记录与进程列表。用固定尺寸和固定批量复现,再观察占用是否持续增长。若每轮都保留本应释放的结果,问题可能是对象生命周期;若偶发超大输入触发峰值,则需要限制输入或设置可处理范围。清理框架缓存有时有帮助,却不能释放仍在被使用的数据,也不能把不足的物理容量变出来。
盲目堆卡的误区是认为 2 张 24 GB 卡天然等于 1 张可任意使用的 48 GB 卡。普通程序通常只会把数据放在指定设备上;跨卡使用需要软件划分模型或任务,还会增加通信与协调。对独立请求做任务分流,可能提高总吞吐,却不能保证单个超大模型装得下,也不能保证单请求更快。设备间通信路径还可能经过共享 PCIe 通路。
热与供电同样会伪装成性能问题。刚开始运行很快,持续运行后频率下降,应结合温度、功耗和降频原因看;出现设备重置或错误,也要保留驱动与系统日志。不要直接把所有异常归咎于模型。正确的排查顺序是先判断容量、供数、传输、计算还是整机稳定性受限,再对对应假设做小范围验证,每次保留可以比较的测量条件。

7 案例:算力够但被拷贝拖慢
某台单卡服务器执行离线数值推理,模型已常驻显存。每批有 2 GB 输入,输出只有 10 MB。团队观察到 GPU 计算每批只需 20 ms,却花约 130 ms 才完成 1 批,于是怀疑算力规格不够。先固定模型、精度、输入和批量,排除首次加载与预热,测量从主机输入准备完成到结果可用的全过程,才能判断这 130 ms 花在哪里。
时间线显示,主机到设备复制为 100 ms,GPU 计算为 20 ms,必要结果回传与整理合计 10 ms,当前执行基本串行。2 GB 除以 0.1 秒,得到约 20 GB/s 的有效输入传输速率。这不与某设备 600 GB/s 的显存带宽矛盾:前者走主机到设备链路,后者发生在设备内部。监控中的计算忙碌区间只占较小部分,与时间线相互印证。
即使把 GPU 计算加速到 10 ms,总时间也只是从 130 ms 降至 120 ms,吞吐约提高 8%。因此升级算力无法解决主要耗时。团队检查输入格式,发现主机每批上传了业务并不使用的辅助字段,并以较宽的数字格式保存了可安全缩减的数据。经过结果一致性和误差验证,设备真正需要接收的数据降到 0.8 GB;按同样有效速率估计,输入传输约需 40 ms。
若计算仍为 20 ms、回传整理仍为 10 ms,串行总耗时约为 70 ms。这个估算只有在压缩字段、格式转换的额外 CPU 耗时已经计入或可以忽略时才成立;否则必须补上这段成本。随后才考虑让相邻批次传输与计算重叠。在没有额外资源争用的理想情况下,稳定处理间隔受 40 ms 的输入阶段约束,但单批延迟不会自动变成 40 ms。
还要把测试延伸到真实运行。每秒处理多少批、结果是否一致、主机内存是否增加、长时间运行是否稳定,都需要记录。若输入来自网络,就必须把网络读取重新纳入端到端测量。案例的结论是带条件的:在当前负载中,传输占主要耗时,减少必要传输量有效。换成更小输入、更复杂计算的任务后,瓶颈可能转到设备计算,届时应重新测量。

8 把加速器选型写进容量规划
容量规划从负载说明开始。至少写明模型版本、精度、输入尺寸或长度范围、批量、并发、每秒目标请求数,以及响应时间要求。交互服务还应关注高峰期较慢请求,例如第 95 百分位延迟,即约 95% 的请求在该时间内完成。离线任务则可能规定每天需要处理的总量和完成窗口。没有这些条件,“需要几张 GPU”无法得到可复核的答案。
先验证单设备能否承载。记录启动后的常驻显存、目标负载的峰值显存,以及最大允许输入下的变化。若某配置在 24 GB 设备上峰值接近实际可用上限,就要评估降低批量、限制并发或改用更大容量设备。余量用于吸收已知波动和运行开销,应说明依据;随意加上某个百分比不能替代测量,也不能掩盖没有限制的输入增长。
再用满足延迟要求时的持续吞吐估算数量。假设单卡持续提供 40 请求/秒,而目标高峰为 90 请求/秒,按吞吐相除并向上取整,至少需要 3 张卡。这只是算术起点:3 张同时工作时,CPU、内存、SSD、网卡和共享通路都必须供得上。若要求故障后仍满足同等负载,还需要额外容量;3 张容量只有在运行状态和调度安排满足假设时才成立。
多设备还涉及服务器形态。把卡集中在 1 台机器里,可能节约部分主机资源,但会集中电源、散热和故障影响;分布到多台机器,网络与运维成本又会改变。容量规划应注明每台的 CPU 配置、主机内存、存储、网络接口和可用 PCIe 拓扑。不要让 GPU 数量看似充足,却让所有任务共享 1 个无法持续供数的读取进程。
成本也应按完成目标衡量。采购价或租用单价只是部分因素,还包括电力、主机资源、空闲时段与维护。测试应包含持续负载和可接受质量,报告每秒有效结果、能否满足延迟,以及整机资源占用。输出无效、质量下降或反复失败的请求不能算成可交付吞吐。最后设置扩容触发条件,让排队、延迟与资源余量共同决定行动,避免只看单个利用率数字。

9 从单卡 GPU 走向大模型试用(A20)
进入大模型试用前,先把本课的硬件问题转成可执行的起步条件:设备被系统识别,软件环境支持目标模型,模型与推理状态能够放入显存,输入长度和并发受到控制。第一次运行宜用较短输入、较低并发和明确的输出上限。这样出现异常时,容易区分环境安装、模型加载、容量不足与服务排队等不同问题,而不会同时改变太多变量。
大模型生成还带来新的时间感受。用户既在意多久看到第 1 段输出,也在意后续内容生成多快。输入处理和逐步生成的资源使用可能不同,不能把生成总量简单除以总时间,就认为已经解释所有等待。上下文增长、并发增加和输出变长,都可能改变显存占用与吞吐。试用记录应带上输入和输出长度,让后续比较有相同基准。
模型文件大小也不是完整运行需求。下载的文件可能包含权重、分词相关资源和配置,加载后还有运行时工作区与请求状态。量化通常通过较低位宽表示部分数值,可能降低存储与显存需求,但是否加速取决于软件与设备支持,输出质量也需要验证。入门阶段只需理解这些条件,不必先学习量化算法、设备内部执行细节或跨卡通信协议。
A20 的重点将是建立完整试用过程:选择可承载的模型,完成加载,提交输入,观察输出与资源,记录可重复结果。这里提前准备硬件记录表,包括设备型号与容量、驱动和框架版本、主机内存、模型标识、运行参数及错误信息。可以先做 1 次短请求确认链路,再逐步改变输入长度或并发;每次只改主要变量,才能解释性能和容量为什么变化。
如果单卡放不下,应先确认是否选了适合本机的模型规模、精度和运行配置,再决定是否需要更大设备或后续的分布式方案。跨卡运行会引入新的软件、互连和运维要求,本课不展开。带着“数据放在哪里、经过哪条通路、等待发生在哪里”这组问题进入 A20,比记住某个峰值算力数字更有用,也能让第一次试用的错误成为下一步判断的证据。
放进方案里
方案中可以写:本阶段为离线图像推理配置独立 GPU 服务器,模型参数常驻显存,CPU 负责读取、解码及任务组织,GPU 执行模型主体。验收采用固定模型版本、精度与输入尺寸,批量设为 16,要求在约定处理窗口内完成每日任务,并单独记录端到端耗时。硬件需求依据该负载的持续实测确定,不能只引用标称算力。
候选设备显存标称 24 GB,当前配置峰值占用约 19 GB。交付时统一容量单位,复核实际可用显存,并测试允许的最大输入和并发。主机须支持设备所需的 PCIe 代际与通道数,验收记录负载下实际链路状态。板卡尺寸、供电接口、整机电源和持续散热能力按整机配置核对,同时确认 CPU 解码、内存容量、SSD 与网卡能持续供数。
性能记录拆为输入准备、主机到设备复制、设备计算及结果返回。若复制占主要耗时,先检查传输量、链路和软件组织,再评估升级;若出现显存分配失败,保留输入尺寸、并发、进程占用和框架内存记录。每项调整都用相同负载比较耗时与结果正确性,避免把质量变化误认为性能收益。
上线容量以满足延迟约束的持续吞吐计算,再核对共享主机资源与故障要求。监控至少覆盖任务排队、处理耗时、显存峰值、传输时间、温度和设备错误。输入范围或并发提高、模型版本更换时重新验证容量;持续排队或延迟越界时,先定位限制环节,再决定扩容位置。方案应附测试环境、测量方法、异常处置与复测条件,使设备选择能够被复核,也能支持后续 A20 大模型试用。
10 小结:下一步大模型初体验(A20)
GPU 加速的是适合并行的计算阶段,最终体验取决于整条路径。容量决定能否装下,显存带宽与算力影响设备执行速度,PCIe、CPU、存储和网络则决定数据是否及时到达。独立板卡还必须满足整机的安装、供电、散热与软件条件。
进入 A20 前,试着解释 3 件事:为什么 2 张 24 GB 卡不自动成为任意程序可用的 48 GB;为什么 600 GB/s 显存带宽不能保证主机复制也这么快;为什么把计算时间减半,端到端耗时可能只下降很少。能用容量、路径与分段时间回答,就具备了开展单卡大模型试用的硬件基础。