测试数据

使用 1-4 个 GPU 的 TensorFlow 性能——RTX Titan、2080Ti、2080、2070、GTX 1660Ti、1070、1080Ti 和 Titan V

2021-10-19 12:00:43 gx 20


使用 1-4 个 GPU 的 TensorFlow 性能——RTX Titan、2080Ti、2080、2070、GTX 1660Ti、1070、1080Ti 和 Titan V

Donald Kinghorn 博士于 2019 年 3 月 14 日撰写



目录:
  1. 介绍

  2. 测试系统

    • 硬件

    • 软件

  3. 具有 1-4 个 NVIDIA RTX 和 GTX GPU 的 TensorFlow 多 GPU 性能

    • CNN(fp32、fp16)和 Big LSTM 作业运行 GPU 的批量大小

  4. TensorFlow CNN:ResNet-50

    • [ResNet-50 fp32] TensorFlow,使用 1-4 个 NVIDIA RTX 和 GTX GPU 的训练性能(图像/秒)

    • [ResNet-50 fp16] TensorFlow,使用 1-4 个 NVIDIA RTX 和 GTX GPU 的训练性能(图像/秒)

  5. TensorFlow LSTM:Big-LSTM 10 亿字数据集

    • [Big LSTM] TensorFlow,使用 1-4 个 NVIDIA RTX 和 GTX GPU 的训练性能(字/秒)


介绍

这篇文章是我在过去几个月中所做的大部分 GPU 测试更新和扩展我正在使用当前(截至本文发布日期)基于 NVIDIA NGC 构建的 TensorFlow,这是最新的显示驱动程序,我有多达 4 个 GPU(包括 NVLINK)的结果,其中有几张卡正在测试中。这是我一直承诺要做的事情!


测试系统

硬件

  • Puget Systems Peak Single(我使用了一个测试台系统,其中包含我们通常在为机器学习配置的 Peak Single 中使用的组件)

  • 英特尔至强-W 2175 14 核

  • 128GB 内存

  • 2TB 英特尔 660p NVMe M.2

  • RTX 泰坦 (1-2)、2080Ti (1-4)、2080 (1-4)、2070 (1-4)

  • GTX 1660Ti (1-2)、1080Ti (1-4)

  • 泰坦 V (1-2)

软件

有关如何在我的工作站上配置 Docker/NVIDIA-Docker 的详细信息,请查看以下帖子以及它包含到该系列帖子其余部分的链接。

如何在您的工作站上设置 NVIDIA Docker 和 NGC 注册表 - 第 5 部分 Docker 性能和资源调优


具有 1-4 个 NVIDIA RTX 和 GTX GPU 的 TensorFlow 多 GPU 性能

这是使用上述更新和配置的所有全新测试。希望它能为您提供工作站配置中使用 TensorFlow 的多 GPU 性能的比较快照。

CNN(fp32、fp16)和 Big LSTM 作业运行 GPU 的批量大小

批量大小确实会影响性能,并且更大的尺寸通常更好。批量大小受 GPU 上可用内存量的限制。使用了不会出现“内存不足”错误的“合理”值。多 GPU 作业使用与单个 GPU 作业相同的批量大小设置,因为它们是按进程设置的。这意味着“有效”批量大小是批量大小的倍数,因为作业是“数据并行”。不同卡片和作业类型的批量大小信息如下表所示。


CNN [ResNet-50] fp32、fp16 和 RNN [Big LSTM] 测试 GPU 的作业批次大小

图形处理器ResNet-50 FP32
批量大小
RedNet-50 FP16(张量核)
批量大小
大 LSTM
批量大小
RTX Titan192384640
RTX 2080ti64128448
RTX 208064128256
RTX 207064128256
GTX 1660ti3264128
Titan V64128448
GTX 1080ti64不适用448
GTX 107064不适用256

TensorFlow CNN:ResNet-50

Docker 容器镜像tensorflow:19.02-py3来自 NGC,

docker run --runtime=nvidia --rm -it -v $HOME/projects:/projects nvcr.io/nvidia/tensorflow:19.02-py3

用于启动作业的示例命令行,

# For a single GPUpython resnet.py--layers=50--batch_size=64--precision=fp32# For multi-GPU's mpiexec --allow-run-as-root -np 2 python resnet.py--layers=50--batch_size=64--precision=fp32

