时代的生存工具包:每个开发人员必须了解的基本知识算法向量通用gpu并行性

随着传统的顺序算法到日益流行的并行算法,GPU 将成为加速复杂计算不可或缺的工具。在 AI 和机器学习任务等具有海量数据集和复杂的神经网络的架构中,GPU 的并行处理能力具有很大的优势。本文将深入探讨学习。

未经允许,禁止转载!

作者 | Rijul Rajesh 译者 | 弯月

责编 | 夏萌

出品 | CSDN(ID:CSDNnews)

为什么仅有 CPU 的知识还不够

然而,CPU 的问题在于它们依赖于顺序架构。在当今世界,我们依赖于大量并行任务,而 CPU 并不适合这些情况。

开发人员面临的问题包括:

执行并行任务

传统的 CPU 是线性运行的,一次执行一条指令。有这种限制是因为 CPU 通常拥有若干针对单线程性能进行过优化的强大核心。

虽然我们可以通过多线程等技术来提高 CPU 的性能,但其基本设计理念优先考虑的是顺序执行。

高效运行 AI 模型

AI模型采用 Transformer 等先进架构,利用并行处理来提高性能。与顺序运行的旧式循环神经网络 (RNN)不同,GPT 等现代Transformer 可以同时处理多个单词,从而提高训练的效率和能力。因为当我们并行训练时,就可以得到更大的模型,而更大的模型会生成更好的输出。

并行性的概念超越了自然语言处理,扩展到了图像识别等其他领域。例如,图像识别架构 AlexNet 可以同时处理图像的不同部分,展现出了并行处理的强大功能,从而实现了准确的模式识别。

然而,以单线程性能为重心设计的 CPU 很难充分发挥并行处理的潜力。它们无法有效地分配和执行复杂的 AI 模型所需的大量并行计算。

因此,GPU 的开发变得越来越普遍,为的是满足 AI 应用程序中并行处理的特定需求,从而实现更高的效率和更快的计算。

如何利用 GPU 驱动开发解决这些问题

GPU 核心的大规模并行性

与 CPU 的核心相比,工程师们设计的 GPU 具有更小、高度专业化的核心。这种架构允许 GPU 同时执行多个并行任务。

GPU中的大量核心非常适合依赖于并行性的工作负载,例如图形渲染和复杂的数学计算。

AI 模型中使用的并行性

AI模型,特别是基于 TensorFlow 等深度学习框架构建的模型,展现出了高度的并行性。神经网络的训练涉及大量矩阵运算,而 GPU 凭借其庞大的核心数量,能够并行化这些运算。TensorFlow 以及其他流行的深度学习框架都进行了优化,能够利用 GPU 的能力来加速模型的训练和推理。

在本文中,我们将展示如何利用 GPU 的强大功能来训练神经网络。

CPU与 GPU 有何不同?CPU

顺序架构

中央处理单元(CPU)的设计重心是顺序处理。它们擅长线性执行一组指令。

CPU针对需要高单线程性能的任务进行了优化,例如

通用计算

系统操作

处理涉及条件分支的复杂算法

处理并行任务的核心数量有限

CPU的核心数量较少,消费级的处理器通常有 2~16个核心。每个核心都能够独立处理自己的指令集。

GPU

并行架构

图形处理单元(GPU)采用并行架构设计,能够高效地执行并行处理任务。

适合于:

渲染图形

执行复杂的数学计算

运行可并行的算法

GPU通过将多个任务分解为更小的并行子任务来同时处理多个任务。

数千个用于并行任务的核心

与 CPU 不同,GPU 拥有大量核心,通常高达数千个。这些核心组织成了流式多处理器(SM)或类似的结构。

丰富的核心使 GPU 能够同时处理大量数据,非常适合并行任务,例如图像和视频处理、深度学习和科学模拟等。

AWS GPU 实例:初学者指南

Amazon Web Services(AWS)提供各种用于机器学习等任务的 GPU 实例。

以下是不同类型的 AWS GPU 实例及其用例:

通用 GPU 实例

P3 和 P4 实例作为多功能通用 GPU 实例,非常适合各种工作负载。

其中包括机器学习训练和推理、图像处理和视频编码。它们的各方面能力都很平衡,因此成为了各种计算任务的可靠选择。

