標籤:

TensorFlow的多平台基準測試

本文由 【AI前線】原創,原文鏈接:t.cn/RTfLHuE

作者 | TensorFlow 團隊

翻譯 | 劉志勇

編輯 | Vincent,Emily

AI 前線導語: 為了選擇圖像分類模型,TensorFlow 團隊日前在多個平台上進行了基準測試 [1],為 TensorFlow 社區提供一個參考。本文中的「方法」一節,詳細介紹了如何進行測試,並給出了所用腳本的鏈接。

圖像分類模型的結果

InceptionV3[2]、ResNet-50[3]、ResNet-152[4]、VGG16[5] 和 AlexNet[6] 使用 ImageNet[7] 數據集進行測試。測試環境為 Google Compute Engine、Elastic Compute Cloud (Amazon EC2) 和 NVIDIA? DGX-1?。大部分測試使用了合成數據和真實數據。使用合成數據進行測試是通過一個 tf.Variable 完成的,它被設置為與 ImageNet 的每個模型預期的數據相同的形狀。我們認為,在基準測試平台中,包含真實數據的測量非常重要。這個負載測試底層硬體和框架,用來準備實際訓練的數據。我們從合成數據開始,將磁碟 I/O 作為一個變數移除,並設置一個基線。然後,用真實數據來驗證 TensorFlow 輸入管道和底層磁碟 I/O 是否飽和的計算單元。

使用 NVIDIA? DGX-1? (NVIDIA? Tesla? P100) 進行訓練

詳情和額外的結果請參閱「NVIDIA? DGX-1? (NVIDIA? Tesla? P100)」一節。

使用 NVIDIA? Tesla? K80 進行訓練

詳情和額外的結果請參閱「Google Compute Engine (NVIDIA? Tesla? K80)」一節和「Amazon EC2 (NVIDIA? Tesla? K80)」一節。

使用 NVIDIA? Tesla? K80 進行分散式訓練

詳情和額外的結果請參閱「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 進行測試。這些結果在「其他結果」一節中。

用於每個模型的配置如下表:

結果

訓練合成數據

訓練真實數據

在上述圖標和表格中,排除了在 8 個 GPU 上使用真實數據訓練的 AlexNet,因為它將輸入管線最大化了。

其他結果

下面的結果,都是批量大小為 32。

訓練合成數據

訓練真實數據

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

如下表所示,列出了每種模型使用的批量大小及優化器。除去表中所列的批量之外,Inception V3 和 ResNet-50 的批量大小為 32。這些結果在「其他結果」一節。

用於每個模型的配置的variable_update、 parameter_server、local_parameter_device 和 cpu,它們是相等的。

結果

訓練合成數據

訓練真實數據

其他結果

訓練合成數據

訓練真實數據

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。這些結果都在「其他結果」一節中。

用於每個模型的配置。

結果

訓練合成數據

訓練真實數據

由於我們的 EFS 設置未能提供足夠的吞吐量,因此在上述圖標和表格中,排除了在 8 個 GPU 上使用真實數據來訓練 AlexNet。

其他結果

訓練合成數據

訓練真實數據

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。這些結果包含在「其他結果」一節。

用於每個模型的配置。

為簡化伺服器設置,運行工作伺服器的 EC2 實例(p2.8xlarge)也運行著參數伺服器。使用相同數量的參數伺服器和工作伺服器,不同之處在於:

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

結果

訓練合成數據

其他結果

訓練合成數據

方法

這個腳本 [8] 運行在不同的平台上,產生上述結果。高性能模型 [9] 詳細介紹了腳本中的技巧及如何執行腳本的示例。

為了儘可能達到重複的結果,每個測試運行五次,然後平均一下時間。GPU 在給定平台上,以預設狀態運行。對於 NVIDIA?Tesla?K80,這意味著要離開 GPU Boost[10]。每次測試,都要完成 10 個預熱步驟,然後對接下來的 100 個步驟進行平均。

參考鏈接:

  • [1] Benchmarks:

tensorflow.org/performa

  • [2] Rethinking the Inception Architecture for Computer Vision:

arxiv.org/abs/1512.0056

  • [3] Deep Residual Learning for Image Recognition:

arxiv.org/abs/1512.0338

  • [4] Deep Residual Learning for Image Recognition:

arxiv.org/abs/1512.0338

  • [5] Very Deep Convolutional Networks for Large-Scale Image Recognition:

arxiv.org/abs/1409.1556

  • [6] ImageNet Classification with Deep Convolutional Neural Networks:

papers.nips.cc/paper/48

  • [7] ImageNet:

image-net.org/

  • [8] tf_cnn_benchmarks: High performance benchmarks:

github.com/tensorflow/b

  • [9] High-Performance Models:

tensorflow.org/performa

  • [10] Increase Performance with GPU Boost and K80 Autoboost:

devblogs.nvidia.com/par

關注我們的微信號"AI前線",後台回復「AI」可獲得《AI前線》系列PDF電子書


推薦閱讀:

微博上流傳了一個回答問題測試偶像的網站,很多很多人證實了其真的很準確,請問這是怎麼做到的?
MQC功能測試大揭秘
這個地球上不光有老乾媽!還有這麼多辣椒醬,要不要嘗一下?
[從入門到不放棄]多瀏覽器的自動化測試(1)-本地測試
小流量AB測試能做嗎?能!

TAG:TensorFlow | 测试 |