笔记:

  • 设置--precision=fp16意味着“使用张量核心”。

  • --batch_size= 批量大小会有所不同,以利用 GPU 上的可用内存。

  • 此版本的 CNN docker图像中的多 GPU 使用“Horovod”进行并行执行。这意味着它正在使用 MPI,尤其是在容器映像中使用OpenMPI在我看来,图表中 1、2 和 4 个 GPU 的数字显示了与 horovod 的非常好的并行缩放!

[ResNet-50 fp32] TensorFlow,使用 1-4 个 NVIDIA RTX 和 GTX GPU 的训练性能(图像/秒)

图片关键词

[ResNet-50 fp16] TensorFlow,使用 1-4 个 NVIDIA RTX 和 GTX GPU 的训练性能(图像/秒)

图片关键词

上面的图表大多不言自明。对于这些作业要注意的一件事是,使用 NVLINK 的点对点通信优势的影响很小。LSTM 作业运行不会出现这种情况。


TensorFlow LSTM:Big-LSTM 10 亿字数据集

Docker 容器镜像tensorflow:19.02-py3来自 NGC,

docker run --runtime=nvidia --rm -it -v $HOME/projects:/projects nvcr.io/nvidia/tensorflow:19.02-py3

示例作业命令行,

python single_lm_train.py --mode=train --logdir=./logs --num_gpus=2 --datadir=./data/ 1-billion-word-language-modeling-benchmark-r13output/ \--hpconfig run_profiler=False,max_time=240,num_steps=20,num_shards=8,num_layers=2,\learning_rate=0.2,max_grad_norm=1,keep_prob=0.9,emb_size=1024,projected_size=1024,\state_size=8192,num_sampled=8192,batch_size=448

笔记:

  • --num_gpus=并且batch_size=是针对不同作业运行更改的唯一参数。

[Big LSTM] TensorFlow,使用 1-4 个 NVIDIA RTX 和 GTX GPU 的训练性能(字/秒)


图片关键词

笔记:

  • 批处理大小和 GPU 到 GPU(点对点)通信对这种循环神经网络的性能有显着影响。高端 GPU 的优势在于计算核心数量增加,数据和指令的存储空间更大,并且可以使用高性能 NVLINK 进行通信。

  • NVLINK 显着提高了性能。当使用 2 个 NVLINK 对和 4 个 GPU 时,这种性能改进更加明显。我对此感到有些惊讶,因为我预计它会在“memcpy”上瓶颈到剩余非 NVLINK 连接对之间所需的 CPU 内存空间。


标签:多 GPU、TensorFlow、RTX、GTX、机器学习、NVIDIA



非常好的基准测试,正好在我寻找这种比较的最佳时机。
我唯一有点想念的是这些图表上的 Tesla K40 和 K80。
你能解释一下这两张牌的用途是什么吗?我发现的所有基准都表明,它们比 1080 差,但价格说它应该很棒。我糊涂了。

发表于 2019-03-15 14:35:17

K40 和 K80 在这一点上是非常老的卡。

对于许多 Quadro 和 Tesla 型号,您可以通过型号开头的字母来区分代。

K = Kepler,在 Maxwell、Pascal、Volta 和最新的 Turing(RTX 系列)GPU 之前。

这让它倒退了几代,因此无法真正与现代卡片抗衡。


Tesla 卡通常是专注于计算的 GPU,它没有视频输出,因为它们是为计算工作负载而构建的,而不是实际显示图形。

它们通常与同一代的一些高端 Quadro 卡具有相似的规格,但可能有被动版本,专为在非常专业的机架式机箱中使用而设计。

与 Quadro 卡一样,它们通常比具有相似性能的 GeForce 卡贵得多——但通常具有更多的 VRAM,

并且可能具有其他功能,例如更好的 FP64、ECC 内存等。


发表于 2019-03-15 16:43:16
图片关键词 唐纳德·金霍恩

就像威廉说的:-)

K80 是一款“主力”双 GPU 卡,它和 K40(单 GPU)真正建立了 NVIDIA 计算平台。

仍然有大型集群在运行这些卡,但考虑到较新的卡提供更高的每瓦性能,它们是否值得耗电是值得商榷的。

它们已经过时了。


任何 1070 或 2070 或更高的 GPU 都会快得多。

此外,这是“计算能力”3.5、3.7 Volta 和 Turing 分别为 7.2、7.5。

人们现在正在构建不支持 5.0 和 6.0(Maxwell 和 Pascal)以上版本的软件。

最新的 CUDA 10.1 仍然支持 Kepler (3.5),而 TensorFlow 仍然支持 3.5,但我不希望在大型遗留系统关闭后会出现这种情况。

