博威---云架构决胜云计算

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4858|回复: 3

最新最全深度学习训练/GPU服务器硬件配置推荐2020

[复制链接]
发表于 2020-11-21 12:55:07 | 显示全部楼层 |阅读模式
最新最全深度学习训练/GPU服务器硬件配置推荐2020[url=]HPC工作站[/url]
4月22日

人工智能随着核心算法、计算能力的迅速提升,以及海量联网数据的支持,在本世纪终于迎来了质的飞跃,人工智能将是未来应用最广泛的技术之一,在市场经济领域带来更多的机遇与机会,在医学领域可以大大加快诊断速度和准确性,在军事领域人工智能武器将成为未来武器的王牌……


(一)了解深度学习算法

深度学习两个主要过程:训练(Training)推理(Inference)。其中:

训练(Training)是将大量数据加载到机器中并分析数据以建立用于分类,识别,预测等的模式的过程(已建立的模式称为训练后的模型),训练需要高速密集并行计算---“高性能计算”

推理(Inference)是将未知数据输入到通过学习过程创建的训练模型中,然后根据已建立的模式对数据进行实际分类,识别和预测的过程,推理需要快速将推理结果转化为行动—“边缘计算”、实时要求高

深度学习是指多层神经网络上运用各种机器学习算法解决图像、文本、语音等各种问题的算法集合

(二)深度学习主流算法计算特点


2019年,Nvidia(英伟达)公司上市Turing架构的RTX系列的GPU卡,增加了Tensor张量计算单元,大幅提升了深度学习关键的矩阵乘法计算、卷积计算(借助张量Tensors),GPU卡性能的关键指标:Tensor张量核数、显存带宽、FP16/FP32计算精度


目前可选GPU型号(2020年1季度)的主要技术参数

标注1 显存单位GB,标注2 显存带宽单位GB/s,标注3-5 单位Tflops(每秒万亿次)


应用1  CNN(卷积神经网络)计算特点

这类应用主要是计算机视觉应用,计算机获得对图像的高级“理解”。为了评估模型是否真正“理解”了图像,研究人员开发了不同的评估方法来衡量性能

主要算法:卷积神经网络(CNN)


CNN主要模型:AlexNet,VGG,GoogleNet, ResNet, Inception 等

主流深度学习框架:Theano、Caffe、MXNet、TensorFlow、Torch/Pytorch

CNN多GPU并行计算特点:非常理想

利用GPU加速主要是在conv(卷积)过程上,conv过程可以像向量加法一样通过CUDA实现并行化。具体的方法很多,最好的是用FFT(快速傅里叶变换)进行快速卷积,NVIDIA提供了cuFFT库实现FFT,复数乘法则可以用cuBLAS库里的对应的level3的cublasCgemm函数。


GPU加速的基本准则就是“人多力量大”。CNN说到底主要问题就是计算量大,但是却可以比较有效的拆分成并行问题。随便拿一个层的filter来举例子,假设某一层有n个filter,每一个需要对上一层输入过来的map进行卷积操作。那么,这个卷积操作并不需要按照线性的流程去做,每个滤波器互相之间并不影响,可以大家同时做,然后大家生成了n张新的谱之后再继续接下来的操作。既然可以并行,那么同一时间处理单元越多,理论上速度优势就会越大。所以,处理问题就变得很简单粗暴,就像NV那样,暴力增加显卡单元数(当然,显卡的架构、内部数据的传输速率、算法的优化等等也都很重要)。


GPU计算性能出众的根本原因是处理矩阵算法能力的非常强大,CNN中涉及大量的卷积,也就是矩阵乘法等,所以在这方面具有优势,GPU上的TFLOP是ResNet和其他卷积架构性能的最佳指标。Tensor Core可以显着增加FLOP,使用卷积网络,则应首先确定具有高GPU张量计算能力的优先级,然后分配高FLOPs的CUDA数量,然后分配高内存带宽,然后分配具有FP16位精度数据


CNN硬件配置要点:Tensors> FLOP> 显存> 半精度计算(FP16)

GPU可选型号:

标注1—单位GB,标注2—单位GB/s, 标注3~5 ---单位TFlops


建议GPU:


应用2  RNN(循环神经网络)计算特点

