如何选择 GPU 搭建深度学习机器

深度学习与 GPU 介绍

深度学习(DL)是机器学习(ML)的一个分支,深度学习使用神经网络来解决问题。神经网络的优点之一是自行寻找数据(特征)模式,这和以前告诉算法需要找什么不一样。但是,通常这意味着该模型从空白状态开始(除非使用迁移学习)。为了从头捕捉数据的本质/模式,神经网络需要处理大量信息,通常有两种处理方式:使用 CPU 或 GPU。计算机的主要计算模块是中央处理器(CPU),CPU 的设计目的是在少量数据上执行快速计算。在 CPU 上添加数倍的数字非常快,但是在大量数据上进行计算就会很慢。如,几十、几百或几千次矩阵乘法。在表象背后,深度学习多由矩阵乘法之类的操作组成。有趣的是,3D 电子游戏同样依赖这些操作来渲染那些美丽的风景。因此,GPU 的作用被开发出来,它们可以使用数千个核心处理大量并行计算。此外,它们还有大量内存带宽处理数据。这使得 GPU 成为进行 DL 的完美硬件。总之,尽管使用 CPU 进行深度学习从技术上是可行的,想获得真实的结果就应该使用 GPU。

GPU 选择的性能指标

选择一个强大的图形处理器最重要的理由是节省时间和开发原型模型。网络训练速度加快,反馈时间就会缩短。这样就可以更轻松地将模型假设和结果之间建立联系。深度学习相关的主要 GPU 性能指标如下:

  • 处理能力:表示 GPU 处理数据的速度,可以将其量化为 CUDA 核心数量和每一个核心的频率的乘积。
  • 显存带宽:GPU 处理大量数据的能力,是最重要的性能指标。
  • 显存大小:一次性加载到显卡上的数据量。运行计算机视觉模型时,显存越大越好,特别是如果想参加 CV Kaggle 竞赛的话。对于自然语言处理和数据分类,显存没有那么重要。

GPU 显存大小选择原则

  • 追求最高水准的研究:>=11 GB
  • 探索有趣架构的研究:>=8 GB
  • 任何其他研究:8 GB
  • CV Kaggle 竞赛:4~8 GB
  • 初创企业:8 GB(不过要根据特定应用领域情况来确定模型规模)

选择 Nvidia 还是 AMD 平台

英伟达已经关注深度学习有一段时间,并取得了领先优势。他们的 CUDA 工具包具备扎实的技术水平,可用于所有主要的深度学习框架 ——TensorFlow、PyTorch、Caffe、CNTK 等。但截至目前,这些深度学习框架都不能在 OpenCL(运行于 AMD GPU)上工作。由于市面上的 AMD GPU 便宜得多,希望这些框架对 OpenCL 的支持能尽快实现。而且,一些 AMD 卡还支持半精度计算,从而能将性能和显存大小加倍。不过 AMD 已经发布了 ROCm 平台提供深度学习支持,它同样适用于主流深度学习库(如 PyTorch、TensorFlow、MxNet 和 CNTK)。目前,ROCm 仍然在不断开发中,如果只是希望 GPU 可以顺利运行的普通深度学习用户,建议还是选择英伟达平台。

Nvidia 显卡选择

