GPU導入

ここではFACE01でGPUのパワーが引き出せるよう設定を行います。
作業はUbuntu18.04をベースに行いますが、Windows10の設定でもご参考になると思います。

作業の流れ

GPUをFACE01で使えるようにするには次に挙げるステップを踏みます

  1. nvidia用ディスプレイドライバー導入
  2. cuda-toolkit導入
  3. cublas, cudnn導入
  4. Pythonライブラリ再インストール

用語

nvidia用ディスプレイドライバー

GPUを使用するためのドライバ

cuda toolkit

GPUを汎用目的に使用するために必要なライブラリ

cuDNN, cuBLAS

深層学習用ライブラリ, 行列計算用ライブラリ

バージョン選択

ライブラリやドライバはお持ち頂いているGPUカードや使用OSのバージョンを考慮してそれぞれのバージョンを選択する必要があります。考慮する順番は

  1. ディスプレイドライバーのバージョン
  2. cuda-toolkitのバージョン
  3. cuDNNのバージョン

になります。以下では具体的に作業しながらみていきます。

考慮すべきこと

  • 自分の持っているビデオカードの種類
  • OSのバージョン

ディスプレイドライバのバージョンを知るには

このURLにアクセスして持っているビデオカードやOSの種類を選択して検索ボタンを押すと、どのドライバが良いか結果を出してくれます。

必要情報を入力する
バージョンを確認することが出来る

必要なcuda-toolkitのバージョンを知るには

公式のこのページを参照

上の図より、ディスプレイドライバ470.57に対応するcuda-toolkitのバージョンはCUDA 11.4 Update 1であることが分かりました。

cuDNNのバージョンを知るには

このページを参照してください。すると次図のような表を確認することが出来ます。

これによりcuDNNのバージョンは8.2であれば良いと分かりました。

それぞれのインストール

それぞれのインストールはUbuntuであればSynapticから簡単に行うことが出来ます。インストールが終わったら下のようにして確認しておくと良いでしょう。

$ nvidia-smi 
Wed Aug  4 10:51:03 2021       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.57.02    Driver Version: 470.57.02    CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| 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 ...  On   | 00000000:08:00.0  On |                  N/A |
| 41%   37C    P8    15W / 120W |    365MiB /  5941MiB |      1%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

Pythonライブラリの再インストール

GPUに対応させるためPythonライブラリの再インストールを行って下さい。

user@user:/home/user/FACE01GRAPHICS123_UBUNTU_VENV$ python -V
Python 3.9.6
user@user:/home/user/FACE01GRAPHICS123_UBUNTU_VENV$ python -m venv ./
user@user:/home/user/FACE01GRAPHICS123_UBUNTU_VENV$ source ./bin/activate
(FACE01GRAPHICS123_UBUNTU_VENV) user@user:/home/user/FACE01GRAPHICS123_UBUNTU_VENV$ python -V
Python 3.9.6
(FACE01GRAPHICS123_UBUNTU_VENV) user@user:/home/user/FACE01GRAPHICS123_UBUNTU_VENV$ pip -V
pip 21.1.3 from /home/terms/ビデオ/one_drive/FACE01GRAPHICS123_UBUNTU_VENV/lib/python3.9/site-packages/pip (python 3.9)
(FACE01GRAPHICS123_UBUNTU_VENV) user@user:/home/user/FACE01GRAPHICS123_UBUNTU_VENV$ pip install -U pip
Requirement already satisfied: pip in ./lib/python3.9/site-packages (21.1.3)
Collecting pip
  Using cached pip-21.2.2-py3-none-any.whl (1.6 MB)
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 21.1.3
    Uninstalling pip-21.1.3:
      Successfully uninstalled pip-21.1.3
Successfully installed pip-21.2.2
(FACE01GRAPHICS123_UBUNTU_VENV) user@user:/home/user/FACE01GRAPHICS123_UBUNTU_VENV$ pip install -r requirements_FACE01_UBUNTU.txt 
Collecting dlib
  Using cached dlib-19.22.0.tar.gz (7.4 MB)
Collecting face-recognition
  Using cached face_recognition-1.3.0-py2.py3-none-any.whl (15 kB)
Collecting face-recognition-models
  Using cached face_recognition_models-0.3.0.tar.gz (100.1 MB)
Collecting numpy
  Using cached numpy-1.21.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (15.8 MB)
Collecting opencv-python
  Using cached opencv_python-4.5.3.56-cp39-cp39-manylinux2014_x86_64.whl (49.9 MB)
Collecting Pillow
  Using cached Pillow-8.3.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl (3.0 MB)
Collecting pyinstaller
  Downloading pyinstaller-4.5-py3-none-manylinux2014_x86_64.whl (1.5 MB)
     |████████████████████████████████| 1.5 MB 1.6 MB/s 
Collecting pyinstaller-hooks-contrib
  Using cached pyinstaller_hooks_contrib-2021.2-py2.py3-none-any.whl (190 kB)
Collecting PySimpleGUI
  Using cached PySimpleGUI-4.45.0-py3-none-any.whl (352 kB)
Collecting tinyaes
  Using cached tinyaes-1.0.1.tar.gz (40 kB)
Collecting pyarmor
  Downloading pyarmor-6.7.4-py2.py3-none-any.whl (2.3 MB)
     |████████████████████████████████| 2.3 MB 1.2 MB/s 
Collecting Click>=6.0
  Using cached click-8.0.1-py3-none-any.whl (97 kB)
Requirement already satisfied: setuptools in ./lib/python3.9/site-packages (from pyinstaller->-r requirements_FACE01_UBUNTU.txt (line 7)) (56.0.0)
Collecting altgraph
  Using cached altgraph-0.17-py2.py3-none-any.whl (21 kB)
Using legacy 'setup.py install' for dlib, since package 'wheel' is not installed.
Using legacy 'setup.py install' for face-recognition-models, since package 'wheel' is not installed.
Using legacy 'setup.py install' for tinyaes, since package 'wheel' is not installed.
Installing collected packages: pyinstaller-hooks-contrib, Pillow, numpy, face-recognition-models, dlib, Click, altgraph, tinyaes, PySimpleGUI, pyinstaller, pyarmor, opencv-python, face-recognition
    Running setup.py install for face-recognition-models ... done
    Running setup.py install for dlib ... |

まとめ

以前と比べて導入の敷居がかなり低くなったと感じます。

最後までお読み頂きありがとうございました。