>>选择GPU服务器的原则<< 先我们需要了解一下常见的GPU和GPU服务器。 2、根据应用领域来选择GPU型号 3、选定GPU型号后,确定GPU服务器 (1)在边缘服务器上需要根据量来选择T4或者P4等相应的服务器,同时也要考虑服务器的使用场景,比如火车站卡口、机场卡口或者公安卡口等;在中心端做Inference时可能需要V100的服务器,需要考虑吞吐量以及使用场景、数量等。
(2)需要考虑客户本身使用人群和IT运维能力,对于BAT这类大公司来说,他们自己的运营能力比较强,这时会选择通用的PCI-e服务器;而对于一些IT运维能力不那么强的客户,他们更关注数字以及数据标注等,我们称这类人为数据科学家,选择GPU服务器的标准也会有所不同。
(3)需要考虑配套软件和服务的价值。
(4)要考虑整体GPU集群系统的成熟程度以及工程效率,比如像DGX这种GPU一体化的超级计算机,它有非常成熟的从底端的操作系统驱动Docker到其他部分都是固定且优化过的,这时效率就比较高。
>>AI超级计算机DGX<<
我们先了解一下超级计算机的计算核心V100 GPU。在DGX中使用的是NVLink GPU,包含5120个CUDA核心,640个TensorCore,双精度的计算能力达到7.8万亿次,深度学习的计算能力达到125万亿次。GPU之间可以通过NVLink进行互相访问,带宽可以达到300GB/s。而PCI-e的GPU只能通过PCI-e总线进行GPU之间的互相访问,带宽为32GB。因此相比较而言,NVLink版V100是目前性能强的GPU。 与上一代GPU相比,V100 GPU采用新的Volta架构,采用SM流多处理器架构,首次引进了Tensor Core计算核心,这也是以前Pascal架构所没有的,大大增强了GPU的深度学习计算性能。V100采用了新一代的NVLink 2.0技术,双向总带宽可以达到300GB/s,并且采用了新的HBM2显存,可以达到900GB/s的IO带宽。V100引入了新的MPS多进程服务技术,以提高GPU的利用率,还改进了SMIT的计算模型。 Tensor Core是V100非常重要的特性,支持混合精度计算,如上图所示的D=A*B+ C的混合矩阵乘加计算。在矩阵中,矩阵A和矩阵B要求是半精度的FP16类型,而加法矩阵C可以是半精度FP16或者是单精度FP32类型,左边的计算结果也可以是FP16或FP32类型。
DGX-1服务器主要用于数据中心的深度学习或者高性能计算应用,整机的计算峰值可以达到1000万亿次。我们都知道,深圳超算中心的计算能力大约是1200万亿次,也就是一台DGX-1的计算能力和一个超算中心的计算能力相当,之所以说适合于数据中心,是因为DGX-1服务器需要安装在机柜中,功耗达到3200瓦,噪音也比较大,因此只能放在数据中心的机房。 DGX-1配置了8块新的NVLink V100 GPU,每块GPU是32GB显存,配置了大容量的内存,一共是512GB,可以将大量的数据读入内存。配置了7TB的SSD作为本地缓存,SSD配置的是RAID 0模式,仅仅作为本地的缓存,可以实现高速存储的IO性能。另外,DGX-1配置了4个100Gb的网卡,并且可以选择InfiniBand或以太网模式,是为了配置GPU集群预留的网络接口,可以作为节点间通讯的计算网络或存储网络。 DGX-1服务器的内部网络拓朴架构中有8个GPU服务器,这8个GPU互联成一个立方体的拓朴架构,每一个顶点是一块GPU。另外,从图中可以看到还有NVLink、PCI-E、QPI 三种互联通道,绿色的粗线条代表NVLink,紫色的细线条代表PCI-E总线,黑色的线条代表QPI线。在做GPU并行计算时,GPU之间的通信可以选择两种方案:
、GPU通过PCI-E总线进行通信,这种通讯的方效率比较低的。 第二、通过NVLink实现GPU之间直接通信,很显然这种方式的通讯效率会很高。 接下来为大家介绍下DGX-1服务器中GPU的计算速度和扩展性。图中柱状图表示计算速度,曲线代表扩展性,灰色的柱状图表示PCIe的GPU计算性能,绿色的柱状图表示NVLink GPU的性能。上图展示的数据是以神经网络翻译训练为例,从计算速度的角度看,与PCIe的GPU卡相比,GPU越多,NVLink GPU速度的优势越明显,8块NVLink GPU有20%的性能提升。从扩展性的角度看,8块NVLink GPU的加速比PCIe GPU高20%左右。从图中可以看出,8块DGX-1的服务器和普通的PCIe GPU服务器相比还是有比较大的性能优势,尤其是在深度学习框架或模型算法不支持集群计算的时候,使用DGX-1服务器会有比较大的优势。
NVIDIA DGX STATION是一个非常强大的工作站,可以达到480万亿次的计算能力,采用了新的32GB V100 GPU。另一个特点是超静音设计,因为采用的是水冷模式而不是通常采用的风扇冷却方式,因此不需要机房,在办公室环境也可以使用,是特别为研发人员设计的个人超级计算机。 上图展示了DGX工作站的详细配置,包括GPU内存、SSD详细的配置情况等。可以看到,它的配置还是非常高的,完全满足开发研究人员做深度学习和高性能计算的需求。
新发布的DGX-2服务器的计算能力是2000万亿次,是目前世界上性能强的深度学习单机系统。 DGX-2的内部架构与DGX-1相比,在配置有比较大的提升,其中包括2个GPU主板,每个主板包括8块32GB V100 GPU和6个NVSwitch,采用全线速互联的方式,任意两块GPU之间通信总带宽可以达到300GB每秒,系统配置新的Intel Xeon CPU,配置1.5TB的主机内存,8个100Gb的网卡,可以支持InfiniBand和以太网模式互相切换。这8个网卡主要用于做计算网络,另外还配置两个100Gb的网络接口作为存储网络,也可以支持InfiniBand和以太网的切换模式。DGX-2配置30TB NVME SSDs,和DGX-1一样,也是作为本地缓存使用。 从这张图我们可以看到DGX-2的内部结构,包括GPU主板以及其他配置。先来看下DGX-2中GPU互联的网络拓朴结构,DGX-2有两个GPU主板,每个主板包含8块GPU,6个NVSwitch,这是因为每个GPU有六个NVLink通道,每个通道连接一个NVSwitch。对于NVSwitch,我们可以把它理解成18端口的NVLink交换机,因为每个NVSwitch和八个GPU相连,一个GPU主板上所有NVSwitch通过背板和另外一个主板上的GPU互联,这样就能实现所有GPU都达到全互联状态,任意两个GPU之间的带宽都可以达到300GB/s。每个NVSwitch和8个GPU相连,有8个GPU NVLink接入,然后会有8个端口连出到背板上,因此一共占用了16个端口,还有两个端口剩余。
一台DGX-2服务器和两台DGX-1服务器相比,在相同数量GPU卡的情况下,在高性能计算深度学习应用中, DGX-2服务器相较DGX-1会有两倍以上的性能加速,之所以能超过两倍,是因为GPU数量增加两倍,而性能超过两倍是因为DGX-2 GPU之间的通讯效率比DGX-1要高,因此它的并行效率会更高。 >>NGC云平台使用方法和价值<<
DGX工作站和服务器都是软硬一体的计算平台,因此DGX不仅仅是一台硬件设备,还是一套完整的深度学习和高性能计算平台。DGX系统预装了NVIDIA优化的操作系统、Driver、SDK以及NVIDIA Docker引擎,也预装了各种深度学习框架和高性能计算的应用软件,并且所有的应用软件都会定期更新,一般每个月都会更新一次,这些更新都会发布在NGC云平台上。这里所说的应用都是以Docker容器镜像的方式提供。Docker容器是一个非常有用的工具,跟虚拟机有很多相似的地方,但是容器是一个效率更高更方便的工具。
NGC云平台上所提供的资源,包括深度学习的框架以及高性能计算资源,这些软件都是以容器镜像的方式提供。比如一些搞AI研究的研究员或者数据科学家经常会在网站或者论文上看到一些新的模型,并且想要验证一下效果。但这些模型需要的一些框架不一定是现在已经在用的,或者版本也不一定有。如果要下载一个新的版本的框架,比如Caffe框架来进行测试,自己手动去安装这些软件会非常麻烦,需要安装cuDNN、OpenCV、Python等这些软件,另外还可能会存在一些版本的冲突,可能在软件部署上就会浪费一两天甚至一周的时间。而如果我们可以从NGC上去下载一个Caffe版本,就可以直接把我们的模型导入进去运行,这对于我们验证和测试环境的软件都是非常有用的,当然,对于生产环境,也可以自己去部署软件。 接下来介绍一下NGC资源的使用流程。先,免费注册并登录NGC平台(ngc.nvidia.com),登录后需要获取账号和密码,点击右上角Get API Key进入一个新的页面。在这个页面上点击右上角的Generate API key,这时候会弹出一个要确认的信息,我们点击Confirm就可以生成图4所示的账号和密码。获得账号和密码后,就可以在DGX系统中进行登录。
图5是一个范例,输入用户名和密码,需要注意的是,输入密码时不要加入空格,显示登录成功后,就可以输入我们需要下载应用软件的一些下载命令,输入 “docker pull nvcr.io/nvidia/caffe:18.09-py3”命令,这些应用的下载都非常简单,按照这张图中的操作步骤就可以完成下载,使用也非常方便。 >>DGX系统快速上手的佳攻略<<
那么如何用好DGX系统呢?先要用好V100的混合精度计算性能,在前面我们已经介绍了Tensor Core,可以支持混合精度的计算,也就是上图左上角的混合精度矩阵的乘加计算。有很多用户反映,他们买了DGX-1后发现和相同数量GPU P100相比,性能也没有特别大的提升。后来发现他们用的是单精度做训练,也就是将P100上运行的代码直接拿到DGX-1上运行,而并没有做修改,这样一来还是单精度的训练,并不会自动使用混合精度。
为了用好V100的混合精度计算性能,我们需要在源代码上做一些小的修改。比如在做训练时,需要把有些权重副本、梯度或者激活值等变量改为半精度FP16,可以提高它的计算速度,还可以减小内存的占用。在更新权重时,我们把它强制转化为FP32的单精度,可以保证训练模型的精度不会下降,因此在采用了一些小的修改后,再去做一些训练的计算才会获得比较高的计算速度。 缩短数据读写的时间也是提高计算速度比较重要的一点。在训练时都需要从网络文件系统读写数据,通常延时会比较大,因此DGX-1会配置文件系统的缓存功能,将数据缓存到系统的本地,而这一点不需要用户考虑,系统会自动配置好。当然有些用户会自己把数据拷贝到本地,这也是一个不错的办法。另外,由于本地SSD配置为RAID 0,它的可靠性比较低,因此不建议将重要数据长期存放在缓存里面,这将会很不安全。 在搭建GPU集群的时候,网络不一定是InfiniBand类型,经常会遇到40Gb的以太网,这时我们可以将DGX-1的网络接口切换为以太网模式,这样就可以接入到40Gb的以太网络环境中。 充分利用NVLINK网络通信的功能也是用好DGX一个很重要的点。如果使用普通的MPI模式进行通信,GPU之间采用PCIe,它的通信效率会比较低。为了采用NVLink通信,我们可以使用NCCL库,在Horovod软件中集成了NVIDIA NCCL库,它是一个采用的如右边这张图的算法,这个算法是百度先提出来的。
从左边图上我们可以看到普通的TensorFlow并行和Horovod相比,GPU卡越多性能差距越明显,因此我们建议,在做多GPU并行或者多节点并行时,使用NCCL库作为通讯方式。另外,我们在NGC平台上提供的深度学习框架的资源中也已经集成了NCCL库,因此建议大家尽量使用NGC中的深度学习框架资源。 NVIDIA DGX服务器和工作站是软硬一体的产品,而且软件和硬件都出自NVIDIA,可以给用户提供一个高性能、高可靠的系统,提供完善的软件和硬件服务,包括故障处理、性能调优、应用移植等。NVIDIA有强大的AI专家团队,也可以快速解决大家在使用过程中的问题,提供一些AI算法等层面的支持。这对大家节省时间、快速迭代、缩短产品研发周期也是非常有帮助的,这也是NVIDIA服务的优势。 >>DGX系统各行业应用案例<<
◆ 智慧城市
DGX在智慧城市领域的应用,中国一台DGX-1是海康威视所采购的,海康威视是全世界大的监控设备厂商,他们使用DGX训练神经网络,但在识别时会用到另外的边缘服务器,同时还不是通用的PCIe卡,而是用Tegra X2,多个Tegra X2集成到一块卡中,并插在一个比较小的前端边缘服务器上。 |