返回介绍

基准

发布于 2025-01-22 23:08:20 字数 17776 浏览 0 评论 0 收藏 0

概述

在多个平台上对图像分类模型进行测试,为 TensorFlow 社区创建了一个参考点。在 方法 章节中会详细说明如何执行测试,并给出使用的脚本链接。

图像分类模型的结果

InceptionV3 ( arXiv:1512.00567 ), ResNet-50
( arXiv:1512.03385 ), ResNet-152
( arXiv:1512.03385 ), VGG16
( arXiv:1409.1556 ), 和
AlexNet 使用 ImageNet 数据集测试。这些测试运行在 Google 计算云引擎,亚马逊计算云 (Amazon EC2) 和 NVIDIA® DGX-1™ 。大部分测试都使用了合成和真实的数据。使用 tf.Variable 对合成数据进行测试,数据集设置为 ImageNet 中每个模型所需的数据的同一形状。我们认为,对平台进行基准测试时,包含真实数据是很重要的。在底层硬件和框架上对准备数据加载测试是为了进行实际训练。为了将磁盘 I/O 作为变量移除,我们从合成数据开始,并设置一个基线。然后使用真实的数据来验证 TensorFlow 的输入管道和底层磁盘 I/O 是否使计算单元饱和。

使用 NVIDIA® DGX-1™ (NVIDIA® Tesla® P100) 训练

细节和其他结果参见 Details for NVIDIA® DGX-1™ (NVIDIA®
Tesla® P100)

使用 NVIDIA® Tesla® K80 训练

细节和其他结果参见 Details for Google Compute Engine
(NVIDIA® Tesla® K80)

Details for Amazon EC2 (NVIDIA® Tesla®
K80)

使用 NVIDIA® Tesla® K80 分布式训练

细节和其他结果参见 Details for Amazon EC2 Distributed
(NVIDIA® Tesla® K80)

合成和真实数据训练比较

NVIDIA® Tesla® P100

NVIDIA® Tesla® K80

NVIDIA® DGX-1™ (NVIDIA® Tesla® P100) 的详细资料

环境配置

  • Instance type : NVIDIA® DGX-1™
  • GPU: 8x NVIDIA® Tesla® P100
  • OS: Ubuntu 16.04 LTS with tests run via Docker
  • CUDA / cuDNN: 8.0 / 5.1
  • TensorFlow GitHub hash: b1e174e
  • Benchmark GitHub hash: 9165a70
  • Build Command: bazel build -c opt --copt=-march="haswell" --config=cuda //tensorflow/tools/pip_package:build_pip_package
  • Disk: Local SSD
  • DataSet: ImageNet
  • Test Date: May 2017

下表列出了每个模型的批处理大小和优化器。除了表中列出的批处理大小之外,InceptionV3、ResNet-50、ResNet-152 和 VGG16 测试的批次大小为 32。这些结果在 其他结果 章节。

OptionsInceptionV3ResNet-50ResNet-152AlexNetVGG16
Batch size per GPU64646451264
Optimizersgdsgdsgdsgdsgd

用于每个模型的配置。

Modelvariable_updatelocal_parameter_device
InceptionV3parameter_servercpu
ResNet50parameter_servercpu
ResNet152parameter_servercpu
AlexNetreplicated (with NCCL)n/a
VGG16replicated (with NCCL)n/a

结果

训练合成数据

GPUsInceptionV3ResNet-50ResNet-152AlexNetVGG16
114221991.82987154
22844221815658295
456985235610509584
811311734716178221081

训练真实数据

GPUsInceptionV3ResNet-50ResNet-152AlexNetVGG16
114221891.42890154
22784251794448284
45518533597105534
810791630708N/A898

从上图表可以看出,由于最大输入的限制,AlexNet 模型没有使用 8 个 GPU 来训练数据。

其他结果

以下是批处理大小为 32 的结果。

训练合成数据

GPUsInceptionV3ResNet-50ResNet-152VGG16
112819582.7144
2259368160281
4520768317549
89951485632820

训练真实数据

GPUsInceptionV3ResNet-50ResNet-152VGG16
113019382.4144
2257369159253
4507760317457
89661410609690

Google Compute Engine (NVIDIA® Tesla® K80) 的详细资料

环境配置

  • Instance type : n1-standard-32-k80x8
  • GPU: 8x NVIDIA® Tesla® K80
  • OS: Ubuntu 16.04 LTS
  • CUDA / cuDNN: 8.0 / 5.1
  • TensorFlow GitHub hash: b1e174e
  • Benchmark GitHub hash: 9165a70
  • Build Command: bazel build -c opt --copt=-march="haswell" --config=cuda //tensorflow/tools/pip_package:build_pip_package
  • Disk: 1.7 TB Shared SSD persistent disk (800 MB/s)
  • DataSet: ImageNet
  • Test Date: May 2017

下表列出了每个模型的批处理大小和优化器。除了表中列出的批处理大小之外,InceptionV3 和 ResNet-50 测试的批次大小为 32。这些结果在 其他结果 章节。

OptionsInceptionV3ResNet-50ResNet-152AlexNetVGG16
Batch size per GPU64643251232
Optimizersgdsgdsgdsgdsgd

每个模型所用的配置中, variable_update 和 parameter_server 配置相同,local_parameter_device 和 cpu 配置相同。

结果

训练合成数据

