Home About Contact
Ubuntu , CUDA , TensorFlow , TensorFlow.js

Tensorflow 2.x + CUDA + cuDNN + Ubuntu 22.04 server セットアップの備忘録

Ubuntu 22.04 で CUDA 11 + cuDNN 8 環境をつくった。

すべて apt でインストールが完了するわけではなく、cuDNN については、引き続き nvidia サイトから該当ファイルを入手する必要あり。 sudo apt install cuda-toolkit-11-cudnn-8 だけで、インストールが完了する時代が来ればいいのに。

参考にしたサイト

Step1 Ubuntu 22.04 LTS server

普通にインストールします。(詳細省略)

OS インストール中に、 Third-party drivers で nvidia-driver-535-server が 候補として出たので、それを選択した。

Step2 nvidia-smi

nvidia のドライバを入れて nvidia-smi コマンドが正常に作動するところまで進めます。

$ sudo apt update
$ sudo apt dist-upgrade

などとして最新状態にしたあとこれを入れる。

$ sudo apt install nvidia-utils-535-server

インストール中に nvidia-driver-535-server を選択したのに 再度、nvidia-utils-535-server を入れることになった。 その辺りのことはよくわからない。

そして一旦 reboot します。 起動後に、確認しましょう。

$ $ nvidia-smi 
Tue Aug 1 22:35:02 2023       
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.54.03              Driver Version: 535.54.03    CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce RTX 3060        Off | 00000000:01:00.0 Off |                  N/A |
| 37%   37C    P0              39W / 170W |      1MiB / 12288MiB |      0%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+

ここまではこれでOKです。

Step3 nvcc

では、nvcc が動くか試す。

$ nvcc -V
Command 'nvcc' not found, but can be installed with:
sudo apt install nvidia-cuda-toolkit

だめでした。指示通りに nvidia-cuda-toolkit を入れよう。

$ sudo apt install nvidia-cuda-toolkit

~/.bashrc に以下の環境変数を設定。

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

マシン再起動後、確認。

$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Thu_Nov_18_09:45:30_PST_2021
Cuda compilation tools, release 11.5, V11.5.119
Build cuda_11.5.r11.5/compiler.30672275_0

CUDA 11 が入った。

Step4 cuDNN

cuDNN はここから入手。

CUDA 12.x 用と CUDA 11.x 用があるので、CUDA 11.x を選択してダウンロード。 そしてインストール。

$ sudo apt install ./cudnn-local-repo-ubuntu2204-8.9.3.28_1.0-1_amd64.deb

このとき、keyring.gpg をコピーせよというメッセージが標準出力されるので、 それに従います。

$ sudo cp /var/cudnn-<something>.gpg /usr/share/keyrings/

<something> の部分は標準出力されたメッセージに従います。

あとは、apt で入れるだけです。 念の為一旦 reboot します。

$ sudo apt update
$ sudo apt install libcudnn8 libcudnn8-dev

Step5 作動確認

最後に tensorflow をインストールして、意図通り作動するか確認します。 ここでは venv 環境をつくってそこで作業します。

$ python3 -m venv ./tf-gpu
$ source ./tf-gpu/bin/activate

chk.py

import tensorflow as tf
tf.config.list_physical_devices('GPU')

tensorflow をインストールして作動をチェック。

(tf-gpu) $ pip install tensorflow==2.5.0
(tf-gpu) $ python chk.py

...
I tensorflow/core/common_runtime/gpu/gpu_device.cc:1871] Adding visible gpu devices: 0

PyTorch

PyTorch の人は このページの最後に PyTorch 用テストコードがあるので、それで試しましょう。

Tensorflow.js での GPU 作動確認

Node.js と npm のバージョンの確認。

$ node --version
v12.22.9
$ npm --version
8.5.1
$ mkdir mytfjs
$ cd mytfjs
$ npm init -y
$ npm install @tensorflow/tfjs-node-gpu
$ touch index.js

index.js の内容は以下です。

const tf = require('@tensorflow/tfjs-node-gpu')
console.log(tf.version.tfjs)

実行して GPU が使用可能か確認します。

$ node index.js

...
I tensorflow/core/common_runtime/gpu/gpu_device.cc:1532] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 10246 MB memory:  -> device: 0, name: NVIDIA GeForce RTX 3060, pci bus id: 0000:01:00.0, compute capability: 8.6
4.10.0

以上です。