深度学习训练与推理计算平台硬件配置完美选型2020v1

时间:2020-02-17   来源:   网友评论:0   人气: 1255 作者:

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

(一)了解深度学习算法
深度学习两个主要过程:训练(Training)和推理(Inference)。其中:
训练(Training)是将大量数据加载到机器中并分析数据以建立用于分类,识别,预测等的模式的过程(已建立的模式称为训练后的模型),训练需要高速密集并行计算---“高性能计算”

任务领域

原始输入

浅层特层   中层特征    高层特征

训练目标

语音

样本

频段  声音   音调    音素   单词

语音识别

图像

像素

线条  纹理   图案    局部   物体

图像识别

文本

字母

单词   词组  短语    段落   文正

语义理解


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

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

典型算法

应用领域

CNN卷积神经网络

计算机视觉医学图像分析、图像识别、面部检测、识别系统、全动态视频分析,自动驾驶,卫星图像

药物发现、推荐引擎、游戏

RNN递归神经网络

变体:LSTMGRUNTM、双向RNN

自然语言处理(NLP)机器翻译、情感处理,语言生成,文本分类和句子完成:

时间序列预测股票预测、金融工程,应用物理、医学医药

顺序图像处理:图像分类、图像字幕

分割的手写识别、语音识别  

问题解答系统,机器人控制,

DBN深度信念网络

图像识别、信息检索、自然语言理解、故障预测

DSN深度堆栈网络

信息检索、连续语音识别

GAN生成对抗网络

图像样式转换,高分辨率图像合成,文本到图像合成,图像超分辨率[例如小剂量PET重建,异常检测,3D对象生成[例如牙齿修复],音乐生成,科学模拟加速度(例如天体物理学或高能物理

Autoencoder自动编码器

推荐系统,图像重构、聚类、机器翻译,异常值检测、数据去噪(图像、音频),图像修复,信息检索


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

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

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

型号

CUDA

张量

核数

显存1

显存带宽2

张量计算3

FP16半精度计算4

FP32单精度计算5

Quadro GV100

5120

640

32

870

133

33.32

16.66

Quadro RTX8000

4608

576

48

672

130

32.62

16.31

Quadro RTX6000

4608

576

24

672

130

32.62

16.31

Titan RTX

4608

576

24

672

130

32.62

16.31

TITAN V

5120

640

12

651

119

29.80

14.90

TESLA V100

5120

640

16

897

113

28.26

14.13

RTX2080Ti

4352

544

11

616

108

26.90

13.45

Quadro RTX5000

3072

384

16

448

89

22.30

11.15

RTX2080S

3072

368

8

496

85

22.30

11.15

TESLA T4

2560

320

16

320

65

65.13

8.14

RTX2070S

2560

288

8

448

65

18.12

9.06

Quadro RTX4000

2304

288

8

416

57

14.24

7.12

RTX2060S

2176

272

6

336

57

14.36

7.18

标注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可选型号:

No

型号

CUDAs

Tensors

显存1

显存带宽2

张量计算3

F16半精度4

F32单精度5

1

Quadro GV100

5120

640

32

870

133

33.32

16.66

 

Quadro RTX8000

4608

576

48

672

130

32.62

16.31

 

Quadro RTX6000

4608

576

24

672

130

32.62

16.31

 

Titan RTX

4608

576

24

672

130

32.62

16.31

2

TITAN V

5120

640

12

651

119

29.80

14.90

 

TESLA V100

5120

640

16

897

113

28.26

14.13

 

RTX2080Ti

4352

544

11

616

108

26.90

13.45

3

Quadro RTX5000

3072

384

16

448

89

22.30

11.15

 

RTX2080S

3072

368

8

496

85

22.30

11.15

4

TESLA T4

2560

320

16

320

65

65.13

8.14

 

RTX2070S

2560

288

8

448

65

18.12

9.06

 

Quadro RTX4000

2304

288

8

416

57

14.24

7.12

 

RTX2060S

2176

272

6

336

57

14.36

7.18

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

说明:

 

GPU卡型号

显存

计算规模

说明

1

RTX2070s

RTX2080s

RTX2080ti

8GB

8GB

11GB

小型模型开发

较小的GPU内存占用空间,

高吞吐量工作负载应用

涡轮式散热,单台工作站中最多配置8

2

Titan RTX

24GB

中等模型开发

大显存支持使用更大的批处理

需要训练大型计算机视觉模型,TITAN RTX可以做到。

最多4块,不支持密集地装进工作站

3

RTX6000

24GB

中大等规模开发

配备涡轮风扇,支持密集安装

支持单机最大9

4

RTX8000

48GB

超大规模

拥有所有NVIDIA GPU中最大的内存容量,

配备涡轮风扇,支持密集安装

支持单机最大9



应用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可选型号

No

型号

CUDAs

Tensors

显存1

显存带宽 2

张量计算3

F16半精度4

FP32单精度5

1

TESLA V100

5120

640

16

897

113

28.26

14.13

 

Quadro GV100

5120

640

32

870

133

33.32

16.66

2

Quadro RTX8000

4608

576

48

672

130

32.62

16.31

 

Quadro RTX6000

4608

576

24

672

130

32.62

16.31

 

Titan RTX

4608

576

24

672

130

32.62

16.31

 

TITAN V

5120

640

12

651

119

29.80

14.90

 

RTX2080Ti

4352

544

11

616

108

26.90

13.45

3

RTX2080S

3072

368

8

496

85

22.30

11.15

 

Quadro RTX5000

3072

384

16

448

89

22.30

11.15

 

RTX2070S

2560

288

8

448

65

18.12

9.06

 

Quadro RTX4000

2304

288

8

416

57

14.24

7.12

4

RTX2060S

2176

272

6

336

57

14.36

7.18

 

TESLA T4

2560

320

16

320

65

65.13

8.14


说明

 

GPU卡型号

显存

可选

说明

1

RTX5000

16GB

Good

拥有16GB显存,

2

Titan RTX

24GB

Better

支持NVLink桥接,加速训练更大的NLP网络模型,

 

RTX6000

24GB

Better

类似TITAN RTX性能指标,

涡轮散热设计允许密集配置,支持单机最大9块卡扩展

3

Quadro GV100

32GB

Best

拥有最高的显存带宽870GB/s和最高的张量算力

3

RTX8000

48GB

Best

拥有最大48GB显存,是NLP的最佳GPU

涡轮散热设计允许密集配置,支持单机最大9块卡扩展



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

4.1深度学习框架对比

框架

重点应用

编程语言

GPU速度

深度学习主要算法

CNN

RNN

/LTSM

GAN

RBM/

DBN

TensorFlow

自然语言处理,文本分类/摘要,语音/图像/手写识别,预测和标记

Python

C++

R语言

++

+++

++ 

 

支持

Caffe

视觉识别

C,C++PythonMatlab

+

++

 

 

 

CNTK

手写和语音识别.处理图像

C++Python

++

+

+++

支持

 

PyTorch

处理图像,手写和语音识别

CUDAC/C++

+++

+++

++

支持

支持

MXNet

图像,手写/语音识别,预测和NLP

Python,R,C++

JuliaCUDA

+++

+++

+

支持

 

Chainer

情感分析,机器翻译,语音识别

CUDA

 

支持

支持

 

 

Keras

分类,文本生成和摘要,标记和翻译,以及语音识别

Python

 

支持

支持

 

 

DL4J

图像识别,欺诈检测,文本挖掘,词性标记和自然语言处理

Java

 

支持

支持

 

支持

Theano

 

Python

+

++

++

 

 

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容器


 

文章评论