这类典型应用主要是自然语言处理(NLP),包括语音识别,语言翻译,语音转文本和Q&A系统。


主要算法:RNN(包括变体: LSTM、GRU、NTM、双向RNN等)、Transformer

主流框架:CNTK、Torch/PyTorch、Keras

多GPU并行计算:不明确,跟程序设计、算法、框架、SDK以及具体应用都有很大关系,一些应用CPU多核并行反倒更快。

RNN和LSTM的训练并行计算是困难的,因为它们需要存储带宽绑定计算,这是硬件设计者的噩梦,最终限制了神经网络解决方案的适用性。简而言之,LSTM需要每个单元4个线性层(MLP层)在每个序列时间步骤中运行。线性层需要大量的存储带宽来计算,事实上,它们不能使用许多计算单元,通常是因为系统没有足够的存储带宽来满足计算单元。而且很容易添加更多的计算单元,但是很难增加更多的存储带宽(注意芯片上有足够的线,从处理器到存储的长电线等)


GPU内存非常重要,因为诸如XLNet和BERT之类的transformer网络需要大量的内存才能达到最高的精度,考虑矩阵乘法A*B=C的一种简单有效的方法是受内存(显存)带宽限制:将A,B的内存复制到芯片上比进行A * B的计算要昂贵。这意味着如果您要使用LSTM和其他执行大量小矩阵乘法的循环网络,则内存(显存)带宽是GPU的最重要功能。矩阵乘法越小,内存(显存)带宽就越重要,介于卷积运算和小型矩阵乘法之间的transformer在整体求解过程环节中并行效率低,加快方式提升显存带宽和足够的显存容量


RNN硬件配置要点:显存带宽+显存> 半精度计算(FP16) > Tensors> FLOP

GPU可选型号

建议GPU:


(四)深度学习计算系统平台配备

4.1深度学习框架对比

4.2 深度学习开发库SDK

开发环境:CUDA Toolkit

训练SDK:cuDNN (7.0版本支持Tensor Core)、NCCL、cuBLAS、cuSPARSE

推理SDK:TensorRT(版本3.0支持Tensor Core)、DALI


4.3 深度学习操作系统

操作系统:Windows 10 Pro 64位+ Ubuntu 18.04或RHEL 7.5

容器:Docker 18.06.1,NVIDIA Docker运行时v2.0.3

容器:RAPIDS容器


(五)深度学习计算硬件配置推荐


打造一个快速高效的深度学习计算平台,涉及到多方面因素:

(1)超算硬件设备-—GPU、CPU、内存、硬盘io…

(2)深度学习算法---CNN、RNN…

(3)深度学习框架---Tensorflow、PyTorch…

(4)开发库SDK---CUDA、cuDNN…

(5)程序设计算法优化—-张量单元、FP16精度数据计算、针对算法SDK优化、多卡并行优化算法…


5.1 深度学习工作站配置推荐(科研类)

机型:UltraLAB GX380i/GT410

支持2~4块GPU卡

配备nvidia RTX---配置张量计算单元Tensor,支持intel AVX-512


5.2 深度学习工作站配置推荐(高性能类)
机型:UltraLAB GT410P
支持支持5~7块GPU


5.3 深度学习工作站配置推荐(超级类)
机型:UltraLAB GX630M)
支持8~9块GPU

 楼主| 发表于 2020-11-21 13:18:54 | 显示全部楼层
没有GPU的我们如何利用亚马逊GPU服务器训练深度学习原创
种地的码农
[url=]种地的码农[/url]
2018-03-08

深度学习如今风头很热, 可能很多小伙伴们都投入了学习。可是又遇到了一定的问题,电脑跑的太慢,小编I7的笔记本,很多时候也跑不动。大家知道,深度学习是很需要GPU的,可是最便宜的GTX1080ti也是价格不菲,这时候我们怎么办呢?

今天为大家带来,利用亚马逊GPU服务器进行深度学习。(小编目前觉得这个价格是相对比较实惠的,如果有更好的可以推荐一下)

注册亚马逊账号,绑定信用卡,这一步就不多介绍了。大家自行解决。

我目前选择的是美国俄亥俄州,因为有的州没有我想要的机器。后面会牵扯到竞价,不同地区价格可能会稍有不同

在这里选择EC2

启动实例

