目录
背景
自2022年年末ChatGPT等AI成品问世以来,人工智能领域的热度持续高涨,“大模型”的概念也从专业领域进入了大众视野,各类开源与闭源的大模型如雨后春笋般涌现。伴随AI热潮一起升温的,还有我们今天的主角——GPU(图形处理器),也就是我们常说的显卡。在大家的印象中,显卡主要用于游戏和图形计算,那么为什么AI离不开GPU呢?
简单来说,AI训练,尤其是大模型训练,需要进行海量的并行计算。GPU拥有成千上万个计算核心,能够同时处理大量数据,这种并行处理能力远超CPU,使其成为AI计算的理想选择。正因如此,GPU在AI领域变得不可或缺。如果您对AI模型开发和GPU的实际应用感兴趣,本文还深入讲解AI GPU开发教程,可以帮助您更深入地理解并实践如何利用GPU的强大能力来驱动人工智能的发展。
本文以下内容出现词汇“GPU”代指国内术语“显卡”。
为什么AI离不开GPU而不是CPU
在AI时代之前,大部分程序的运算都是CPU完成的,大多数开发人员都以CPU方式作为开发基础。这种知识也已成为程序开发的一部分,因此以面向 CPU 的方式思考和解决问题是显而易见的。
然而,CPU 的问题在于它们依赖于顺序架构。在当今世界,我们依赖于大量并行任务,而 CPU 无法在这些场景中很好地工作。
开发人员面临的一些问题包括:
执行并行任务
CPU 传统上以线性方式运行,一次执行一条指令。这种限制源于这样一个事实:CPU 通常具有几个针对单线程性能进行了优化的强大内核。
当面对多个任务时,CPU 会分配其资源来依次处理每个任务,从而导致指令的顺序执行。在需要同时处理大量任务的情况下,这种方法效率低下。
虽然我们努力通过多线程等技术来提高 CPU 性能,但 CPU 的基本设计理念优先考虑顺序执行——也可以说先天基因。
高效运行 AI 模型
采用 Transformer 等先进架构的 AI 模型利用并行处理来提高性能。与按顺序运行的旧式循环神经网络 (RNN)不同,GPT 等现代 Transformer 可以同时处理多个单词,从而提高训练效率和能力。因为当我们并行训练时,它将产生更大的模型,而更大的模型将产生更好的输出。
并行性的概念不仅限于自然语言处理,还扩展到图像识别等其他领域。例如,图像识别架构AlexNet通过同时处理图像的不同部分来展示并行处理的强大功能,从而实现准确的模式识别。
然而,专注于单线程性能设计的 CPU 难以充分利用并行处理潜力。他们在高效分配和执行复杂 AI 模型所需的大量并行计算方面面临困难。
因此,GPU 的开发已变得普遍,以满足 AI 应用中并行处理的特定需求,从而实现更高的效率和更快的计算。
GPU 驱动开发如何解决这些问题
GPU 核心的大规模并行性
工程师设计的 GPU 具有更小、高度专业化的核心,而 CPU 中则具有更大、更强大的核心。这种架构允许 GPU 同时执行多个并行任务。
GPU 中的大量核心非常适合依赖于并行性的工作负载,例如图形渲染和复杂的数学计算。
我们来展示CPU和GPU处理并行性任务所需的时间。

AI 模型中使用的并行性
AI 模型,尤其是那些基于 TensorFlow 等深度学习框架构建的模型,表现出高度的并行性。神经网络训练涉及大量矩阵运算,而 GPU 凭借其广泛的核心数量,在并行化这些运算方面表现出色。TensorFlow 以及其他流行的深度学习框架都经过优化,以利用 GPU 的功能来加速模型训练和推理。
使用 GPU 的功能来训练神经网络。

