WSL2でTensorflowインストールに失敗したのでWindowsにAnacondaをインストールした
概要
WSL2にTensorflowを利用した機械学習の環境を用意しようとして、失敗しました。
失敗するまでと最終的にどのようにしたのかを書きました。
環境
- Windows 11 22H2
- WSL2 カーネルバージョン 5.15.79.1
- Ubuntu 22.04.1 LTS
何をするのか
機械学習の内、深層学習の環境を用意したいと思い、NVidiaのGPUを搭載しているWindowsのパソコンにTensorflowをインストールしようとしました。
Tensorflowは、バージョン2.11からWindowsでCUDAを利用した学習を行うための環境が用意されていません。そのため、公式で推奨されている方法として、WSL2を利用して、Windows上のGPUを利用して学習を行う方法です。
私も、このWSL2を利用してTensorflowの学習環境を用意する方法で利用しようとしました。
しかし、この方法でインストールをしてみると、学習の途中で異常終了するという問題に遭遇しました。
そこで、何が起きたのか、それに対してどのような対策をしたのか、最終的にどのような方法で深層学習の環境を用意したのか説明します。
インストールから問題発生まで
TensorflowでGPUを使った学習を行う場合、CUDA ToolkitやcuDNN(CUDA Deep Neural Netowork)のインストールが必要です。これらは、WSL2にインストールします。GPUのドライバはインストールしません。最初に、これらをインストールしました。
次に、Pythonをインストールしました。Tensorflowの最新バージョンは2.11でしたので、2.11が対応しているPython 3.10をインストールしました。
最後に、PythonのTensorflowのパッケージをインストールします。これまでのTensorflowでは、GPUを利用した学習では、tensorflow-gpuパッケージをインストールする必要があったのですが、2.11からtensorflowパッケージに統合されました。そのため、pipを利用してtensorflowという名前のパッケージをインストールしました。
順調に進めば、これでインストールは終わりです。
その後に、Pythonのコードを書きやすくするためにJupyter Labなどをインストールして、Tensorflowを利用して深層学習をしてみました。そうすると、モデルを用意して学習を開始した後に次のようなエラーメッセージを出力して異常終了しました。
libnvinfer.so.7: cannot open shared object file: No such file or directory
他にもエラーメッセージはあったのですが、ちゃんと記録を残していなかったため、残っているこちらを載せました。
エラーメッセージの内容では、libnvinfer.so.8という共有ライブラリがないということを表しています。このエラーメッセージを調べて、libnvinfer8-devなどのパッケージを発見することができたので、インストールしたりしてみたのですが、全然解決しませんでした。もしかすると、libnvinfer7のようなパッケージをインストールすれば、問題が解決したのかもしれませんが、見つからなかったのでインストールできませんでした。CUDAやcuDNNなどのバージョンをダウングレードすればあったかもしれません。
問題の解消に疲れてしまったので、AnacondaをインストールしてTensorflowの環境をインストールしようともしました。しかし、こちらの方法でも、学習中に同じような共有ライブラリが見つからないというエラーメッセージが出力され、異常終了しました。
最終的なTensorflowのインストール方法
これらのことから、私は最終的にWindowsにAnacondaをインストールして、Anacondaを利用してTensorflowをインストールしました。
私がAnacondaを利用した時点では、インストールできるTensorflowの最新は2.10でした。2.10はtensorflow-gpuパッケージを利用して、WindowsでもCUDAを利用できます。しかし、2.11で追加されたAPIなどを利用することはできないので注意は必要です。
おそらく、今後Windowsではバージョン2.11以降でCUDAを利用することはできないはずなので、このまま2.10を使い続けることになると思います。できれば、またWindowsでもCUDAを利用できるようになれば嬉しいのですが、叶いそうにありません。
この方法でTensorflowの環境をインストールして学習を実行すると、ちゃんと最後まで学習ができました。これまでのような、共有ライブラリが存在しないというようなエラーメッセージなどは表示されませんでした。
さいごに
Tensorflowは、広く使われている深層学習のパッケージで、ある程度枯れたようなパッケージという印象でしたが、インストールでこれほどつまずくとは思いませんでした。
もしもWSL2のLinuxへTensorflowをインストールするのに失敗している人は、バージョンが2.10で固定されてしまいますが、Windowsにインストールするというのもひとつの方法です。