玩深度学习选哪块英伟达gpu?有性价比排名还不够!

蘭亭客 蘭亭客     2022-09-29     479

关键词:

本文來源地址:https://www.leiphone.com/news/201705/uo3MgYrFxgdyTRGR.html

技术分享

与“传统” AI 算法相比,深度学习(DL)的计算性能要求,可以说完全在另一个量级上。

而 GPU 的选择,会在根本上决定你的深度学习体验。那么,对于一名 DL 开发者,应该怎么选择合适的 GPU 呢?这篇文章将深入讨论这个问题,聊聊有无必要入手英特尔协处理器 Xeon Phi,并将各主流显卡的性能、性价比制成一目了然的对比图,供大家参考。

先来谈谈选择 GPU 对研究深度学习的意义。更快的 GPU,能帮助新人更快地积累实践经验、更快地掌握技术要领,并把这些应用于新的任务。没有快速的反馈,从错误中学习要花费太高的时间成本,学习深度学习便很可能变成一个令人反胃、进而望而生畏的经历。

是否需要多卡?

出于最初的激动,我走上了多卡交火的不归路——用 40Gbit/s 的 InfiniBand 桥接器连接,我搭建了一个迷你 GPU “集群”,万分激动地试验多卡是否能有更好的表现。

但很快我就发现,让神经网络在多卡上高效地并行处理,其实是一件挺不容易的事。尤其是对于更密集的神经网络,性能的提升可以用一句“不过如此”来形容。通过数据并行化,小型神经网络倒可以很高效地并行处理,但大型的就不行了。比如 Kaggle 竞赛“Partly Sunny with a Chance of Hashtags”,我用深度学习方法拿下了第二名,多卡就基本没有加速效果。

这之后,我继续探索如何在多卡环境玩深度学习。

我开发了一个全新的 8 bit 压缩技术,其模型并行化比起 32 bit 方法要高效得多,尤其是密集或全连接层。但我同时发现,并行化可以让你极度失望——我幼稚地针对一系列问题优化了并行算法,结果发现,即便有优化的特制代码,多 GPU 的并行化仍然效果一般,尤其考虑到投入的大量精力。

在搞并行化之前,你必须要非常了解你的硬件,以及它与深度学习算法的相互支持程度,来估计是否能从并行化获益。

技术分享

 

这是我的 PC。你看到的是三块泰坦以及 InfiniBand 桥接卡。但这个配置适合深度学习吗?

从那时起,对 GPU 并行的支持越来越常见,但离普及还差得远,更不要提高效地运行。到目前为止,唯一一个能在多卡、多机环境实现高效算法的深度学习框架,是 CNTK。它利用了微软特制的具有 1 bit 量化(高效)和 block momentum(非常高效)的并行化算法。

如果在 96 卡 GPU 集群上运行 CNTK,线性速度预计可达到 90 到 95 倍。PyTorch 或许会是另一个能高效地支持多机并行化的框架,但暂时还没到位。如果你在一台设备上搞并行化,你的选择基本就是 CNTK、Torch 或者 PyTorch。这些框架有不错的加速表现(3.6-3.8 倍),对于一机四卡(最多)有预定义的算法。其他支持并行化的库和框架也存在,但它们要么很慢(比如 TensorFlow,只有两到三倍的加速);要么对于在多卡环境很难用(比如 Theano);再要么两个缺点都有。

如果并行化对你很重要,我推荐你用 Pytorch 或 CNTK。

多卡,但不搞并行

多卡的另一个优势是,即便你不对算法做并行化,还可以同时跑多个算法、实验——每个算法在在一个 GPU 上单独运行。你不会获得任何加速,但同时使用不同算法或参数,你会得到更多关于效果表现的信息。如若你的主要目标是尽快积累深度学习经验,这是非常有用处的。对于需要对一个新算法的不同版本做实验的研究人员,这也相当有用。

这是多卡在心理上的价值。处理一个任务与获得结果反馈之间的时间越短,大脑把相关记忆碎片组织起来、建立起该任务知识图的效果就越好。如果数据集不大,你在两块 GPU 上用这些数据同时训练两个卷积网络,你会很快就会知道“一切顺利”的感觉有多好。你会更快地发现交叉验证误差,并做合理解释。你能发现一些线索,让你知道需要添加、移除或调整哪些参数或层。

