NVIDIA® DGX-1™,了解一下?



8个NVIDIA® Tesla® V100GPU加速器,通过NVIDIA® NVLink™互相连接,搭配2个Intel Xeon CPU,2块100 Gb InfiniBand 网络适配器,它就是AI深度学习里的小秘密NVIDIA® DGX-1™。

                                             


我们来看下,如果拥有DGX-1你可以?

开箱即用

在几个小时而非数月

完成AI深度学习平台的部署

深度学习只需2步

插入DGX-1,开启电源


DGX-1,

是为高吞吐量和高互联带宽而设计的深度学习系统。



如果将DGX-1 系统完全拆解,你将看到

图2:DGX-1系统的各部分组件


DGX-1的核心是用混合立方体架构通过NVLink相连的8个Tesla V100 GPU。除了8个GPU外,DGX-1还包括两颗用于启动、存储管理和协调深度学习框架的CPU。DGX-1内置于3U机箱中,具有供电、冷却、联网、多系统互联和SSD文件系统缓存等功能,可优化吞吐量和深度学习训练时间。


其中, NVLink是一种节能高效的高带宽互联技术,可支持NVIDIA GPU以每GPU 300 GB/s的双向总带宽,连接到节点中的对等GPU或其他设备,其速度约相当于目前PCIe Gen3 x16互联的9倍。NVLink互联和DGX-1混合立方体架构使得8个Tesla V100 GPU之间实现最高带宽的数据交换。


 而Tesla V100的页面迁移引擎可在GPU和主机内存之间执行高带宽、低损耗的数据共享。为了扩展到多节点高性能集群,DGX-1通过InfiniBand(IB)网络提供了系统之间的高带宽。


那么,究竟DGX-1是如何成为AI深度学习中的战斗机?我们用实力来回答。


DGX-1系统技术

Tesla V100是NVIDIA最新的GPU加速器,为高性能计算和深度学习应用而设计。Tesla V100 采用的是 GV100 GPU,  有80SMs,每个SM有:

• 8 Tensor Cores;

• 64 单精度 (FP32) cores;

• 64 整形 (INT32) cores;

• 32 双精度 (FP64) cores;

• 256KB  寄存器文件 (RF);

• 最大 96KB 共享内存(可配置)                             


 Tesla V100 峰值计算性能:

• 125 Tensor TFLOP/s  

• 7.8 TFLOP/s for FP64 computation

• 15.7 TFLOP/s for FP32


图3:Tesla V100


HBM2护驾

为了支持这样高的计算能力,Tesla V100 配置了HBM2 (High Bandwidth Memory version 2)。Tesla V100 包含32 GB HBM2 堆栈式内存,具有900 GB/s 的带宽, 比GDDR5内存带宽有着显著的提升。由于HBM2是堆栈式内存,与GPU在同一个物理包装上, 与传统的GDD5内存相比,可以节省空间,从而可以设计出像DGX-1这样的高密度GPU服务器 。

6个NVLink支持

每一个Tesla V100有6个NVLink 接口,每个都有 50 GB/s 的双向带宽 , 总共具有 300 GB/s 的双向带宽 GPU 与 CPU 间的 PCIe 连接可访问 CPU 大容量 DRAM 内存,从而实现工作集和数据集在CPU与 GPU之间的传输。


CPU 内存容量经配置为 GPU 的 4 倍,可简化深度学习工作负载的缓冲管理并实现平衡。通常情况下,两倍 GPU 内存占用足以管理后台数据移动和后台缓冲;四倍 GPU 内存占用则可在管理内存应用及数据流移动方面获得更大的灵活性。除 512 GB 的系统 DRAM 外, 8个 Tesla V100 GPU总计有 128 GB HBM2 内存,GPU 内存净带宽为 8 × 900 G= 7.2 TB/s 。

以太网和 InfiniBand (IB) 
两种网络接口存储

DGX-1 配有以太网和 InfiniBand (IB) 两种网络接口。两个万兆以太网接口可方便远程用户存取系统和远程存储。为连接多个 DGX-1 系统,每个系统均配备四个高带宽、低延迟的 EDR IB(Extended Data Rate InfiniBand)端口,总通信传输速率达到 800 Gb/s双向带宽。每个 DGX-1 系统配有 8 个 V100 GPU 和 4 个 EDR IB 端口,即每两个 GPU 对应一个 IB 端口。此外,EDR IB 支持 NVIDIA GPUDirect   RDMA 协议,数据可直接从某一系统的 GPU 内存传输至另一系统的 GPU 内存,无需 涉及 CPU 或系统内存。


对DGX-1 的性能而言,

高效、高带宽训练数据流至关重要,

而可靠、低失败率的存储也重要。


