ローカルでのGPU環境の構築

3月 12, 2022

はじめに

ローカルで機械学習環境を構築するとき, いつもGPU, CUDA, cuDNNと深層学習用のフレームワークのバージョン合わせに苦労します. 今回は私が環境構築する際の手順を紹介します.

セットアップ

Nvidia driverのインストール

# recommended nvidia driver
ubuntu-drivers devices

# choose one from above results
sudo apt install nvidia-driver-470

# after installing nvidia driver
sudo reboot

エラー

nvidia-dkms-470のインストール中,
Sub-process /usr/bin/dpkg returned an error code (1)というエラー発生時

cd /var/lib/dpkg/info
sudo mv nvidia-dkms-470.post* /tmp
sudo mv nvidia-dkms-470.pre* /tmp
sudo apt upgrade

CUDAのインストール

指定がある場合はバージョンを明記してインストールする

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
wget https://developer.download.nvidia.com/compute/cuda/11.4.4/local_installers/cuda-repo-ubuntu2004-11-4-local_11.4.4-470.82.01-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-4-local_11.4.4-470.82.01-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu2004-11-4-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda-11-4

CUDAへのPATH追加

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

cuDNNのインストール

Runtime LibraryとDeveloper Libraryをインストール
cuDNN Runtime Library for Ubuntu20.04 x86_64 (Deb)
cuDNN Developer Library for Ubuntu20.04 x86_64 (Deb)

sudo apt install ./libcudnn8_8.2.4.15-1+cuda11.4_amd64.deb
sudo apt install ./libcudnn8-dev_8.2.4.15-1+cuda11.4_amd64.deb

検証

TensorflowでGPUの使用

GPUを正常に使用できるかTensorflowを使って検証してみます.
venvでTensorflow用の仮想環境を作成し, そこにTensorflowをインストールします.

# install venv
sudo apt install python3-venv

# create virtual environment for tensorflow
python3 -m venv tensorflow
source tensorflow/bin/activate

# install tensorflow
pip install tensorflow==2.5.0

Tensorflow上でGPUを認識するかテストします.
name: “/device:GPU:0″というようにデバイスとしてGPUが検出されていれば正常にセットアップできています.

# launch python3
python3

# import tensorflow package
from tensorflow.python.client import device_lib
device_lib.list_local_devices()

# example of the result of above commands
name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 9835249664
locality {
  bus_id: 1
  links {
  }
}
incarnation: 7579988586530948991
physical_device_desc: "device: 0, name: NVIDIA GeForce RTX 2080 Ti, pci bus id: 0000:01:00.0, compute capability: 7.5"

おわりに

ハマり出すと2,3日かかってしまうのがGPUの環境構築. この記事でみなさんの環境構築が完了するのを願っています.