选择社区AMI,也可以选择默认的原生系统。选择社区AMI,是因为有的AMI已经搭建好了我们所需的环境,我最喜欢用的是这个,大家可以自行选择

选择服务器,px.xlarge

下面是不同型号的配置,P2是用的K80显卡,4核,61G内存,12G显卡,差不多够我们用了。也可以选择更好的配置,价格自然会贵不少

一定要选择竞价,因为这个便宜,也适合我们想用就用,不想用就销毁的使用。当前的价格是0.27美元,差不多是1.7人民币每小时。竞价的价格是动态的,不同时间可能价格不一样。

下一步

因为是自己临时使用,安全就直接全部开放吧

启动实例

选择或者创建秘钥,这是我们登录服务器时候使用的秘钥文件

因为我已经有了,所以就直接登录了

可以看到,我们的机器已经创建成功了

记住IP,我们可以准备登录服务器了

ssh -i 选择刚才的秘钥去登录我们的服务器

已经登录成功了,小编之所以选择这个AMI,因为他已经准备好了很多的环境。这里我们使用tensorflow_p36,环境是Tensorflow+Keras+Python3,GPU环境是CUDA8。大家选择不同的AMI可能不一样,也可以自行安装环境

激活环境

现在要如何更方便的使用呢,在服务器上写代码总是速度会慢点。我们可以使用jupyter这个神器,jupyter notebook --ip=*,开启jupyter的远程访问,也可以设置密码的。jupyter notebook的更多使用方法以后告诉大家。大家可以自行学习

启动jupyter,我们找到这个链接,localhost换成我们的服务器ip,然后去浏览器访问即可

现在我们到浏览器打开jupyter的页面,我们创建一个python文件

这里我测试一下keras的mnsit手写数字集的训练,可以看到每个epoch只要10s就训练完成了,这里我训练了20个epoch,准确率已经达到99.06%,很不错的哦。这个速度比我用我的I7处理器快10-20倍。可以省下大量的时间。我们可以利用jupyter写自己的代码进行学习和训练。小编一般是本地写好模型后,去线上训练调参

在我们终端中输入nvidia-smi就可以看到我们的显卡信息和使用情况了

如果我们不再需要这台服务器,选择终止即可,记住,不销毁会一直收费。如果想保留自己的环境,可以自己创建AMI。

注意事项
  • 亚马逊需要绑定信用卡,每个月月底收费,不要以为当时没收钱就是免费啊啊!重点!

  • 看清楚不同配置的价格,最好是想要自己想要训练什么的时候再打开机器。

  • 按小时收费,使用1分钟也是按一个小时收费哦。

  • 机器不再使用的时候,记得销毁

好了,今天我们介绍了如何用亚马逊的GPU来训练我们的模型。当然如果有显卡的土豪小伙伴,自然是不需要的啦。不过刚开始学深度学习,还没准备好显卡的,可以先用这个来试试。

记得关注我,以后会为大家带来更多的文章。




阅读
210



赞7
在看

















写下你的留言





 楼主| 发表于 2020-11-21 13:20:20 | 显示全部楼层
回复 2# network
如何在阿里云租一台GPU服务器做深度学习?原创
涤生
[url=]程序员一一涤生[/url]
2019-04-10

之前向公司申请购买了一块英伟达Geforce RTX 2060,但是有时候同时有多个训练思路想要试验,一块GPU的效率就比较低了。但是再买一块的成本过高,所以经过考量,决定租云服务器来训练模型。


对比华为云和阿里云,华为云之前的m60系列都显示已经售罄,该系列的收费相对便宜,但是已经租不到了,剩下的都是p100的,或者更高的配置,而阿里云上最便宜的是搭载英伟达tesla p4的GPU服务器,8.68元/时。


下面就基于这款服务器来介绍GPU服务器租赁过程和深度学习环境安装过程。(说明:由于该款服务器并没有使用本地存储,只会使用云盘,所以停机后,只会针对云盘收费。这是有别于抢占式实例的地方,抢占式实例即使不用本地磁盘,停机后也继续收费的,除非释放掉当前服务器)


选好服务器后,接下来选择镜像,也就是操作系统,我选择的是ubuntu16.04 64位,因为18.04不支持自动安装GPU驱动,结果因为版本比较低的问题,不得不重新卸载CUDA和GPU驱动,然后再安装更高的版本。


