23.5. 选择服务器和GPU
在 Colab 中打开 Notebook
在 Colab 中打开 Notebook
在 Colab 中打开 Notebook
在 Colab 中打开 Notebook
在 SageMaker Studio Lab 中打开 Notebook

深度学习训练通常需要大量的计算。目前,GPU是深度学习最具成本效益的硬件加速器。特别是,与CPU相比,GPU更便宜,性能更高,通常要高出一个数量级以上。此外,单个服务器可以支持多个GPU,高端服务器最多可支持8个GPU。更典型的是,一个工程工作站最多支持4个GPU,因为热量、散热和电力需求会迅速超出办公楼的承受能力。对于更大规模的部署,云计算(例如,亚马逊的 P3G4 实例)是更实用的解决方案。

23.5.1. 选择服务器

通常不需要购买拥有许多线程的高端CPU,因为大部分计算都在GPU上进行。话虽如此,由于Python中的全局解释器锁(GIL),在拥有4-8个GPU的情况下,CPU的单线程性能可能很重要。在所有条件相同的情况下,这表明核心数较少但时钟频率较高的CPU可能是更经济的选择。例如,在6核4GHz和8核3.5GHz的CPU之间选择时,前者要好得多,即使其总速度较低。一个重要的考虑因素是GPU会消耗大量电力,因此会散发大量热量。这需要非常好的散热和足够大的机箱来容纳GPU。如果可能,请遵循以下指南

  1. 电源。GPU会消耗大量电力。每个设备预算高达350W(检查显卡的*峰值需求*而不是典型需求,因为高效的代码可能会消耗大量能源)。如果您的电源无法满足需求,您会发现您的系统变得不稳定。

  2. 机箱尺寸。GPU很大,辅助电源连接器通常需要额外的空间。此外,大型机箱更易于散热。

  3. GPU散热。如果您有大量GPU,您可能需要投资水冷系统。此外,即使风扇较少,也应选择*公版设计*,因为它们足够薄,可以在设备之间吸入空气。如果您购买多风扇的GPU,它可能太厚,在安装多个GPU时无法获得足够的空气,从而导致热节流。

  4. PCIe插槽。将数据移入和移出GPU(以及在GPU之间交换数据)需要大量带宽。我们推荐使用具有16个通道的PCIe 3.0插槽。如果您安装多个GPU,请务必仔细阅读主板说明,以确保在同时使用多个GPU时16\(\times\)带宽仍然可用,并且您获得的是PCIe 3.0而不是PCIe 2.0用于额外的插槽。某些主板在安装多个GPU后会将带宽降级到8\(\times\)甚至4\(\times\)。这部分是由于CPU提供的PCIe通道数量所致。

简而言之,以下是构建深度学习服务器的一些建议

  • 入门者。购买一个功耗较低的低端GPU(适合深度学习的廉价游戏GPU功耗为150-200W)。如果幸运的话,您当前的计算机支持它。

  • 1个GPU。一个4核的低端CPU就足够了,大多数主板也足够用。目标是至少32 GB DRAM,并投资一个SSD用于本地数据访问。一个600W的电源应该足够了。购买一个带有很多风扇的GPU。

  • 2个GPU。一个4-6核的低端CPU就足够了。目标是64 GB DRAM,并投资一个SSD。对于两个高端GPU,您将需要大约1000W的电源。在主板方面,请确保它们有两个PCIe 3.0 x16插槽。如果可以,请选择在PCIe 3.0 x16插槽之间有两个空闲空间(60mm间距)的主板,以获得额外的空气。在这种情况下,请购买两个带有很多风扇的GPU。

  • 4个GPU。确保您购买一个单线程速度相对较快(即高时钟频率)的CPU。您可能需要一个具有更多PCIe通道的CPU,例如AMD Threadripper。您可能需要相对昂贵的主板才能获得4个PCIe 3.0 x16插槽,因为它们可能需要一个PLX来复用PCIe通道。购买采用公版设计的GPU,这种GPU很窄,可以让空气在GPU之间流通。您需要一个1600–2000W的电源,您办公室的插座可能不支持。这台服务器可能会运行得*又吵又热*。您不会想把它放在您的桌子下面。建议使用128 GB的DRAM。获取一个SSD(1–2 TB NVMe)用于本地存储,以及一堆以RAID配置的硬盘来存储您的数据。

  • 8个GPU。您需要购买一个专用的多GPU服务器机箱,该机箱具有多个冗余电源(例如,2+1,每个电源1600W)。这将需要双路服务器CPU、256 GB ECC DRAM、一个快速网卡(推荐10 GBE),并且您需要检查服务器是否支持GPU的*物理尺寸*。消费级GPU和服务器级GPU(例如,RTX 2080 vs. Tesla V100)之间的气流和布线布局差异很大。这意味着您可能无法在服务器中安装消费级GPU,因为电源线的间隙不足或没有合适的线束(正如其中一位合著者痛苦地发现的那样)。

