训练深度神经网络算法,单个GPU和GPU集群有什么区别

深度学习“引擎”之争:GPU加速还是专属神经网络芯片?【机器人吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:55,982贴子:
深度学习“引擎”之争:GPU加速还是专属神经网络芯片?收藏
Learning)在这两年风靡全球,大数据和高性能计算平台的推动作用功不可没,可谓深度学习的“燃料”和“引擎”,GPU则是引擎的引擎,基本所有的深度学习计算平台都采用GPU加速。同时,深度学习已成为GPU提供商NVIDIA的一个新的战略方向,以及3月份的GTC 2015的绝对主角。那么,GPU用于深度学习的最新进展如何?这些进展对深度学习框架有哪些影响?深度学习开发者应该如何发挥GPU的潜力?GPU与深度学习结合的前景以及未来技术趋势到底是怎么样的?在日前的NVIDIA深度学习中国战略发布会上,NVIDIA全球副总裁、PSG兼云计算业务中国区总经理Ashok Pandey带领其深度学习相关管理团队接受了记者的采访,就NVIDIA的深度学习战略、技术、生态、市场相关问题进行了详细的解读。NVIDIA认为,目前是数据、模型和GPU在推动深度学习的蓬勃发展,深度学习用户可以选择不同的计算平台,但开发人员需要一个易于部署的平台和良好的生态环境,包括一些基于硬件优化的开源工具,而构建一个良好的深度学习计算生态,既是GPU现有的优势,也是NVIDIA一贯的宗旨。NVIDIA全球副总裁、PSG兼云计算业务中国区总经理Ashok Pandey为什么GPU与深度学习很合拍?随着数据量和计算力的提升,Hinton和LeCun耕耘多年的大型神经网络终有用武之地,深度学习的性能和学习精度得到很大的提升,被广泛运用到文本处理、语音和图像识别上,不仅被Google、Facebook、百度、微软等巨头采用,也成为猿题库、旷视科技这类初创公司的核心竞争力。那么为什么是GPU呢?最重要的是GPU出色的浮点计算性能特别提高了深度学习两大关键活动:分类和卷积的性能,同时又达到所需的精准度。NVIDIA表示,深度学习需要很高的内在并行度、大量的浮点计算能力以及矩阵预算,而GPU可以提供这些能力,并且在相同的精度下,相对传统CPU的方式,拥有更快的处理速度、更少的服务器投入和更低的功耗。采用GPU加速与只采用CPU训练CNN的性能比较以ImageNet竞赛为例,基于GPU加速的深度学习算法,百度、微软和Google的计算机视觉系统在ImageNet图像分类和识别测试中分别达到了5.98%(2015年1月数据)4.94%(2015年2月数据)、4.8%(2015年2月数据)、的错误率,接近或超过了人类识别水平——跑分竞赛虽然有针对已知数据集进行特定优化之嫌,但优化结果对工业界的实践仍然具有参考价值。“人工智能从过去基于模型的方法,变成现在基于数据、基于统计的方法,主要得益于GPU高度并行的结构、高效快速的连接能力。事实证明GPU很适合深度学习。”北京航空航天大学教授、国家“十二五 863计划高效能计算机及应用服务环境”重大项目总体组组长钱德沛说。4款新方案NVIDIA回顾了GTC上推出的四项有助于推动深度学习发展的新产品和方案:1、GeForce GTX TITAN X,为训练深度神经网络而开发的GPU。TITANX采用 NVIDIA Maxwell GPU 架构,结合 3,072 个处理核心、单精度峰值性能为7 teraflops,加上板载的 12GB 显存,336.5GB/s 的带宽,可处理用于训练深度神经网络的数百万的数据。NVIDIA介绍,TITAN X 在工业标准模型AlexNet 上,花了不到三天的时间、使用 120万个 ImageNet 图像数据集去训练模型,而使用16核心的 CPU 得花上四十多天。2、DIGITS DevBox,针对研究人员的桌边型深度学习工具。DIGITSDevBox采用四个 TITAN X GPU,从内存到 I/O的每个组件都进行了最佳化调试,预先安装了开发深度神经网络所需要使用到的各种软件,包括:DIGITS软件包,三大流行深度学习架构Caffe、Theano和Torch,以及 NVIDIA 完整的GPU 加速深度学习库 cuDNN 2.0。和其他巨头一样,NVIDIA对开源的支持也是不遗余力。NVIDIA表示,在关键深度学习测试中,DIGITSDevBox 可以提供 4 倍于单个TITAN X 的性能。使用 DIGITSDevBox 来训练 AlexNet 只要13个小时就能完成,而使用最好的单GPU PC 的话则是两天,单纯使用 CPU 系统的话则要一个月以上的时间。3、下一代GPU 架构Pascal,将使深度学习应用中的计算速度相比Maxwell加快十倍。Pascal引入了大幅加快训练速度的三项设计,包括:32GB 的显存(是GeForce GTX TITANX 的 2.7 倍),可进行混合精度的计算任务,能够在 16位浮点精度下拥有两倍于 32 位浮点精度下的速率的计算速度;配备 3D 堆叠显存,让开发人员能建立更大的神经网络,提升深度学习应用程序的速度性能多达5倍;另搭配 NVIDIA 的高速互连技术 NVLink 来连接两个以上的 GPU,可将深度学习的速度提升达十倍。NVIDIA表示,现在在深度学习领域一般都用单精度进行,未来的趋势可能有人要用半精度,甚至1/4精度,所以NVIDIA需要根据用户的需求调整GPU的架构,Pascal支持FP16和FP32,可以提升机器学习的性能。4、DRIVE PX,用于自动驾驶汽车的深度学习平台。基于NVIDIA Tegra X1,结合最新的PX平台,可以让汽车在仪表显示和自动驾驶方面得到质的飞跃。值得关注的NVLink和DIGITS谈到下一代Pascal 架构的十倍性能,不得不说NVLink,它使得 GPU 与 GPU 之间、GPU 与 CPU 之间数据传输的速度,较现有的PCI-Express 标准加快5到12倍,对于深度学习这些需要更高 GPU 间传递速度的应用程序来说是一大福音。开发者应当高兴的是,NVLink基于点对点传输形式,编程模式与 PCI-Express 相同。NVIDIA表示,NVLink可将系统里的 GPU 数量增加一倍,以共同用于深度学习计算任务上;还能以新的方式连接 CPU 与 GPU,在服务器设计方面提供较 PCI-E 更出色的灵活性和省电表现。其实不管要做数据并行还是模型并行,NVLink对深度学习开发人员都带来更大的想象空间。国内语音识别领头羊科大讯飞,基于多GPGPU和InfiniBand构建了一个环形的并行学习架构,用于DNN、RNN、CNN等模型训练,效果不错,但采用InfiniBand也让其他从业者羡慕其“土豪”行径,如果有了NVLink,显然可以有别的好办法。当然,想用NVLink也意味着新的投资,而NVIDIA现有的产品线对深度学习的支持也不错,用户可以酌情选择。更多的深度学习硬件选择知识,可以参考Kaggle比赛选手Tim Dettmers撰写的博文:《深度学习硬件指南完整版》。另外一个是DIGITS,用于设计、训练和验证图像分类深度神经网络的多合一图形系统。DIGITS可在安装、配置和训练深度神经网络过程中为用户提供指导,具有便于从本地和网络加载训练数据集的用户界面和工作流程管理能力,并提供实时监控和可视化功能,目前支持GPU 加速版本 Caffe,详见ParallelForall 博客:《DIGITs:Deep Learning Training System》。DIGITS之所以首先选择支持Caffe,NVIDIA表示,是因为他们的客户调研结果显示这一框架目前最受欢迎(包括国内的BAT等和国外的一些用户),同理,cuDNN运算库也是最先集成到Caffe开源工具中。NVIDIA承诺,即使不能覆盖所有的工具,DIGITS后续也会对主流的开源工具提供支持,主要是前述的Theano和Torch。NVIDIA全球在DIGITS、cuDNN团队都分别投入30多人到开源工作之中,这些开发人员也在社区中与深度学习开发者保持密切的沟通。中国生态在NVIDIA看来,国内的深度学习研究水平与国外机构基本相当,从高校科研的角度来说,香港中文大学、中科院自动化所都获得ImageNet不错的名次,从工业界来说,BAT、乐视、科大讯飞等都在深度学习领域拥有很多年轻的工程师和不错的研究成果。NVIDIA希望加强中国生态环境的建设,推动深度学习的应用,主要方式仍然包括开源社区的投入、高校科研合作、服务器厂商的合作以及企业用户的合作。2015年1月,NVIDIA与爱奇艺签署了深度合作框架协议,双方将在视频深度学习(deepvideo)和媒体云计算领域紧密合作,利用最先进的GPU和深度学习架构,搭建爱奇艺视频创作、分享、服务平台。NVIDIA表示,未来还将继续与重点客户合作建立联合实验室。采用GPU加速的深度学习的企业GPU还是专用芯片?尽管深度学习和人工智能在宣传上炙手可热,但无论从仿生的视角抑或统计学的角度,深度学习的工业应用都还是初阶,深度学习的理论基础也尚未建立和完善,在一些从业人员看来,依靠堆积计算力和数据集获得结果的方式显得过于暴力——要让机器更好地理解人的意图,就需要更多的数据和更强的计算平台,而且往往还是有监督学习——当然,现阶段我们还没有数据不足的忧虑。未来是否在理论完善之后不再依赖数据、不再依赖于给数据打标签(无监督学习)、不再需要向计算力要性能和精度?退一步说,即便计算力仍是必需的引擎,那么是否一定就是基于GPU?我们知道,CPU和FPGA已经显示出深度学习负载上的能力,而IBM主导的SyNAPSE巨型神经网络芯片(类人脑芯片),在70毫瓦的功率上提供100万个“神经元”内核、2.56亿个“突触”内核以及4096个“神经突触”内核,甚至允许神经网络和机器学习负载超越了冯·诺依曼架构,二者的能耗和性能,都足以成为GPU潜在的挑战者。例如,科大讯飞为打造“讯飞超脑”,除了GPU,还考虑借助深度定制的人工神经网络专属芯片来打造更大规模的超算平台集群。不过,在二者尚未产品化的今天,NVIDIA并不担忧GPU会在深度学习领域失宠。首先,NVIDIA认为,GPU作为底层平台,起到的是加速的作用,帮助深度学习的研发人员更快地训练出更大的模型,不会受到深度学习模型实现方式的影响。其次,NVIDIA表示,用户可以根据需求选择不同的平台,但深度学习研发人员需要在算法、统计方面精益求精,都需要一个生态环境的支持,GPU已经构建了CUDA、cuDNN及DIGITS等工具,支持各种主流开源框架,提供友好的界面和可视化的方式,并得到了合作伙伴的支持,例如浪潮开发了一个支持多GPU的Caffe,曙光也研发了基于PCI总线的多GPU的技术,对熟悉串行程序设计的开发者更加友好。相比之下,FPGA可编程芯片或者是人工神经网络专属芯片对于植入服务器以及编程环境、编程能力要求更高,还缺乏通用的潜力,不适合普及。
登录百度帐号推荐应用他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)21ic官方微信 -->
GPU上四大分布式深度学习框架的区别是什么?
随着深度学习应用不断进入商用化,各类框架在服务器端上的部署正在增多,可扩展性正逐渐成为性能的重要指标。香港浸会大学褚晓文团队近日提交的论文对四种可扩展框架进行了横向评测(Caffe-MPI、CNTK、MXNet
与 TensorFlow)。该研究不仅对各类深度学习框架的可扩展性做出了对比,也对高性能服务器的优化提供了方向。本文引用地址:
近年来,深度学习(DL)技术在许多 AI
应用当中取得了巨大成功。在获得大量数据的情况下,深度神经网络(DNN)能够很好地学习特征表示。但是,深度神经网络和大规模数据有着很高的计算资源要求。幸运的是,一方面,硬件加速器例如
GPU,FPGA 和 Intel Xeon Phi 可减少模型训练时间。另一方面,近期的一些研究已经证明,具有非常大的 mini-batch 的 DNN
可以很好地收敛到局部最小值。这对于利用大量处理器或集群而言是非常重要的。单个加速器的计算资源(比如计算单元和内存)有限,无法处理大规模神经网络。因此,人们提出了并行训练算法以解决这个问题,比如模型并行化和数据并行化。这也让科技巨头们在云服务中部署可扩展深度学习工具成为可能。亚马逊采用
MXNet 作为云服务 AWS 的主要深度学习框架,谷歌采取 TensorFlow 为谷歌云提供支持,而微软为微软云开发了 CNTK。此外,浪潮集团开发了
Caffe-MPI 以支持 HPC 的分布式部署。
在英伟达高性能 DNN 库 cuDNN 的帮助下,CNTK,MXNet 和 TensorFlow 除了能在单 GPU 上实现高吞吐率之外,还能在多个
GPU 和多种机器之间实现良好的可扩展性。这些框架为开发者提供了一个开发 DNN 的简便方法。此外,尝试相关算法优化,通过使用多核 CPU、众核 GPU、 多
GPU 和集群等硬件来实现高吞吐率。但是,由于软件开发商的实施方法不尽相同,即使在同一个硬件平台上训练相同的
DNN,这些工具的性能表现也不尽相同。研究者已经对各种工具在不同 DNN 和不同硬件环境下进行了评估,但是深度学习框架和 GPU
的升级太过频繁,导致这些基准无法反映 GPU 和软件的最新性能。另外,多 GPU
和多机平台的可扩展性还没有得到很好的研究,但这是计算机集群最重要的性能指标之一。
本文扩展了我们之前的工作,尝试评估 4 个分布式深度学习框架(即 Caffe-MPI、CNTK、MXNet 和
TensorFlow)的性能。我们使用四台由 56 Gb 的 InfiniBand 架构网络连接的服务器,其中每一个都配备了 4 块 NVIDIA Tesla
P40,以测试包括单 GPU,单机多 GPU,和多机在内的 CNN 架构的训练速度。我们首先测试了随机梯度下降(SGD)优化的运行性能,然后关注跨多 GPU
和多机的同步 SGD(S-SGD)的性能,以分析其细节。我们的主要研究发现如下:
对于相对浅层的 CNN(例如 AlexNet),加载大量训练数据可能是使用较大 mini-batch 值和高速 GPU
的潜在瓶颈。有效的数据预处理可以降低这一影响。
为了更好地利用 cuDNN,我们应该考虑自动调优以及输入数据的格式(例如 NCWH,NWHC)。CNTK 和 MXNet 都对外显露了 cuDNN
的自动调优配置,这都有利于在前向传播和反向传播中获得更高的性能。
在拥有 multiple GPU 的 S-SGD 当中,CNTK 不会隐藏梯度通信的开销。但是,MXNet 和 TensorFlow
将当前层的梯度聚合与前一层的梯度计算并行化处理。通过隐藏梯度通信的开销,扩展性能会更好。
所在四个高吞吐量的密集 GPU 服务器上,所有框架的扩展结果都不是很好。通过 56Gbps 网络接口的节点间梯度通信比通过 PCIe
的节点内通信慢得多。
深度学习框架已经被广泛部署于 GPU
服务器上,已为学术界和工业界的深度学习应用提供支持。在深度学习网络(DNN)的训练中,有许多标准化过程或算法,比如卷积运算和随机梯度下降(SGD)。但是,即使是在相同的
GPU 硬件运行相同的深度学习模型,不同架构的运行性能也有不同。这篇文章分别在单 GPU,多 GPU 和多节点环境下评估了四种先进的分布式深度学习框架(即
Caffe-MPI、CNTK、MXNet 和 TensorFlow)的运行性能。首先,我们构建了使用 SGD 训练深度神经网络的标准过程模型,然后用 3
种流行的卷积神经网络(AlexNet、GoogleNet 和
ResNet-50)对这些框架的运行新能进行了基准测试。通过理论和实验的分析,我们确定了可以进一步优化的瓶颈和开销。文章的贡献主要分为两个方面。一方面,对于终端用户来说,针对他们的场景,测试结果为他们选择合适的框架提供了参考。另一方面,被提出的性能模型和细节分析为算法设计和系统配置而言提供了更深层次的优化方向。
表 2 针对数据并行化的实验硬件配置
图 1 GPU 集群的拓扑
表 3 实验所用的软件
表 4 试验中神经网络的设置
表 5 SGD 不同阶段的时间(单位:秒)
眼下,人工智能已经成为越来越火的一个方向。普通工程师,如何转向人工智能方向,是知乎上的一个问题。本文是对此问题的一个回答的归档版。相比原回答内容上有所增加。......关键字:
据国外媒体报道称,谷歌大脑之父、百度首席科学家,同时也是人工智能领域最权威学者之一的吴恩达(Andrew Ng)日前在接受采访时表示,如果如今的企业高官们对机器学习技术的发展阶段及能力有着更好理解的话,数以百万计的人或许都会失去自己目前的工......关键字:
为了抢攻AI市场庞大商机,包括英特尔、英伟达、超微、高通、赛灵思等大厂,均已加快投资及研发脚步,而台积电因为在半导体制程推进上优于竞争同业,可望成为最大赢家。......关键字:
两会虽然闭幕,但人工智能在会议期间所掀起的热潮,仍在继续。......关键字:
近日,知名媒体《福布斯》刊登了一篇文章,AI领域知名科技媒体TOPBOTS评选出了20位驱动中国人工智能改革的科技领导者。......关键字:
NVIDIA、高通的新一代高性能计算芯片都会使用TSMC的16nm、12nm或者10nm工艺,有意思的是NVIDIA去年公布的Xavier SoC处理器现在说是使用12nm工艺,但去年发布时NVIDIA提到它是16nm工艺的。......关键字:
三星将会在3月29日发布下一代旗舰手机,三星已经证实,Galaxy S8将会安装全新语音数字助手,名叫Bixby,它采用了AI技术。......关键字:
我 要 评 论
大家都爱看
昨日,兆易创新发表公告,重申了收购上海思立微的目的。兆易创新表示,这次产业并购,旨在整合境内优质的芯片设计领域资产,获取智能人机交互领域的核心技术,拓展并丰富公司产品线,在整体上形…
CPU即中央处理器,是一块超大规模的集成电路,是一台计算机的运算核心和控制核心。它的功能主要是解释计算机指令以及处理计算机软件中的数据。
据外媒报道,美银美林认为,AMD最新的Ryzen芯片可能会引发一波销售浪潮,进而推动该股继续上涨。它认为AMD股票还有40%以上的上涨空间。
关于国产芯片,是近几年才有崛起的势头,可是在几年之前,国产芯片还处于“沉睡”的状态,尤其是手机芯片,几乎大部分都依赖进口,而且国外的市场几乎被高通和联发科所垄断,也就展讯还在市场边…
大疆周一表示,在美国陆军因为&网络缺陷&而要求其成员停用大疆无人机后,这家中国无人机制造商将加强无人机的数据安全性。 大疆政策和法务副总裁布伦丹&middot…
业界早知道
02-0202-0202-0202-0202-0202-02
精读涨姿势
03-2309-0810-1606-0802-1706-30数据平台上的计算能力:哪些GPU更适合深度学习和数据库?数据平台上的计算能力:哪些GPU更适合深度学习和数据库?每天探索百家号图片来自“视觉中国”最近Google在ISCA2017上披露了TPU(TensorProcessingUnit)的细节,继HaswellCPU,TeslaK80GPU之后,又增加了一种专门用于机器学习和神经网络的高性能武器。数据分析和GPUGPU不仅能实现数据库的许多功能,而且其强大的计算能力,能实现实时分析。MapD和Kinetica是这方面比较有名的两家公司。MapD用NVIDIATeslaK40/K80实现了基于SQL和列式存储的数据库,无需索引,擅长任意多组合的条件查询(Where)、聚合(Groupby)等,实现传统关系型数据库的BI功能,方便用户自由地进行多条件查询。性能优势也很明显(尤其是响应时间)。比如,MapD将年全美国进出港航班的数据扩大10倍后,执行全表扫描的报表任务,如&SELECT...GROUPBY...”。一台带有8张TeslaK40显卡的服务器(8核/384GRAM/SSD)比3台服务器(32核/244GRAM/SSD)组成的内存数据库集群快50-100倍。GPU数据库的另一大特色是可视化渲染和绘制。将OpenGL等的缓冲区直接映射成GPUCUDA里的显存空间,原地渲染,无需将结果从内存拷到GPU,可以实现高帧频的动画。也可以原地绘制成PNG或视频stream,再发给客户端,大大减少网络传输的数据量。这些优势吸引了很多开发者。在实时分析上比较有名的一家公司是Kinetica。他们开始时为美国情报机构实时分析250个数据流。现在能用10个节点,基于20万个传感器,为美国邮政服务(USPS)提供15000个并行的实时分析、物流路由计算和调度等。我国用GPU进行分析和挖掘的用户也越来越多,想深入学习的朋友也不少。最快速的入门办法是重复前人的实验。弗吉尼亚大学的AcceleratingSQLDatabaseOperationsonaGPUwithCUDA里的开发环境和实验,值得借鉴。他们用一张4G显存的NVIDIATeslaC1060,在一台低配的服务器上(XeonXGHz/4核),5GRAM),用5百万行的表做查询和汇总,响应时间30-60毫秒。我们测过的最低配置是NVidiaGTX780,一千多块,适合用来尝试查询和聚合。先用SQLite将SQL解析成多个OpCode步骤,然后在CUDA上实现一个虚机,来逐一实现每个步骤,直至将整个表逐行遍历完。其中一些步骤可以并行,因此可用CUDA起几万个线程,每个线程处理一行。深度需要较高的计算能力,所以对GPU的选择会极大地影响使用者体验。在GPU出现之前,一个实验可能需要等几个月,或者跑了一天才发现某个试验的参数不好。好的GPU可以在深度学习网络上快速迭代,几天跑完几个月的试验,或者几小时代替几天,几分钟代替几小时。快速的GPU可以帮助刚开始学习的朋友快速地积累实践经验,并用深度学习解决实际问题。如果不能快速得到结果,不能快速地从失误中汲取教训,学起来会比较让人灰心。TimDettmers利用GPU,在一系列Kaggle比赛里应用了deeplearning,并在PartlySunnywithachanceofHashtags比赛中获了亚军。他用了两个较大的两层深度神经网络,采用了ReLU激活函数,用Dropout来实现正则化。这个网络勉强能加载到6GB的GPU显存里。是否需要多个GPU?Tim曾用40Gbit/s的InfiniBand搭建了一个小GPU集群,但他发现很难在多个GPU上实现并行的神经网络,而且在密集的神经网络上,速度提升也不明显。小网络可以通过数据并行更有效地并行,但对比赛里所用的这个大网络,几乎没有提速。后来又开发了一个8-bit压缩方法,按理说,能比32-bit更有效地并行处理密集或全互联的网络层。但是结果也不理想。即使对并行算法进行优化,自己专门写代码在多颗GPU上并行执行,效果和付出的努力相比仍然得不偿失。要非常了解深度学习算法和硬件之间具体如何互动,才能判断是否能从并行里真的得到好处。对GPU的并行支持越来越常见,但还远未普及,效果也未必很好。仅有CNTK这一种深度学习库通过Microsoft特殊的1-bit量化并行算法(效率较高)和块动量算法(效率很高),能在多个GPU和多台计算机上高效地执行算法。在96颗GPU的集群上用CNTK,可以获得90-95倍的速度提升。下一个能高效地多机并行的库可能是Pytorch,但还没完全做好。如果想在单机上并行,可以用CNTK,Torch或Pytorch。速度可提升3.6-3.8倍。这些库包含了一些算法,能在4颗GPU的单机上并行执行。其他支持并行的库,要么慢,要么这两个问题都有。多GPU,非并行用多个GPU的另一个好处是,即使不并行执行算法,也可以在每个GPU上分别运行多个算法或实验。虽然不能提速,但可以一次性了解多个算法或参数的性能。当科研人员需要尽快地积累深度学习经验,尝试一个算法的不同版本时,这很有用。这对深度学习的过程也很有好处。任务执行得越快,越能更快地得到反馈,脑子就从这些记忆片段里总结出完整的结论。在不同的GPU上用小数据集训练两个卷积网络,可以更快地摸索到如何能执行得更好。也能更顺地找到交叉验证误差(Crossvalidationerror)的规律,并正确地解读它们。还能发现某种规律,来找到需要增加、移除或调整的参数或层。总的来说,单GPU几乎对所有的任务都够了,不过用多个GPU来加速深度学习模型变得越来越重要。多颗便宜的GPU也能用来更快地学习深度学习。因此,建议用多个小GPU,而不是一个大的。选哪种?NVIDIAGPU,AMDGPU还是IntelXeonPhi用NVIDIA的标准库很容易搭建起CUDA的深度学习库,而AMD的OpenCL的标准库没这么强大。而且CUDA的GPU计算或通用GPU社区很大,而OpenCL的社区较小。从CUDA社区找到好的开源办法和可靠的编程建议更方便。而且,NVIDIA从深度学习的起步时就开始投入,回报颇丰。虽然别的公司现在也对深度学习投入资金和精力,但起步较晚,落后较多。如果在深度学习上采用NVIDIA-CUDA之外的其他软硬件,会走弯路。据称,Intel的XeonPhi上支持标准C代码,而且要在XeonPhi上加速,也很容易修改这些代码。这个功能听起来有意思。但实际上只支持很少一部分C代码,并不实用。即使支持,执行起来也很慢。Tim曾用过500颗XeonPhi的集群,遇到一个接一个的坑,比如XeonPhiMKL和PythonNumpy不兼容,所以没法做单元测试。因为IntelXeonPhi编译器无法正确地对模板进行代码精简,比如对switch语句,很大一部分代码需要重构。因为XeonPhi编译器不支持一些C++11功能,所以要修改程序的C接口。既麻烦,又花时间,让人抓狂。执行也很慢。当tensor大小连续变化时,不知道是bug,还是线程调度影响了性能。举个例子,如果全连接层(FC)或剔除层(Dropout)的大小不一样,XeonPhi比CPU慢。预算内的最快GPU用于深度学习的GPU的高速取决于什么?是CUDA核?时钟速度?还是RAM大小?这些都不是。影响深度学习性能的最重要的因素是显存带宽。GPU的显存带宽经过优化,而牺牲了访问时间(延迟)。CPU恰恰相反,所用内存较小的计算速度快,比如几个数的乘法(3*6*9);所用内存较大的计算慢,比如矩阵乘法(A*B*C)。GPU凭借其显存带宽,擅长解决需要大内存的问题。当然,GPU和CPU之间还有更复杂的区别,可以参见Tim在Quora上的回答。所以,购买快速GPU的时候,先看看带宽。对比CPU和GPU的带宽发展芯片架构相同时,带宽可以直接对比。比如,Pascal显卡GTX的性能对比,只需看显存带宽。GTXGB/s)比GTXGB/s)快25%。不过如果芯片架构不同,不能直接对比。比如Pascal和Maxwell(GTX1080和TitanX),不同的生产工艺对同样带宽的使用不一样。不过带宽还是可以大概体现GPU有多快。另外,需要看其架构是否兼容cnDNN。绝大多数深度学习库要用cuDNN来做卷积,因此要用Kepler或更好的GPU,即GTX600系列或以上。一般来说,Kepler比较慢,所以从性能角度,应考虑900或1000系列。为了比较不同显卡在深度学习任务上的性能,Tim做了个图。比如GTX980和0.35个TitanXPascal一样快,或者说TitanXPascal比GTX快了差不多3倍。这些结果并不来自于每张卡的深度学习benchmark测试,而是从显卡参数和计算型benchmark(在计算方面,一些加密货币挖掘任务和深度学习差不多)。所以这只是粗略估计。真实数字会有些不同,不过差距不大,显卡排名应该是对的。同时,采用没有用足GPU的小网络会让大GPU看上去不够好。比如128个隐藏单元的LSTM(批处理&64)在GTX1080Ti上跑的速度不比GTX1070快多少。要得到性能区别,需要用1024个隐藏单元的LSTM(批处理&64)。GPU跑大型深度学习网络的性能比较一般来说,Tim建议用GTX1080Ti或GTX1070。这两者都不错。如果预算够的话,可以用GTX1080Ti。GTX1070便宜一点,比普通GTXTitanX(Maxwell)更快。两者都比GTX980Ti更适合,因为显存更大——11GB和8GB,而不是6GB。8GB有点小,但对很多任务都足够了,比如足够应付Kaggle比赛里大多数图像数据集合自然语言理解(NLP)的任务。刚开始接触深度学习时,GTX1060是最好的选择,也可以偶尔用于Kaggle比赛。3GB太少,6GB有时不太够,不过能应付很多应用了。GTX1060比普通TitanX慢,但性能和二手价格都和GTX980差不多。从性价比来看,10系列设计很好。GTX和1080Ti更好。GTX1060适合初学者,GTX1070的用途多,适合初创公司和某些科研和工业应用,GTX1080Ti是不折不扣的全能高端产品。Tim不太建议NVIDIATitanX(Pascal),因为性价比不太好。它更适合计算机视觉的大数据集,或视频数据的科研。显存大小对这些领域的影响非常大,而TitanX比GTX1080Ti大1GB,因此更适合。不过,从eBay上买GTXTitanX(Maxwell)更划算——慢一点,但12GB的显存够大。GTX1080Ti对大多数科研人员够用了。额外多1GB的显存对很多科研和应用的用处不大。在科研上,Tim个人会选多张GTX1070.他宁可多做几次实验,稍微慢一点,而不是跑一次实验,快一点。NLP对显存的要求不像计算机视觉那么紧,因此GTX1070足够了。他现在处理的任务和方式决定了最合适的选择——GTX1070。选择GPU时可以用类似的思路。先想清楚所执行的任务和实验方法,再找满足要求的GPU。现在AWS上的GPU实例比较贵且慢。GTX970比较慢,而且二手的也比较贵而且启动时显卡有内存问题。可以多花点钱买GTX1060,速度更快,显存更大,而且没有显存问题。如果GTX1060太贵,可以用4G显存的GTX1050Ti。4GB有点小,但也深度学习的起步也够了。如果在某些型号上做调整,可以得到较好性能。GTX1050Ti适合于大多数Kaggle比赛,不过可能在一些比赛里发挥不出选手优势。4054本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。每天探索百家号最近更新:简介:科学技术是第一生产力作者最新文章相关文章

我要回帖

更多关于 深度神经网络 训练 的文章

 

随机推荐