每个DGX-1系统均配有一个480GB boot OS SSD,四个 1.92 TB SAS SSD(共计 7.6 TB)作为RAID-0磁盘组,可确保出色性能。对于大于 7 TB 的工作集,数据将在一个训练回合内 ,用本地的 SSD 做为暂存,通过万兆以太网和EDR IB访问远端存储上的数据。


DGX-1的功耗为3.2KW,实际功耗根据工作负载呈动态变化。为方便部署,在多数据中心环境中,DGX-1采用风冷,进风温度为5°C至35°C。


DGX-1 多GPU和多系统扩展

为每个CPU配置两个或更多GPU的服务器正变得越来越普遍,因为开发人员越来越多地需要应用程序并行,并通过GPU实现加速。虽然多GPU系统可以提升单节点性能,但多GPU应用的效率可能会受到GPU之间PCIe总线性能的限制。同样,数据中心应用也在不断增长,需要跨多个系统节点实现高效扩展。


为了满足这两个需求,DGX-1在系统内部集成了NVLink高速GPU互连以实现多GPU可扩展性,同时配置了多个EDR InfiniBand端口,为连接多个DGX-1系统提供高带宽。


NVLink 使用 NVIDIA 全新高速信号互联技术 (NVHS)。NVHS通过差分对传输数据,速率高达 25Gb/s。其中8个差分连接组成“子链路”(子链路负责一个方向的数据传输),两个子链路(一个子链路对应一个方向)组成一个“链路”(一个链路可连接两个处理器,如GPU和GPU或GPU和CPU)。单个链路支持端点间高达50 GB/s的双向带宽。多个链路可整合至一起,以实现处理器间更高的带宽。Tesla V100采用的NVLink可支持多达 6个链路,实现理论上的最大双向总带宽,即300 GB/s。


DGX-1 NVLink 网络拓扑


DGX-1的8个GPU之间采用了混合立方体网状拓扑结构,可以看作为一个立方体,8个角为 8 个 GPU,并且所有十二条边都通过NVLink连接(有些边有两个NVLink连接),并且6个面中的两个连接了对角线。这个拓扑也可以被认为是3个由单个NVLink连接的交织环。

图4
DGX-1 采用 8-GPU 的混合立体互联网络拓扑,立体网状连接面的各个角与 PCIE树形网络相连,通过后者实现与 CPU 和NIC 的连接



基于 NVLink深度学习训练性能扩展


在多个GPU和/或多个节点上并行训练深度神经网络,需要在GPU间或节点间分配输入数据(“数据并行”)、训练模型(“模型并行”)或两者的混合(Wuetal,2015) [Krizhevsky 2014]。 无论采用何种方式,都需要进行并行处理GPU需要和GPU之间做数据同步和通信(如gradients),例如在数据并行方法中,单独的并行任务必须定期重新同步它们的梯度,以使模型参数在所有并行任务中保持同步。 这相当于一个allreduce操作。


扩展性是指当增加并行处理器的数量时所带来的时间上的改进。


在训练深度神经网络时,常用的提升扩展性的方法是随着GPU数量的增加而增加global batch size。 即使GPU之间的相互连接速度较慢时,也许这些所谓的“弱”扩展方法也具有高的并行效率, 不过,对于很多弱扩展深度学习工作负载,高带宽的NVLink有显著的性能优势。


下面是几个GPU间采用NVLINK连接做神经网络训练时,相比PCIe连接带来的性能提升:


图5:DGX-1 with V100 NVLink performance and scaling for mixed-precision training of the Inception-v3 neural network architecture using Caffe2 and the ImageNet dataset with a batch size of 128 per GPU. The bars show performance on one, two, four, and eight GPUs, comparing an off-the-shelf system of eight Tesla V100 GPUs using PCIe for communication (gray) with eight Tesla V100 GPUs in a DGX-1 using NVLink communication (green). The lines show the speedup compared to a single GPU. Tests used NVIDIA DGX containers version 17.11, processing real data with cuDNN 7.0.4, NCCL 2.1.2.


图6:DGX-1 and V100 PCIe performance and scaling for single-precision training of a neural machine translation model with MLP attention and encoder/decoder embedding size of 512 and a batch size of 256 per GPU. The bars show performance on one, two, four, and eight GPUs, comparing an off-the-shelf system of eight Tesla V100 GPUs using PCIe for communication (gray) with eight Tesla V100 GPUs in a DGX-1 using NVLink for communication (green). The lines show the speedup compared to a single GPU. Tests used NVIDIA DGX containers version 17.11, processing real data with cuDNN 7.0.4, NCCL 2.1.2.


通常当扩展至全部8个GPU时,可以发挥出NVLink的最大优势,这时候多个NVLink连接提供的带宽远远超过PCIe提供的带宽。通信量大的应用,如循环神经网络,采用NVLink会体现出更大的性能优势,如下图所示的2.54倍加速。