GPUsInceptionV3ResNet-50ResNet-152AlexNetVGG16
130.551.920.065635.4
257.899.038.2120964.8
411619575.82328120
82273871484640234

训练真实数据

GPUsInceptionV3ResNet-50ResNet-152AlexNetVGG16
130.651.220.063934.2
258.498.838.3113662.9
411519475.42067118
82253811484056230

其他结果

训练合成数据

GPUsInceptionV3 (batch size 32)ResNet-50 (batch size 32)
129.349.5
255.095.4
4109183
8216362

训练真实数据

GPUsInceptionV3 (batch size 32)ResNet-50 (batch size 32)
129.549.3
255.495.3
4110186
8216359

Amazon EC2 (NVIDIA® Tesla® K80) 的详细资料

环境配置

  • Instance type : p2.8xlarge
  • GPU: 8x NVIDIA® Tesla® K80
  • OS: Ubuntu 16.04 LTS
  • CUDA / cuDNN: 8.0 / 5.1
  • TensorFlow GitHub hash: b1e174e
  • Benchmark GitHub hash: 9165a70
  • Build Command: bazel build -c opt --copt=-march="haswell" --config=cuda //tensorflow/tools/pip_package:build_pip_package
  • Disk: 1TB Amazon EFS (burst 100 MiB/sec for 12 hours, continuous 50
    MiB/sec)
  • DataSet: ImageNet
  • Test Date: May 2017

下表列出了每个模型的批处理大小和优化器。除了表中列出的批处理大小之外,InceptionV3 和 ResNet-50 测试的批次大小为 32。这些结果在 其他结果 章节。

OptionsInceptionV3ResNet-50ResNet-152AlexNetVGG16
Batch size per GPU64643251232
Optimizersgdsgdsgdsgdsgd

用于每个模型的配置。

Modelvariable_updatelocal_parameter_device
InceptionV3parameter_servercpu
ResNet-50replicated (without NCCL)gpu
ResNet-152replicated (without NCCL)gpu
AlexNetparameter_servergpu
VGG16parameter_servergpu

结果

训练合成数据

GPUsInceptionV3ResNet-50ResNet-152AlexNetVGG16
130.851.519.768436.3
258.798.037.6124469.4
411719574.92479141
82303841494853260

训练真实数据

GPUsInceptionV3ResNet-50ResNet-152AlexNetVGG16
130.551.319.767436.3
259.094.938.2122767.5
411818875.22201136
8228373149N/A242

由于我们的 EFS 没有提供足够的吞吐量,在上面的图表中我们排除了使用 8 个 GPU 来训练 AlexNet 模型的统计。

其他结果

训练合成数据

GPUsInceptionV3 (batch size 32)ResNet-50 (batch size 32)
129.949.0
257.594.1
4114184
8216355

训练真实数据

GPUsInceptionV3 (batch size 32)ResNet-50 (batch size 32)
130.049.1
257.595.1
4113185
8212353

Amazon EC2 Distributed (NVIDIA® Tesla® K80) 的详细资料

环境配置

  • Instance type : p2.8xlarge
  • GPU: 8x NVIDIA® Tesla® K80
  • OS: Ubuntu 16.04 LTS
  • CUDA / cuDNN: 8.0 / 5.1
  • TensorFlow GitHub hash: b1e174e
  • Benchmark GitHub hash: 9165a70
  • Build Command: bazel build -c opt --copt=-march="haswell" --config=cuda //tensorflow/tools/pip_package:build_pip_package
  • Disk: 1.0 TB EFS (burst 100 MB/sec for 12 hours, continuous 50 MB/sec)
  • DataSet: ImageNet
  • Test Date: May 2017

下表列出了每个模型的批处理大小和优化器。除了表中列出的批处理大小之外,InceptionV3 和 ResNet-50 测试的批次大小为 32。这些结果在 其他结果 章节。

OptionsInceptionV3ResNet-50ResNet-152
Batch size per GPU646432
Optimizersgdsgdsgd

用于每个模型的配置。

Modelvariable_updatelocal_parameter_devicecross_replica_sync
InceptionV3distributed_replicatedn/aTrue
ResNet-50distributed_replicatedn/aTrue
ResNet-152distributed_replicatedn/aTrue

为了简化服务器安装,EC2 实例(p2.8xlarge)运行了 worker 服务器和 parameter 服务器。使用的 worker 服务器和 parameter 服务器数量相等,但有如下例外:

  • InceptionV3: 8 instances / 6 parameter servers
  • ResNet-50: (batch size 32) 8 instances / 4 parameter servers
  • ResNet-152: 8 instances / 4 parameter servers

结果

训练合成数据

GPUsInceptionV3ResNet-50ResNet-152
129.752.419.4
8229378146
16459751291
329021388565
6417832744981

其他结果

训练合成数据

GPUsInceptionV3 (batch size 32)ResNet-50 (batch size 32)
129.248.4
8219333
16427667
328201180
6416082315

方法

高性能模型

为了创建尽可能重复的结果,每个测试运行 5 次,然后将时间取平均值。在给定的平台上,GPU 是在默认状态下运行的。对于 NVIDIA® Tesla® K80 来说这意味着不使用 GPU
Boost
。对于每个测试,需要完成 10 次预热,然后再平均完成 100 次测试。

如果您发现本页面存在错误或可以改进,请 点击此处 帮助我们改进。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文