この記事を閲覧する前に
この記事よりも簡単にTensorFlowとCUDA・cuDNNの環境を構築する手段を別の記事(conda install のみでTensorFlowとGPU環境(CUDA、cuDNN)を構築する)に記載しています。
上記記事は本記事を閲覧して頂いた@hatsuyuki396様からのコメントを受け、作成いたしました。コメントありがとうございました。
はじめに
私が利用していたLinuxサーバには元々、古いバージョンのCUDAとcuDNNがインストールされていました。しかし、TensorFlowの新バージョンを利用するためには、それらをアップグレードする必要がありました。しかしながら、sudo権限を持っていないため、「/usr/local/」下にある各種ディレクトリに対して操作することができません。そこで、Anacondaを利用して必要なCUDAとcuDNNをインストールしていきます。OSはUbuntu18.04を利用しています。
今回はTensorFlow2.9.1を利用するため、以下のバージョンをインストールします。
・cuda-toolkit == 11.7.0
・cudnn == 8.4.1
何かあったときに取り返しのつく仮想環境で作業を行いました。Anacondaの仮想環境を作るコマンドは以下の通りです。
conda create -n tf291 python=3.9
# tensorflowもインストールするなら、以下も実行
pip install tensorflow==2.9.1
※「conda install tensorflow=2.9.1」では、GPUを扱うことはできません。詳しくはコチラ
インストール
Anacondaのデフォルト参照先では、cudatoolkit==11.3.1、cudnn==8.2.1が最新のバージョンになるため、今回は以下の参照先からそれぞれをインストールします。もしかすると、何やら競合しているとの警告メッセージが表示されるかもしれません。その場合には、Anacondaの指示に従い、各種ライブラリのダウングレードなどを行ってください。
conda install -c nvidia cuda-toolkit=11.7.0
conda install -c conda-forge cudnn=8.4.1
ここで、CUDAなどの確認を行っても、デフォルトの環境が読み込まれているはずです。例えば、以下のコマンドでCUDAのバージョンを確認すると、以前のバージョンが表示されるはずです。また、プログラムを実行しても、デフォルトのCUDAやcuDNNが読み込まれていると思います。
nvcc -V
PATHの設定
先ほどインストールしたCUDAとcuDNNのPATHを確認します。基本は、「/home/(ユーザ名)/anaconda3/envs/(仮想環境名、今回は tf291)/bin」などで確認できるかと思います。condaでインストールしたCUDAとcuDNNを利用するために、.bashrc内に以下を追記します。
export PATH="/home/(ユーザ名)/anaconda3/envs/tf291/bin:$PATH"
export LD_LIBRARY_PATH="/home/(ユーザ名)/anaconda3/envs/tf291/lib:$LD_LIBRARY_PATH"
追記して保存したら、それを適用します。
source .bashrc
これで、希望のバージョンを利用することができます。ただ、このようにすると、Anacondaの仮想環境に入っていなくても、今回インストールしたCUDAとcuDNNのバージョンが適用されるため、注意が必要かも(複数のCUDAがインストールされている場合、TensorFlowは自動的にマッチするCUDAとcuDNNのバージョンを選択してくれるらしいが)。もっと良い方法があれば、教えてください。。。管理者権限が無い中、お疲れさまでした。
参考
https://anaconda.org/nvidia/cuda-toolkit
https://anaconda.org/conda-forge/cudnn