图7:Sockeye neural machine translation single-precision training with MXNet using MLP attention on DGX-1, demonstrating significant NVLink performance benefits. The bars present performance on eight Tesla V100 GPUs in a DGX-1 when using NVLink for communication (green), and when using PCIe for communication (gray). Performance benefits increase with the encoder/ decoder embedding size. Results are the average number of samples per second processed during a single epoch of training with the German to English dataset. Tests used NVIDIA DGX MXNet container version 17.11, processing real data with cuDNN 7.0.4, NCCL 2.1.2.


采用InfiniBand 实现 DGX-1的多系统扩展

深度学习应用需要在 多GPU 之间,甚至多GPU系统之间提供强大的通信能力,以匹配强大 GPU 性能。除了能够实现 GPU 间高速内部通信的 NVLink 技术外, DGX-1 还采用了 Mellanox ConnectX-4 EDR InfiniBand 端口,提供高带宽、低延迟的系统间通讯。DGX-1 中配置了最新的 InfiniBand 标准,即 EDR IB,可实现:

☻ 四个EDR IB端口,可为每个DGX-1系统同时提供400 Gb / s输入和400 Gb / s的输出。

☻ 采用低延时通信,内置原语和集合,可以加速跨多个系统间的大型运算。

☻ 高性能网络拓扑,可以同时在多个系统之间进行数据传输,将数据冲突情况降至最小。

☻ 跨 InfiniBand 的 NVIDIA GPUDirect RDMA ,支持多系统中 GPU 间的直接传输。


DGX-1 配有四个 EDR IB 端口,提供 800 Gb/s的双向带宽,以用于构建 DGX-1 系统的高速集群。四个 EDR IB 端口可以平衡节点内部及节点之间的带宽,且在特定用例中,节点间通信可以充分全部带宽。


最新的 DGX-1 多系统集群采用胖树结构的网络,可在系统之间提供路线良好、可预测且 无阻塞的通信。胖树结构是一种树状网络拓扑结构,叶上的系统通过多个交换机连接至一个中央顶层交换机。胖树结构中的每个层级都有同样数量的链路,提供同等的带宽。胖树拓扑结构可确保最高的对分带宽和最低延时,适用于计算和深度学习应用中常见的 all-to-all 或 all-gather 类的集合通讯。如下图


图8:专为深度学习设计的124DGX-1系统的多系统集群示例


此外,DGX-1内部立体网络以能够提供最佳性能的方式连接至外部的 InfiniBand 网络。DGX-1 系统中的 EDR IB 端口设于 混合立方体架构的转角处(可倒回去参考图4),可以让GPU间通过 InfiniBand 实现 RDMA 通讯。每个 100 Gb IB 链路都有与 x16 PCIe gen 3 相似的带宽,所以系统间的相互连接可得到很好的平衡。从应用程序的观点来看,GPUDirect RDMA 及这种独特的网络设计可让任何 GPU 内核都能直接存取网络中任何其他 GPU 的内存,同时将负载、延时和冲突降至最低。


“虽然图 8中的参考系统架构基于 124 个DGX-1系统,但采用胖树结构及更多的交换机,可将集群扩展更大配置,且仍保留 InfiniBand 的高性能特征。对于图 8中的设计,如果每个 1 级交换机支持四个 DGX-1 系统,则可以配置至多达 32 个 1 级交换机和 16 个 2 级交换机,以支持最多 128 个系统。要支持更大的系统,可以新增第三层交换机。”


硬件和软件的关系如发际线和发量,

一个都不能少。

看完硬件,我们再来说说软件。


DGX-1软件系统可以帮助用户花最少的时间精力来部署设置深度学习框架和应用。DGX系统在服务器上配置了最精简的操作系统和驱动,并在 Docker容器中部署应用和软件开发工具包,这些容器由NVIDIA维护的 DGX 容器注册表统一管理维护。可用于DGX-1上的的容器包括多个经优化的深度学习框架、NVIDIA DIGITS深度学习训练应用、第三方加速解决方案和NVIDIA CUDA工具包。图9显示了DGX-1深度学习软件堆栈。

图9︰DGX-1深度学习软件堆栈


DGX-1堆栈架构有以下优势

1、简化GPU加速应用程序的部署, 省去了耗时的软件集成工作。

2、DGX-1 容器镜像中已经将流行的深度学习框架做GPU性能调优。包括优化算法的选择,减少GPU与 CPU的 I/O时间,内存的优化管理,多GPU,多线和NCCL的利用,采用优化的驱动程序和库,最大化多GPU性能等。

3、隔离单个框架或应用程序。每个深度学习框架都位于单独的容器内,所以每个框架都能使用不同版本的库,比如 libc、cuDNN 等,并且不会相互影响。

