Caffe 1.0をNVIDIA Dockerで試してみた


RCの取れたCaffe 1.0とそのDockerイメージがリリースされましたので、NVIDIA Docker上でResNet-50のベンチマークを実施してみました。

Caffe 1.0ですが、既にcuDNN 6.0に対応しています。

スポンサーリンク

Caffe 1.0

Caffe 1.0のDockerイメージ

既に、Docker Hubのここ(https://hub.docker.com/r/bvlc/caffe/)にCaffe 1.0のDockerイメージがアップロードされています。

以下のコマンドで、GPU版のDockerイメージをpullします。

$ docker pull bvlc/caffe:gpu

Caffe 1.0のDockerイメージの詳細

GitHub(https://github.com/BVLC/caffe)のreleaseやtagでは、Caffe 1.0となっていますが、以下のコマンドで、versionを表示させると、以下のように1.0.0と表示されます。

$ nvidia-docker run --rm -it \
    bvlc/caffe:gpu \
    caffe --version
caffe version 1.0.0

なお、Caffe 1.0のDockerイメージは、ベース・イメージとして、nvidia/cuda:8.0-cudnn6-devel-ubuntu16.04(Ubuntu 16.04、CUDA 8.0.61、cuDNN 6.0.20)を使用しています。

Caffe 1.0のベンチマーク

NVIDIA Docker上でResNet-50のベンチマークを実施します。

ResNet-50のtrain_val.prototxtは、GitHubのIntel Caffe(https://github.com/intel/caffe/tree/master/models/default_resnet_50)からダウンロードします。

ホスト側のディレクトリ(ここでは、/home/sora/caffe)に、train_val.prototxt、mean_file、lmdbをコピーします。

また、train_val.prototxtのmean_fileとsourceへのパスを環境に合わせて変更し、batch_sizeも50から8に変更しました。

$ nvidia-docker run --rm -it \
    -v /home/sora/data/caffe:/workspace \
    bvlc/caffe:gpu \
    caffe time -model=/workspace/train_val.prototxt -gpu=0
...
I0417 10:41:46.906044     1 caffe.cpp:417] Average Forward pass: 139.925 ms.
I0417 10:41:46.906056     1 caffe.cpp:419] Average Backward pass: 254.393 ms.
I0417 10:41:46.906071     1 caffe.cpp:421] Average Forward-Backward: 394.486 ms.
I0417 10:41:46.906085     1 caffe.cpp:423] Total Time: 19724.3 ms.
I0417 10:41:46.906095     1 caffe.cpp:424] *** Benchmark ends ***

GTX 960では、Caffe 1.0におけるResNet-50のForward-Backwardは約20.2イメージ/秒、Forwardは約57.1イメージ/秒となりました。

まとめ

RCの取れたCaffe 1.0とそのDockerイメージがリリースされましたので、NVIDIA Docker上でResNet-50のベンチマークを実施してみました。