总的来讲,你可以说对于几乎所有任务,一块 GPU 基本就够了。但用多卡来加速深度学习模型,正在变得越来越重要。如果你的目标是快速入门深度学习,多块便宜的显卡也是不错的。就我个人而言,我更倾向选择多块弱一点的 GPU,而不是一块核弹,对于研究实验也是如此。

应该选哪家的加速器——英伟达 GPU,AMD GPU,还是英特尔 Xeon Phi?

英伟达的标准算法库,使得在 CUDA 中建立第一批深度学习库非常简单。但对于 AMD OpenCL,这样的强大标准库并不存在。现实是,现在 A 卡并没有好用的深度学习库——所以一般人只能选 N 卡。即便将来有了 OpenCL 库,我仍会接着用 N 卡。原因很简单:GPU 通用计算,或者说 GPGPU 的社群基本上是围绕着 CUDA 转的,而没有多少人钻研 OpenCL。因此,在 CUDA 社区,你可以立刻获得好的开源方案和代码建议。

另外,对于深度学习,即便这项技术及其产业尚在襁褓之中,英伟达可谓是全面出击。老黄的投入并没有白费。那些现在才投入资金、精力,想要赶上深度学习风口的公司,由于起步晚,离英伟达的距离有老大一截。当前,使用任何除 NVIDIA-CUDA 之外的软硬件组合玩深度学习,简直是故意跟自己过不去。

至于英特尔 Xeon Phi,官方宣传是你能用标准的 C 语言代码,并轻松把代码转化为加速的 Xeon Phi 代码。该功能听着不错——你也许会想着可以借助海量的 C 语言资源。但实际情况是,只有非常少数的 C 语言代码有支持,而且大部分能用的 C 代码会非常非常的慢。因此,它其实比较鸡肋。

我曾在一个 Xeon Phi 集群工作站搞研究,这期间的经历不忍回想,一把辛酸泪:

我无法运行单位测试,因为 Xeon Phi MKL 和 Python Numpy 不兼容;我不得不重构大部分的代码,因为 Xeon Phi 编译器无法对模板做恰当的 reduction,比如说对 switch statement;我不得不修改 C 界面,因为 Xeon Phi 编译器不支持一些 C++11 功能。

所有这些迫使我在心酸沮丧中重写代码,并且没有单位测试。这过程极度漫长,堪称地狱般的经历。

直到我的代码终于成功执行,但所有东西速度都很慢。有一些问题,搞不清是 bug 还是线程调度程序的原因,总之如果张量大小接连发生改变,性能就会大幅降低。举个例子,如果你有大小不同的全连接层或 dropout 层,Xeon Phi 比 CPU 还要慢。我在独立矩阵乘法上重现了这个问题,并发给英特尔,但没有回音。

所以,如果你真想搞深度学习,离 Xeon Phi 越远越好。

预算有限,怎么挑 GPU?

想到为深度学习挑选 GPU,你脑子里冒出来的第一个问题大概是:最重要的性能参数是什么?Cuda 核心数目?频率?显存大小?

都不是。

对深度学习性能影响最大的参数是显存带宽。

简单来讲,GPU 为显存带宽而优化,为此牺牲了显存读取时间,即延迟。而 CPU 恰恰与此相反——如果只涉及少量内存,它能非常快速地做计算,比如个位数之间的乘法(3*6*9)。但是对于大量内存之上的运作,比如矩阵乘法(A*B*C),CPU 是非常慢的。由于高显存带宽,GPU 就很擅长处理这类问题。当然,CPU 与 GPU 之间有的是微妙细致的区别,这只是非常重要的一个。

因此,如果你想要买一个玩深度学习快的 GPU,首先要看显存带宽。

从显存带宽评估 GPU

 

 


技术分享

近几年 CPU、GPU 的带宽对比

同一代架构内,GPU 的带宽可以直接比较。比如 Pascal GTX 1080 vs. GTX 1070。单独看显存带宽就可以直接判断它们在深度学习上的性能差距:GTX 1080 (320GB/s) 比 GTX 1070 (256 GB/s) 带宽快 25%,实际情况大约如是。

但不同架构之间,比如 Pascal GTX 1080 vs. Maxwell GTX Titan X,带宽并不能直接比较。这是由于不同的制造工艺对显存带宽的使用情况不同。这使得 GPU 之间的对比会稍嫌棘手。但即便如此,仅仅看带宽还是能大致估出 GPU 的深度学习速度。

