作者:Redflashing
文中图片均来自于NVIDIA官方文档或NVIDIA社区博客
深度学习通常需要大规模的计算需求,作为主要运算硬件的GPU的选择决定了深度学习的体验。但是如何去选择新的GPU,哪些GPU特性十分重要?GPU RAM,核心(Core)数量,张量核心(Tensor Core)数量?如何做出最具性价比的选择?本文通过深入探讨这些问题,主要针对Ampere系列显卡为选购适用于深度学习GPU的小伙伴们给出最合适的建议。
总结
-
避免在矿潮期间购置价格高昂的显卡。同样,在矿难后避免买到翻新矿卡
-
尽量避免使用笔记本进行深度学习训练,同种显卡型号下台式机和笔记本会有明显差距
-
总体最好的 GPU:RTX 3080 和 RTX 3090。
-
对于个人用户而言避免使用的 GPU: 任何 Tesla 卡;任何专业绘图显卡(如Quadro 卡);任何 Founders Edition 卡;Titan RTX、Titan V、Titan XP,除此之外无Tensor Core(rtx20系显卡之前)的二手消费级显卡需要斟酌。
-
颇具成本效益而价格高昂:RTX 3080。
-
颇具成本效益而价格较便宜:RTX 3070、RTX 2060 Super。
-
预算不够的情况下: 购买二手卡,RTX 2070($400)、RTX 2060($300)、GTX 1070($220)、GTX 1070 Ti($230)、GTX 1650 Super($190)。
-
没钱: 百度的AI Studio ,Kaggle等均有免费GPU算力提供
-
Kaggle竞赛:RTX 3070
-
计算机视觉(CV)、预训练或机器翻译研究人员:4路RTX 3090(推荐涡轮显卡)。注意配备相应的大功率电源以及扇热设备
-
自然语言处理(NLP) 研究人员: 如果不从事机器翻译、语言建模或任何类型的预训练工作,那么 RTX 3080 就足够了而且颇具性价比。
-
相关专业学生/从业者: 从一块 RTX 3070 开始。进一步学习,卖掉你的 RTX 3070,并购买多路RTX 3080。根据下一步选择的领域(初创公司、Kaggle、研究、深度学习应用),卖掉你的 GPU,三年后再买更合适的(下一代 RTX 40s GPU)。
-
尝鲜小白:RTX 2060 Super 就很好,但可能需要使用新电源。如果你的主板有一个 PCIe x16 插槽,并且有一个大约 300W 的电源,那么 GTX 1050 Ti 是一个很好的选择。
-
用于模型并行化的、少于 128 个 GPU 的 GPU 集群: 如果你可以为你的集群购买 RTX GPU:66% 的 8路RTX 3080 和 33% 的 8路RTX 3090(要确保能有效地冷却)。如果解决不了 RTX 3090 的冷却问题,那么可以购买 33% 的 RTX 6000 GPU 或 8路Tesla A100。如果不能购买 RTX GPU,那么可能会选择 8路A100 Supermicro 节点或 8路RTX 6000 节点。
-
用于模型并行化的、128 个 GPU 的 GPU 集群: 考虑下 8路Tesla A100 设置。如果你使用超过 512 个 GPU,那么你应该考虑配置一个 DGX A100 SuperPOD 系统,以匹配你的规模。
1. 相比于CPU,为什么GPU更适合深度学习?为什么要选择Nvidia GPU?
对于深度学习训练来说,GPU已经成为加速器的最佳选择。大多数计算本质上是并行的浮点计算,即大量的矩阵乘法,其最佳性能需要大量的内存带宽和大小,这些需求与HPC的需求非常一致,GPU正好可以提供高精度浮点计算、大量VRAM和并行计算能力,NVIDIA的CUDA可谓恰逢其时。
CUDA和NVIDIA的计算业务的发展与机器学习的研究进展相吻合,机器学习在2006年左右才重新成为“深度学习”。GPU加速神经网络模型相比CPU可提供数量级的加速,反过来又将深度学习重新推广到如今的流行词汇。与此同时,NVIDIA的图形竞争对手ATI在2006年被AMD收购;OpenCL 1.0在2009年才发布,同年AMD剥离了他们的GlobalFoundries晶圆厂。
随着Deep Learning的研究人员和学者们成功地使用CUDA来更快地训练神经网络模型,NVIDIA才发布了他们的cuDNN库的优化深度学习原语,其中有很多以HPC为中心的BLAS(基本线性代数子例程)和相应的cuBLAS先例,cuDNN将研究人员创建和优化CUDA代码以提高DL性能的需求抽象出来。至于AMD的同类产品MIOpen,2017年才在ROCm保护伞下发布,目前依据支持并不全面。
所以从这个意义上讲,尽管NVIDIA和AMD的底层硬件都适合DL加速,但NVIDIA GPU最终成为了深度学习的参考实现。
Nvidia曾经有一个非常直观的科普视频(原视频地址:https://www.youtube.com/watch?reload=9&v=-P28LKWTzrI&feature=emb_title&ab_channel=NVIDIA),这里搬运了过来。
Demo GPU vs CPU
正如某些科普文章提到过,GPU之所以快的原因是因为高效的并行计算,对矩阵乘法和卷积具有极大的计算优势。但鲜有对其进行解释,其真正的原因是在于内存带宽,但不一定是并行计算。
首先,CPU是延迟优化的,而GPU是带宽优化的。通常我们会打这样的比方。把CPU比作一辆法拉利,而GPU则为货运卡车。两者的任务是从任意位置A取货,并将这些货物运输到另一个任意位置B。CPU(法拉利)可以在RAM中快速获取一些内存数据(货物),而GPU(货运卡车)执行速度较慢(延迟更高)。然而CPU(法拉利)需要来回多次运输完成工作
( L o c a t i o n A → p i c k u p 2 p a c k a g e s → L o c a t i o n B . . . R e p e a t Location\ A \rightarrow \ pick \ up\ 2\ packages \rightarrow Location\ B\ ...\ Repeat Location A→ pick up 2 packages→Location B ... Repeat)
然而GPU(货运卡车)则可以一次获取更多内存数据进行运输
( L o c a t i o n A → p i c k u p 100 p a c k a g e s → L o c a t i o n B . . . R e p e a t Location\ A\ \rightarrow\ pick\ up\ 100\ packages\ \rightarrow Location\ B\ ...\ Repeat Location A → pick up 100 packages →Location B ...