如何挑选深度学习 GPU?

深度学习是一个对计算有着大量需求的领域,从一定程度上来说,GPU的选择将从根本上决定深度学习的体验。因此,选择购买合适的GPU是一项非常重要的决策。那么2020年,如何选择合适的GPU呢?这篇文章整合了网络上现有的GPU选择标准和评测信息,希望能作为你的购买决策的参考。

1 是什么使一个GPU比另一个GPU更快?

有一些可靠的性能指标可以作为人们的经验判断。以下是针对不同深度学习架构的一些优先准则:


Convolutional
networks and Transformers:
 Tensor Cores > FLOPs >
Memory Bandwidth > 16-bit capability



Recurrent
networks: 
Memory Bandwidth > 16-bit capability >
Tensor Cores > FLOPs


2 如何选择NVIDIA/AMD/Google

NVIDIA的标准库使在CUDA中建立第一个深度学习库变得非常容易。早期的优势加上NVIDIA强大的社区支持意味着如果使用NVIDIA GPU,则在出现问题时可以轻松得到支持。但是NVIDIA现在政策使得只有Tesla GPU能在数据中心使用CUDA,而GTX或RTX则不允许,而Tesla与GTX和RTX相比并没有真正的优势,价格却高达10倍。

AMD功能强大,但缺少足够的支持。AMD GPU具有16位计算能力,但是跟NVIDIA GPU的Tensor内核相比仍然有差距。

Google
TPU具备很高的成本效益。由于TPU具有复杂的并行基础结构,因此如果使用多个云TPU(相当于4个GPU),TPU将比GPU具有更大的速度优势。因此,就目前来看,TPU更适合用于训练卷积神经网络。


3 多GPU并行加速

卷积网络和循环网络非常容易并行,尤其是在仅使用一台计算机或4个GPU的情况下。TensorFlow和PyTorch也都非常适合并行递归。但是,包括transformer在内的全连接网络通常在数据并行性方面性能较差,因此需要更高级的算法来加速。如果在多个GPU上运行,应该先尝试在1个GPU上运行,比较两者速度。由于单个GPU几乎可以完成所有任务,因此,在购买多个GPU时,更好的并行性(如PCIe通道数)的质量并不是那么重要

4 性能评测

1)来自Tim Dettmers的成本效益评测

[1]

https://timdettmers.com/2019/04/03/which-gpu-for-deep-learning/

卷积网络(CNN),递归网络(RNN)和transformer的归一化性能/成本数(越高越好)。RTX 2060的成本效率是Tesla V100的5倍以上。对于长度小于100的短序列,Word RNN表示biLSTM。使用PyTorch 1.0.1和CUDA 10进行基准测试。

从这些数据可以看出,RTX 2060比RTX 2070,RTX 2080或RTX 2080 Ti具有更高的成本效益。原因是使用Tensor Cores进行16位计算的能力比仅仅拥有更多Tensor Cores内核要有价值得多。

2)来自Lambda的评测

[2,3]

https://lambdalabs.com/blog/best-gpu-tensorflow-2080-ti-vs-v100-vs-titan-v-vs-1080-ti-benchmark/https://lambdalabs.com/blog/choosing-a-gpu-for-deep-learning/

GPU平均加速/系统总成本


GPU性能,以每秒处理的图像为单位


 以 Quadro RTX
8000 为基准的针对Quadro RTX 8000的图像模型训练吞吐量

3)
来自知乎@Aero的「在线」GPU评测

[4]

https://www.zhihu.com/question/299434830/answer/1010987691

大家用的最多的可能是Google Colab,毕竟免费,甚至能选TPU

不过现在出会员了:

免费版主要是K80,有点弱,可以跑比较简单的模型,有概率分到T4,有欧皇能分到P100。

付费就能确保是T4或者P100,一个月10美元,说是仅限美国。

Colab毕竟是Google的,那么你首先要能连得上google,并且得网络稳定,要是掉线很可能要重新训练,综合来看国内使用体验不太好。

下一个是百度AI Studio


免费送V100时长非常良心,以前很多人自己装tensorflow用,但是现在已经不允许了,实测tensorflow pytorch都不给装,必须得用paddlepaddle。那么习惯paddlepaddle的用户完全可以选这个,其他人不适合。

不过似乎GPU不太够,白天一直提醒高峰期,真到了22点后才有。

国外的还有vast.ai:



5 建议

1)来自Tim
Dettmers的建议

  • 总体最佳GPU:RTX 2070 GPU
  • 避免使用 :任何Tesla;任何Quadro;任何Founders
    Edition;Titan RTX,Titan V,Titan XP
  • 高效但价格昂贵:RTX 2070
  • 高效且廉价:RTX 2060,GTX 1060(6GB)
  • 价格实惠:GTX 1060(6GB)
  • 价格低廉:GTX 1050 Ti(4GB)。或者:CPU(原型设计)+
    AWS / TPU(培训);或Colab。
  • 适合Kaggle比赛:RTX 2070
  • 适合计算机视觉研究人员:GTX 2080 Ti,如果训练非常大的网络,建议使用RTX Titans

2)来自Lambda的建议

截至2020年2月,以下GPU可以训练所有SOTA语言和图像模型:

  • RTX 8000:48 GB VRAM
  • RTX 6000:24 GB VRAM
  • Titan RTX:24 GB VRAM

具体建议:

  • RTX 2060(6 GB):适合业余时间探索深度学习。
  • RTX 2070或2080(8 GB):适合深度学习专业研究者,且预算为4-6k
  • RTX 2080 Ti(11 GB):适合深度学习专业研究者,而您的GPU预算约为8-9k。RTX 2080
    Ti比RTX 2080快40%。
  • Titan RTX和Quadro RTX 6000(24 GB):适合广泛使用SOTA型号,但没有用于RTX 8000足够预算的研究者。
  • Quadro RTX 8000(48 GB):价格相对较高,但性能卓越,适合未来投资。