我将无法使用 NGC docker 图像测试 K40。

NGC 仅支持 6.0 或更高的计算能力!

K40 可与原始 Titan(或 Titan black)相媲美,而 K80 就像 Titan Z。这些都是不错的卡片,但不值得考虑用于任何新版本。

发表于 2019-03-15 18:41:15
图片关键词 马克·约翰斯通

一如既往的出色工作。我很想看到这些图形标准化为 GPU 成本。

发表于 2019-03-16 03:31:25
图片关键词 唐纳德·金霍恩

是的!这看起来很有趣,但它可能很可怕,因为一些 GPU 很贵!

很难决定什么会给你带来最大的价值。

我非常喜欢 2080Ti。

我希望它便宜一点,但这是我推荐的大多数用途。

但是,任何最近的 NVIDIA GPU“大于”1070 都很好!

发表于 2019-03-18 01:36:53
图片关键词 最大限度

非常感谢您分享这些内容丰富的基准!
我最感兴趣的是您将四个 RTX 2080Ti GPU 与 NVlink 适配器结合使用的结果。

您究竟使用了哪种类型的适配器?

主板上 GPU 的间距是多少,两个插槽的距离是多少?

发表于 2019-03-28 12:56:11
图片关键词 唐纳德·金霍恩

是的!这比我预期的更有效。

我拍了一张我在测试期间使用的测试台的照片。

请注意,这些是技嘉卡,我非常喜欢这种用途,因为它们在卡的背面有一个轻微的斜面,以降低空气流动到鼓风机的压力。

这是一个很好的设计风格。
https://uploads.disquscdn.c...

发表于 2019-03-29 15:34:06
图片关键词 唐纳德·金霍恩

那些实际上看起来像是 Quadro 桥?

我的同事威廉乔治写了一篇文章,上面有一张漂亮的表格,

展示了不同网桥的兼容性https://www.pugetsystems.co...

发表于 2019-03-29 15:43:33
图片关键词 最大限度

看起来很有希望,谢谢你的细节!

发表于 2019-03-30 11:18:42
图片关键词 lemans24

那是什么型号的技嘉卡??

发表于 2019-04-05 15:29:49
图片关键词 唐纳德·金霍恩

...让我看看是否可以在我们的零件页面上找到它...
https://www.pugetsystems.co ...

我很喜欢那张卡。我们给了他们积极的反馈,并要求他们将护罩缩短几毫米,这样它就可以更容易地安装在其他几个底盘中。

发表于 2019-04-08 16:32:23
图片关键词 lemans24

感谢更新...我一直在看华硕 2080ti Turbo 型号,因为我已经有了 1080ti Turbo 型号,这是否可以与技嘉卡相媲美。华硕看起来也是专为多 GPU 设置(鼓风机卡)而设计的。

发表于 2019-04-08 16:39:55
图片关键词 唐纳德·金霍恩

我们也一直在使用这些。(由于供应问题,我们使用了多种)它们也很好,我认为它们不会给您带来任何麻烦。我确实更喜欢技嘉,因为它有空气坡道和更激进的风扇,但实际上只要机箱中有良好的空气流动,它们中的任何一个都很好......EVGA 也很好,但我们确实有一批糟糕的通过接近第一个版本......从历史上看,他们一直很棒

发表于 2019-04-09 15:26:30
图片关键词 lemans24

技嘉也有 Aorus 2080ti Turbo 型号,但似乎还没有零售。

它看起来像是一个更注重性能的鼓风机版本,因为它的基础和超频频率要高得多......

发表于 2019-04-09 19:06:38
图片关键词 唐纳德·金霍恩

那可能是一张很棒的卡,但我会提醒您一点......

您的工作量会给卡带来很大压力,并且“历史上”超频的卡在计算负载(通常是内存过热)时的故障率要高得多。

这只是一个警告,对于最近几代 NVIDIA 卡来说,它的性能非常稳定,甚至超频。

我认为制造商已经厌倦了支持 RMA,并在主板上添加了更多保护,听起来技嘉已经做到了这一点 :-)

发表于 2019-04-10 19:47:33
图片关键词 lemans24

谢谢唐。我同意 Titan Xp 的超频效果非常好,

我更喜欢 Titan V,但它是两倍的钱,我想要 4 张卡。

我很难买到什么 gpu 卡,因为我真的应该买 Titan 系列,因为它们在 Windows 下运行得非常好。

可能会开始计算我是否真的需要 4 张卡并像我目前所做的那样只使用 2 张。

