NVIDIAのMachine LearningリポジトリでUbuntu 14.04にインストールしたTorch(torch7-nv)にcudnn.torchをインストールして、cuDNNに対応させてみました。
経緯
上の記事のneural-styleは、-backend
オプションでnn
、cudnn
、clnn
を選択できるようになっています。
-backend
オプションのデフォルトのnn
は、少し紛らわしいのですが、通常のnnではなく、CUDAを使用するcunnとなっています。また、cudnn
は、文字通りcuDNNを使用し、clnn
は、OpenCLを使用します。
前回の記事では、-backend
オプションを設定していないので、CUDAを使用していたことになります。
実は、cuDNNを使用するcudnn.torchを以下のコマンドでインストールしたのですが、
$ sudo luarocks install cudnn
-backend cudnn
を追加するとエラーが発生していました。
$ th neural_style.lua -content_image content.jpg -style_image style.png \ -output_image output.jpg -gpu 0 -backend cudnn
対策
GitHubのcudnn.torch(https://github.com/soumith/cudnn.torch)を確認してみると、masterブランチは、cuDNN R5(cuDNN 5)に対応しているようなのですが、自分のPC環境では、TensorFlowやChainerの関係で、CUDAディレクトリにはcuDNN 4をコピーしているので、cuDNN 4に対応したcudnn.torchのR4ブランチを以下のコマンドでインストールしてみました。
$ sudo luarocks install https://raw.githubusercontent.com/soumith/cudnn.torch/R4/cudnn-scm-1.rockspec
現状では、以下のコマンドでもエラーが発生していません。
$ th neural_style.lua -content_image content.jpg -style_image style.png \ -output_image output.jpg -gpu 0 -backend cudnn
但し、-backend cudnn
を追加しただけでは、GPUのVRAM使用量が半分位になりますが、処理時間は、ほとんど変わらないか少し遅くなりますので、-backend cudnn -cudnn_autotune -optimizer adam
を追加した以下のコマンドに変更することで、処理時間も少し短くなります。
$ th neural_style.lua -content_image content.jpg -style_image style.png \ -output_image output.jpg -gpu 0 -backend cudnn -cudnn_autotune -optimizer adam
まとめ
NVIDIAのMachine LearningリポジトリでUbuntu 14.04にインストールしたTorchに、cudnn.torchのR4ブランチをインストールして、cuDNNに対応させてみました。