如何挑选深度学习 GPU?的更多相关文章

  1. 教你如何挑选深度学习GPU【转】

    本文转载自:https://blog.csdn.net/qq_38906523/article/details/78730158 即将进入 2018 年,随着硬件的更新换代,越来越多的机器学习从业者又 ...

  2. 深度学习 GPU环境 Ubuntu 16.04 + Nvidia GTX 1080 + Python 3.6 + CUDA 9.0 + cuDNN 7.1 + TensorFlow 1.6 环境配置

    本节详细说明一下深度学习环境配置,Ubuntu 16.04 + Nvidia GTX 1080 + Python 3.6 + CUDA 9.0 + cuDNN 7.1 + TensorFlow 1.6 ...

  3. 深度学习GPU集群管理软件 OpenPAI 简介

    OpenPAI:大规模人工智能集群管理平台 2018年5月22日,在微软举办的“新一代人工智能开放科研教育平台暨中国高校人工智能科研教育高峰论坛”上,微软亚洲研究院宣布,携手北京大学.中国科学技术大学 ...

  4. 使用colab运行深度学习gpu应用(Mask R-CNN)实践

    1,目的 Google Colaboratory(https://colab.research.google.com)是谷歌开放的一款研究工具,主要用于机器学习的开发和研究.这款工具现在可以免费使用, ...

  5. 免费深度学习GPU,Google Yes!

    深度学习越加火热,但是,很多实验室并没有配套的硬件设备,让贫穷的学生党头大 经过网上大量的搜罗,我整理了适合学生党的深度学习解决方案.利用Colab + Kaggle两大免费的GPU环境,让深度学习变 ...

  6. GitHub 上 57 款最流行的开源深度学习项目

    转载:https://www.oschina.net/news/79500/57-most-popular-deep-learning-project-at-github GitHub 上 57 款最 ...

  7. 学习笔记︱Nvidia DIGITS网页版深度学习框架——深度学习版SPSS

    DIGITS: Deep Learning GPU Training System1,是由英伟达(NVIDIA)公司开发的第一个交互式深度学习GPU训练系统.目的在于整合现有的Deep Learnin ...

  8. Github上Stars最多的53个深度学习项目,TensorFlow遥遥领先

    原文:https://github.com/aymericdamien/TopDeepLearning 项目名称 Stars 项目介绍 TensorFlow 29622 使用数据流图计算可扩展机器学习 ...

  9. GitHub 上 57 款最流行的开源深度学习项目【转】

    GitHub 上 57 款最流行的开源深度学习项目[转] 2017-02-19 20:09 334人阅读 评论(0) 收藏 举报 分类: deeplearning(28) from: https:// ...

随机推荐

  1. 1.6.5- HTML之自定义列表

    定义列表常用于对术语或名词进行解释和描述,定义列表的列表项前没有任何项目符号,其基本语法如下: <dl> <dt>定义标题</dt> <dd>定义描述, ...

  2. hdu2846 字典树(带id的)

    题意:      给你一些模式串,然后给你一些提问,每个提问是给你一个串,问你这个串在上 面的模式串中出现的次数. 思路:       一开始想到hash,但是因为用的是map,所以超时了,map的操 ...

  3. 洛谷P1424 小鱼的航程(改进版)

    题目背景 原来的题目太简单,现改进让小鱼周末也休息,请已经做过重做该题. 题目描述 有一只小鱼,它上午游泳150公里,下午游泳100公里,晚上和周末都休息(实行双休日),假设从周x(1<=x&l ...

  4. POJ3687拓扑排序+贪心

    题意:       给你n个求,他们的重量是1-n(并不是说1号求的重量是1...),然后给你m组关系a,b,表示a的重量小于b的重量,然后让你输出满足要求的前提下每个球的重量,要求字典序最小. 思路 ...

  5. C++ Socket 简单封装

    以下代码一部分来自于<网络多人游戏架构与编程>, 其它的都是我瞎写的. 备忘. 一个简单的Socket封装,没有做什么高级的操作(比如IO完成端口等等). 1 #pragma once 2 ...

  6. Day006 方法的定义和调用

    方法的定义 Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下语法: 方法包含一个方法头和一个方法体.下面是一个方法的所有部分: 修饰符:修饰符,这 ...

  7. gitlab + php自动部署

    功能简介 本地往服务器推送代码之后,触发web钩子,服务器拉取刚刚推送的代码 步骤 1.在gitlab后台配置钩子 项目->编辑项目->Web钩子->新增钩子 2.在服务器端为www ...

  8. git的一些常用命令总结

    1.拉取代码Git clone  "链接名称" 2.新建分支 git checkout -b "分支名称" 3.提交代码步骤 (1)Git status查看项目 ...

  9. SAP ABAP ALV 颜色设置(两个ALV函数例子) 列 行 单元格

    @[TOC](设置ALV颜色)# 前言淦! 要求花花绿绿的ALV ,那就淦他! 需要的参数和对应颜色放在最后.稍微改改就能用. 介绍两个常用的ALV函数实现1.REUSE_ALV_GRID_DISPL ...

  10. Catalan数以及相关性质的证明

    \(Catalan\) 数相关证明 Mushroom 2021-5-14 \(Catalan\)数的定义 给定一个凸\(n + 1\)边形, 通过在内部不相交的对角线,把它划分成为三角形的组合,不同的 ...