CPU 与 GPU:有什么区别?
CPU
顺序架构
中央处理器 (CPU) 的设计重点是顺序处理。它们擅长线性执行一组指令。
CPU 针对需要高单线程性能的任务进行了优化,例如
- 通用计算
- 系统操作
- 处理涉及条件分支的复杂算法
并行任务的内核数量有限
CPU 的内核数量较少,消费级处理器的内核数量通常在 2-16 个之间。每个内核都能够独立处理自己的一组指令。
GPU
并行化架构
图形处理单元 (GPU) 采用并行架构设计,可高效地执行并行处理任务。
这对以下方面有益:
- 渲染图形
- 执行复杂的数学计算
- 运行可并行算法
GPU 通过将多个任务分解为较小的并行子任务来同时处理多个任务。
数千个核心用于并行任务
与 CPU 不同,GPU 拥有大量核心,通常多达数千个。这些核心被组织成流式多处理器 (SM) 或类似结构。
核心数量众多,使 GPU 能够同时处理大量数据,非常适合可并行化任务,例如图像和视频处理、深度学习和科学模拟。
Vultr GPU 云服务推荐
为什么建议使用云端。因为个人电脑还有其他用途,比如玩游戏、办公等等。整个系统一旦配置开发环境会影响其他方面的使用。还有就是网络环境,AI项目需要用到很多环境和依赖库,你的网络能不能连上环境和依赖社区的存储库都不一定,更别提下载,上半年Docker hub被墙想必大家都知道了。
Vultr云服务商提供各种用于机器学习等用途的 GPU 实例。它支持信用卡、PayPal、支付宝(我写本文时候专门试了一下,“可以花呗”)、加密货币、电汇这些付款方式。
配置价格如图:



与其他GPU云服务商对比的优势:
价格低,随用随开(开始计费),不用随时可关闭(停止计费)。Vultr所有实例中最低配置都有1500mb的网速(我们平时的办理的运营商千兆带宽也就1000mb)。
和国内云服务商对比:
这部分内容完全是浪费资源,但怕部分小伙伴们有疑惑,我才写的。国内GPU云服务器完全无可比性。实例价格贵一点可以忽略,最重要带宽,毫不夸张的说“比金子都贵”。都是按M算钱的(这也不怪云服务器商,是三大运营商定价高,为了补贴家庭带宽用户成本),一个AI依赖库都下载几个小时。国内GPU云服务只有科学上网出不来的用户才会用(这里没有歧视的意思)。还有一种情况,你需要的是7×24小时GPU服务器且你的业务目标是国内用户,例如,你经营一款网游7×24小时向国内用户提供服务。这种情况那没办法了,刚起步的小团队确实只能用国内厂商的GPU服务器,后续的话一般都会自己组建机房,不会买云服务,因为不划算。本文讨论是正常开发或者使用,例如,你要使用作图、声音翻译、语音处理等AI项目,或者开发AI项目。
与Google Cloud和亚马逊(AWS)云服务商对比:
Google Cloud
必须绑定信用卡,其他付款方式不支持。不支持即开即关,以年为期限

亚马逊(AWS)
个人用户必须绑定信用卡,其他付款方式不支持。企业可以使用银联付款方式一对一专员对接付款。
以下是不同类型的 AWS GPU 实例及其用例:
通用 GPU 实例
- P3和 P4 实例可用作多功能通用 GPU 实例,非常适合广泛的工作负载。
- 这些包括机器学习训练和推理、图像处理和视频编码。它们均衡的功能使它们成为各种计算任务的可靠选择。
- 定价:p3.2xlarge 实例每小时费用为 3.06 美元。
- 这提供了 1 个 NVIDIA Tesla V100的GPU ,显存内存16 GB
推理优化的 GPU 实例
- 推理是通过经过训练的 AI 模型运行实时数据以进行预测或解决任务的过程。
- P5 和 Inf1 实例专门用于机器学习推理,在低延迟和成本效率至关重要的场景中表现出色。
- 定价:p5.48xlarge 实例每小时费用为 98.32 美元。
- 这提供了 8 个 NVIDIA H100 GPU,每个 GPU 具有 80 GB 显存,总计高达 640 GB 的显存。
图形优化的 GPU 实例
- G4 实例 实例专为处理图形密集型任务而设计。
- 视频游戏开发人员可能会使用 G4 实例为视频游戏渲染 3D 图形。
- 定价:g4dn.xlarge 每小时运行成本为 0.526 美元。
- 使用 1 个 NVIDIA T4 GPU,显存为 16 GB。
托管 GPU 实例
- Amazon SageMaker 是一种用于机器学习的托管服务(也就是前面说的“7×24运行”)。它提供对各种 GPU 驱动的实例的访问,包括 P3、P4 和 P5 实例。
由上述对比可以看出Vultr GPU云服务的优势。
安装配置Nvidia的CUDA
什么是 Cuda?
CUDA 是 NVIDIA 开发的并行计算平台和编程模型,使开发人员能够利用 GPU 加速器的强大功能来加速其应用程序。
本文演示中的示例都是使用Nvidia的CUDA。
如何在您的机器上安装并设置Cuda
要在您的机器上设置 CUDA,您可以按照以下步骤操作。
如果你是本地机器安装
Linux(以Ubuntu系统为例)