2080ti 的一些 Monte Carlo 基准测试表明性能是 1080ti 的两倍!!!

我刚刚查看了 Supermicro 的新工作站/服务器主板 X11SPA-TF,

它运行带有 12 个调光器的单插槽 lga3647,

已针对 Cascade Lake Xeons 进行了更新。

绝对符合服务器的要求,因为它还包括用于四路 GPU 卡以及四路 m.2 和 10G 网络的 4 x 16 pcie 插槽。

与 AMD Epyc 一样,我觉得购买 INTEL Xeon 用于服务器任务更舒服,

而 Cascade Lake 规格看起来要好得多,因为它包括 optane 调光功能。

...但是我应该买哪种GPU卡??需要在接下来的 6 个月内下定决心……2 个 Titan RTX 或 4 个 2080ti 鼓风机卡。

发表于 2019-04-10 21:36:46
图片关键词 lemans24

唐,我只是想让你知道我减少了对 4 个 GPU 卡的需求,

现在我可以只用 2 个 GPU 卡获得相同的实时蒙特卡罗结果。

这真的很棒,因为它在未来开辟了许多更便宜和/或更快的计算机配置。

不过现在,我将在 5 月底之前订购 2 个 2080Ti 鼓风机卡(可能是华硕),

因为我每次计算运行大约 1.3 秒就可以得到我的蒙特卡罗模拟结果,这太棒了!!

我计算出,一旦我使用双 2080Ti 卡,每次计算运行我应该能够接近 500 毫秒,

这将使我能够实时跟上市场。(计算运行 = 500,000 次模拟 x 4096 个批次 x 2 张卡片 ~= 40 亿线程)

会继续关注你的...

发表于 2019-04-20 20:30:40
图片关键词 唐纳德·金霍恩

好的!将代码优化为 2 个卡确实应该使配置更容易,并且您将从硬件中获得良好的利用率。

发表于 2019-04-22 17:18:44
图片关键词 小秋

在 gtx 和 rtx 上对等 2 对等性能的测试中,

很明显 rtx 不支持 p2p。

幸运的是,华硕 WS C422 SAGE 是单 CPU,

因此是单根,因此没有 nvlink 的 4 rtx 2080ti 在 resnet 上仍然有很好的结果。

如果您使用 EPYC cpu 和 Asrock EPYCD8-2T,这个分数也会很好吗?

(也是单cpu,因此是单根,但中间有一个4-die-in-1 cpu和无限结构,如果我没记错的话,还将pcie通道分为4组)

有些人对 128 pcie 通道感到兴奋,但它在真实情况下的表现如何?

发表于 2019-04-02 19:50:41
图片关键词 唐纳德·金霍恩

我非常喜欢 C422 SAGE。

我确实想在双插槽板上进行一些单根和多根测试。

由于内存访问模式,双根可能会导致困难,但是,

可以扩展多 GPU 和多节点的程序正变得越来越普遍。

像 Horovod (MPI) 这样的东西可能会否定我们与双根 PCI 复合体相关的许多问题。

......可能会测试其中的一些......

华擎主板看起来不错!

令我惊讶的是,我们还没有看到更多这样的董事会。

(很多 PCIe 通道在芯片组中用完了,但似乎做这样的板子是一件显而易见的事情!)

我不知道我是否会用任何 EPYC 东西进行测试. 

我们曾尝试从 AMD 获取测试样本,但从未得到他们的回应。也许随着新处理器的问世,我们将能够获得一些用于测试的东西。

发表于 2019-04-03 21:07:18
图片关键词 k8s_1

我在 EPYCD8-2T(7441P,8x16GB 2666 RAM)和 4x 1080ti 上进行了这些测试,

ResNet50 fp32 得分为 803(此处为 760)。

额外的 5% 可能是由于卡上的工厂时钟更高(因为单 GPU 测试也快了 5%),最重要的部分是它并不慢。


这篇文章中的配置在技术上也不是单根设置(EPYC 也不是),

搜索 STH 上的文章“英特尔至强更改如何影响单根深度学习服务器”以获得解释。

使用 ASUS ESC 4000/8000 G4 或类似设备查看真实单根设置的性能会很有趣。

在较新的英特尔 CPU 上,他们需要拆分 (PLX) 单个 16x 连接以获得最佳 p2p 带宽和延迟(除非卡支持 nvlink ofc)。

像 ESC8000 那样带有单个 EPYC CPU 的主板可以在单根上有 10 个 GPU,CPU 有 32 个通道(每个 NUMA 32 个通道),

