8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

DeepLearningフレームワークのベンチマーク

Last updated at Posted at 2017-11-23

はじめに

 昨今、Deeplearing熱の高まりからたくさんのPythonを使ったDeeplearningフレームワークが登場しています。現場で使うときに求められるのはフレキシビリティや実装のしやすさの他に、処理速度の速さなどが重要であると感じます。そこでQiitaではフレームワーク間の処理速度の比較に関する記事がないのでこの記事を執筆しました。また、これらの結果は環境に依存する話ですので、お手元で試せるようにソースコードを公開しております[Github(開発中)]。

環境

ハード AWS g2.2xlarge
OS Ubuntu 16.04
Python 3.6.3
CUDA 8.0
cuDNN 6.0
Chainer 4.0.0b1
CuPy 4.0.0b1
Pytorch 0.4.0a0+5215640
Tensorflow 1.4.0
mxnet 0.12.1

その他の前提

  • (3, 28, 28)のダミーデータを使用。
  • CNN(6層CNN+3層FC)
  • 反復回数1000

結果

####1. 計算を終了するまでの総時間
Unknown.png
####2. 1サンプルあたりの計算時間(=total_time/batch_size)
Unknown2.png
 どのフレームワークもバッチサイズ2000あたりで計算時間が頭打ちし始めている。

####3. 1バッチの計算時間
th.png
ch.png
mx.png
*tensorflowはバグがあり計測できませんでした。

####4. 結果について
 私の環境では結果として、小さいバッチサイズではmxnetが一番早く、大きなバッチサイズではPytorchが一番早いといった結果になりました。しかし、環境が異なればもちろん結果も異なります。また、マルチGPUを用いたときの結果は大きくことなります。Chainerが遅いように見えますが必ずしもそうとは言えません。

####5. 大きいバッチサイズで実験する意味
 一般的にバッチサイズを大きくすると精度が落ちると言われております。しかし、最近ではFacebookに始まり多くのチームが大きなバッチサイズで学習を成功させています。よって、これからは分散並列やマルチGPUを用いて大きなバッチサイズでスケールするフレームワークの需要が伸びるのではないでしょうか。

ソースコードについて[Github(開発中)]

1. pytorchのインストール

 まず、pytorchをインストールして頂く必要があります。これはGPUを使った計算は非同期的に処理が行われるため、処理時間を適切に計測するためにcudaEventを使って適切に同期を取る必要があるからです。(CuPyやPyCUDAにも同様のメソッドがありますが、2017/11/23現在、PyCUDAはCUDA9.0に対応していません。)

2. 対応しているDeeplearingフレームワーク

DL CPU Single GPU MultiGPU
pytorch ? o o
chainer ? o o
mxnet ? o o
tensrflow ? o x
neon ? x x
cntk ? x x
caffe2 ? ? ?

3. 実行方法

$ git clone https://github.com/0h-n0/DL_benchmarks.git
$ cd DL_benchmarks
$ pip install -r requirements.txt
$ python -m benchmark.main  ## default framework is pytorch
$
$ # You can change framework.
$ python -m benchmark.main with framework=chainer
$ # And also, change batch size.
$ python -m benchmark.main with framework=chainer batch_size=2000
$ # get info of command line options
$ python -m benchmark.main print_config
$
$ # check results
$ cd results/<your experiment id>
$ cat results.json
8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?