23.5.2. 选择GPU

目前,AMD和NVIDIA是专用GPU的两个主要制造商。NVIDIA率先进入深度学习领域,并通过CUDA为深度学习框架提供了更好的支持。因此,大多数买家选择NVIDIA GPU。

NVIDIA提供两种类型的GPU,分别面向个人用户(例如,通过GTX和RTX系列)和企业用户(通过其Tesla系列)。这两种类型的GPU提供相当的计算能力。然而,企业用户GPU通常使用(被动)强制散热、更多内存和ECC(纠错)内存。这些GPU更适合数据中心,通常价格是消费级GPU的十倍。

如果您是一家拥有100多台服务器的大公司,您应该考虑NVIDIA Tesla系列,或者使用云中的GPU服务器。对于一个实验室或拥有10多台服务器的中小型公司来说,NVIDIA RTX系列可能是最具成本效益的。您可以购买预配置的Supermicro或Asus机箱的服务器,这些服务器可以有效地容纳4–8个GPU。

GPU供应商通常每一到两年发布新一代产品,例如2017年发布的GTX 1000(Pascal)系列和2019年发布的RTX 2000(Turing)系列。每个系列都提供几种不同的型号,提供不同的性能水平。GPU性能主要是以下三个参数的组合

  1. 计算能力。通常我们关注32位浮点计算能力。16位浮点训练(FP16)也正在成为主流。如果您只对预测感兴趣,您也可以使用8位整数。最新一代的图灵GPU提供4位加速。不幸的是,在撰写本文时,用于训练低精度网络的算法尚未普及。

  2. 内存大小。随着您的模型变得更大或训练期间使用的批量变大,您将需要更多的GPU内存。检查HBM2(高带宽内存)与GDDR6(图形DDR)内存。HBM2更快但贵得多。

  3. 内存带宽。只有当您有足够的内存带宽时,才能充分利用您的计算能力。如果使用GDDR6,请寻找宽内存总线。

对于大多数用户来说,只看计算能力就足够了。请注意,许多GPU提供不同类型的加速。例如,NVIDIA的TensorCores将一部分算子的速度提高了5\(\times\)。请确保您的库支持这一点。GPU内存不应少于4 GB(8 GB要好得多)。尽量避免将GPU也用于显示GUI(使用内置显卡代替)。如果无法避免,为了安全起见,请额外增加2 GB的RAM。

图 23.5.1比较了各种GTX 900、GTX 1000和RTX 2000系列型号的32位浮点计算能力和价格。建议的价格是撰写本文时在维基百科上找到的价格。

../_images/flopsvsprice.svg

图 23.5.1 浮点计算能力和价格比较。

我们可以看到一些情况

  1. 在每个系列中,价格和性能大致成正比。Titan型号因其更大容量的GPU内存而享有显著的溢价。然而,较新的型号提供了更好的成本效益,这可以从980 Ti和1080 Ti的比较中看出。RTX 2000系列的价格似乎没有太大改善。然而,这是因为它们提供了远优的低精度性能(FP16、INT8和INT4)。

  2. GTX 1000系列的性价比大约是900系列的两倍。

  3. 对于RTX 2000系列,性能(以GFLOPs为单位)是价格的*仿射*函数。

../_images/wattvsprice.svg

图 23.5.2 浮点计算能力和能耗。

图 23.5.2显示了能耗如何与计算量大致呈线性关系。其次,后代产品效率更高。这似乎与RTX 2000系列的图表相矛盾。然而,这是因为TensorCores消耗了不成比例的大量能量。

23.5.3. 小结

  • 在构建服务器时,请注意电源、PCIe总线通道、CPU单线程速度和散热。

  • 如果可能,您应该购买最新一代的GPU。

  • 对于大规模部署,请使用云。

  • 高密度服务器可能不兼容所有GPU。购买前请检查机械和散热规格。

  • 使用FP16或更低精度以获得高效率。

讨论