@amitiitbhu: GPU如何为深度学习工作?在此阅读:https://outcomeschool.com/blog/how-does-a-gpu-work-for-deep-learning…
摘要
本文解释了GPU如何为深度学习工作,涵盖了它们为何适合并行矩阵计算、CPU与GPU的区别,以及VRAM和张量核心等关键概念。
查看缓存全文
缓存时间: 2026/07/03 22:43
GPU 如何为深度学习工作?
来源:https://outcomeschool.com/blog/how-does-a-gpu-work-for-deep-learning
GPU 如何为深度学习工作?
在本篇博客中,我们将学习 GPU 如何为深度学习工作。我们还将了解为什么 GPU 是深度学习的理想选择,它们如何同时进行如此大量的数学运算,以及为什么像 NVIDIA 这样的公司几乎驱动了所有现代 AI。
我们将涵盖以下内容:
- 什么是 GPU?
- 为什么 GPU 是深度学习的理想选择?
- CPU vs GPU
- 数学教授和成千上万的学生
- 为什么深度学习主要是矩阵乘法
- 串行工作 vs 并行工作
- GPU 内存(VRAM)和内存带宽
- 为什么模型必须适合 VRAM
- Tensor Core 和低精度(FP16、BF16、INT8)
- CUDA 和软件栈(cuDNN)
- GPU 上的训练 vs 推理
- 多个 GPU 协同工作
- 为什么 NVIDIA GPU 驱动现代 AI
我是 Amit Shekhar,Outcome School (https://outcomeschool.com/) 的创始人。我教导和指导了许多开发者,他们的努力让他们获得了高薪的科技工作,帮助了许多科技公司解决独特问题,并创建了许多被顶级公司使用的开源库。我热衷于通过开源、博客和视频分享知识。
我在 Outcome School 教授 AI 和机器学习 (https://outcomeschool.com/program/ai-and-machine-learning)。
让我们开始吧。
什么是 GPU?
GPU 是计算机内部的一种特殊芯片,非常擅长同时进行大量简单的计算。
GPU 代表图形处理单元。顾名思义,它最初是为了绘制图形而设计的,比如视频游戏中的图像。
让我们想想为什么图形需要如此多的计算。屏幕由称为像素的微小点组成。一个普通屏幕有数百万个这样的像素。为了绘制游戏,计算机必须每秒多次决定这数百万个像素中每一个的颜色。
这是一个巨大的工作量。但有趣的是,每个像素可以独立计算,无需等待其他像素。它们是独立的。
因此,工程师们制造了一种芯片,它可以同时进行数百万个小型独立计算。那个芯片就是 GPU。
后来,人们注意到了一些事情。深度学习恰好需要完全相同类型的工作。它也需要同时进行数百万个小型独立计算。因此,为游戏而生的 GPU 成为了现代 AI 的核心。
为什么 GPU 是深度学习的理想选择?
在深入之前,让我们快速回顾一下什么是深度学习。
深度学习 是一种使用称为神经网络的东西教会计算机从数据中学习模式的方法。
简单来说,神经网络是一个巨大的数字集合,称为权重,这些权重会不断调整,直到计算机开始给出正确答案。
现在,重要的问题是:神经网络实际上对这些数字做了什么?
答案很简单。它进行了大量的乘法和加法运算。这是主要工作,重复了数百万次乃至更多。
CPU 也可以做这项工作,但速度很慢,因为它一次只能进行少量计算。GPU 可以同时进行数千次这样的计算。
因此,GPU 来拯救局面了。它正是为深度学习所需的工作类型而构建的。
为了清楚理解这一点,我们必须首先理解 CPU 和 GPU 之间的区别。
CPU vs GPU
CPU 是计算机的主要大脑。CPU 代表中央处理单元。
CPU 拥有少量但非常强大的核心。核心是实际进行计算的部分。普通笔记本电脑的 CPU 大约有 4、8 或 16 个核心。
每个 CPU 核心都非常聪明和快速。它可以处理复杂任务,做出决策,并快速在多个不同任务之间切换。这就是为什么 CPU 运行我们的操作系统、应用程序以及计算机上几乎所有东西。
GPU 则不同。GPU 拥有数千个更小、更简单的核心。
每个 GPU 核心不如 CPU 核心聪明。它不擅长复杂的决策制定。但它非常擅长做一件简单的事情:乘法和加法数字。而且由于有数千个这样的核心,它们可以同时执行数千个这样的简单任务。
为了让你更好地理解,我将 CPU 和 GPU 的区别整理成表格。
| 项目 | CPU | GPU |
|---|---|---|
| 核心数量 | 少数(4 到 64) | 数千 |
| 每个核心的能力 | 非常强大和聪明 | 更简单 |
| 最擅长 | 复杂任务、决策、运行应用程序 | 同时进行大量简单计算 |
| 工作方式 | 非常快速地处理少量事情 | 一起处理海量简单任务 |
所以,CPU 是为快速完成少量困难工作而构建的。GPU 是为一起完成大量简单工作而构建的。
我们可以将两个芯片并排想象如下:
CPU GPU
+-------------------+ +-------------------------------+
| +-----+ +-----+ | | [] [] [] [] [] [] [] [] [] [] |
| |Core | |Core | | | [] [] [] [] [] [] [] [] [] [] |
| +-----+ +-----+ | | [] [] [] [] [] [] [] [] [] [] |
| +-----+ +-----+ | | [] [] [] [] [] [] [] [] [] [] |
| |Core | |Core | | | [] [] [] [] [] [] [] [] [] [] |
| +-----+ +-----+ | | [] [] [] [] [] [] [] [] [] [] |
+-------------------+ +-------------------------------+
少量大核心 数千个小核心
这里,我们可以看到 CPU 有少量大型、强大的核心,而 GPU 有数千个小型、简单的核心紧凑地排列在一起。CPU 的大核心适合处理少量困难工作,而 GPU 的众多小核心适合同时处理大量简单工作。
现在,理解这一点最好的方式是通过一个例子。
数学教授和成千上万的学生
假设我们有一张巨大的练习纸,上面有一百万道简单的算术题。每道题都是像 3 x 4 或 7 + 2 这样的。并不难,只是有一百万道而已。
方法 1:一位数学教授。
想象一位杰出的数学教授。这位教授极其聪明且非常快速。教授坐下来,开始一道一道地解题。
教授很快,但只有一位教授。所以,即使速度很快,一道接一道地解决一百万道题也需要很长时间。
这位教授就像一个 CPU 核心。非常强大,但它是线性地、一个接一个地解题。
这种方法的问题在于,一个工作者无论多快,仍然是一次只解决一道题。让我们看看下一个方法如何解决这个问题。
方法 2:成千上万的学生。
现在想象一个大礼堂,里面有成千上万的小学生。每个学生都不如教授那么快或聪明。但每个学生都能轻松解决像 3 x 4 这样的简单题。
我们给每个学生一道题。所有学生在同一时刻解决他们的题。一次就能完成数千道题。
这就像一个 GPU。成千上万的简单工作者,同时解决简单的题。
对于一个难题,教授获胜。但对于一百万道简单题,成千上万的学生完成得更快,因为他们一起工作。
这就是整个核心思想。深度学习正好是第二种类型的问题。它是一大堆小型、简单的计算。因此,拥有数千个小型工作者的 GPU 是完美的工具。
但是为什么深度学习是一大堆简单的计算呢?现在让我们来理解这一点。
为什么深度学习主要是矩阵乘法
这是整篇博客中最重要的概念,所以让我们慢慢来。
在神经网络内部,数字并不是以单个长列表的形式存储的。它们被排列成数字网格。数字网格被称为矩阵。
简单来说,矩阵只是按行和列排列的数字,就像一个表格。
例如,一个小矩阵看起来像这样:
[ 1 2 ]
[ 3 4 ]
神经网络将输入数据作为一个矩阵,它自己的权重也作为一个矩阵存储。为了产生答案,它使用一种称为矩阵乘法的操作将这两个矩阵结合起来。
我们不需要完整的数学知识。我们只需要理解矩阵乘法核心到底是什么。
矩阵乘法只是大量的“乘法和加法“步骤。
要得到结果中的一个数字,我们将一些数字相乘然后相加。这个单一的小动作被称为乘加。然后我们对结果中的每个位置重复这个过程。
让我展示一个小小的例子,这样感觉更真实。
假设我们将这两个矩阵相乘:
[ 1 2 ] [ 5 6 ]
[ 3 4 ] x [ 7 8 ]
为了得到结果的左上角数字,我们取第一行 [1, 2] 和第一列 [5, 7],然后这样做:
(1 x 5) + (2 x 7) = 5 + 14 = 19
这就是一个位置的一个乘加链。然后我们对其他三个位置重复同样的想法,以填充结果。
现在,关键点是:每个结果位置是独立计算的。左上角的数字不需要右上角的数字。它们是独立的。
在真实的神经网络中,这些矩阵不是 2x2 的。它们有数千行和数千列。因此,一个单一的矩阵乘法可能包含数百万次乘加运算,而且所有的运算都是独立的。
数百万次小型、独立的乘加运算。这完全就是我们例子中那张有一百万道简单题的练习纸。我们已经知道谁最适合这类工作。那就是拥有数千个核心、一起工作的 GPU。
这就是为什么我们不断强调这一点:深度学习主要是矩阵乘法,而矩阵乘法就是同时进行的数百万次小型独立计算。
要了解神经网络如何将数据转化为这些矩阵乘法,甚至从头构建一个神经网络,请查看我们在 Outcome School 的 AI 和机器学习课程 (https://outcomeschool.com/program/ai-and-machine-learning)。
串行工作 vs 并行工作
现在,让我们清晰地并列两个重要的词。
串行意味着一个接一个地做事,排成一条线。首先完成一个,然后开始下一个。
并行意味着同时做许多事情。
对于这种数学运算,CPU 大多以串行方式工作。它就像一个教授。它进行乘加运算,先算第一个,然后第二个,然后第三个。即使每一步都很快,但线性地完成数百万步也需要时间。
GPU 以并行方式工作。它就像成千上万的学生。它将数千个乘加运算分发给数千个核心,它们一起完成。
下面是两者区别的一个简单图示:
CPU (串行):
加法 1 -> 加法 2 -> 加法 3 -> 加法 4 -> ... -> 加法 1,000,000
GPU (并行):
加法 1 ---|
加法 2 ---|
加法 3 ---|---> 全部同时完成,分批进行
加法 4 ---|
... ---|
因为矩阵乘法中的乘加运算是独立的,所以它们非常适合并行工作。没有任何东西需要等待其他东西。
因此,GPU 完成同样大量的数学运算比 CPU 快得多。这种速度正是深度学习所需要的,因为训练一个模型意味着要重复进行数十亿次这样的数学运算。
这就是 GPU 如何将几天的工作变成几小时,将几小时变成几分钟。
给你的一个小提示
无论你在哪个技术领域工作,请熟悉以下主题:
- LLM
- RAG
- MCP
- Agent
- Fine-tuning
- Quantization
我们将它们全部整合到一个视频中:
AI 工程解析:LLM、RAG、MCP、Agent、微调和量化 (https://www.youtube.com/watch?v=lnfWvX66FUk)
不必停止阅读——先收藏,等有时间再看。未来的你会感谢你的。
现在,让我们回到主题。
GPU 内存(VRAM)和内存带宽
快速完成计算只是故事的一半。GPU 还需要所有数字靠近它,这样它才能无需等待地工作。
为此,GPU 拥有自己的特殊内存,称为 VRAM,代表视频随机存取存储器。
简单来说,VRAM 是 GPU 的私人工作区。它是 GPU 存放当前正在处理的数字的地方,比如模型的权重和正在处理的数据。
把它想象成一张桌子。桌子越大,我们可以同时展开处理的纸张就越多。VRAM 就是 GPU 的桌子。
现在,还有一个重要的词:内存带宽。
内存带宽是指 GPU 在其内存和核心之间移动数字的速度。
假设我们有一张堆满文件的桌子,但进出的门很窄。即使桌子很大,工作也会变慢,因为文件无法快速移动。宽门意味着文件移动快。内存带宽就是门的宽度。
GPU 被设计成具有非常高的内存带宽。这意味着数千个核心永远不会因为等待数字而闲置。数字源源不断地快速流入,核心持续工作。
我们可以想象数字在 GPU 内部流动的方式如下:
+-----------------------------+
| VRAM (大桌子) |
| 权重和数据存放在这里 |
+-----------------------------+
|
| 内存带宽
| (门的宽度)
v
+-----------------------------+
| 数千个 GPU 核心 |
| 执行乘加运算 |
+-----------------------------+
这里,我们可以看到数字位于 VRAM(GPU 的大桌子)中,然后通过内存带宽(门)向下传输到数千个核心。更宽的门意味着核心被更快地喂给数据,永不等待,因此数学运算毫不间断地进行。
因此,对于 GPU 来说,两件事很重要:它能进行多少计算,以及它能多快地向这些计算提供数字。一个好的 GPU 在这两方面都很强大。
为什么模型必须适合 VRAM
这引出了一个非常实际的问题,每个使用 AI 的人都会遇到。
要在 GPU 上训练或运行一个模型,模型及其数据必须适合 VRAM。
记住,VRAM 是 GPU 的桌子。如果模型对于桌子来说太大,我们根本无法展开它来处理。
让我们用一个简单的想法来理解大小。神经网络中的每个权重都是一个数字,每个数字在内存中占用一些空间。大型模型有数十亿个权重。数十亿个数字占用大量空间。
例如,一个拥有数十亿权重的模型可能需要数十 GB 的 VRAM 仅仅来存放权重。在训练期间,它需要更多的空间来存放额外的中间工作数字。
这就是为什么我们听到关于具有大 VRAM 的 GPU,比如 24 GB、40 GB 或 80 GB。模型越大,我们需要的 VRAM 就越多。
注意: 这也是为什么非常大的模型会被分割到多个 GPU 上。一个 GPU 的桌子不够大,所以几个 GPU 分担负载。我们稍后会讨论多个 GPU。
因此,当我们为深度学习选择 GPU 时,我们不仅看它的速度。我们还看它有多少 VRAM,因为这决定了我们能运行多大的模型。
Tensor Core 和低精度(FP16、BF16、INT8)
我们现在知道 GPU 有数千个普通核心执行乘加运算。但 GPU 制造商为深度学习添加了更好的东西。
这些特殊单元被称为 Tensor Core。
Tensor Core 是 GPU 内部的一种特殊单元,旨在比普通核心更快地执行矩阵乘法。
简单来说,普通核心一次进行少量乘加运算。Tensor Core 旨在一次处理一整个小块矩阵数学。由于深度学习主要是矩阵数学,Tensor Core 带来了巨大的速度提升。
为了更快,Tensor Core 使用了一种称为低精度的技术。让我们理解这意味着什么。
计算机中的数字可以以更多的小数位(精度
相似文章
@ManningBooks: 深度学习框架让构建模型变得更简单,但也容易让GPU被视为黑盒子。CUDA f…
Manning Books 推荐 Elliot Arledge 的《CUDA for Deep Learning》,这本书教授使用CUDA进行GPU级编程,以优化深度学习模型性能,折扣持续到周日。
@neural_avb: 今日发现 "GPU Mode" 他们有一个YouTube系列来学习CUDA。还有一个GitHub仓库包含幻灯片/笔记本。一些讲座是…
GPU Mode 是一个学习资源,包含YouTube系列、GitHub仓库(含幻灯片/笔记本)以及一个类似Leetcode的练习网站,用于掌握CUDA编程。
@mdancho84: 重大消息:谷歌刚刚推出了GPU大师课程 100%免费获取:
谷歌发布了关于GPU的免费大师课程,涵盖GPU架构和深度学习加速。
@levidiamode: Day 138/365 of GPU Programming 今年我最喜欢的讲座之一是斯坦福大学的CS336第7讲关于GPU…
一位学习者分享了对斯坦福大学CS336第7讲关于GPU并行性的热情,该讲座涵盖了基本操作,并将其连接到多GPU设置以及张量并行、数据并行和流水线并行等技术。
@chessMan786:GPU架构基础
一条推文分享了一篇关于GPU架构基础的文章链接。