GPU选购指南:训练ML模型,我必须买RTX3080吗?( 五 )


稀疏网络训练Ampere 可以以稠密矩阵的速度进行细粒度结构自动稀疏矩阵乘法 。它的工作原理是,如果有一个矩阵,你把它分割成 4 个元素,现在,稀疏矩阵张量核特性允许这 4 个元素中的 2 个为零 。这就带来了 2 倍的速度提升,因为矩阵乘法的带宽需求减半了 。
我以前研究过稀疏网络训练 。对于我的工作,有一种批评是“你减少了网络所需的FLOPS,但却没能带来速度的提升,因为GPU 不能做快速稀疏矩阵乘法 。”那好吧,加上张量核的稀疏矩阵乘法特性,我的算法,或者其他的稀疏训练算法,现在在实际的训练中提供了2 倍的速度提升 。
虽然这个特性还在实验阶段,训练稀疏网络还不是很普遍,但GPU 拥有这个特性意味着你已经为未来的稀疏训练做好了准备 。
低精度计算在我之前的工作中,我已经展示过,新数据类型可以提高低精度反向传播的稳定性 。目前,如果你想要实现16 位浮点数(FP16)的稳定反向传播,主要问题是普通FP16 数据类型只支持[-65504,65504] 区间内的数值 。如果梯度超出这个范围,就会变成NaN 值 。为了防止在FP16 训练期间发生这种情况,我们通常会进行损失缩放,即在反向传播之前将损失乘以一个小数值,以防止这种梯度爆炸 。
Brain Float 16 格式(BF16)使用更多的位作为指数,这样,其可能的数值范围与 FP32 相同:[-3*10^38,3*10^38] 。BF16 的精度较低,但梯度精度对学习来说并不是那么重要 。所以 BF16 所做的就是你不再需要做任何损失缩放或者担心梯度迅速膨胀 。因此,我们可以看到使用 BF16 格式时训练稳定性的提高,只是精度稍有降低 。
这意味着:使用 BF16 精度,训练可能比 FP16 精度更稳定,而提供了同等的速度提升 。使用 TF32 精度,可以得到接近 FP32 的稳定性,接近 FP16 的速度提升 。好的方面是,要使用这些数据类型,只需将 FP32 替换为 TF32,将 FP16 替换为 BF16——不需要修改代码!
不过,总的来说,这些新数据类型可以被视为懒惰数据类型,因为通过一些额外的编程工作(适当的损失缩放、初始化、归一化、使用 Apex),使用旧数据类型就可以获得所有这些好处 。因此,这些数据类型并不提供速度提升,而是提高了低精度训练的易用性 。
新的风扇设计 / 散热问题RTX 30 系列新的风扇设计包括一个鼓风扇和一个推挽式风扇 。设计很巧妙,如果你的 GPU 之间有间隙,也会非常有效 。然而,如果你把 GPU 堆在一起,就不清楚它们表现如何了 。鼓风扇将能够通过远离其他图形处理器的支架排气,但也没法说那多有效,因为鼓风扇的设计和以前不同 。在一个 4 PCIe 插槽设置中,如果你想购买 1 到 2 个 GPU,那应该没问题 。然而,如果你打算同时使用 3 到 4 个 RTX 30 GPU,那么我需要等散热性能报告出来,了解下是否需要不同的 GPU 冷却器、PCIe 扩展器或其他解决方案 。到时候我会更新这篇博文 。
为了克服散热问题,水冷在任何情况下都可以提供一个解决方案 。许多厂商为 RTX 3080/RTX 3090 卡提供水冷模块,即使在 4x GPU 设置中也能保持低温 。如果你想运行一个 4x GPU 设置,可以留心下一体化水冷却解决方案,因为在大多数桌面情况下散热器都很难分散开 。
冷却问题的另一个解决方案是购买 PCIe 扩展器,并将 GPU 在机箱内分散开 。这非常有效,华盛顿大学的其他博士生和我使用这个设置都非常成功 。那看起来不漂亮,但它可以使你的 GPU 保持凉爽!即使你没有足够的空间来将 GPU 分散开,它还是可以帮到你 。例如,如果你可以在一个台式电脑的机箱中找到空间,那么你或许就可以购买标准的 3 槽宽 RTX 3090,并在机箱中使用 PCIe 扩展器来把它们分散开 。这样,你就可以通过一个简单的解决方案解决了 4x RTX 3090 设置中的空间问题和冷却问题 。

GPU选购指南:训练ML模型,我必须买RTX3080吗?

文章插图
 
3 插槽设计和电量问题RTX 3090 是一个 3 插槽 GPU,所以你不能在 4x 设置中使用 NVIDIA 的默认风扇设计 。这是合理的,因为它运行在 350W TDP 下,在多 GPU 2 插槽设置中很难降温 。RTX 3080 运行在 320W TDP 下只稍好一点,而冷却一个 4x RTX 3080 设置也会非常困难 。
在 4x RTX 3090 设置下为一个 4x350w = 1400W 系统供电也很困难 。1600W 的供电单元(PSU)很容易获得,但只有 200W 是给 CPU 供电,主板用电可能太紧 。只有在元件获得充分利用的情况下,才会达到最大电量,而在深度学习中,CPU 通常只处于弱负载状态 。这样,一个 1600W 的 PSU 就可以很好地为一个 4x RTX 3080 构建供电,但是对于一个 4x RTX 3090 构建,最好是找一个高瓦数的 PSU(+1700W) 。目前,在台式电脑市场上似乎没有一个 PSU 超过 1600W 。服务器或加密货币挖矿 PSU 可能可以解决这个问题,但可能外形奇怪 。


推荐阅读