根据你系统发行版来选择参数。


上述两条命令执行完后会出现一个同意协议条款,输入“approve”即可,如果同意的单词有变化,请拍照翻译。同意协议后等待一会会出现如下内容,让你选择安装版本([X]
这种表示勾选,[ ]
表示不勾选,按键盘上下键控制,回车键为确定。)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x CUDA Installer xxxxxxxxxxxx x x - [X] Driver x x [X] 550.54.14 x x + [X] CUDA Toolkit 12.4 x x [X] CUDA Demo Suite 12.4 x x [X] CUDA Documentation 12.4 x x - [ ] Kernel Objects x x [ ] nvidia-fs x x Options x x Install x x x x x x x x x x x x x x x x xxxxxx x x xxxxxx x x x x x x x x Up/Down: Move | Left/Right: Expand | 'Enter': Select | 'A': Advanced options x |
选择Driver
和CUDA Toolkit
为必选项目,然后移动光标到Install
回车安装。
Windows

下载后点击安装即可,Windows安装程序都是傻瓜式的,没什么可说的。这也是Windows系统能成为操作系统霸主的原因。
如果你是使用Vultr GPU云实例安装
一般情况下,Vultr GPU实例是自带NVIDIA驱动的,但是不自带CUDA Toolkit。需要手动安装。
使用此命令查看驱动版本(此命令Windows终端也可以使用。)
1 |
nvidia-smi |
截至目前(本文发布时间),自带驱动为550.xxx版本,CUDA版本为12.4
使用此命令查看apt包管理器包含的CUDA Toolkit版本。(默认情况下,Ubuntu24是12+;Ubuntu22是11+;Ubuntu20是10+。根据你运行AI项目需要的CUDA Toolkit版本来选择系统版本)
1 |
apt-cache madison nvidia-cuda-toolkit |
使用此命令安装CUDA Toolkit
1 |
apt install -y nvidia-cuda-toolkit |
不建议手动安装CUDA Toolkit,对于Vultr来说很麻烦。因为云实例不是物理机,手动安装CUDA Toolkit会导致NVIDIA驱动不兼容。
如果你实在想且必须手动安装特定的版本CUDA Toolkit版本,请使用Conda(虚拟环境管理器)来安装。Conda安装请参考博客中这篇文章
创建一个名为“ai”,python为3.10的虚拟环境
1 conda create --name ai python=3.10 -y进入虚拟环境
1 conda activate facefusion安装CUDA环境
1 conda install conda-forge::cuda-runtime=12.4.1 cudnn=8.9.2.26 conda-forge::gputil=1.4.0 -y
常用的基本命令(安装 CUDA 后,以下是一些有用的命令。)
1 |
lspci | grep VGA |
此命令的目的是识别并列出系统中的 GPU。如图:

1 |
nvidia-smi |
它代表“NVIDIA 系统管理界面”,除了前面说的驱动版本和CUDA版本,它还提供有关系统中 NVIDIA GPU 的详细信息,包括利用率、温度、内存使用情况等。如图:

1 |
sudo lshw -C display |
目的是提供有关系统中的显示控制器(包括显卡)的详细信息。如图:

1 |
inxi -G |
该命令提供有关图形子系统的信息,包括有关 GPU 和显示器的详细信息。如图:

1 |
sudo hwinfo --gfxcard |
其目的是获取有关系统中显卡的详细信息。如图:

使用Cuda开发项目
结论
在即将到来的人工智能时代,GPU 不容忽视,我们应该更加了解它的功能。
随着我们从传统的顺序算法过渡到日益流行的并行算法,GPU 成为加速复杂计算的不可或缺的工具。GPU 的并行处理能力在处理人工智能和机器学习任务固有的海量数据集和复杂的神经网络架构方面特别有利。
此外,GPU 的作用超出了传统的机器学习领域,在科学研究、模拟和数据密集型任务中都有应用。事实证明,GPU 的并行处理能力有助于解决从药物发现和气候建模到金融模拟等各个领域的挑战。
相关文章推荐:CPU工作原理——了解计算机CPU是如何工作的