2021-12-01tensorflow が GPU を呼び出して実行できない問題を解決するにはどうすればよいですか?

tensorflow が GPU を呼び出して実行できない問題を解決するにはどうすればよいですか?

1. 現状の環境と課題

1.1問題の説明

現在の主な問題は、ディープ ラーニングを実行するときに、計算のために GPU を正常に呼び出すことができないことです。プログラムは CPU 上で実行されています。大量のデータを使用するディープ ラーニングの場合、時間コストがかかる主な問題は次のとおりです (コードはすべてPython
環境で実行されます):
①tensorflowのバージョン確認

import tensorflow as tf
tf.__version__  #(2.6.0)

tensorflowインポート時に以下の問題が発生します。
ここに画像の説明を挿入します
②利用可能なGPUデバイスのチェック

import tensorflow as tf
from tensorflow.python.client import device_lib
#输出可用的GPU数量
print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))
#查询GPU设备
print(device_lib.list_local_devices())

上記の結果は以下のように返されます:
使用可能な GPU 数は 0 (実際に使用可能な GPU 数は 2)
ここに画像の説明を挿入します
GPU デバイスは検出できず、CPU のみが検出されました
ここに画像の説明を挿入します
。 GPU の構成が失敗し、バージョンが一致しないことを示します。

1.2 動作環境等の説明

①オペレーティングシステム linux/ubuntu18.04 (クエリ方法は以下の通り)
ここに画像の説明を挿入します
②システムアーキテクチャ=amd64 (x86_64) (クエリ方法は以下の通り)
ここに画像の説明を挿入します
③python=3.6.9
④tensorflow-gpu=2.6.0
⑤cuda=9.1.85 (クエリ方法は以下の通り)図)
2つのクエリコマンドの違いに注意https://blog.csdn.net/hb_learning/article/details/115534219
ここに画像の説明を挿入します
⑥cudnnなし(クエリメソッドは以下の通り)
ここに画像の説明を挿入します

2. この問題の解決策

①tensorflow バージョンに対応するcuda および cudnn
クエリリンクをクエリする : https://tensorflow.google.cn/install/source?hl=ja
ここに画像の説明を挿入します
上記より、tensorflow2.6.0 に対応するバージョンは cudnn=8.1 と cudnn=8.1 であることがわかります。 ②cudn
バージョンをアップグレードします
まず、対応するcudnバージョンファイルをダウンロードします ダウンロードアドレス: https://developer.nvidia.com/cuda-11.2.0-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1804&target_type= runfilelocal
. インストールについては、公式 Web サイトを直接参照できます. チュートリアル: インストールのためにターミナルに関連するコマンドを入力します.
ここに画像の説明を挿入します
Docker コンテナーで実行しており、root 権限がないため、コマンドラインに入力するときは、 sudo を実行し、以下の内容を直接入力します
③ cudn の設定
a. .bashrc ファイルを表示します

vim  ~/.bashrc

b. ファイルの最後に追加します

export PATH=/usr/local/cuda-11.2/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.2/lib64:$LD_LIBRARY_PATH

c. 最後に、次のコマンドを使用して .bashrc ファイルへの変更をアクティブ化し、有効にします。

source ~/.bashrc

d. nvcc -V コマンドを使用して、cudn のバージョンを確認します。図に示すように、現在 11.2.152 であることがわかります: ④
ここに画像の説明を挿入します
cudnn を
インストールします a. まず、対応する cudnn インストール パッケージ (インストール パッケージ リンク: https)をダウンロードします。 ://developer.nvidia .com/rdp/cudnn-archive
b. インストール パッケージを解凍し、解凍ディレクトリに移動します。

tar zxvf cudnn-11.2-linux-x64-v8.1.0.77.tgz
cd 压缩文件所在路径

c. cp および chmod コマンドを実行して、cudnn 環境を構成します。

sudo cp cuda/include/cudnn.h /usr/local/cuda-11.2/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.2/lib64
sudo chmod a+r /usr/local/cuda-11.2/include/cudnn.h 
sudo chmod a+r /usr/local/cuda-11.2/lib64/libcudnn*

d. cudnn バージョンを確認する
cudnn バージョンを確認するためにインターネットで一般的に使用されるコマンドは次のとおりです。

cat /usr/local/cuda-11.2/include/cudnn.h | grep CUDNN_MAJOR -A 2

ただし、コマンドが応答しなかったため、オンラインで解決策を検索しました。効果的な解決策へのリンク: https://blog.csdn.net/eaxy_z/article/details/108615548
。最後のクエリは、cudnn のバージョンが8.1.0.
ここに画像の説明を挿入します
これまでのところ、すべての構成は正しいです。完了しました。これで、1.1 の問題の説明の②に従って、使用可能な GPU の数を確認できます。結果は次のように表示されます (スクリーンショットの一部):
ここに画像の説明を挿入します

ははは、長年悩んでいた問題がようやく解決しました具体的な参考内容は以下の通りです:
①cudn設定時の.bashrcファイルの内容を追加: https://blog.csdn.net/qq_16792139/article /details/113256279
②インストール全体の流れ:
https://zhuanlan.zhihu.com/p/72298520

おすすめ

転載: blog.csdn.net/LJ1120142576/article/details/121650605