页面树结构

2017-11-09 ApacheCN 开源组织,第二期邀请成员活动,一起走的更远 : http://www.apachecn.org/member/209.html


MachineLearning 优酷地址 : http://i.youku.com/apachecn

转至元数据结尾
转至元数据起始

概观

在多个平台上测试了一系列图像分类模型,为TensorFlow社区创建了参考。该 方法部分详细介绍了试验是如何执行的,并有链接所使用的脚本。

 

图像分类模型的结果

使用ImageNet数据集测试了InceptionV3(arXiv:1512.00567),ResNet-50(arXiv:1512.03385),ResNet-152(arXiv:1512.03385),VGG16(arXiv:1409.1556)和 AlexNet。测试运行在Google Compute Engine,Amazon Elastic Compute Cloud(Amazon EC2)和NVIDIA®DGX-1™上。大多数测试都是使用合成数据和实际数据进行的。使用合成数据进行测试是通过使用与ImageNet 的每个模型预期的数据相同的形状进行设置的。我们认为,在对平台进行基准测试时,包括实际数据测量很重要。该负载在准备实际培训数据时测试底层硬件和框架。我们从合成数据开始,删除磁盘I / O作为变量并设置基线。然后使用实际数据来验证TensorFlow输入管道和底层磁盘I / O是否使计算单元饱和。  tf.Variable 

使用NVIDIA®DGX-1™(NVIDIA®Tesla®P100)进行培训

NVIDIA®DGX -1™(NVIDIA®Tesla®P100)部分的详细信息和其他结果。

使用NVIDIA®Tesla®K80进行培训

使用NVIDIA®Tesla®K80进行分布式培训

详细信息和其他结果在“ Amazon EC2分布式(NVIDIA®Tesla®K80) ” 细节中。

比较合成与实际数据训练

NVIDIA®Tesla®P100

 

NVIDIA®Tesla®K80

    

NVIDIA®DGX-1™(NVIDIA®Tesla®P100)的详细信息

环境

  • 实例类型:NVIDIA®DGX-1™
  • GPU: 8xNVIDIA®Tesla®P100
  • 操作系统: Ubuntu 16.04 LTS,测试运行通过Docker
  • CUDA / cuDNN: 8.0 / 5.1
  • TensorFlow GitHub哈希: b1e174e
  • Benchmark GitHub哈希: 9165a70
  • 构建命令: bazel build -c opt --copt=-march="haswell" --config=cuda //tensorflow/tools/pip_package:build_pip_package
  • 磁盘:本地SSD
  • DataSet: ImageNet
  • 测试日期: 2017年5月

下表列出了每个型号使用的批量大小和优化器。除了表中列出的批量大小外,InceptionV3,ResNet-50,ResNet-152和VGG16都以批量大小为32进行了测试。这些结果位于其他结果部分。

选项InceptionV3RESNET-50RESNET-152AlexnetVGG16
每个GPU的批量大小64646451264
优化SGDSGDSGDSGDSGD

每个型号使用的配置。

模型variable_updatelocal_parameter_device
InceptionV3parameter_server中央处理器
ResNet50parameter_server中央处理器
ResNet152parameter_server中央处理器
AlexNet复制(用NCCL)N / A
VGG16复制(用NCCL)N / A

结果

 

训练合成数据

图形处理器InceptionV3RESNET-50RESNET-152AlexnetVGG16
114221991.82987154
22844221815658295
456985235610509584
811311734716178221081

训练真实数据

图形处理器InceptionV3RESNET-50RESNET-152AlexnetVGG16
114221891.42890154
22784251794448284
45518533597105534
810791630708N / A898

培训AlexNet具有8个GPU上的真实数据,因为它排除了输入管道的上图,因此排除在上面的图表中。

其他结果

下面的结果都是批量大小为32。

训练合成数据

图形处理器InceptionV3RESNET-50RESNET-152VGG16
112819582.7144
2259368160281
4520768317549
89951485632820

训练真实数据

图形处理器InceptionV3RESNET-50RESNET-152VGG16
113019382.4144
2257369159253
4507760317457
89661410609690

Google Compute Engine(NVIDIA®Tesla®K80)的详细信息

环境

  • 实例类型:n1-standard-32-k80x8
  • GPU: 8xNVIDIA®Tesla®K80
  • 操作系统: Ubuntu 16.04 LTS
  • CUDA / cuDNN: 8.0 / 5.1
  • TensorFlow GitHub哈希: b1e174e
  • Benchmark GitHub哈希: 9165a70
  • 构建命令: bazel build -c opt --copt=-march="haswell" --config=cuda //tensorflow/tools/pip_package:build_pip_package
  • 磁盘: 1.7 TB共享SSD永久磁盘(800 MB / s)
  • DataSet: ImageNet
  • 测试日期: 2017年5月

下表列出了每个型号使用的批量大小和优化器。除了表中列出的批量大小外,InceptionV3和ResNet-50都以批量大小为32进行了测试。其结果位于其他结果 部分。

选项InceptionV3RESNET-50RESNET-152AlexnetVGG16
每个GPU的批量大小64643251232
优化SGDSGDSGDSGDSGD

用于每个模型的配置variable_update等于 parameter_serverlocal_parameter_device等于cpu

结果

 

训练合成数据

