了解 NVIDIA GPU 与 CUDA 如何推动加速计算发展,以及当今 AI 基础设施(芯片、网络与软件)如何支撑现代技术。

加速计算的想法很简单:与其让通用 CPU 做所有任务,不如把繁重且重复的部分卸载给专门的处理器(通常是 GPU),这样这些工作可以更快、更高效地完成。
CPU 擅长处理各种各样的小任务——运行操作系统、协调应用、做决策。GPU 则为同时完成大量相似计算而设计。当一个工作负载可以被切分为成千上万(甚至百万)个并行操作——例如大矩阵相乘或对大量数据批次应用相同的数学变换——GPU 就像一个“加速器”,能显著提升吞吐量。
游戏让 GPU 出名,但相同的并行数学在现代计算中随处可见:
这就是加速计算从消费级 PC 走进数据中心的原因。它不仅仅是“更快的芯片”——而是让此前在成本、时间和能耗上不可行的工作负载变为可行。
当人们说“英伟达的加速计算堆栈”时,通常指三层协同工作:
读完后,你会对 GPU 与 CPU 的对比、为什么 AI 很适合 GPU、CUDA 实际做了什么,以及构建可扩展 AI 系统时除 GPU 外还需要哪些要素有一个清晰的心智模型。
把 CPU 想成一小队训练有素的专家。人数不多,但每个人都擅长决策、快速切换任务并处理复杂的“如果这样,则那样”的逻辑。
GPU 则像有数百甚至数千名能干的助理。每个助理可能不如专家复杂,但他们可以同时处理大量相似的工作。
CPU 在控制与协调方面表现出色:运行操作系统、管理文件、处理网络请求以及执行带大量分支的代码路径。它们为顺序逻辑而生——步骤 1 然后 2,然后 3,尤其是每一步都依赖上一步时。
当相同的操作需要并行应用到许多数据上时,GPU 发光发热。不再是一个核心重复做同一件事,而是许多核心同时完成它。
常见的 GPU 友好型工作负载包括:
在大多数真实系统中,GPU 并不替代 CPU——它们互补。
CPU 通常运行应用、准备数据并协调工作。GPU 处理并行的重计算。这就是为什么现代 AI 服务器仍然配备强大的 CPU:没有良好的“专家”协调,这些“助理”可能会闲着而不是工作。
GPU 最初是为绘制像素和 3D 场景而设计的。在 1990 年代末和 2000 年代初,NVIDIA 等厂商不断增加并行单元以加速着色与几何处理。研究者注意到,许多非图形问题也归结为对大量数据点重复相同操作——这正是图形流水线擅长的。
简要时间线:
图形工作负载大量依赖线性代数:向量、矩阵、点积、卷积和巨量的乘加运算。科学计算使用相同的构件(例如仿真、信号处理),而现代机器学习更是如此——尤其是密集矩阵乘法和卷积。
关键的匹配点是并行性:许多 ML 任务对大批量数据(像素、token、特征)应用相同操作。GPU 被设计为高效运行数千个相似线程,因此在这些模式下每秒能做的算术远超 CPU。
NVIDIA 的影响不仅是更快的芯片;更重要的是让 GPU 为普通开发者可用。CUDA 让 GPU 编程更容易上手,越来越多的库(线性代数、神经网络、数据处理)减少了编写自定义内核的需要。
随着越来越多团队发布基于 GPU 的产品,生态系统自我强化:更多教程、更好的工具、更有经验的工程师和更强的框架支持——让下一支团队更容易成功采用 GPU。
再强大的 GPU 也只有在开发者能可靠指挥它时才有用。CUDA(Compute Unified Device Architecture)是 NVIDIA 的编程平台,让 GPU 感觉像一个真正的计算目标,而不仅仅是图形的附加品。
CUDA 同时完成两件大事:
没有这一层,每个团队都得为每代芯片重做底层 GPU 编程、性能调优和内存管理。
在 CUDA 中,你会写一个 kernel(内核),它就是一个被设计成同时运行多次的函数。你不是调用它一次,而是在成千上万甚至百万个轻量线程上启动它。每个线程处理整体工作的一小块——比如一个像素、一行矩阵或神经网络计算的一个小片段。
关键思想:如果你的问题可以切成许多相似且独立的任务,CUDA 就能把这些任务高效地调度到 GPU 的众多核心上。
大多数人不会为 AI 手动写原始 CUDA。它通常运行在他们已经使用的工具之下:
这就是为什么“支持 CUDA”常常是 AI 基础设施规划中的一个核对项:它决定了你的堆栈能使用哪些优化构件。
CUDA 与 NVIDIA GPU 紧密绑定。这种紧密集成是其快速且成熟的主要原因——但也意味着把相同代码迁移到非 NVIDIA 硬件上可能需要改动、替代后端或不同的框架。
AI 模型看起来很复杂,但大量繁重工作归结为在巨大规模上重复相同的数学运算。
“张量”只是多维的数组:向量(1D)、矩阵(2D)或更高维(3D/4D+)。在神经网络中,张量表示输入、权重、中间激活和输出。
核心操作是对这些张量进行乘加,尤其是 矩阵乘法(以及相关的“卷积”)。训练与推理重复执行这种模式数百万到数万亿次。这就是为什么 AI 性能常用系统做密集乘加运算的速度来衡量。
GPU 被构建为并行运行大量相似计算。与通常设计中几个很快的核心不同,GPU 有很多较小的核心,能一次处理庞大的运算网格——这正适合张量工作负载中的重复数学。
现代 GPU 还包含面向该用例的专用单元。概念上,这些“面向张量的加速器”比通用核心更高效地完成乘加模式,从而在每瓦上提供更高吞吐量。
训练是优化模型权重,通常受总体算力和多次在内存间移动大型张量限制。
推理则提供预测,常受延迟目标、吞吐量以及如何快速喂给 GPU 数据而不浪费周期的限制。
AI 团队关心:
现代“GPU 服务器”外观看起来像普通服务器,但内部围绕尽可能高效地为一张或多张高功率加速卡供给数据来设计。
每个 GPU 都有自己的高速内存称为 显存(VRAM)。很多 AI 任务并不是因为 GPU “太慢”而失败,而是因为模型、激活与批量无法放入显存。
这就是为什么人们会讨论“80GB GPU”或“能放多少 tokens”。如果显存不足,你可能需要更小的 batch、降低精度、模型分片或更多/更大显存的 GPU。
在一台机器里放多张 GPU 有好处,但扩展性能取决于 GPU 之间需要通信多少。有些工作负载几乎线性扩展;另一些则因同步开销、显存复制或数据加载瓶颈而受限。
高端 GPU 每张可能消耗数百瓦。一个 8 卡服务器在行为上更像一个取暖器而不是“普通”机架服务器。这意味着:
一个 GPU 机箱并非只是“带 GPU 的服务器”——它是为保持加速器满负荷供给、散热和通信而设计的系统。
GPU 的速度取决于周边系统。当你从“一台强力服务器”扩展到“很多 GPU 协同工作”时,限制因素往往不再是原始算力,而是你能多快移动数据、共享结果并保持每个 GPU 忙碌。
单 GPU 任务多数从本地存储拉数据并运行。多 GPU 训练(以及许多推理部署)则频繁交换数据:梯度、激活、模型参数和中间结果。如果交换很慢,GPU 就会等待——而空闲的 GPU 时间是最昂贵的。
网络瓶颈的两个常见症状是:
在服务器内部,GPU 可能通过非常快速、低延迟的连接链接,以便无需绕行慢路径即可协调。跨服务器则使用为高负载下可预测性能设计的高带宽网络结构。
概念上,可分为两层:
这就是为什么“GPU 数量”本身并不足够——你还要问这些 GPU 是如何互相通信的。
GPU 不直接在“文件”上训练,它们在批次的流上训练。如果数据加载慢,计算就会停滞。高效的流水线通常结合:
一个构建良好的流水线能让相同的 GPU 感觉快很多。
在真实环境中,许多团队共享同一个集群。调度决定哪个作业获得 GPU、时长以及分配哪些资源(CPU、内存、网络)。良好的调度能减少“GPU 饥饿”(作业排队)与“GPU 浪费”(分配但空闲)。它还能启用优先队列、抢占和资源右尺寸化——当 GPU 小时是预算项而非可有可无时,这点至关重要。
硬件只是故事的一半。NVIDIA 的真正优势在于把 GPU 从快速芯片变成团队可以构建、部署和维护的平台的软件堆栈。
大多数团队不会写原始 GPU 代码。他们用构件来组装应用:经过优化的库和 SDK 处理常见、昂贵的操作。把它们想象成加速的“乐高积木”——矩阵运算、卷积、视频处理、数据移动——让你能专注于产品逻辑,而不是重写底层内核。
流行的 ML 框架(用于训练和推理)与 NVIDIA 堆栈集成:当你在 GPU 上运行模型时,框架会把关键操作路由到这些加速库的底层。从用户角度看,这可能只是一个简单的设备切换(“使用 GPU”),但在这个开关背后是一串组件:框架、CUDA 运行时和性能库共同工作。
至少,你需要管理:
这是许多项目容易出错的地方。驱动、CUDA 版本和框架发布之间有兼容性约束,版本不匹配可能导致性能下降甚至部署失败。许多团队在容器中固定“已验证的组合”,并使用分阶段更新(dev → staging → production)。把 GPU 软件堆栈当作产品依赖来管理,而不是一次性安装完就算了。
当你的模型在单卡上跑通后,下一个问题是如何更快(或如何容纳更大的模型)。两条主要路径:向上扩展(在一台机器里放更多/更强的 GPU)和 向外扩展(让多台机器协同工作)。
单卡时,一切都在本地:模型、数据和显存都在一处。多卡时,你开始在设备间协调工作。
向上扩展通常指迁移到一台装有 2–8 张 GPU 的服务器,这能带来显著升级,因为 GPU 可以快速共享结果并访问同一主机的 CPU 与存储。
向外扩展则是增加更多服务器,并用快速网络连接它们。这是训练能扩展到数十或数千张 GPU 的方式——但协调成为首要问题。
数据并行: 每张 GPU 保持一份完整模型拷贝,但每张卡训练不同的数据切片。每步结束后,GPU 通过交换梯度来达成权重一致。这是最常见的起点,因为易于理解。
模型并行: 因为模型太大或太慢而无法放在一张卡上,模型本身被切分到多张 GPU。在前向和反向传播中,GPU 需要互相通信,而不只是步骤结束时同步。这能解锁更大的模型,但通常增加通信开销。
许多实际系统在服务器内部使用模型并行,在服务器间使用数据并行的混合策略。
更多的 GPU 意味着“谈话时间”更多。如果工作负载很小或网络很慢,GPU 可能因等待更新而空闲。当出现以下情况时,会看到回报递减:
当出现以下情况,你可能需要多 GPU 或集群:
到那时,堆栈不再只是 GPU,还要包括高速互连、网络和调度——因为扩展是关于协调的,而不仅仅是原始算力。
加速计算并非研究室的幕后技巧,而是很多日常产品变得即时、流畅且越来越智能的原因:因为某些工作负载在成千上万次小运算并行执行时运行得更好。
大多数人注意到的是 服务端:聊天助手、图像生成器、实时翻译和应用内的“智能”功能。底层,GPU 支持两个阶段:
在生产环境中,这体现在更快的响应、更高的吞吐(每台服务器支持更多用户)以及在给定数据中心预算内运行更大或更强模型的能力。
流媒体平台和视频应用在编码、解码、放大、抠图和特效等任务上依赖加速。创意工具在时间线回放、调色、3D 渲染和 AI 功能(降噪、生成填充、风格迁移)中也用到它。结果是更少等待、编辑时更实时的反馈。
加速计算被广泛应用于在巨大网格或大量粒子上重复相同数学的仿真:天气与气候模型、计算流体力学、分子动力学与工程设计验证。更短的仿真周期意味着更快的研发、更频繁的设计迭代与更高的结果质量。
推荐、搜索排序、广告优化与欺诈检测常需快速处理大规模事件流。GPU 能加速部分特征处理与模型执行,使决策在用户仍在页面时就能完成。
并非所有工作都适合放在 GPU 上。如果你的工作负载较小、分支逻辑多或以顺序逻辑为主,CPU 可能更简单也更便宜。加速计算在你能一次执行大量相似数学或当延迟与吞吐直接影响产品体验时最有价值。
一个实用产品提示:随着团队越来越多地构建 AI 功能,瓶颈往往不再是“我们能写 CUDA 吗?”,而是“我们能否安全地发布并快速迭代应用?”。像 Koder.ai 这样的 平台在这方面很有用:你可以通过对话驱动的工作流快速原型并发布 web/后端/移动应用,然后在需要加速时在后台接入基于 GPU 的推理服务——而无需重建整个交付管道。
为 AI 购买“一块 GPU”实际上是在购买一个小平台:算力、内存、网络、存储、供电、散热和软件支持。事先做些结构化评估能避免模型变大或使用量上升时的痛苦惊喜。
从你最常运行的任务开始——训练、微调还是推理——以及未来 12–18 个月预期的模型大小。
一张强 GPU 在错配机箱里仍会表现不佳。常见的隐藏成本包括:
混合策略很常见:本地做基础容量,高峰训练突发到云端。
向供应商(或内部平台团队)询问:
把这些答案当作产品的一部分:纸面上最好的 GPU 若无法供电、散热或保证数据供给,也不是最佳平台。
加速计算有明显好处,但不是“免费性能”。围绕 GPU、软件与运维所做的选择可能会形成长期约束——尤其当团队标准化在某个堆栈上时。
CUDA 与 NVIDIA 的库生态能让团队迅速高产,但同样的便利也会降低可移植性。依赖 CUDA 专有内核、内存管理模式或闭源库的代码,迁移到其它加速器可能需要大量改造。
实用做法是把“业务逻辑”与“加速器逻辑”分离:保持模型代码、数据预处理与编排尽可能可移植,把自定义 GPU 内核隔离在干净的接口后面。如果可移植性重要,应及早在至少一种替代路径上验证关键工作负载(即便较慢),以评估真实的切换成本。
GPU 供应可能波动,价格随需求变化。总体成本不仅是硬件:电力、散热、机架空间与人员成本也可能占主导。
能源是第一类约束。更快的训练很棒,但如果它让功耗翻倍而不改善结果时间,你可能会付出更高代价。跟踪单位训练成本、每焦耳的 tokens 数和利用率——而不仅仅是“GPU 小时”。
当多个团队共享 GPU 时,基本的安全卫生很重要:强隔离边界、审计访问、打好补丁的驱动以及对模型权重和数据集的谨慎处理。优先使用平台支持的隔离原语(容器/虚拟机、按作业的凭证、网络分段),并把 GPU 节点当作高价值资产来管理。
预计会在三方面持续进步:更高的能效(每瓦性能)、更快的 GPU 与节点间网络,以及更成熟的软件层以减少运维摩擦(剖析、调度、可复现性和更安全的多租户共享)。
如果你要采用加速计算,从一到两个具有代表性的工作负载开始,测量端到端成本与延迟,并记录可移植性假设。然后构建小而标准的“金色路径”(标准镜像、驱动、监控与访问控制),再逐步向更多团队扩展。
有关规划的更多内容,请参见 /blog/choosing-gpus-and-platforms 与 /blog/scaling-up-and-scaling-out。
加速计算指的是把“繁重且重复的数学运算”交给专用处理器(通常是 GPU)来完成,而不是让通用 CPU 做所有事。
在实践中,CPU 负责编排应用和数据流,而 GPU 并行执行大量相似的运算(例如矩阵乘法)。
CPU 优化的是控制流:大量分支、任务切换以及运行操作系统的能力。
GPU 优化的是吞吐量:在非常大的数据量上同时执行相同的操作。许多 AI、视频和仿真工作负载符合这种数据并行模式,因此 GPU 在这些场景下可以显著更快。
不会——大多数真实系统同时使用两者。
如果 CPU、存储或网络跟不上,GPU 会闲置,这时就拿不到期望的加速效果。
人们通常指三层协同工作:
CUDA 是 NVIDIA 的软件平台,允许开发者在 NVIDIA GPU 上运行通用计算。
它包括编程模型(kernel/线程)、编译工具链、运行时和驱动,并伴随大量库,使得很多常见操作无需编写原始 CUDA 代码就能得到加速。
Kernel(内核)是一个被设计成并行运行的函数。
与在 CPU 上只调用一次不同,内核会被成千上万次地启动为轻量级的 线程,每个线程负责工作的一小部分(一个元素、一个像素、一行等)。GPU 将这些线程调度到众多核心上以最大化吞吐量。
因为大多数昂贵的计算都归结为张量运算——尤其是密集的乘加模式,如矩阵乘法和卷积。
GPU 设计用于并行执行大量相似的算术操作,现代 GPU 还包含针对张量运算的专用单元,使得每瓦性能更高。
训练通常受限于总体计算量和反复在内存中移动大型张量(以及分布式时的通信)。
推理往往受限于延迟目标、吞吐量和数据移动——如何在满足响应时间的同时保持 GPU 连续工作。两者的优化(批处理、量化、改进流水线)可能差别很大。
因为显存(VRAM)决定了 GPU 上能同时放下什么:模型权重、激活值和批量数据。
当显存不足时,通常需要:
很多项目在“原始计算能力”之前就首先遇到的是内存限制。
超出纸面峰值算力外,还要评估整个平台:
文章中的检查清单是个良好起点,也可参考 /blog/choosing-gpus-and-platforms 与 /blog/scaling-up-and-scaling-out。