另一个需要考虑的因素,是与 cuDNN 的兼容性。并不是所有 GPU 架构都提供支持。几乎所有的深度学习库都借助 cuDNN 进行卷积运算,这会把 GPU 的选项限制到 Kepler 开普勒或之后的架构,即 GTX 600 系列或更新。另外,Kepler GPU 大多很慢。因此,你应该选择 GTX 900 或 1000 系的 GPU 获得理想性能。

为了对每块显卡在深度学习上的性能差异,给大家一个大致估计,我创建了一个简单的条形图。读这张图的姿势很简单。比如说,一个 GTX 980 的速度大约是 0.35 个 Titan X Pascal;或者,一个 Titan X Pascal 几乎比 GTX 980 快三倍。

雷锋网提醒,我自己并没有所有这些显卡,我也并没有在每张显卡上做深度学习跑分评测。这些性能对比,是从显卡参数以及计算评测(与深度学习同一级别的计算任务,比如密码挖掘)中获得。因此,这些只是大略估计。真实数字会有一点变化,但误差应该是极小的,并不会影响排序。

另外需要注意的是,对 GPU 性能利用不足的小型神经网络,会让性能更强的 GPU 在对比中吃亏。比如说,在 GTX 1080 Ti 上跑一个小型 LSTM(128 隐层; batch size > 64),并不会比在 GTX 1070 上快很多。得到下图中的数字,你需要跑更大的神经网络,比如 1024 个隐层的 LSTM(batch size > 64)。

技术分享

 

GPU 粗略性能对比

性价比分析

如果我们把上图中的显卡性能除以价格,就得到了每张卡的性价比指数,便是下图。它在一定程度上反映出我们的装机推荐。

技术分享

 

性价比对比

新卡的价格来自美亚,旧卡来自 eBay。雷锋网(公众号:雷锋网)提醒,该图的数字在很多方面都有些些微偏颇。首先,它没有考虑显存大小。通常情况下,你需要比 GTX 1050 Ti 更大的显存来玩深度学习。因此,榜上靠前的部分显卡虽然性价比很高,但是并不实用。

同样的,用四个小 GPU 比用一个大 GPU 要困难得多,因此小 GPU 出于劣势。另外,买 16 个 GTX 1050 Ti 不可能得到四个 GTX 1080 Ti 的性能,你还需要另外买 3 个 PC。如果我们把这一点也考虑进去,上图看上去应该是这样的:

这幅修正过的 GPU 性价比条形图,把其他 PC 硬件的成本也纳入考虑——把可兼容 4 GPU 的高端 PC 平台的成本,定为 $1500。该情况下,如果你想要买许多 GPU,不出意料的,更高端的 GPU 会占优势,因为 PC 平台+ 显卡的整体性价比更高。

但其实,这还是有所偏颇的。不管四个 GTX 1080 Ti 性价比有多高,对普通人而言,这并没有意义——因为买不起。因此,开发者真正感兴趣的应是有限预算里的性价比。针对你的预算,最佳系统选项是什么?你还需要考虑一些其它问题:你计划让这个 GPU 服役多久?几年后,你是要升级 GPU 还是升级整机?将来是否希望出手旧 GPU,回收一些成本,再买个新的?

如果你能平衡多方面的考虑,最后的结论应该与下面的建议介意。

GPU 推荐

通常,我会推荐 GTX 1080 Ti, GTX 1080 或 GTX 1070。如果你的预算足够买 GTX 1080 Ti,就不用犹豫了。GTX 1070 便宜一点,但仍然比上代 GTX Titan X (Maxwell) 要快。相比 GTX 980 Ti,所有这些卡都应该优先考虑,因为更大的显存:11GB、8GB  而不是 6GB。8GB 显存听上去或许不多,但对许多任务是绰绰有余的。对于 Kaggle 竞赛里的大多数图像数据集、deep style 和自然语言理解任务,你基本不会遇到问题。

如果你是第一次尝试深度学习,只是偶尔参加 Kaggle 竞赛,GTX 1060 是最好的入门 GPU。但我不会推荐 3GB 显存的 GTX 1060。

在性价比方面,10 系显卡是相当不错的。GTX 1050 Ti, GTX 1060, GTX 1070, GTX 1080 和 GTX 1080 Ti 都排在前列。GTX 1060 和 GTX 1050 Ti 面向初学者,GTX 1070、GTX 1080 是适合初创公司的多面手,对部分学术研究和产业界也可。GTX 1080 Ti 则是全能高端选项。