入门级别的 GTX 10 系列显卡(2017 年上市)

  • GTX 1050 Ti:显存 4G,显存带宽 112 GB/s,768 个 CUDA 核心 @ 1392 MHz,这是一款入门级 GPU,如果不确定是否要做深度学习,那么选择这款不用花费太多钱就可以体验一下。
  • GTX 1060:显存 6G,显存带宽 216 GB/s,1280 个 CUDA 核心 @ 1708 MHz,相对来说价格比较便宜,但是 6GB 显存对于深度学习任务可能不够用。如果要做计算机视觉,那么这可能是最低配置。如果做 NLP 和分类数据模型,这款还可以。
  • GTX 1070: 显存 8G,显存带宽 256 GB/s,1920 个 CUDA 核心 @ 1683 MHz,现在很难买到这款 GPU 了,因为它们主要用于虚拟货币挖矿。它的显存配得上这个价位,就是速度有些慢。如果能用较便宜的价格买到一两个二手的非矿机卡,那就建议下手。
  • GTX 1070 Ti:显存 8G,显存带宽 256 GB/s,2432 个 CUDA 核心 @ 1683 MHz,如果觉得 GTX 1080 超出了预算,1070 Ti 可以提供同样大的 8GB 显存,以及大约 80% 的性能。
  • GTX 1080: 显存 8G,显存带宽 320 GB/s,2560 个 CUDA 核心 @ 1733 MHz,作为目前英伟达产品线里的中高端显卡,8GB 的内存对于计算机视觉任务来说够用了。大多数 Kaggle 上的人都在使用这款显卡。
  • GTX 1080 Ti:显存 11G,显存带宽 484 GB/s,3584 个 CUDA 核心 @ 1582 MHz,拥有大容量显存和高吞吐量,如果资金允许,它是一个很好的选择,GTX 1080 Ti 可以完成计算机视觉任务,并在 Kaggle 竞赛中保持强势。
  • Titan XP:显存 12G,显存带宽 547.7 GB/s,3840 个 CUDA 核心 @ 1480 MHz,Titan XP 的性价比不高,一块 Titan XP 的价格可以买到两块 GTX 1080,而且意味着更强大的算力和 16GB 的显存。

入门级别的 RTX 20 系列显卡(2019 年上市)

nvidia-gpu-2019

专业级别的 Tesla 系列显卡(2019 年上市)

英伟达还拥有一个面向专业市场的 Tesla GPU 产品线,其中包括 P40、P4、V100 型号。这类型的显卡价格十分昂贵,一般很少能够接触到,但 Amazon Web Services、谷歌云平台或其他云供应商正在使用这些 GPU。

nvidia-gpu-pro

一句话推荐总结

在这里,将给出不同预算区间下 GTX 10 系列显卡的最佳选择(以下显卡价格随着时间迁移会大幅波动,价格参考自 2018 年)。

  • 2000 元以下:在这个区间内,GTX 1050 Ti 是最佳选择,但如果真的想做深度学习,请加钱上 GTX 1060。
  • 2000-2600 元区间:GTX 1060 可以让你入门深度学习,如果可以找到成色不错的二手 GTX 1070 那就更好了。
  • 2600-4600 元区间:可选 GTX 1080 或 GTX 1070 Ti,如果真的需要 SLI 的话或许两块 GTX 1060 也是可以的,但请注意 6GB 显存可能会不够用。
  • 4600-6000 元区间:首推 GTX 1080 Ti,如果需要双显卡 SLI,请购买两块 GTX 1070 或两块 GTX 1070 Ti。

2019 年 Nvidia 新一代的 RTX 20 系列显卡已经上市,本着买新不买旧的原则,预算足够的前提下建议选择 RTX 2070、RTX 2080、RTX 2080 Ti。一般来说,有两种主要的选择策略是有意义的:第一,使用 RTX 20 系列 GPU 进行快速升级;第二,使用便宜的 GTX 10 系列 GPU 并在 RTX Titan 可用时进行升级。如果性能不太重要,或者只是不需要性能,例如 Kaggle、初创公司、原型开发或者学习深度学习,那么可以从廉价的 GTX 10 系列中受益,如果选择 GTX 10 系列要注意 GPU 的显存大小是否满足实际使用的要求。

深度学习常用工具

  • gpu driver:显卡驱动
  • cuda:GPU 上的并行计算平台和模型
  • pytorch:一个基于 Python 语言的深度学习框架
  • cudnn:相比标准的 cuda,它在一些常用的神经网络操作上进行了性能的优化
  • anaconda:一个开源的 Python 发行版本,其包含了 conda、python 等 180 多个科学包及其依赖项
  • tensorflow:一个基于数据流编程的符号数学系统,被广泛应用于各类机器学习算法的编程实现
  • keras:一个基于 Python 的深度学习库,提供了高层神经网络 API,后端可以选择 Tensorflow、Theano 以及 CNTK

参考文章