今回はpytorchをubuntu(16.04)で使用するのに行ったことに関して備忘録として残しておきます。
なお細かな技術的なことに関して深堀できておらず「とりあえず動けばいい」という姿勢なのでversionが違う場合や本設定で動作を保証する記事ではないのでご了承ください。
また全て独学なので認識が間違っているところがあるかもしれませんのでその点もご了承ください。
pytorchを使うのにCUDAとcuDNNが必要?
まずpytorch(version 1.0)でモデルを構築しようとすると下記のようなエラーが出ました。
1 |
RuntimeError: cuda runtime error (35) : CUDA driver version is insufficient for CUDA runtime version at ..\aten\src\THC\THCGeneral.cpp:74 |
というレベルだったのでググると
「GPUにおいて並列処理を行うプログラミングモデル」ということで、
どうやらNVIDIAの製のGPUを用いる際に効率的に並列処理を行ってくれるライブラリーのようなもののようです。

(wikipediaより引用:https://ja.wikipedia.org/wiki/CUDA)
またCUDAの他にcuDNNというNVIDIAが公開しているDeep learning用のライブラリもインストールする必要があり、
CUDAとcuDNNとpytorchのversion違いで互換性がないものがあり、組み合わせを正しく選ばないとエラーが出るのが今回のエラーの原因のようでした。
どのバージョンをインストールしたか?
結論から書くと下記バージョンで動作を確認しました。
pytorch : version 0.4.1
CUDA : version 90
pytorchの公式に上記設定でインストールするコードがあったので載せておきます。
1 |
conda install pytorch=0.4.1 cuda90 -c pytorch |
ほんとはバージョンごとの組み合わせによる動作有無を調べれば親切かと思いますが、データ分析をやる上では動けばよいので必要に応じて調べます…。
これで pytorch と CUDA の互換性は問題ないですが、cuDNNに関しては使用するNVIDIAのGPUによってインストールするバージョンが違うようです。
cuDNNのバージョン確認に関して
次はcuDNNのバージョンの確認を行います。
私はGCPを使用しているため使用するGPUはVMインスタンス詳細から調べられます。

インスタンスを立てる地域によって違う?のかわかりませんが、今回はTesla P100というタイプのものを使用しているようです。
この情報をもとにNVIDIAの公式からドライバーの情報を確認します。


ということで、このGPUにはversion 384.183のドライバーが必要ということがわかりました。
1 2 |
# わざわざ確認せず下記コマンドでも推奨ドライバーが確認できるようです ubuntu-drivers devices |
このドライバーをインストールするためにubuntuのドライバーのリポジトリを参照します。
リポジトリの登録後、必要なドライバーをインストールします。
1 2 3 4 5 6 |
# リポジトリを更新 sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt-get update # version384のドライバーをインストール sudo apt-get install nvidia-384 |
以上でCUDA、pytorch、cudNNのバージョンの互換性が取れたものが揃ったかと思います。
次に動作確認を行いますが、インストール後再起動する必要があるようですのでご注意ください。
1 2 |
# 再起動 sudo reboot |
動作確認を行う
ちゃんと動くのか確認を下記のコードで行います。
1 2 3 4 |
import torch nums = torch.randn(2,2) print(nums.cuda()) # if this works, you're in business |
これで何かしら出力でたら設定終了です。お疲れさまでした。