价格:p3.2xlarge实例的费用为每小时 3.06 美元。

提供 1 个 16 GB GPU 内存的 NVIDIA Tesla V100 GPU。

推理优化 GPU 实例

推理指的是通过训练好的 AI 模型运行实时数据以进行预测或解决任务的过程。

P5 和 Inf1 实例专门针对机器学习推理,在十分注重低延迟和成本的场合中有着出色表现。

价格:p5.48xlarge实例的费用为每小时 98.32 美元。

提供 8 个 NVIDIA H100 GPU,每个 GPU 80 GB 内存,共计 640 GB 显存。

图形优化 GPU 实例

G4 实例主要用于处理图形密集型任务。

视频游戏开发人员可以使用 G4 实例来渲染视频游戏的 3D 图形。

提供 1 个 16 GB 内存的 NVIDIA T4 GPU。

托管 GPU 实例

Amazon SageMaker是一项机器学习托管服务。提供支持各种 GPU 实例的访问,包括 P3、P4 和 P5 实例。

对于希望接触机器学习,同时不想操心底层基础设施管理的组织来说,SageMaker 是一个不错的选择。

使用 Nvidia 的 CUDA 进行GPU 驱动开发CUDA是什么?

CUDA是一款 NVIDIA 开发的并行计算平台和编程模型,可帮助开发人员利用 GPU 加速器的强大功能来提高应用程序的速度。

下面,我们将使用 CUDA 来展示一个示例。

设置 CUDA

你可以按照以下步骤操作,在计算机上设置 CUDA。

通过上面的链接,下载基本的安装程序以及驱动程序安装程序。

打开主文件夹中的.bashrc,将以下内容添加到文件中:

export PATH="/usr/local/cuda-12.3/bin:$PATH"

export LD_LIBRARY_PATH="/usr/local/cuda-12.3/lib64:$LD_LIBRARY_PATH"

执行以下命令

sudo apt-get install cuda-toolkit

sudo apt-get install nvidia-gds

重启系统。

基本命令

在安装好 CUDA 后,你可以尝试以下命令。

LSPCI | grep VGA

此命令可识别并列出系统中的 GPU。

nvidia-smi

此命令为 NVIDIA System Management Interface(NVIDIA 系统管理界面)的缩写,可提供系统中有关 NVIDIA GPU 的详细信息,包括利用率、温度、内存使用情况等。

sudo lshw -C display

此命令可提供系统中有关显示控制器(包括显卡)的详细信息。

inxi -G

此命令可提供有关图形子系统的信息,包括有关 GPU 和显示器的详细信息。

sudo hwinfo --gfxcard

此命令可提供系统中有关显卡的详细信息。

使用 CUDA框架

下面,我们来展示 CUDA 的一些具体功能。

数组加法问题

数组加法问题很适合演示 GPU 并行化。

考虑以下数组:

数组 A = [1,2,3,4,5,6]

数组 B = [7,8,9,10,11,12]

我们需要计算每个元素之和,并存储在数组C中。

即 C = [1+7,2+8,3+9,4+10,5+11,6+12] = [8,10,12,14,16,18]

如果由 CPU 来执行整个操作,则代码如下:

前一个循环遍历数组的每个元素,并依次执行加法。当需要处理大量数字时,这种方法就会由于其顺序执行的性质而变得缓慢。

为了克服这个限制,GPU 提供了一种解决方案:并行化加法运算。不同于依次执行运算的 CPU,GPU 可以同时执行多项加法。

例如,运算 1+7、2+8、3+9、4+10、5+11 和 6+12 可以借助 GPU 并行化同时执行。

利用 CUDA,实现并行加法的代码如下:

我们将使用内核文件(.cu)进行演示。

我们来逐行讲解代码。

__global__ 表明该函数是一个内核函数,将在 GPU 上调用。

vectorAdd 接受三个整数指针(a、b 和 c)作为参数,代表相加的向量。

threadIdx.x 获取当前线程的索引(在一维网格中)。

向量 a 和 b 的相应元素之和存储在向量 c 中。

下面,我们来看看 main 函数。

创建指针 cudaA、cudaB 和 cudaC,指向 GPU 上的内存。

我们使用 cudaMalloc,为向量 cudaA、cudaB 和 cudaC 分配 GPU上的内存。