不过,如果你也选择了自动安装,也不用担心,因为只要卸载重装高版本的CUDA和驱动就可以了,下面是卸载脚本:

  • 卸载CUDA

--依次执行下面3个命令sudo apt-get remove cudasudo apt-get autocleansudo apt-get remove cuda*
--切换到/usr/local目录cd /usr/local/
--删除cuda目录,因为该目录是指向cuda-9.1目录的软链接sudo rm -rf cuda
--删除cuda-9.1目录sudo rm -r cuda-9.1
--使用命令查找系统中还存在cuda-9.1的地方,依次删除列出的文件sudo find / -name cuda-9*
--再次执行下面3个命令sudo apt-get remove cudasudo apt-get autocleansudo apt-get remove cuda*
--现在可以装cuda其他版本了。
  • 卸载GPU驱动

sudo apt-get --purge remove nvidia-*

接下来选择存储,我选择的是高效云盘,40GB,因为对我来说够用了。

后面就是配置网络、帐号等,根据自己的需要配就行了。


ok,之后服务器会自动创建实例,如果你选择了自动安装CUDA,那么可以通过top命令查看到apt-get等命令在运行,大概15分钟后,CUDA和GPU驱动就会装好了,但是并不会安装CUDNN。

到了这一步后,我开始尝试部署程序,并运行,但是显然,向我上面说的那样,报错了,原因是CUDA的版本和tensorflow版本不兼容。于是按照上面的方法卸载了CUDA,开始下载10.1的CUDA,因为我用的tensorflow1.13.0,该tensorflow版本只支持CUDA10.0。

所以,需要下载对应的CUDA,步骤如下:

  • 下载CUDA

地址:https://developer.nvidia.com/cuda-downloads
  • 执行安装

sudo sh cuda_10.1.105_418.39_linux.run  --no-opengl-libs (据说不加--no-opengl-libs这个选项会进入循环登录,所以还是加上吧)接下来很重要的地方是在提示是否安装显卡驱动时,一定选择 no(之前安装过对应显卡版本的驱动)其他各项提示选择是,并默认安装路径即可。提示有 y 的输入 y,没有则按 enter 键。安装完毕。
  • 声明环境变量

--打开文件vim ~/.bashrc--尾部加入如下内容:export PATH=/usr/local/cuda-9.1/binPATHexport LD_LIBRARY_PATH=/usr/local/cuda-9.1/lib64LD_LIBRARY_PATH--保存退出,并输入下面指令使环境变量立刻生效:source ~/.bashrc
  • 验证CUDA是否安装成功(需要确保安装了g++ ,可以用g++ --version来判断是否安装,如果没有可以执行 sudo apt-get install g++ 来安装)

cd /usr/local/cuda/samples/1_Utilities/deviceQuerysudo make./deviceQuery最后输出提示通过即可。

在验证环节,我遇到了fail的提示,原因是因为GPU的驱动版本过低,要410以上的才可以,于是我按照本问开头介绍的方法卸载了GPU驱动,然后开始安装对应的版本:

  • 下载GPU驱动

访问官网地址:

https://www.nvidia.cn/Download/index.aspx?lang=cn


点击搜索,进入下载页面,下载即可。

  • 安装驱动

--赋执行权限sudo chmod +x NVIDIA-Linux-x86_64-410.104.run--关闭x window界面sudo service lightdm stop--安装,指定不安装OpenGL文件sudo ./NVIDIA-Linux-x86_64-410.104.run  --no-opengl-files
  • 测试是否安装成功

nvidia-smi如能看到GPU信息,则安装成功。
  • 开启x window界面

sudo service lightdm start
  • 重启系统

sudo reboot

此时,再次验证CUDA是否安装成功,结果会提示通过。接下来需要安装CUDNN:

  • 下载

官网地址:https://developer.nvidia.com/cudnn  需要注册后才能下载。我下载的是deb文件,总共有三个


  • 安装指南

