GPU、AI、CUDA

部署运行你感兴趣的模型镜像

1.千层面

神经网络的本质是千层面,由一层一层的线性代数方程组成,每个方程都表示一段数据与另一段数据相关的可能性

神经网络的每一次层可以看作是一次线性代数变换,然后接上一个非线性激活函数。每一层都对输入数据进行变换
线性变换,每层中的线性代数方程是矩阵乘法的形式:
z = W·x + b
W 是权重矩阵,x 是输入, b 是偏置向量, z 是线性变换

最后一层的输出通常表示与输入数据某个目标输出之间的“可能性”或“概率”。

多层

每一层的输出作为下一层的输入,使得数据逐步被加工或提取,每个链接都有一个权重,权重是通过训练来调整的。训练的过程是通过大量的数据,让网络中的权重调整到最优,使得模型能够很好地拟合输入与输出的关系

2. CPU与GPU架构差异

CPU在于处理复杂多样性的任务,每个核心都有复杂的控制逻辑、缓存层次结构、分支预测、流水线等,高性能核心较少(例如4-16个)。CPU擅长处理复杂的顺序任务,你的计算机从加电开始到关闭,这期间加载了类型多样的应用,靠着操作系统调度这期间的各类工作和资源,交给CPU完成。CPU的每个核心则用来处理计算机运行期间的复杂多样性任务,以多线程和多进程的方式来实现。相当于一个管家团队,因此它执行高度复杂的任务,但不适合处理上了大规模的简单数值运算。

相比之下,GPU本身就是为了大规模的简单且相似的计算任务而设计的,有成千上万个较小的处理核心,控制逻辑简单,无需解析复杂指令,重点在于提供更多的核心,实现同时执行大量的相似任务,例如神经网络中的矩阵运算和张量运算。相当于一个搬砖工人团队,无需千头万绪的复杂控制逻辑。

在这里插入图片描述

GPU设计之初是为了处理大量的数值计算任务(显卡上的图形渲染,作为协处理器),迅速从显存中加载大量的数据并用于并行计算。
因此在神经网络中进行类似的数值密集运算时,GPU具有天然优势。

3.大规模矩阵操作

神经网络的计算过程,包括前向传播和反向传播,本质上就是一系列的大规模矩阵乘法、卷积运算和张量操作。这些计算在GPU上的并行处理能力下,可以显著加速。举个例子:

我们可以用一个生活中的类比来解释。
假设我们现在要完成一项任务,用手电筒照亮1000个物品,检查它们的状态。你只有4个人(CPU的4个核心)。每个人只能同时检查一个物品。

CPU怎么做?
这4个人中的每个人一次只能处理一个物品,所以他们要逐一去检查物品。
比如,第1个人从物品1到物品250检查,第2个人检查物品251到500……其他两个人负责剩下的部分。

因为每个人一次只能处理一个物品,所以他们必须按顺序去检查这些物品,即使大家分配了不同的部分,还是得一个接一个地完成。

这种情况下,虽然4个人比1个人做得快,但他们仍然无法同时处理所有物品。换句话说,每个人处理的任务是按顺序来的,因为他们能同时处理的任务有限。处理完一个,再去处理下一个。

在CPU中,少量的核心(比如4个核心)就像这4个人一样,每个核心只能处理一部分任务,并且需要按顺序去处理。如果你有非常多的任务(比如1000个),每个核心只能一次处理一个任务,所以每次只能同时处理4个任务,其他任务要等前面的任务处理完了才能进行。

如果换成GPU,你突然有了1000个人,每个人同时检查一个物品。所有人同时开始工作,每个物品在同一时间都被检查完了。你不需要等待每个物品按顺序完成,而是所有的任务同时完成。

在GPU中,有成千上万个核心,它们就像这1000个人,可以同时进行处理。每个核心负责处理任务的一小部分(完全相似,无需复杂控制逻辑),并行处理,因此在大规模计算任务(如神经网络中的矩阵运算)中比CPU更快

4.专为并行计算设计的库

CUDA,Computer Unified Device Architecure
cuDNN,CUDA Deep Neural Network Library

CUDA是NVIDIA开发的并行计算框架,让开发者能够直接使用 GPU 来进行计算,可以将计算任务从 CPU 移到 GPU 上,为开发者提供了编程接口,允许用C++或PYTHON写代码控制GPU的计算资源。可以把耗时的计算任务放到GPU上执行。如果有一段矩阵相乘的运算,通过CUDA编程,将这些矩阵的每个元素的计算分配给GPU的不同核心,GPU会同时计算所有元素

cuDNN基于CUDA的专门用于深度学习的库,提供了高度优化的神经网络的运算功能,虽然可以用CUDA编程,但是cuDNN进行了优化,集成在主流深度学习框架(如TensorFlow、PyTorch)中,框架会自动调用cuDNN来加速深度学习中的核心计算,这样你无需自己编写复杂的代码,就能够充分利用GPU的计算能力

CUDA 帮助你管理和使用 GPU 的资源,是一个广义的并行计算框架,它可以用来编写各种类型的高性能计算任务(不仅限于深度学习)。任何需要大量计算的应用都可以利用 CUDA 来在 GPU 上加速,比如图像处理、物理仿真等。cuDNN 是基于 CUDA 之上的一个库,它专门为深度学习中的常见操作做了优化。仅用于深度学习任务。

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dotdotyy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值