我通常不推荐新推出的 Titan Xp,相比其性能,它定价过高,不如选 GTX 1080 Ti。但对于摆弄大型数据集或视频数据的计算机视觉研究人员,Titan Xp 仍然有市场。在这些领域,每一 GB 显存都有价值,而 Titan Xp 比 GTX 1080 Ti 多了 1GB。有了这两者,我不会推荐 Titan X (Pascal) 。

如果你已经有了 GTX Titan X (Maxwell),想要升级到 Titan Xp。我的建议是:把钱存着买下一代,不值。

如果你预算有限,偏偏又需要 12GB 的内存,可以考虑买个二手的 GTX Titan X (Maxwell) 。

但是,对于大多数研究人员,最好的选项仍然是 GTX 1080 Ti。泰坦的额外 1GB 在大多数情况下没什么影响。

对我个人而言,会选择多个 GTX 1070 或 GTX 1080 来做研究。我宁愿多运行几个慢一点的试验,而不仅仅是运行一个更快的。在 NLP,内存要求并没有计算机视觉那么高,单只 GTX 1070/GTX 1080 对我来说就够了。我需要处理的任务、如何进行试验,决定了对我而言的最佳选择,不管是 GTX 1070 还是 GTX 1080。

对于预算紧张的开发者而言,选择余地非常有限。租 AWS 上的 GPU 实体价格已经太高,还是买自己的 GPU 更划算。我不推荐 GTX 970,不仅慢,二手的价格也不够实惠,而且它还存在显存启动问题。我的建议是加点钱上 GTX 1060,更快、显存更大而且没有毛病。GTX 1060 超出你的预算的话,我建议 4GB 版 GTX 1050 Ti。4GB 显存确实限制比较大,但如果对模型做些修改,仍可以得到还可以的性能表现。对于大多数 Kaggle 竞赛而言,GTX 1050 Ti 是合适的,在少部分比赛可能会影响你的竞争力。

如果你只是私下玩玩深度学习,没打算认真钻研,GTX 1050 Ti 是一个合适的选择。

结论

有了本文中的所有信息,你大概已经能平衡显存大小、带宽、价格等多方面因素,来做出合理的购买决策。现在,我的建议是若预算充足,就上 GTX 1080 Ti, GTX 1080 或 GTX 1070。刚刚上手深度学习、预算有限的话,选 GTX 1060。预算实在有限,那么 GTX 1050 Ti。计算机视觉研究人员可能会需要 Titan Xp。




[人工智能-深度学习-38]:英伟达gpucuda编程框架简介

...net/HiWangWenBing/article/details/121220362目录第1章什么CPU与GPU?1.1深度学习的硬件选择1.2CPU与GPU比较1.3CPU功能的硬件基础1.4 GPU功能 查看详情

深度学习gpu显卡选型攻略

一、选择算力在5.0以上的根据官方说明,在GPU算力高于5.0时,可以用来跑神经网络。算力越高,计算能力越强,建议小伙伴们在资金充足的情况下,尽量买算力高一些的。英伟达GeForce与TITAN显卡算力对比:... 查看详情

深度学习gpu显卡选型攻略

一、选择算力在5.0以上的根据官方说明,在GPU算力高于5.0时,可以用来跑神经网络。算力越高,计算能力越强,建议小伙伴们在资金充足的情况下,尽量买算力高一些的。英伟达GeForce与TITAN显卡算力对比:... 查看详情

英伟达首席科学家:深度学习硬件的过去现在和未来

...ff5c;Bill Dally翻译|胡燕君、沈佳丽、贾川过去十年是深度学习的“黄金十年”,它彻底改变了人类的工作和娱乐方式,并且广泛应用到医疗、教育、产品设计等各行各业,而这一切离不开计算硬件的进步,特... 查看详情

英伟达显卡系列分类都有哪些?

...腾合力就是英伟达的代理商,专注于人工智能领域,提供深度学习、GPU高性能计算、虚拟化、分布式存储等,而且也有完善的研发、生产、制造基地,也有英伟达的产品你可以去看看。参考技术A20SUPER系显卡:20SUPER系列也是目前... 查看详情

英伟达用ai设计gpu:最新h100已经用上,比传统eda减少25%芯片面积

...设计的?!在最新论文中,他们介绍了如何用深度强化学习agent设计电路的方法。据研究人员称,这种方法还属业内首次。值得一提的是,这篇文章包含参考文献在内,仅有短短6页。不少网友表示, 查看详情

