nvidia GPU関係のインストール

動作環境

GPUドライバ

インストール

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
ubuntu-drivers devices # ドライバ候補表示
sudo apt install nvidia-driver-*** # 好きなドライバを選択

確認: nvidia-smiのコマンドでGPU状態が表示される

CUDA

公式サイトから好きなバージョンを選択し、自分のPC環境を選んでいく

Installation Instructions通りにコマンドを実行する

# CUDA Toolkit 11.7 Update 1, Linux Ubuntu 22.04 x86_64, deb(local) の場合
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.7.1/local_installers/cuda-repo-ubuntu2204-11-7-local_11.7.1-515.65.01-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-11-7-local_11.7.1-515.65.01-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-11-7-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

以下を~/.bashrcに書き加えてパスを追加

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

確認: nvcc -Vまたは/usr/local/cuda/bin/nvcc -VでCUDAの情報が表示される

備考

  • CUDAが対応していないGPUドライバが入っていると自動で削除され、対応しているドライバがインストールされることがある
    • 不要になったドライバはそのままでもいいが以下のように削除できる
      • ドライバ一覧表示: sudo dpkg -l | grep nvidia*
      • ドライバ削除: sudo apt purge [不要ドライバ]

cuDNN

公式サイトから好きなバージョンを選択し、ダウンロード

インストール

# tarファイル形式のcudnnをダウンロードした場合
tar -xvf [対象のcudnnファイル名].tar.xz
sudo cp [対象のcudnnファイル名]/include/cudnn.h /usr/local/cuda/include 
sudo cp -P [対象のcudnnファイル名]/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

nvidia-docker

リポジトリの追加

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
  sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update

インストール

sudo apt-get install nvidia-docker2

再起動

確認: 以下コマンドでエラーなく表示されればOK

nvidia-container-cli -k -d /dev/tty info

備考

tensorflow

インストール

pip install tensorflow-gpu

確認: 以下コマンドでPhysicalDeviceとしてGPUが認識される

python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"

備考

  • 公式の要件(CUDA 11.2, cuDNN 8.1.0)でなくても動いた
    • 動作確認条件: tensorflow-gpu==2.11.0, CUDA 11.7, cuDNN 8.6.0
  • import時に出るCould not load dynamic library 'libnvinfer.so.7'..., Could not load dynamic library 'libnvinfer_plugin.so.7'..., TF-TRT Warning: Cannot dlopen some TensorRT libraries...について
    • tensorflowのグラフを最適化してくれるTensorRTがないというだけで無視しても動作はする
    • あるとパフォーマンスが上がる(インストール方法)
  • import時に出るsuccessful NUMA node read from SysFS had negative value (-1)...について
    • Ubuntuの仕様でGPUのNUMA nodeが-1となっているので0と認識しましたよというだけなので問題はない
    • NUMA node: マルチデバイスのメモリアクセスを効率化するNUMAの枠組みで割り振られたノード番号
    • 参考

pytorch

インストール

pip install torch torchvision torchaudio

確認: 以下コマンドでTrueと返ってくる

python -c "import torch; print(torch.cuda.is_available())"