1. 主页 > 物联网(iot)技术 >

使用 GPU 进行深度学习

使用 GPU 的典型深度学习管道包括:
 
数据预处理(由 CPU 处理)
 
DNN 训练或推理(由 GPU 处理)
 
数据后处理(再次由CPU处理)
 
这种方法最常见的瓶颈是 CPU RAM 和 GPU DRAM 之间的数据传输。因此,在构建数据科学管道架构时有两个主要重点。第一个是通过将多个样本(图像)聚合为一个批次来减少数据传输事务的数量。二是通过在传输前过滤数据来减小特定样本的大小。
 
DL 模型的训练和实现需要深度神经网络 (DNN) 和具有数十万个数据点的数据集。这些 DNN 需要大量资源,包括内存、存储和处理能力。虽然中央处理单元 (CPU) 可以提供这种能力,但图形处理单元 (GPU) 可以大大加快该过程。
 
使用 GPU 进行深度学习的主要好处
 
专用 GPU 为实现 DNN 的系统带来了三个显着优势:
 
核心数——GPU 通常拥有大量核心,可以集群在一起,并且可以与 CPU 结合使用。这使您能够显着提高系统内的处理能力。
 
更高的内存带宽——GPU 可以提供比 CPU 更高的内存带宽(高达 750GB/s 与 50GB/s)。这使他们能够更轻松地传输方便的深度学习所需的大量数据。
 
灵活性——GPU 的并行能力使您能够在集群中组合 GPU 并在这些集群之间分配任务。或者,您可以单独使用 GPU,并将集群分配给各个算法的训练。
 
何时不将 GPU 用于深度学习任务
 
与 CPU 相比,GPU 计算速度更快,并且 GPU 是许多 AI 应用程序的必备组件。但在某些情况下,这种处理能力是过大的,系统架构师应该考虑利用 CPU 来最大限度地减少预算压力。
 
这里我们还需要说几句关于GPU计算的成本。如前所述,GPU 执行计算的速度明显快于 CPU。尽管如此,传输和处理数据的总时间成本可能超过您通过切换到 GPU 获得的速度。
 
因此,例如,在开发初期,即在开发概念验证 (POC) 或最小可行产品 (MVP) 时,人们可以将 CPU 用于开发、测试和登台服务器等初步活动。如果用户可以接受更长的响应时间,生产服务器可以使用 CPU 进行 DNN 训练和推理,但理想情况下仅适用于总体持续时间较短的任务。
 
用于深度学习的本地 GPU 选项
 
将 GPU 用于本地实施时,可以使用多个供应商选项。两个最受欢迎的选择是 NVIDIA 和 AMD。
 
英伟达
 
NVIDIA 是一种流行的选择,因为它提供了第一方库,称为 CUDA 工具包。这些库支持轻松建立深度学习过程,并使用 NVIDIA 产品构成强大的机器学习社区的基础。许多深度学习库和框架为 NVIDIA 硬件提供的广泛支持证明了这一点。
 
除了支持他们的 GPU 硬件,NVIDIA 还提供支持流行的深度学习框架的库,包括 PyTorch。Apex 库特别有用,包​​括几个快速、融合的优化器,例如 FusedAdam。
 
集成 NVIDIA GPU 的系统的缺点是该公司最近对可以使用 CUDA 的配置进行了限制。这些限制要求库只能与 Tesla 系列 GPU 一起使用,不能与较便宜的 RTX 或 GTX 硬件系列一起使用。这对培训 DL 模型的组织产生了严重的预算影响;考虑到尽管 Tesla GPU 的性能并不比其他选项高得多,但这些单元的成本高达 10 倍,这也是有问题的。
 
AMD
 
AMD 还提供了一套第一方库,称为 ROCm。TensorFlow 和 PyTorch 以及所有重要的网络架构都支持这些库。然而,对新网络发展的支持是有限的,社区支持也是如此。
 
使用 AMD GPU 的另一个问题是,AMD 在其深度学习软件上的投资不如 NVIDIA。因此,与 NVIDIA 相比,AMD GPU 提供的功能有限,超出了其较低的价格点。
 
使用 GPU 的云计算
 
组织培训 DL 模型越来越受欢迎的另一个选择是使用云资源。这些资源可以与优化的机器学习服务相结合,提供对 GPU 的按使用付费访问。在重要的云计算资源提供商(Microsoft Azure、AWS 和 Google Cloud)中,这三者都提供 GPU 资源以及一系列配置选项:
 
微软 Azure
 
Microsoft Azure 授予 各种 用于 GPU 访问的实例选项。这些实例已经针对高计算任务进行了优化,包括可视化、模拟和深度学习。
 
在 Azure 中,您可以从三个主要系列的实例中进行选择:
 
NC 系列:实例针对网络和计算密集型工作负载进行了优化。例如,基于 CUDA 和 OpenCL 的模拟和应用程序将使用 NC 系列实例。这些实例提供对 NVIDIA Tesla V100、Intel Haswell 或 Intel Broadwell GPU 的访问。
 
ND 系列:实例针对深度学习的推理和训练场景进行了优化。这些实例提供对 NVIDIA Tesla P40、Intel Broadwell 或 Intel Skylake GPU 的访问。
 
物联网
NV 系列:实例针对虚拟桌面基础架构、流媒体、编码和可视化进行了优化。NV 系列实例专门支持 DirectX 和 OpenGL。实例提供对 NVIDIA Tesla M60 或 AMD Radeon Instinct MI25 GPU 的访问。
 
亚马逊网络服务 (AWS)
 