[人工智能-深度学习-41]:开发环境-gpu进行训练安装与搭建(pytrochtensorflownvidiacuda)详细过程(代码片段)

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/details/121241620目录第1章英伟达Nvidia CUDA编程框架简介1.1概述1.2不同模块的版... 查看详情

深度学习算法c++部署代码开源库说明文档

一、前言随着技术的不断发展,深度学习算法也在不断更新迭代,无论是2D目标检测、3D目标检测,还是语义分割、实例分割,车道线检测、深度估计等领域相关算法也在不断更新,虽然可选择的算法很多,但是我们面临的一个... 查看详情

请问英伟达nvidiatensorcore与structuresparse对于科学计算是不是?

...阵计算的操作里面去。对于结构化稀疏,因为它针对的是深度学习、深度神经网络这样的inference场合,不仅仅是说它对于这种稀疏的几个结构,它是有一个非常确定的要求,另外还需要有一个retrain的过程。 查看详情

系统硬件英伟达安培卡vs老推理卡硬件参数对比(代码片段)

...这个新的芯片之外,英伟达还推出了一款专用于加速深度学习推理的框架,也就是现在大家熟知的TensorRT,这两者的配合,在后面很长一段时间给深度学习的部署插上了一双飞翔的翅膀,也催生了很多的深度学... 查看详情

Cuda 内核代码驻留在英伟达 GPU 上的啥位置?

】Cuda内核代码驻留在英伟达GPU上的啥位置?【英文标题】:WheredoesCudakernelcoderesideonnvidiaGPU?Cuda内核代码驻留在英伟达GPU上的什么位置?【发布时间】:2011-07-0413:12:04【问题描述】:我已经浏览了Cudaprogrammingguide,但仍然不清楚cud... 查看详情

gpu技术大会感受--专注显卡解决方案十年,英伟达在人工智能上创造出另外一副天地!

十年前谁也不会想到,人工智能让英伟达走到了风口浪尖今天去了GTC(GPU技术大会),和大家分享下一些见闻。如今的英伟达进入了高速发展阶段,但是谁也没有想到,英伟达在显卡上专注了十几年,居然在AI上有很大的发展,... 查看详情

英伟达研究生奖学金名单公布:多位华人获选,每人5万美元

...究者从事着GPU计算领域最前沿的研究工作,具体包括深度学习、机器人技术、计算机视觉、计算机图形学、架构、电路、高性能计算、生命科学和编程系统方面的项目。英伟达首席科学家BillDally曾说:「我们的奖学金获... 查看详情

windows系统下有英伟达显卡安装pytorch

1问题学习深度学习技术需要使用到PyTorch,在安装PyTorch过程中,有很多的细节需要知道,在下载PyTorch的时候,我们需要根据英伟达显卡的版本进行相应的下载,如何查看英伟达显卡版本?下载Anaconda的时候... 查看详情

windows系统下有英伟达显卡安装pytorch

1问题学习深度学习技术需要使用到PyTorch,在安装PyTorch过程中,有很多的细节需要知道,在下载PyTorch的时候,我们需要根据英伟达显卡的版本进行相应的下载,如何查看英伟达显卡版本?下载Anaconda的时候... 查看详情

通晓的回答下哪家gpu服务器更适合深度学习领域?

参考技术A上海风虎信息作为深度学习服务器的专业厂商,专注于为科研院所和高校师生打造高性能GPU服务器,建议您选择深度学习服务器时需要注意以下几点:1.深度学习需要大量的并行计算资源,而且动辄计算几天甚至数周,... 查看详情

深度学习tensorflow—gpu2.4.0版环境配置,一文简单易懂详细大全,cuda11.0cudnn8.0(代码片段)

深度学习TensorFlow—GPU2.4.0版环境配置,一文简单易懂详细大全,CUDA11.0、cuDNN8.0前提:电脑拥有英伟达独立显卡!!!,并且安装了anaconda!!!前提:电脑拥有英伟达独立显卡!!!,并且安装了anaconda&... 查看详情

英伟达gpu虚拟化---申请英伟达测试license

此文基于全新的License2.0系统,针对vGPULicense的试用申请以及软件下载和License管理进行了详细的说明,方便今后我们申请测试License,快速验证GPU的功能。试用步骤:·      EvaluationLicense 申请· ... 查看详情