4、深度学习框架容器镜像独立于驱动程序和库,容器镜像可跨越新的驱动器本,不必重新构建。

5、系统易于维护,且由于应用程序并非直接安装于操作系统上,所以操作系统镜像非常干净。

6、可无缝提供安全更新、驱动程序更新及操作系统补丁。


DGX-1不仅是深度学习的最快平台,而且是面向各种GPU加速应用的最先进的CUDA平台。


DGX-1 软件堆栈包括下列主要组件


01

NVIDIA CUDA工具包

CUDA是由NVIDIA创建的并行计算平台和编程模型,帮助应用程序开发人员通过GPU实现大规模并行处理。 CUDA是GPU加速深度学习以及广泛的其他计算和内存密集型应用的基础,这些应用从天文学到分子动力学模拟,再到计算金融。今天,有超过500多个利用CUDA并行计算平台实现GPU加速的应用程序。


NVIDIA CUDA Toolkit 为 C 和 C++ 开发人员构建 GPU 加速应用程序提供全面的开发环境。CUDA Toolkit 包含 NVCC(面向 NVIDIA GPU 的 CUDA C++ 编译器)、一套 GPU 加速算法库、调试和分析工具、范例以及综合编程指南和文档。CUDA Toolkit 可以直接安装于 DGX-1,也可以作为 NVIDIA Docker 容器镜像提供,以用作任何容器化CUDA 应用程序的基础层。


此外,整个 CUDA Toolkit 会内嵌于各深度学习框架的容器镜像中。


02

NVIDIA Docker

Docker容器是一种将Linux应用程序及其所有库、配置文件和环境变量捆绑在一起的机制,因此无论运行哪种Linux系统,应用的执行环境总是相同的(如图9所示),DGX-1正是使用Docker容器来部署深度学习框架。


Docker容器通常是与平台和硬件无关的,他们通过将用户模式代码(在容器中)与内核模式代码分离来实现这一点。这种分离在使用NVIDIA GPU这样的专用硬件时会出现问题,因为GPU驱动程序由一组匹配的用户模式和内核模式组成。为了在Docker 容器镜像中使用GPU,NVIDIA开发了NVIDIA Docker,这是一个开源项目,提供了一个命令行工具,用于在启动容器的时候加载 NVIDIA驱动程序的用户模式,并将GPU加载到Docker容器中。


NVIDIA 深度学习软件开发工具包


NVIDIA 可提供构建于 CUDA 并行计算平台之上的全套 GPU 加速库。下面两种库可提供用于深度神经网络的GPU加速:

 

  •  CUDA 基础线性代数子例程库 (cuBLAS):

cuBLAS 是完整的标准 BLAS 库的 GPU 加速版,可大幅提高在 GPU 上的运行速度。cuBLAS 广义矩阵乘法 (GEMM) 例程是深度神经网络应用的关键 计算,例如应用于全连接层计算。

 

  •  CUDNN:

CUDNN 可大幅优化深度神经网络标准例程的实施,例如前向和反向的卷积层、池化层、归一化层和激活层,DGX-1 中配置的深度学习框架容器中,已自动配置使用针对Tesla V100 GPU优化好的并行库。


NVIDIA集成通信库NCCL
(发音为“Nickel”)


是一个支持拓扑感知的多GPU集成通信库。DGX-1的Docker容器中包含一个NCCL版本,优化了DGX-1中8个NVLink连接的混合立方体网格的GPU之间的集合通信。


当使用DGX-1上的容器进行部署时,深度学习框架(如NVCaffe,Torch,Microsoft Cognitive Toolkit和TensorFlow)在多个GPU上运行时,会自动使用此版本的NCCL。


DGX-1深度学习框架


NVIDIA深度学习软件开发工具包加速了广泛应用的深度学习框架,如:Caffe、CNTK、MXNet、TensorFlow、Theano和Torch。


DGX-1软件堆栈为这些深度学习框架提供了经过优化的容器版本。这些框架包括了所依赖的运行环境,均预先构建、经过测试且随时可以运行。对于需要更灵活地构建自定义深度学习解决方案的用户来说,每个框架容器映像还包含框架源代码,可以让用户自定义做修改和功能增强, 还包含完整软件开发堆栈。


有关NVIDIA DGX-1上深度学习框架的优化和更改的情况,可参见深度学习DGX文档发行说明。

传送门 

https://docs.nvidia.com/deeplearning/dgx/index.html#nvidia-optimized-frameworks


大多数深度学习框架已经开始支持Volta中Tesnsor Core做半精度训练。 一些框架包括对FP16存储和Tecsor Core的支持。为了实现最佳性能,您可以在某些框架上使用Tensor Core和FP16模式来训练模型。

传送门

https://docs.nvidia.com/deeplearning/sdk/mixed-precision-training/index.html