記事ページを表示中

TensorflowでNVIDIAのGPUを使う為の設定|GPU、NVIDIAドライバ、CUDA、cuDNN、TensorFlowGPUの設定について

記事No.78

更新日時2023年03月06日

Tensorflowを使い作成したモデルを学習させる際、GPUを使う事で効率よく学習させる事ができます。

ただ、GPUを使用するには様々が設定が必要ですので、その流れを解説します。

準備するもの

  1. GPU
  2. NVIDIAドライバ
  3. CUDA
  4. cuDNN
  5. TnsorFlowGPU

GPU

豆知識

GPU:Graphics Processing Unitの略。コア数が数千個ある為、単純な計算はCPUより短時間で終える。TensorFlowが対応しているのは、NVIDIAのGPUのみなので注意が必要。

■現在使用しているGPUの確認コマンド

$lspci | grep -i nvidia
#lspciコマンドでPCIデバイス(パソコンに追加されたパーツ)を確認する
#grep -i nvidiaコマンドでPCIデバイス中からnvidia(大文字、小文字区別しない)というキーワードを含むデバイスを検索する
#パイブ|で上記2つのコマンドを繋げる

NVIDIAドライバ

NVIDIAドライバ:GPUを動かすためソフト。GPUの種類毎に対応するドライバが異なる為、下記NVIDIA公式サイトより対応するドライバを選択する。

■端末から推奨ドライバを調べる方法

ubuntu-drivers devices

■ドライバをインストールする方法

sudo apt install nvidia-driver-470
#推奨ドライバを指定してインストールする場合。私の場合、推奨ドライバは470でした。
sudo ubuntu-drivers autoinstall
#推奨ドライバを自動で指定してインストールする場合。

ドライバをインストールした後は、パソコンを再起動します。再起動しないとドライバは正しく認識されません。以下のコマンドで再起動できます。

$sudo reboot

■現在インストールされているNVIDIAドライバの確認コマンド

$dpkg -l | grep nvidia
#dpkg -l コマンドでubuntuにインストールされているファイルを表示する
#grep nvidiaコマンドでnvidiaというキーワードを含むファイルを検索する
#パイプ|で上記2つのコマンドを繋げる

■nvidia-smiコマンド

NVIDIAドライバが使用可能になると、以下のコマンドが使えるようになります。このコマンドを使用する事で、現在使用している、GPU、NVIDIAドライバ、CUDAを確認する事ができます。

$nvidia-smi

CUDA

CUDA:GPU向けの汎用並列コンピューティングプラットフォーム(タスクをGPU上で並列に実行できる環境)。インストールしたドライバに対応するCUDAを下記NVIDIA公式サイトより確認します。

対応するCUDAのバージョンを確認したら下記NVIDIA公式サイトよりCUDAをダウンロードします。

■端末からCUDAをインストールする方法(ubuntu20.04の場合)

$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
$ sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub
$ sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
$ sudo apt-get update
$ sudo apt-get -y install cuda

もしくは、

$sudo apt install nvidia-cuda-toolkit

■現在インストールされているCUDAの確認コマンド

$ dpkg -l | grep cuda
#dpkg -l コマンドでubuntuにインストールされているファイルを表示する
#grep cudaコマンドでcudaというキーワードを含むファイルを検索する
#パイプ|で上記2つのコマンドを繋げる

もしくは、

$nvcc --version

cuDNN

cuDNN:GPUを高速に使用する為のライブラリです。対応するcuDNNをTensorFlow公式サイトで確認します。

対応するcuDNNを確認したら下記のNVIDIA公式ページからcuDNNをダウンロードします。

その後、解凍、インストールします。

■現在インストールされているcuDNNの確認コマンド

$cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2

TensorFlowGPU

TensorFlowGPU:tensorflowでGPUを認識する為に必要なライブラリです。以下のコマンドでインストールします。

$pip install tensorflow-gpu
#pypiを使ってインストールする場合
$conda install -c anaconda tensorflow-gpu
#anacondaを使ってインストールする場合

TensorflowでGPUが機能しているか確認する

TensorFlowでGPUを認識しているかを確認するには、端末に以下のコマンドを入力します。

$python
#パイソンモードに切り替える
from tensorflow.python.client import device_lib
device_lib.list_local_devices()

と入力すると、以下のような文字列が表示されます。

[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 8543657417077282034
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 6953287040
locality {
  bus_id: 1
  links {
  }
}
incarnation: 11481084278826614173
physical_device_desc: "device: 0, name: GeForce RTX 2070, pci bus id: 0000:01:00.0, compute capability: 7.5"
]

device_type: “GPU”

と書かれているのが確認できます。これが確認できたら、TensorflowでGPUが認識されているという事です。

著者情報

名前:スカーレット
2010年からWEBサイトやWEBアプリを作成しています。最初は趣味でブログを書いていましたがSEOを勉強するのが楽しくなり、そのままブロガーとして独立しました。その後、記事を書くだけでは物足りなくなり自分でWEBアプリの作成をスタート。現在はブロガー兼プログラマーとして活動しています。このWEBアプリ(ブロトーク)もDjangoで自作しました。ブロトークはブログとSNSを合体させたようなWEBアプリです。ブログを読んで気づいた事や感想などあれば、気軽にメッセージを送って頂ければと思います。WEB技術を一緒に勉強していけたらと思います。