2.3.2. Installing from a Debian File1. Navigate to your <cudnnpath> directory containing cuDNN Debian file.2. Install the runtime library, for example:sudo dpkg -i libcudnn7_7.0.3.11-1+cuda9.0_amd64.deb3. Install the developer library, for example:sudo dpkg -i libcudnn7-devel_7.0.3.11-1+cuda9.0_amd64.deb4. Install the code samples and the cuDNN Library User Guide, for example:sudo dpkg -i libcudnn7-doc_7.0.3.11-1+cuda9.0_amd64.deb2.4. VerifyingTo verify that cuDNN is installed and is running properly, compile the mnistCUDNN sample located in the /usr/src/cudnn_samples_v7 directory in the debian file.1. Copy the cuDNN sample to a writable path.$cp -r /usr/src/cudnn_samples_v7/ $HOME2. Go to the writable path.$ cd  $HOME/cudnn_samples_v7/mnistCUDNN3. Compile the mnistCUDNN sample.$make clean && make4. Run the mnistCUDNN sample.$ ./mnistCUDNNIf cuDNN is properly installed and running on your Linux system, you will see a message similar to the following:Test passed!

以上内容来自官方的安装指南:

https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#installlinux-deb

因为还是很容易看懂的,所以就没翻译了。


ok,到此GPU相关的环境就安装完成了,但是在命令行输入python,会发现,用的版本是python2,输入python3会发现,用的是python3.5。由于现在一般都是用Anaconda3,所以我又安装了Anaconda3,关于Anaconda3在阿里云GPU服务器上的安装过程,会在下一篇文章里介绍。



文章已于2019-04-13修改
阅读
179



在看







 楼主| 发表于 2020-11-21 13:21:18 | 显示全部楼层
回复 3# network

图形处理器(英文全称:Graphics Processing Unit,缩写:GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑工作站、游戏机和一些移动设备(如平板电脑智能手机等)上做图像和图形相关运算工作的微处理器




最近大数据、人工智能以及机器学习的潮流正在企业服务器之间形成连锁反应。因为传统的微处理器难以有效地处理这些来自要求苛刻的工作负载的信息,因此数据中心图形处理器转移至该领域填补相关的资源空白。


自70年代以来,图形处理单元最初被用于从中央处理器处理视频和图形处理任务。与典型的CPU相比,这些系统具有不同的底层设计,GPU是为在单一数据流上最大化高速流水线上吞吐量而构建的。CPU也被设计为支持快速切换,并将信息从一个地方快速移动到另一个地方,如从主存储到某一存储系统。然而GPU具有不同的结构:它们可以并行处理并支持多个高速连接。这些微处理器有多组数据路径进行大量的数据处理,这与图形应用程序的需求非常吻合。


GPU服务器可作为深度学习训练的平台,可直接加速计算服务,亦可直接与外界连接通信。GPU服务器超强的计算功能可应用于海量数据处理方面的运算,如搜索、大数据推荐、智能输入法等。原本需要数天完成的数据量,采用 GPU 服务器在数小时内即可完成运算。


GPU服务器在性能方面有着CPU服务器难以比拟的优势,在这两种核心还没有应用到云计算领域之前,CPU主要为串行指令而优化,GPU则是为大规模的并行运算而优化。比较好理解的解释是在同样面积的芯片上,CPU更多的放置了多级缓存和指令并行相关的控制部件,而GPU上则更多的是运算单元。


这样的硬件设计差异在云计算服务出现之前,两者“各为其主”,处理不同的任务,性能上其实没有可比性,但是在作为云服务器核心的时候,处理相同的任务,GPU就体现出了其性能强大的优势。



随着数据需求工作负载渗透到数据中心并覆盖传统的CPU性能,GPU各供应商已经为数据中心补充了全新的设备和显示卡。


国际数据公司(IDC)发布了最新的《人工智能基础架构市场(2019下半年)跟踪》报告。报告中显示,2019年人工智能基础架构市场规模达到20.9亿美元,同比增长58.7%。其中GPU服务器占据96.1%的市场份额。IDC预测,到2024年中国GPU服务器市场规模将达到64亿美元。从工作负载角度看,用于推理的服务器在2019年占有40%以上的市场份额。IDC预测,到2021年,用于推理的服务器将超过用于训练的服务器,达到51.3%的市场占比。



阅读
5


您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|boway Inc. ( 冀ICP备10011147号 )

GMT+8, 2024-5-19 00:15 , Processed in 0.099694 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表