找回密码
 注册
查看: 11801|回复: 0

[文章点评] 深度学习训练与推理计算浅析

[复制链接]
发表于 2020-10-22 14:29:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

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

(一)了解深度学习算法
深度学习两个主要过程:训练(Training)和推理(Inference)。其中:
训练(Training)是将大量数据加载到机器中并分析数据以建立用于分类,识别,预测等的模式的过程(已建立的模式称为训练后的模型),训练需要高速密集并行计算---“高性能计算”
任务领域
原始输入
浅层特层   中层特征    高层特征
训练目标
语音
样本
频段  声音   音调    音素   单词
语音识别
图像
像素
线条  纹理   图案    局部   物体
图像识别
文本
字母
单词   词组  短语    段落   文正
语义理解
推理(Inference)是将未知数据输入到通过学习过程创建的训练模型中,然后根据已建立的模式对数据进行实际分类,识别和预测的过程,推理需要快速将推理结果转化为行动—“边缘计算”、实时要求高

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

典型算法
应用领域
CNN卷积神经网络
计算机视觉:医学图像分析、图像识别、面部检测、识别系统、全动态视频分析,自动驾驶,卫星图像
药物发现、推荐引擎、游戏
RNN递归神经网络
变体:LSTM、GRU、NTM、双向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
 
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
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
 
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
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
 
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++,Python,Matlab
+
++
 
 
CNTK
手写和语音识别.处理图像
C++,Python
++
+
+++
支持
 
PyTorch
处理图像,手写和语音识别
CUDA,C/C++
+++
+++
++
支持
支持
MXNet
图像,手写/语音识别,预测和NLP
Python,R,C++
Julia,CUDA
+++
+++
+
支持
 
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容器

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

本版积分规则

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