Puget系统打印徽标
//www.seltecelec.com
在//www.seltecelec.com/guides/1386上阅读本文
唐纳德·金霍恩(Donald Kinghorn)博士(科学计算顾问)

带1-4 GPU的TensorFlow性能-RTX Titan,2080TI,2080,2070,GTX 1660TI,1070,1080TI和Titan V

于2019年3月14日撰写唐纳德·金霍恩(Donald Kinghorn)博士
分享:


介绍

这篇文章是更新和扩展在过去的几个月中,我一直在进行GPU测试。我正在使用NVIDIA NGC上的当前(截至本文日期)张力型,这是最新的显示器驱动程序,我的结果最多可容纳4个GPU,包括NVLink,并进行了几张卡片。这是我一直承诺要做的事情!


测试系统

硬件

  • 普吉特系统峰单人(我使用了一个测试床系统,其中包括我们通常在配置用于机器学习的峰单个中使用的组件)
  • 英特尔Xeon-W 2175 14核
  • 128GB内存
  • 2TB Intel 660p NVME M.2
  • RTX Titan(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绩效和资源调整


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

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

CNN(FP32,FP16)和GPU的Big LSTM Job Run批量

批量的大小确实会影响性能,较大的尺寸通常更好。批处理大小受GPU上可用的内存量的限制。使用不给“不输入”错误运行的“合理”值。多GPU作业使用了与单个GPU作业相同的批量设置,因为它们是每个流程设置的。这意味着“有效”批量大小是批处理大小的倍数,因为作业是“数据并行”。下表中的不同卡和作业类型的批次尺寸信息。


CNN [Resnet-50] FP32,FP16和RNN [Big LSTM] gpu测试的工作批量尺寸

GPU Resnet-50 FP32
批量大小
Rednet-50 FP16(张量核)
批量大小
大LSTM
批量大小
RTX泰坦 192 384 640
RTX 2080 TI 64 128 448
RTX 2080 64 128 256
RTX 2070 64 128 256
GTX 1660 TI 32 64 128
泰坦v 64 128 448
GTX 1080 TI 64 N/A。 448
GTX 1070 64 N/A。 256

Tensorflow CNN:Resnet-50

Docker容器图像TensorFlow:19.02-PY3来自NGC,

docker run -runtime = nvidia -rm -rm -It -V $ home/projects:/projects nvcr.io/nvidia/tensorflow :19.02 -py3

起始作业的示例命令行,

#对于单个gpu python resnet.py-layers = 50 -batch_size = 64  -  precision = fp32#for Multi-GPU的MPIEXEC -Allow-run-as-as-root-root -np 2 python resnet.py-layers.py-layers = layers = layers = layers = layers = 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

[RESNET-50 FP16] TensorFlow,1-4 NVIDIA RTX和GTX GPU的训练性能(图像/秒)

Resnet-50与FP16

上面的图表主要是自言自语。这些工作要注意的一件事是,使用NVLink的点对点交流优势只有很小的影响。LSTM作业并非如此。


TensorFlow LSTM:Big-LSTM 10亿个单词数据集

Docker容器图像TensorFlow:19.02-PY3来自NGC,

docker run -runtime = nvidia -rm -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/ data/ 1亿美元 - 语言 -  language-modeling-modeling-benchmark-r13Output/ \ -hpconfig run_profiler = falsef = falses 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_sample = 8192,num_sample = 8192,bacte = 8192,bact

笔记:

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

[Big LSTM] TensorFlow,1-4 NVIDIA RTX和GTX GPU的训练性能(单词/秒)

LSTM与

笔记:

  • 批次大小和GPU至GPU(点对点)通信对这种经常性神经网络的性能有重大影响。高端GPU具有增加计算核心数量的优势,以及用于数据和指令的较大内存空间的可用性,以及使用高性能NVLINK进行通信的可能性。
  • NVLink显着提高了性能。当使用2个NVLink对与4 GPU时,这种性能的改善甚至显而易见。我对此感到有些惊讶,因为我希望它可以在剩余的非NVLink连接对之间所需的CPU内存空间上瓶颈。

快乐计算-DBK

标签:Multi-GPU,TensorFlow,RTX,GTX,机器学习,NVIDIA
注释