深度学习训练通常需要大量的计算。GPU是目前深度学习性价比最高的硬件加速器。特别是,与 CPU 相比,GPU 更便宜且性能更高,通常高出一个数量级以上。此外,单个服务器可以支持多个 GPU,高端服务器最多支持 8 个。更典型的数字是一个工程工作站最多 4 个 GPU,因为热量、冷却和电力需求迅速升级,超出了办公大楼的支持能力。对于更大规模的部署,云计算(例如,Amazon 的 P3和 G4 实例)是更实用的解决方案。
23.5.1。选择服务器
通常不需要购买具有许多线程的高端 CPU,因为大部分计算都发生在 GPU 上。也就是说,由于 Python 中的全局解释器锁 (GIL),在我们拥有 4-8 个 GPU 的情况下,CPU 的单线程性能可能很重要。在所有条件相同的情况下,这表明内核数量较少但时钟频率较高的 CPU 可能是更经济的选择。例如,在 6 核 4 GHz 和 8 核 3.5 GHz CPU 之间进行选择时,前者更可取,尽管其总速度较低。一个重要的考虑因素是 GPU 使用大量功率,因此会散发大量热量。这需要非常好的散热和足够大的机箱来使用 GPU。如果可能,请遵循以下准则:
-
电源。GPU 使用大量电力。每个设备最高 350W 的预算(检查显卡的峰值需求而不是典型需求,因为高效代码会消耗大量能源)。如果您的电源不能满足需求,您会发现您的系统变得不稳定。
-
机箱尺寸。GPU 很大,辅助电源连接器通常需要额外的空间。另外,大机箱更容易散热。
-
显卡散热。如果您有大量 GPU,则可能需要投资水冷。此外,即使风扇较少,也要以参考设计为目标,因为它们足够薄,可以在设备之间引入空气。如果您购买多风扇 GPU,安装多个 GPU 时它可能太厚而无法获得足够的空气,并且您会遇到热节流问题。
-
PCIe 插槽。将数据移入和移出 GPU(以及在 GPU 之间交换数据)需要大量带宽。我们推荐 16 通道的 PCIe 3.0 插槽。如果安装多个 GPU,请务必仔细阅读主板说明以确保 16× 当同时使用多个 GPU 并且您获得 PCIe 3.0 而不是 PCIe 2.0 用于额外插槽时,带宽仍然可用。一些主板降级到8×甚至4×安装多个 GPU 时的带宽。这部分是由于 CPU 提供的 PCIe 通道数量。
简而言之,这里有一些构建深度学习服务器的建议:
-
初学者。购买低功耗的低端 GPU(适合深度学习的廉价游戏 GPU 使用 150-200W)。如果幸运的话,您当前的计算机将支持它。
-
1 个显卡。具有 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 插槽之间有两个可用空间(60 毫米间距)的主板,以提供额外的空气。在这种情况下,购买两个风扇很多的 GPU。
-
4 个 GPU。确保购买单线程速度相对较快(即时钟频率较高)的 CPU。您可能需要具有更多 PCIe 通道的 CPU,例如 AMD Threadripper。您可能需要相对昂贵的主板来获得 4 个 PCIe 3.0 x16 插槽,因为它们可能需要一个 PLX 来复用 PCIe 通道。购买具有参考设计的狭窄 GPU,让空气进入 GPU 之间。您需要一个 1600–2000W 的电源,而您办公室的插座可能不支持。该服务器可能会运行得很吵很热。你不希望它在你的办公桌下。建议使用 128 GB 的 DRAM。获取用于本地存储的 SSD(1–2 TB NVMe)和一组 RAID 配置的硬盘来存储您的数据。
-
8 个 GPU。您需要购买带有多个冗余电源的专用多 GPU 服务器机箱(例如,每个电源 1600W 的 2+1)。这将需要双插槽服务器 CPU、256 GB ECC DRAM、快速网卡(推荐 10 GBE),并且您需要检查服务器是否支持GPU 的物理外形。消费类 GPU 和服务器 GPU 之间的气流和布线布局存在显着差异(例如,RTX 2080 与 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(帕斯卡)系列和 2019 年发布的 RTX 2000(图灵)系列。每个系列都提供几种不同的型号,提供不同的性能水平。GPU 性能主要是以下三个参数的组合:
-
计算能力。通常我们寻找 32 位浮点计算能力。16 位浮点训练(FP16)也正在进入主流。如果你只对预测感兴趣,你也可以使用 8 位整数。最新一代的图灵 GPU 提供 4 位加速。不幸的是,目前训练低精度网络的算法还没有普及。
-
内存大小。随着您的模型变大或训练期间使用的批次变大,您将需要更多 GPU 内存。检查 HBM2(高带宽内存)与 GDDR6(图形 DDR)内存。HBM2 更快但更昂贵。
-
内存带宽。只有当您有足够的内存带宽时,您才能充分利用您的计算能力。如果使用 GDDR6,请寻找宽内存总线。
对于大多数用户来说,看算力就够了。请注意,许多 GPU 提供不同类型的加速。例如,NVIDIA 的 TensorCores 将一部分算子加速了 5×. 确保您的图书馆支持这一点。GPU 内存应不少于 4 GB(8 GB 更好)。尽量避免将 GPU 也用于显示 GUI(改为使用内置图形)。如果无法避免,请添加额外的 2 GB RAM 以确保安全。
图 23.5.1比较了各种 GTX 900、GTX 1000 和 RTX 2000 系列型号的 32 位浮点计算能力和价格。价格是在维基百科上找到的建议价格。