在 AWS 中,根据所需的处理能力和内存级别,有四种不同的选项,每种都有不同的实例大小。选项包括 EC2 P3、P2、G4 和 G3 实例。这些选项使您能够在 NVIDIA Tesla V100、K80、T4 Tensor 或 M60 GPU 之间进行选择。根据实例,您最多可以扩展到 16 个 GPU。
 
为了增强这些实例,AWS 还提供了 Amazon Elastic Graphics,这项服务使您能够将低成本 GPU 选项附加到您的 EC2 模型。此服务允许您根据需要将 GPU 与任何兼容的实例一起使用,从而为您的工作负载提供更大的灵活性。Elastic Graphics 提供对 OpenGL 4.3 的支持,并可提供高达 8GB 的​​图形专用内存。
 
谷歌云
 
Google Cloud 不是专用的 GPU 实例,而是让您能够将 GPU 附加到现有实例。例如,如果您使用Google Kubernetes Engine,您可以创建可以访问一系列 GPU 的节点池 。其中包括 NVIDIA Tesla K80、P100、P4、V100 和 T4 GPU。
 
Google Cloud 还提供 TensorFlow 处理单元 ( TPU )。该专用单元包括多个 GPU,旨在执行快速矩阵乘法。它提供与启用了 Tensor Cores 的 Tesla V100 实例类似的性能。使用 TPU 的主要好处是它可以通过并行化来节省成本。
 
每个 TPU 相当于四个 GPU,可实现相对更大的部署。此外,PyTorch 现在至少部分支持这些 TPU。
 
2021 年最适合深度学习任务的 GPU 是什么?
 
当需要选择基础架构时,需要在内部部署和云方法之间做出决定。
 
云资源可以显着降低构建深度学习基础设施的财务障碍,这些服务还可以提供可扩展性和提供商支持。然而,这些基础设施最适合短期项目,因为一致的资源使用会导致成本激增。
 
相比之下,本地基础设施的前期成本更高,但提供了更大的灵活性。在组件的使用寿命内,硬件可以根据需要进行尽可能多的实验,而且成本稳定。选择使用本地配置的开发人员还保留对其配置、安全性和数据的完全控制。
 
对于刚刚起步的组织,云基础架构通常更有意义。这些部署使您能够以最少的前期投资开始运行,并让您有时间完善您的流程和要求。但是,一旦操作变得足够大,切换到本地可能是更明智的选择。
 
使用 GPU 进行 AI 训练
 
由于 GPU 是具有专注于快速图形处理的指令集的专用处理器,因此深度学习应用程序的开发人员面临着他们使用 GPU 的任务与其预期目的之间的转换问题。因此,Tensorflow、Pytorch 或 ONNX 等传统深度学习框架无法直接访问 GPU 内核来解决其上的深度学习问题。相反,这些任务需要通过专门为此任务设计的多层独特软件进行转换,例如 CUDA 和 GPU 驱动程序。
 
虽然通用架构涵盖了使用 GPU 内核所需的最低软件层,但一些使用上述云计算服务的实现可能会在 AI 应用程序和 CUDA 层之间引入额外的组件。
 
但在现实世界的 AI 软件开发中,经常会出现新版本的 AI 应用程序、AI 框架、CUDA 和 GPU 驱动程序。这些新版本可能会在其余开发环境和更新的组件之间引入难以解决的兼容性问题。
 
例如,安全漏洞可能需要在计算服务上使用与当前版本的 CUDA 不兼容的新版本的 AI 框架。这就提出了一个问题:是否应该更新 CUDA 以解决新 AI 框架引入的兼容性冲突?其他现有项目使用不同的 AI 框架但具有相同的底层翻译层,它们的应用程序依赖于以前版本的 CUDA,因此强制多个项目将其开发系统堆栈与任何单个项目的需求保持一致是一个站不住脚的解决方案。
 
数据:图像/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E
 
资料来源:MobiDev
 
简而言之,在本示例中,在系统上同时安装两个不同版本的 CUDA 是不可行的。这种僵局的解决方案是系统设计中的模块化。通过使用称为 dockerization 的技术,系统可以维护系统堆栈较高层的多个实例,并利用其中一个适合应用程序当前的需求。
 
该系统可以使用 Docker 和 Nvidia-docker 来包装 AI 应用程序,将所有必要的依赖项(如 AI 框架和相应版本的 CUDA)捆绑到一个容器中。这种方法允许系统在同一台计算服务机器上维护不同版本的工具,如 Tensorflow、Pytorch 和 CUDA。
 
结论
 
为了快速推进,机器学习工作负载需要高处理能力。与 CPU 相比,GPU 可以提高处理能力,以及更高的内存带宽和并行能力。
 
AI 应用程序的开发人员可以在本地或云端使用 GPU。流行的内部部署 GPU 包括 NVIDIA 和 AMD。许多云供应商都可以提供基于云的 GPU,其中最著名的三个供应商是 Microsoft Azure、AWS 和 Google Cloud。在内部部署和云 GPU 资源之间进行选择时,应同时考虑预算和技能。
 
本地资源通常具有高昂的前期成本,从长远来看会被稳定的回报所抵消。但是,假设组织没有必要的技能或预算来运营本地资源。在这种情况下,他们应该考虑云产品,它更容易扩展并且通常带有托管选项。

本文由网上采集发布,不代表我们立场,转载联系作者并注明出处:http://www.34iot.com//a/yingxiao/481.html

联系我们

在线咨询:点击这里给我发消息

微信号:weixin888

工作日:9:30-18:30,节假日休息