这将成为最好的基于消费者的 GPU 服务器。

Rome 可能完全不需要 PLX 芯片,成为真正的单根 128 通道 (+) CPU...


发表于 2019-04-27 07:07:30
图片关键词 伊森

嗨,唐纳德,您在测试中使用了哪种类型的 NVLINK?rtx 6000 还是 GV100?非常感谢!

发表于 2019-04-05 22:12:23
图片关键词 唐纳德·金霍恩

我使用的桥在下面的照片中。

有趣的是,我们在“实验室”中有一堆这样的东西,我只是抓住了几个问他们是否在 RTX 上工作并穿上它们。

我认为这些是较新的 RTX(双空间)。


我的同事威廉乔治写了一篇关于各种类型桥梁兼容性的短文,里面有一个非常方便的表格!
https://www.pugetsystems.co...

发表于 2019-04-08 16:44:05

Quadro RTX 6000 / 8000 桥接器最适合将 RTX 卡并排放置(如果您使用四个 GPU,则需要这样做)。

NVIDIA 不生产 GeForce 或 Titan 品牌的 2 插槽宽度的桥接器,

并且 RTX 5000 使用物理上较短的连接器(因此它不适用于其他型号)。

我相信 GV100 琴桥也能用,但我们手头没有任何可供测试的……而且它们的成本也高得多,

所以除非你已经有了,否则没有理由在这些上花更多钱(当然,除非您专门使用 GV100 卡)。


发表于 2019-04-08 16:58:24
图片关键词 詹姆斯·伊曼纽尔·琼斯

1660 Ti 真的有可用的 Tensor 核心吗?我以为它们被禁用/不包括在内,因为那是该系列的预算卡

发表于 2019-07-11 16:00:24
图片关键词 唐纳德·金霍恩

这是个好问题。它看起来不太好......在 ResNet-50 上

fp32 119 img/sec fp16 152 img/sec 不到 30% 的加速

2070 提供


fp32 191 fp16 338 接近 80% 的加速

1660Ti 上没有 TensorCores!RTX 和 Tensorcores 在那个拱形 Tu116 上消失了。

我发帖子的时候不知道。1660Ti 上 fp16 的加速可能只是较小“字”大小的内存效率。


AnandTech 上有一篇很好的文章https://www.anandtech.com/s...

发表于 2019-07-11 19:43:08
图片关键词 道歉萨瓦卡

Lambdalabs 平均加速了 44%。2080Ti 上的 FP16 与 FP32

发表于 2020-03-08 08:48:14
图片关键词 birbfakes - deepfaker

您认为 2060 Super 应该在这些基准测试中与 2070 进行比较吗?

我认为 8GB VRAM 和更多张量核心是一个很好的提升。
另外,2070 Super 上的 NVLink 是否值得超越 2060 Super?

考虑使用 3 张卡进行新的专用设置

发表于 2019-08-21 17:38:57
图片关键词 唐纳德·金霍恩

我还没有测试过 2060 Super,但我猜它是从 2070 开始的 :-) 我希望性能接近 2070。

2070 Super 对我来说第一个吸引力是 NVLINK,但即使没有它,原来的 2070 是一张非常好的卡。

所以是的,2060 Super 是一笔不错的交易。其中 3 个 vs 1 个 2080Ti ...


对于您的新设置,需要考虑的主要事项是:8GB 是否足以容纳您的输入批次?

你的代码和工作能很好地扩展到 3 张卡片吗?

你会因为缺乏P2P而受到打击吗?

如果您的应用程序将并行扩展数据(如使用 Horovod 的 TF CNN),那么 P2P 可能不会有太大影响(因为所有通信都必须通过 CPU 空间,所以考虑将所有 3 块卡都放在 X16 上会很好。)......也,考虑到 3 张卡的功耗,你会想要一个非常强大的 PSU。


....但是,是的,2060 Supers 中的 3 个可能真的很棒!

我刚刚意识到这不是我最近发布的这些 GPU 的帖子......我做了与这篇文章相同的测试,添加到 2070 Super
https://www.pugetsystems.co ......一定要看看,如果你还没有。

发表于 2019-08-21 22:34:15
图片关键词 Lê Khắc Phương

嗨,唐,谢谢你的基准测试,我从中学到了很多。


在本文中,您的 CPU 有 48 个 PCI 通道,

因此 4x GPU 可以在 x16/x8/x16/x8 上运行,

