wolf_chen@ 发表于 2020-10-22 14:29:27

深度学习训练与推理计算浅析

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

(一)了解深度学习算法
深度学习两个主要过程:训练(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张量计算3FP16半精度计算4FP32单精度计算5
Quadro GV10051206403287013333.3216.66
Quadro RTX800046085764867213032.6216.31
Quadro RTX600046085762467213032.6216.31
Titan RTX46085762467213032.6216.31
TITAN V51206401265111929.8014.90
TESLA V10051206401689711328.2614.13
RTX2080Ti43525441161610826.9013.45
Quadro RTX50003072384164488922.3011.15
RTX2080S307236884968522.3011.15
TESLA T42560320163206565.138.14
RTX2070S256028884486518.129.06
Quadro RTX4000230428884165714.247.12
RTX2060S217627263365714.367.18
标注1 显存单位GB,标注2 显存带宽单位GB/s,标注3-5 单位Tflops(每秒万亿次)

应用1CNN(卷积神经网络)计算特点
这类应用主要是计算机视觉应用,计算机获得对图像的高级“理解”。为了评估模型是否真正“理解”了图像,研究人员开发了不同的评估方法来衡量性能
主要算法:卷积神经网络(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型号CUDAsTensors显存1显存带宽2张量计算3F16半精度4F32单精度5
1Quadro GV10051206403287013333.3216.66
 Quadro RTX800046085764867213032.6216.31
 Quadro RTX600046085762467213032.6216.31
 Titan RTX46085762467213032.6216.31
2TITAN V51206401265111929.8014.90
 TESLA V10051206401689711328.2614.13
 RTX2080Ti43525441161610826.9013.45
3Quadro RTX50003072384164488922.3011.15
 RTX2080S307236884968522.3011.15
4TESLA T42560320163206565.138.14
 RTX2070S256028884486518.129.06
 Quadro RTX4000230428884165714.247.12
 RTX2060S217627263365714.367.18
标注1—单位GB,标注2—单位GB/s, 标注3~5 ---单位TFlops

说明:

GPU卡型号显存计算规模说明
1RTX2070sRTX2080sRTX2080ti8GB8GB11GB小型模型开发较小的GPU内存占用空间,高吞吐量工作负载应用涡轮式散热,单台工作站中最多配置8个
2Titan RTX24GB中等模型开发大显存支持使用更大的批处理需要训练大型计算机视觉模型,TITAN RTX可以做到。最多4块,不支持密集地装进工作站
3RTX600024GB中大等规模开发配备涡轮风扇,支持密集安装支持单机最大9块
4RTX800048GB超大规模拥有所有NVIDIA GPU中最大的内存容量,配备涡轮风扇,支持密集安装支持单机最大9块


应用2RNN(循环神经网络)计算特点
这类典型应用主要是自然语言处理(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型号CUDAsTensors显存1显存带宽 2张量计算3F16半精度4FP32单精度5
1TESLA V10051206401689711328.2614.13
 Quadro GV10051206403287013333.3216.66
2Quadro RTX800046085764867213032.6216.31
 Quadro RTX600046085762467213032.6216.31
 Titan RTX46085762467213032.6216.31
 TITAN V51206401265111929.8014.90
 RTX2080Ti43525441161610826.9013.45
3RTX2080S307236884968522.3011.15
 Quadro RTX50003072384164488922.3011.15
 RTX2070S256028884486518.129.06
 Quadro RTX4000230428884165714.247.12
4RTX2060S217627263365714.367.18
 TESLA T42560320163206565.138.14

说明

GPU卡型号显存可选说明
1RTX500016GBGood拥有16GB显存,
2Titan RTX24GBBetter支持NVLink桥接,加速训练更大的NLP网络模型,
RTX600024GBBetter类似TITAN RTX性能指标,涡轮散热设计允许密集配置,支持单机最大9块卡扩展
3Quadro GV10032GBBest拥有最高的显存带宽870GB/s和最高的张量算力
3RTX800048GBBest拥有最大48GB显存,是NLP的最佳GPU涡轮散热设计允许密集配置,支持单机最大9块卡扩展


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

4.1深度学习框架对比

框架重点应用编程语言多GPU速度深度学习主要算法
CNNRNN/LTSMGANRBM/DBN
TensorFlow自然语言处理,文本分类/摘要,语音/图像/手写识别,预测和标记Python ,C++,R语言+++++++  支持
Caffe视觉识别C,C++,Python,Matlab+++   
CNTK手写和语音识别.处理图像C++,Python++++++支持 
PyTorch处理图像,手写和语音识别CUDA,C/C++++++++++支持支持
MXNet图像,手写/语音识别,预测和NLPPython,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容器
页: [1]
查看完整版本: 深度学习训练与推理计算浅析