使用 cudaMemcpy 将向量 a 和b 的内容从主机复制到 GPU。

使用一个块和多个(数量等于向量大小)线程调用内核函数 vectorAdd。

将结果向量 cudaC 从 GPU 复制回主机。

然后就可以正常输出结果了:

我们使用 nvcc 命令执行这段代码。

输出如下:

使用 GPU 优化 Python 中的图像生成

下面,我们来探讨如何使用 GPU 处理来优化性能密集型任务,例如图像生成。

曼德博集合是一种数学结构,可根据指定方程中特定数字的行为形成复杂的视觉模式。生成这种集合是一项资源密集型操作。

通过下面的代码片段,你可以了解到使用 CPU 处理生成曼德博集合的传统方法,该方法的速度很慢。

上面的代码生成结果需要耗费 4.07 秒。

为了提高速度,我们可以通过 Numba 库利用 GPU 的并行化。具体方法如下。

首先,我们导入 Numba 库的即时编译、用于 GPU 加速的 CUDA 以及其他实用程序。

@jit指示 Numba 执行即时编译,将 Python 代码转换为机器代码,以提高执行速度。

device=True 参数表示该函数将在GPU 上运行。

根据定义,mandel_kernel 将在 CUDA GPU 上执行。负责跨 GPU 线程并行生成曼德博集合。

接下来,我们可以在 create_fractal_gpu 函数中使用 GPU 加速的曼德博集合生成。create_fractal_gpu 函数需要分配 GPU 内存,启动 GPU 内核 (mandel_kernel),并将结果复制回 CPU。

上述代码只需 0.0046 秒内就能执行完成。比之前的 CPU 的代码要快许多。

使用 GPU 训练区分猫狗的神经网络

准备工作

CUDA

安装Tensorflow:pip install tensorflow[and-cuda]

我们将使用kaggle 的猫狗数据集。

下载完成后,解压,将训练文件夹中的猫狗图片整理到不同的子文件夹,如下所示:

导入库:

pandas 和 numpy:用于操作数据。

Sequential:用于创建神经网络中叠放的线性层。

Convolution2D、MaxPooling2D、Dense 和 Flatten:构建卷积神经网络(CNN)的各层。

ImageDataGenerator:用于在训练期间进行实时数据增强。

初始化卷积神经网络(CNN)

加载训练数据

构建 CNN 架构

编译模型

训练模型

在下面的代码中,我们将使用 trained_model.h5 来识别猫和狗。

输出如下:

总结

在即将到来的 AI 时代,GPU 是不容忽视的存在,我们应该深入了解它的能力。

随着我们从传统的顺序算法过渡到日益流行的并行算法,GPU 将成为加速复杂计算不可或缺的工具。在 AI 和机器学习任务等具有海量数据集和复杂的神经网络的架构中,GPU 的并行处理能力具有很大的优势。

此外,GPU 已超出传统的机器学习领域,在科学研究、模拟和数据密集型任务中也有找到了应用。事实证明,GPU 的并行处理能力有助于解决药物发现、气候建模以及金融模拟等各个领域的难题。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