但我也看到了 1TB NVMe(使用 4 个 PCE 通道),

因此您的 4x GPU 可能运行在 x16/ x8/x8/x8 代替。


1. 你能确认吗?
2. x8/x8 或 x16/x8 与 nvlink 一起运行是否重要?


3. 我有两个选择:AMD Threadripper 2950x(支持 x16/x8/x16/x8)

INTEL I9 9940x(支持 x16/x8/x8/x8)

与 4x RTX 2080ti 配合使用。我应该选择哪个?


发表于 2019-11-01 02:34:38
图片关键词 唐纳德·金霍恩

不客气:-) 我有一个很长但希望对你有帮助的回复......


1) 我使用的主板是 ASUS C422 Sage 它提供 X16/X16/X16/X16 这就是我们使用它的原因。

CPU 有 48 条通道,C422 芯片组有 24 条通道,

但该板还在最后 2 个 X16 插槽上使用了 PCIe 开关 (PLX)。


PCIe 数据流看起来与网络流量非常相似。


所有 4 个插槽都测量带宽为全 X16,延迟几乎与预期一致。

[PLX 开关运行良好,但对于电路板制造商来说难以实施,有时会失败] 

期待我们很快拥有一个没有 PLX 开关的 4 x X16 系统:-)]


2) NVLINK 是直接的 GPU-GPU 点对点 (P2P),但 RTX 只能同时用于 2 个 GPU。


当流量介于 2 对 GPU 或 CPU 内存之间时,X8 与 X16 会产生一些影响。

20xx RTC 卡没有 PCIe 上的 P2P,因此如果您没有 NVLINK,它们必须返回 CPU 空间进行通信。

RTX Quadro 和较旧的 10xx 卡确实具有基于 PCIe 的 P2P。(这就是为什么我一般推荐 NVLINK 桥接 RTX 2080Ti 卡。)
但是,PCIe 影响通常很小。看看这些帖子...

NVIDIA RTX 2080Ti 与 GTX 1080Ti GPU 上的 P2P 点对点https://www.pugetsystems.co...

PCIe X16 vs X8 带有 4 x Titan V GPU 用于机器学习https://www.pugetsystems.co...

3) 您应该能够获得带有 2 个 X16 的 X299 主板 我们使用的技嘉主板支持 2 个 X16,但总共只有 3 个 GPU(同样,您从芯片组获得通道)

TR 2950x 是一款出色的 CPU,但是,与使用 INTEL Core-X 相比,我们遇到了严重的故障(主板和 CPU)问题。(有传言说,Core-X 也将在某个时候大幅降价 :-)

鉴于我会选择 INTEL 9940X(但请稍等),因为该平台非常可靠。此外,Core-X 与 AVX512 优化库(如 MKL)相结合也非常出色。

如果您使用的是 4 x 2080Ti,请继续使用 2 个 NVLINK 桥接器。相对于额外成本,您可能会获得性能提升。我认为这是值得的。

既然我已经提到了 AMD ......此时我不会得到“最后一代”Threadripper。然而,只是想让您知道,Ryzen Zen2 CPU 和主板看起来非常好(有一些早期的 MB 问题似乎已经解决)......而且,我真的很期待测试新的 Threadripper!

关于 CPU 的另一件事。它们与 GPU 工作负载没有太大区别,除非您正在做一些 CPU 负载和 GPU 加速(如分子动力学)的工作。那些 4 x 2080Ti 在任何平台上都很棒:-) [确保你有足够的内存!如果您有 128GB 的 CPU 内存用于缓冲和固定,4 2080Ti 将是最幸福的。这是我和 NVIDIA 的强烈推荐]

发表于 2019-11-01 15:54:50
图片关键词 马克·帕拉图奇

嗨,唐纳德 - 我在使用同一个容器在 Horovod 上复制这些多 GPU 结果时遇到了一些麻烦。我有 2080 Ti(创始人版)卡运行:华硕 X299 SAGE、9820X(10 核 20 线程)、64 GB、1 TB 970 Pro 和 2x 2080 Ti 创始人版。Linux 是 18.04,具有 5.0.0-32 内核和 Nvidia 430 驱动程序。我在 FP32 上获得了稍微好一点的单 GPU 性能,大约 310 图像/秒。我怀疑这可能是因为这些卡是水冷的,而 nvidia-smi dmon 显示的时钟在 1995 mhz 左右,因为在满载时温度保持在 42 摄氏度左右。