图形处理器InceptionV3RESNET-50RESNET-152AlexnetVGG16
130.551.920.065635.4
257.899.038.2120964.8
411619575.82328120
82273871484640234

训练真实数据

图形处理器InceptionV3RESNET-50RESNET-152AlexnetVGG16
130.651.220.063934.2
258.498.838.3113662.9
411519475.42067118
82253811484056230

其他结果

训练合成数据

图形处理器InceptionV3(批量32)ResNet-50(批量32)
129.349.5
255.095.4
4109183
8216362

训练真实数据

图形处理器InceptionV3(批量32)ResNet-50(批量32)
129.549.3
255.495.3
4110186
8216359

关于Amazon EC2(NVIDIA®Tesla®K80)的详细信息

环境

  • 实例类型:p2.8xlarge
  • GPU: 8xNVIDIA®Tesla®K80
  • 操作系统: Ubuntu 16.04 LTS
  • CUDA / cuDNN: 8.0 / 5.1
  • TensorFlow GitHub哈希: b1e174e
  • Benchmark GitHub哈希: 9165a70
  • 构建命令: bazel build -c opt --copt=-march="haswell" --config=cuda //tensorflow/tools/pip_package:build_pip_package
  • 磁盘: 1TB亚马逊EFS(爆破100 MiB /秒12小时,连续50 MiB /秒)
  • DataSet: ImageNet
  • 测试日期: 2017年5月

下表列出了每个型号使用的批量大小和优化器。除了表中列出的批量大小外,InceptionV3和ResNet-50都以批量大小为32进行了测试。其结果位于其他结果 部分。

选项InceptionV3RESNET-50RESNET-152AlexnetVGG16
每个GPU的批量大小64643251232
优化SGDSGDSGDSGDSGD

每个型号使用的配置。

模型variable_updatelocal_parameter_device
InceptionV3parameter_server中央处理器
RESNET-50复制(不含NCCL)GPU
RESNET-152复制(不含NCCL)GPU
AlexNetparameter_serverGPU
VGG16parameter_serverGPU

结果

 

训练合成数据

图形处理器InceptionV3RESNET-50RESNET-152AlexnetVGG16
130.851.519.768436.3
258.798.037.6124469.4
411719574.92479141
82303841494853260

训练真实数据

图形处理器InceptionV3RESNET-50RESNET-152AlexnetVGG16
130.551.319.767436.3
259.094.938.2122767.5
411818875.22201136
8228373149N / A242

由于我们的EFS设置不能提供足够的吞吐量,所以将AlexNet与8个GPU上的实际数据进行培训排除在上面的图表中。

其他结果

训练合成数据

图形处理器InceptionV3(批量32)ResNet-50(批量32)
129.949.0
257.594.1
4114184
8216355

训练真实数据

图形处理器InceptionV3(批量32)ResNet-50(批量32)
130.049.1
257.595.1
4113185
8212353

Amazon EC2 Distributed(NVIDIA®Tesla®K80)的详细信息

环境

  • 实例类型:p2.8xlarge
  • GPU: 8xNVIDIA®Tesla®K80
  • 操作系统: Ubuntu 16.04 LTS
  • CUDA / cuDNN: 8.0 / 5.1
  • TensorFlow GitHub哈希: b1e174e
  • Benchmark GitHub哈希: 9165a70
  • 构建命令: bazel build -c opt --copt=-march="haswell" --config=cuda //tensorflow/tools/pip_package:build_pip_package
  • 磁盘: 1.0 TB EFS(爆破100 MB /秒,12小时,连续50 MB /秒)
  • DataSet: ImageNet
  • 测试日期: 2017年5月

表中列出了用于测试的批量大小和优化器。除了表中列出的批量大小外,InceptionV3和ResNet-50都以批量大小为32进行了测试。其结果位于其他结果 部分。

选项InceptionV3RESNET-50RESNET-152
每个GPU的批量大小646432
优化SGDSGDSGD

每个型号使用的配置。

模型variable_updatelocal_parameter_devicecross_replica_sync
InceptionV3distributed_replicatedN / A真正
RESNET-50distributed_replicatedN / A真正
RESNET-152distributed_replicatedN / A真正

为了简化服务器设置,运行工作服务器的EC2实例(p2.8xlarge)也运行参数服务器。使用了相同数量的参数服务器和工作服务器,但有以下例外:

  • InceptionV3:8个实例/ 6个参数服务器
  • ResNet-50:(批量32)8个实例/ 4个参数服务器
  • ResNet-152:8个实例/ 4个参数服务器

结果

训练合成数据

图形处理器InceptionV3RESNET-50RESNET-152
129.752.419.4
8229378146
16459751291
329021388565
6417832744981

其他结果

训练合成数据

图形处理器InceptionV3(批量32)ResNet-50(批量32)
129.248.4
8219333
16427667
328201180
6416082315

方法

该 脚本 在各种平台上运行,以产生上述结果。 高性能模型详细介绍了脚本中的技术以及如何执行脚本的示例。

为了创建尽可能重复的结果,每次测试运行5次,然后将时间一起平均。GPU在给定的平台上以默认状态运行。对于NVIDIA®Tesla®K80,这意味着离开GPU Boost。对于每个测试,完成10个预热步骤,然后对接下来的100个步骤进行平均。

 

  • 无标签