THE END
0.AI软件库AI软件库,致力于发现人工智能生成式AI软件与工具资源,以及stablediffusion,comfyui,midjourney图文和影像视频生成模型animatediff,controlnet,flux,reactor,sd3等与设计模版等ai资源交流学习分享欣赏,涵盖文生图,文生视频,图生图,图生视频,文生三维,图生三维等3d生成技术,aijvzquC41yy}/crfrrm{/exr1
1.AI少女AI少女人物卡工具包Mod6.24—∞下载|3DMMod站在3DM Mod站下载AI 少女最新的AI少女 人物卡工具包 Mod,由四氢呋喃制作。#点点滴在我们的平台上分享了这个免费且高质量的游戏模组,让玩家们可以享受到更加丰富的游戏体验。快来3DM Mod站下载并尝试吧!jvzquC41oqj/5mricok/exr1oqj03@:949
2.AIToolkitforVisualStudioCode入门|MicrosoftLearnAI Toolkit for VS Code (AI Toolkit) 是一个 VS Code 扩展,使你能够在应用或云中下载、测试、微调和部署 AI 模型。 有关详细信息,请参阅 AI 工具包概述。 注意 VS Code AI 工具包的额外文档和教程可以在 VS Code 文档中找到:适用于 Visual Studio Code 的 AI 工具包。 你将找到有关 Playground、使用 jvzquC41nggsp7rketutqoy0eqs0|q2ep1}jpmtyu1gj1}tqnmou1}tqnmou/pjvvkth/|yctvke
3.ai怎么设计箱式手提包素材?Illustrator教程平面设计ai中想要设计一款手提包,该怎么设计呢?下面我们就来看看ai绘制箱体样式手提包的教程,要的朋友可以参考下 GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用! 【如果你想靠AI翻身,你先需要一个靠谱的工具!】 ai中想要设计一款手提包,该怎么绘制手提包呢?下面我们就来看看ai设计手提包的教程。jvzquC41yy}/lk:30pku1Rqnwuzsc}tt18;6:?<0jvsm
4.微软据报开发工具包一键转码CUDA,打破英伟达AI生态垄断来源:格隆汇APP 格隆汇11月10日|据美国科技媒体Wccftech,微软为打破英伟达CUDA在AI领域的软件生态霸权,开发出一套专用工具包,可将基于英伟达CUDA编写的AI模型程序码,自动转换为跟AMD …jvzquC41o0ypj~3eqo5b1B:49;6:8Ad344626=74
5.用于语音容器的批处理工具包使用批处理工具包来补充和横向扩展语音容器上的工作负载。 此开放源代码实用程序以容器的形式提供,有助于跨任意数量的本地和基于云的语音容器终结点对大量音频文件进行批量听录。 可在GitHub 和Docker 中心免费使用批处理工具包容器。 你只需要为使用的语音容器付费。 展开表 功能/ 特点说明 批处理音频文件分发 jvzquC41fqit0vnetqyph}3eqo5b|~wg1euhprykxg3tg{{kegy0uyjgej3tg{{keg5trnjej/ipp}fkpgx.djyej/vsqljuukth
6.(6秒快速了解)腾讯天天德州每800字插入交互式AI问答模块(网页3) 场景4:短视频搜索优化 ​​数据​​:抖音搜索日均SEO相关词增长300%(网页9) ​​优化矩阵​​: 短视频标题:嵌入"#手机SEO教程"等话题标签(网页9) 评论区:置顶含核心关键词的解决方案(网页6) 购物车组件:关联《移动端SEO工具包》(网页3) jvzq<84ycr4flA57;0oohx4RqUz03:62a:>63A50JvS
7.「详细教程」基于Algorithmia工具将NLP模型部署为API这意味着,当人们学习机器学习时,很少讨论机器学习部署的话题。因此,许多AI从业者知道如何创建有用的ML模型,但他们发现很难将它们部署到生产中。 毋庸置疑,如果你要使用ML模型,机器学习部署是你应该掌握的比较重要的技能之一。 Model deployment is the process of integrating your model into an existing production jvzquC41yy}/hu~ck0ipo8ftvkimg8<:8
8.Mac版Geekbench6苹果电脑跑分软件让您更精准地评估你的Mac性能Geekbench AI for Mac 苹果系统跑分性能检测工具 永久版下载 5.0分/1人 芯片:Apple Silicone 和 Intel 版本:1.2.0 语言:英文 系统:macOS 13.0 或更高版本 大小:462.4 MB 安装指南 Geekbench for Mac是一款macOS平台的基准测试应用,它旨在通过模拟真实世界应用程序的测试来衡量设备的处理能力,只需按下一个按钮jvzquC41yy}/ojh|n0ipo8Lggmhfplm0jvsm
9.如何使用AIToolkitforVSCode微调模型|MicrosoftLearnAI Toolkit 使用名为QLoRA的方法,该方法结合了量化和低级别自适应 (LoRA) 来使用你自己的数据微调模型。 通过QLoRA:量化 LLM 的有效微调详细了解 QLoRA。 步骤1:配置项目 若要使用 QLoRA 启动新的微调会话,请在 AI 工具包左侧面板中的“工具”部分选择微调项。 jvzquC41nggsp7rketutqoy0eqs0|q2ep1}jpmtyu1gj1}tqnmou1}tqnmou/onpg/zvpn