对于多 GPU,如果我为 fp16 和 2 gpus 运行上面的 cmd,我会以大约 550 imgs/秒的速度缩放。如果我将参数“-bind-to none -map-by slot”添加到 MPI 命令中,我会得到大约 720 imgs/sec。然后,如果我将命令行上的批处理增加到 128,那么对于没有 NVLink 的 2x 2080 Tis,我将更接近上面的 910 img/second 数字。

我没有意识到绑定/映射命令会产生如此大的不同。在优步关于 horovod 的幻灯片上看到了这个,并尝试了一下,它产生了很大的影响。

发表于 2019-11-04 21:49:38
图片关键词 唐纳德·金霍恩

嗨马克,我很确定我确实在 12GB GPU 上使用了 128 的批量大小。这是“我的坏事”,因为我没有更明确地说明我用于测试的参数。有时我只是忘记在帖子中提供足够的细节。当我回去检查某些东西并意识到我没有记录它时,它总是让我感到沮丧。在可怕的 OOM 消息之前使批处理大小接近最大值通常会提高性能(用于基准测试)

不同的系统对 MPI 绑定/映射标志的响应可能大不相同。我在运行这些作业时没有设置任何标志,但进行试验是个好主意。感谢您的提醒!

发表于 2019-11-05 02:53:33
图片关键词 唐纳德·金霍恩

嗨马克,我很确定我确实在 12GB GPU 上使用了 128 的批量大小。这是“我的坏事”,因为我没有更明确地说明我用于测试的参数。我有时只是忘记放入帖子。当我回去检查某些东西并意识到我没有记录它时,它总是让我感到沮丧。在可怕的 OOM 消息之前使批处理大小接近最大值通常会提高性能(用于基准测试)

不同的系统对 MPI 绑定标志的响应可能大不相同。我在运行这些作业时没有设置任何标志,但进行试验是个好主意。

感谢您的提醒!我对“map-by slot”特别好奇

发表于 2019-11-05 21:11:42
图片关键词 埃里克·C·博恩

您能否分享一些具体实例,其中 2060/2070/2080 Super 上的 8GB VRAM 是不够的?那里似乎没有明确的例子或例子。在基准测试中,人们似乎对这些 GPU 使用了相同的 64 批大小。我不知道小批量处理对性能的影响,但我读过它可以是管理大型模型内存的有效方法。

发表于 2020-01-10 16:00:54
图片关键词 唐纳德·金霍恩

是的,这是一个很好的问题!可用内存在三个主要地方变得有限

- 批量大小
- 模型大小(参数数量)
- 输入数据特征大小

一个典型的例子是用 224x224 (x3 RGB) 大约 224x224 (x3 RGB) 的“正常”图像大小来训练 ResNet-50。2.5亿个参数...

批量大小非常明显,它是您为模型训练优化的元参数。更大通常意味着更快的收敛,但可能会也可能不会在拟合中提供更好的泛化。...但是,通常越大越好。
...让我测试一下,在 Titan V 12GB 上可以,ResNet-50 fp32 batch_size=64 使用 9452MiB(根据 nvidia-smi)我认为这也可以在 8GB 的 2070 上运行,但 mem 分配得更保守一些(TF尝试以更少的内存运行)。我可以使用批次 96 但 128 失败(batch_size=96 给出 318 img/sec,batch_size=64 给出 300 img/sec)

如果我尝试在 fp32 下以 batch_size=96 运行 ResNet-101(101 层),它会因内存不足(OOM)而失败。以 batch_size=64 运行,但 ResNet-152 因 OOM 失败

输入数据特征大小是个大问题!如果你想使用更大的输入图像怎么办?224x24 非常小!如果您有 3D 数据怎么办?

我已经使用更大的输入功能进行了一些测试,并将在 PNY 向我们发送 Quadro RTX 8000 48GB 以完成测试时发布关于输入数据大小限制的帖子。

没有足够的 GPU 内存来解决您要解决的问题是“表演障碍”。许多研究工作都试图在内存有限的情况下运行更大的问题。想想一些医学图像数据的大小!3D MRI 扫描或显微镜组织图像...

发表于 2020-01-10 17:37:59
图片关键词 埃里克·C·博恩

谢谢唐纳德,非常感谢您的回复!

在 ResNet-50 上的 Titan V 12GB 示例中,批量大小为 64,fp16 中的内存使用情况是多少?6300MiB-ish?

3D 图像并没有超出我可以处理的范围。甚至 11GB 内存 (2080 Ti) 都不足以处理 3D 图像吗?我想在某个时候我将无法在单个 4(2080 Ti 或 2060 Super)GPU 盒上合理地工作。

发表于 2020-01-10 18:03:39
图片关键词 唐纳德·金霍恩

有趣的是,在批处理大小为 64 的 fp16 上,它仍然显示 9450MiB(我认为正在使用更多的内存,因为它可以)......在 fp16 批处理大小为 128 时,它仍然显示相同的内存使用情况!

批量大小为 192 时,nvidia-smi 仍显示 9450MiB,但 TF 开始抱怨

2020-01-10 23:35:43.972123:W tensorflow/core/common_runtime/ bfc_allocator.cc :211] 分配器 (GPU_0_bfc) 内存不足,试图分配 3.10GiB。调用者表示这不是故障,但可能意味着如果有更多内存可用,性能可能会提高。

批量大小为 256 时,它因 OOM 而失败

我看起来分析这个比我希望的要复杂 :-) 我可能需要提高 smi 输出的分辨率或使用其他一些调试方法。

注意:我刚刚所做的是 TF 1.13(与本文中的相同)我确定 2.0 中的情况有所不同,并且我确定有一些工具可以处理我不熟悉的更大输入。框架越来越好!弄清楚 4GPU 工作站的确切限制将是非常有趣的!这个测试对我来说优先级提高了:-)

发表于 2020-01-11 00:02:45
图片关键词 埃里克·C·博恩

我期待你的测试!

发表于 2020-01-11 04:07:42
图片关键词 亚历克斯

嗨,大家好!我需要帮助。我是机器学习的新手,但我想开始学习。你能帮我配置工作站的硬件吗,不是昂贵的,而是“智能”的。我想尝试图像识别项目,也许还有一些小众的翻译模型训练。我在想 4 个使用过的 Nvidia Cuda Gpu(来自矿工),但是我应该使用哪种处理器、ram、hdd?给我指明一个方向。谢谢!

发表于 2020-01-21 23:16:12
图片关键词 唐纳德·金霍恩

嘿亚历克斯,要开始一个良好的设置并做一些严肃的工作,只需考虑一个适度的“游戏装备”。制定预算以包括至少一个 RTX 2070super。(您也可以使用 2060super 以节省一些美元)。最好从 1 个 GPU 开始,以简化您的开发工作。(如果您正在寻找二手的,那么如果您能获得优惠,那么 1080Ti 是一张很棒的卡)

如果您想从我们这里得到一些东西,您可以致电我们的销售人员,他们可以为您提供一个好的报价。如果你想做你自己的构建,你可以查看我们的创世纪 1 配置https://www.pugetsystems.co ......(默认系统会非常好!)实际上更接近“游戏- rig”配置仍然非常好,因为 ML 工作站将是一个“精神” https://www.pugetsystems.co ......同样,该默认值会相当不错。

那么如果你想使用Windows一定要阅读https://www.pugetsystems.co...然后学习一些Python:scikit学习,numpy,然后潜入TensorFlow(Keras)并尝试一些项目

祝你在新的学习努力中取得最好的成绩!这是一个伟大的研究领域,可能性是无限的!

发表于 2020-01-22 01:45:17
图片关键词 亚历克斯

感谢你的回复。我想我可以花 370 美元每张卡买到 1080ti。我看到你提议的那个选项不能同时容纳 4 张卡?AMD 处理器是否更适合我的用途?

发表于 2020-01-22 21:32:16
图片关键词 唐纳德·金霍恩

这在 1080Ti 上非常好,这些都是很棒的卡。我仍然建议使用 1 或 2。

要获得完整的 4 x X16,您目前必须升级到 C422 芯片组上的 Xeon-W 之类的东西,并且您将有一个 PLX 开关来获得第 4 个 X16 PCIe 插槽。您可以使用一个可以为您提供 4 x X8 的主板,老实说,您不应该看到太多的性能损失。

我们将提供一个(非常好!)带有 Xeon 64L 的系统,它将有 4 x X16 没有 PLX,但这是价格的显着增加。

AMD 的新东西很棒。(英特尔在软件上得到了更好的支持……虽然它对 AMD 来说越来越好)但不幸的是,您仍然会被限制为最多 3 个 X16,那就是 TR。但同样,你可以在 X8 上使用带有 4 个插槽的板子,然后就可以了。我会毫不犹豫地推荐 AMD。看看我最近的一些帖子……很快就会有新的帖子:-)

发表于 2020-01-23 00:29:26


解决方案