GPUのセットアップ

ここでは、GPUのセットアップに必要な手順を詳細に解説します。具体的には、古いドライバやツールキットのアンインストール、NVIDIAドライバのインストール、CUDAツールキット、cuDNN、NVIDIA Container Toolkitの設定、およびDockerの構成方法について取り扱います。

環境の確認

まずは、環境変数類の確認をおこないます。

 nvidia-smi
Mon Aug 26 18:07:28 2024
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.73.08    Driver Version: 516.40       CUDA Version: 11.7     |
|-------------------------------+----------------------+----------------------+
| 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:3B:00.0  On |                  N/A |
|  0%   47C    P8    12W / 200W |   1259MiB /  8192MiB |     14%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
 
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A        27      G   /Xwayland                       N/A      |
|    0   N/A  N/A        98      G   /Xwayland                       N/A      |
+-----------------------------------------------------------------------------+
 
 cat /etc/docker/daemon.json
{
    "default-runtime": "nvidia",
    "runtimes": {
        "nvidia": {
            "args": [],
            "path": "nvidia-container-runtime"
        }
    }
}⏎
 
 cat /etc/*-release # Check OS distr
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04 LTS"
..
 
 lscpu # Check OS Arch
Architecture:            x86_64
  CPU op-mode(s):        32-bit, 64-bit
..
 
# ➜ sudo lshw -C system # Check HW info
  • WSL2のバージョンを確認します。
# wsl cat /proc/version  # Specify the WSL ver.

古いドライバやツールキットのアンインストール

過去に導入している場合、古いドライバーを削除します。

Windowsの場合

  1. デバイスマネージャーで古いNVIDIAドライバをアンインストール:

    • Windowsキー + X を押して「デバイスマネージャー」を開きます。
    • 「ディスプレイアダプター」を展開し、NVIDIA GPUを右クリックして「デバイスをアンインストール」を選択。
    • 古いドライバを完全に削除するため、必要に応じて「デバイスのソフトウェアを削除する」を選択し、「アンインストール」をクリックします。
  2. ツールキットやCUDAをアンインストール:

    • スタートメニューで「アプリと機能」を検索。
    • NVIDIAに関連するCUDAやツールキットがインストールされている場合は、ここで選択して「アンインストール」を行います。

Linuxの場合

  1. 古いドライバの確認:

    • 以下のコマンドで現在インストールされているNVIDIAドライバを確認します。
      nvidia-smi
    • 現在のドライババージョンや状態を確認します。
  2. ドライバやCUDAツールキットをアンインストール:

    • 既存のCUDAツールキットやドライバを削除するため、次のコマンドを使用します。
    # To uninstall cuda ( adjust X.Y to your env )
    sudo /usr/local/cuda-X.Y/bin/cuda-uninstaller 
    # To uninstall nvidia
    sudo /usr/bin/nvidia-uninstall
     
    # If you install via package manager
    sudo apt --purge remove <package_name> 
     
    ## For CUDA 11.3 and earlier
    sudo apt-get --purge remove "*nvidia*"
    sudo apt-get --purge remove "*cublas*" "cuda*" "nsight*" 
     
    # --- 
     
    # To remove CUDA Toolkit:
    sudo apt-get --purge remove "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"
     
    # To remove NVIDIA Drivers:
    sudo apt-get --purge remove "*nvidia*" "libxnvctrl*"
     
    # If you've install via source files
    sudo rm -rf /usr/local/cuda*
     
    # If you cleanup totally
    sudo rm /etc/apt/sources.list.d/cuda*
    sudo apt-get autoremove && sudo apt-get autoclean
    sudo apt autoremove

Ref.:

  1. 18. Removing CUDA Toolkit and Driver

NVIDIA Driversのインストール

次に、最新のNVIDIAドライバをインストールします。以下の手順で、適切なドライバをダウンロードしてインストールします。

ドライバのダウンロード

  1. 公式NVIDIAドライバ検索ページにアクセス:

  2. 適切なドライバを検索:

    • 使用するGPUモデルに応じたドライバを選択します。例えば、デスクトップ用のGeForce GTX 1080であれば、対応するオペレーティングシステム(Windows、Linuxなど)も選択して、検索結果から最新のドライバを選択します。
  3. ドライバをダウンロード:

    • ダウンロードページから実行ファイル(例:.exeファイルや.runファイル)をダウンロードします。

ドライバのインストール

Windowsの場合

  1. ダウンロードした実行ファイルを実行します。
  2. インストールウィザードに従い、「カスタムインストール」を選択して、「クリーンインストール」 オプションを有効にします。
  3. インストールが完了したら、PCを再起動します。

Linuxの場合

  1. ダウンロードした.runファイルを実行可能にするため、以下のコマンドを使用します。

    chmod +x NVIDIA-Linux-x86_64-<version>.run
  2. 実行ファイルを以下のコマンドで実行します。

    sudo ./NVIDIA-Linux-x86_64-<version>.run
  3. 指示に従ってインストールを完了します。

  4. インストール後にシステムを再起動し、nvidia-smi コマンドを使ってドライバが正しくインストールされていることを確認します。

    nvidia-smi

CUDA Toolkitのインストール

CUDA(Compute Unified Device Architecture)は、NVIDIAによって提供される並列計算プラットフォームです。これをインストールすることで、TensorFlowやPyTorchなどの深層学習フレームワークでGPUの能力を活用できます。

CUDA Toolkitのダウンロード

  1. CUDA Toolkitの公式ページにアクセス:

  2. 適切なバージョンを選択:

    • 最新の安定版か、使用するアプリケーションがサポートしているバージョンをダウンロードします。

CUDA Toolkitのインストール

Windowsの場合

  1. ダウンロードしたインストーラを実行します。
  2. インストールウィザードに従ってCUDA Toolkitをインストールします。
  3. 環境変数にCUDA_PATHが追加されていることを確認します。

Linuxの場合

  1. .debパッケージを使用してインストールする場合:

    cat /var/log/cuda-installer.log
     
    wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb
    sudo dpkg -i cuda-keyring_1.1-1_all.deb
    sudo apt-get update
    sudo apt-get -y install cuda-toolkit-12-6
     
    sudo apt-get install -y nvidia-open
  2. .runファイルを使用する場合:

    # sudo apt update
    # sudo apt upgrade -y
    # sudo apt install cuda-toolkit
    # sudo apt install nvidia-gds
    # sudo reboot
     
    # Install Driver
    wget https://developer.download.nvidia.com/compute/cuda/12.6.0/local_installers/cuda_12.6.0_560.28.03_linux.run
     
    # Install CUDA Driver
    sudo sh cuda_12.6.0_560.28.03_linux.run
    sudo sh cuda_12.6.0_560.28.03_linux.run --silent --driver
     
    ## Add filepath
    cat /etc/ld.so.conf.d/cuda-12-6.conf
    sudo echo -e "\n/usr/local/cuda-12.6/lib64\n" > /etc/ld.so.conf.d/cuda-12-6.conf
     
    ## Or set PATH  ( e.g. add to ~/.config/fish/config.fish )
    set -gx CUDA_HOME /usr/local/cuda-12.6
    set -gx PATH $PATH:$CUDA_HOME/bin
    set -gx LD_LIBRARY_PATH $CUDA_HOME/lib64
     
    # Check PATH 
    echo $PATH | tr ' ' '\n' | grep cuda
    echo $LD_LIBRARY_PATH | tr ' ' '\n' | grep cuda

    スクリプトを実行後、数分後、次のような案内が表示される。 それぞれ適切な値を入力する。

    ┌──────────────────────────────────────────────────────────────────────────────┐
      End User License Agreement
      --------------------------
    
      NVIDIA Software License Agreement and CUDA Supplement to
      Software License Agreement.
    
      The CUDA Toolkit End User License Agreement applies to the
      NVIDIA CUDA Toolkit, the NVIDIA CUDA Samples, the NVIDIA
      Display Driver, NVIDIA Nsight tools (Visual Studio Edition),                │
      and the associated documentation on CUDA APIs, programming
      model and development tools. If you do not agree with the
      terms and conditions of the license agreement, then do not
      download or use the software.
    
      Last updated: January 12, 2024.
    
    
      Preface
      -------
    
    │──────────────────────────────────────────────────────────────────────────────│
     Do you accept the above EULA? (accept/decline/quit):                         │
     accept
    └──────────────────────────────────────────────────────────────────────────────┘

    導入するソフトウェアの選択

    ┌──────────────────────────────────────────────────────────────────────────────┐
     CUDA Installer
     + [X] CUDA Toolkit 12.6                                                      │
       [X] CUDA Demo Suite 12.6                                                   │
       [X] CUDA Documentation 12.6                                                │
     - [ ] Kernel Objects
          [ ] nvidia-fs
       Options
       Install
    
    ~
     Up/Down: Move | Left/Right: Expand | 'Enter': Select | 'A': Advanced options
    └──────────────────────────────────────────────────────────────────────────────┘

    シンボリックリンクがある場合の表示

    ┌──────────────────────────────────────────────────────────────────────────────┐
     A symlink already exists at /usr/local/cuda. Update to this installation?
     Yes
     No
    
    ~
     Up/Down: Move | 'Enter': Select
    └──────────────────────────────────────────────────────────────────────────────┘

    Toolkitがある場合の表示

    ┌──────────────────────────────────────────────────────────────────────────────┐
     Existing installation of CUDA Toolkit 12.6 found:
     Upgrade all
     Choose components to upgrade
     No, abort installation
    
    ~
     Up/Down: Move | 'Enter': Select
    └──────────────────────────────────────────────────────────────────────────────┘

    数分要するので、待機する。

    完了後の表示

    ┌──────────────────────────────────────────────────────────────────────────────┐
     Existing installation of CUDA Toolkit 12.6 found:
     Upgrade all
     Choose components to upgrade
     No, abort installation
    
    ~
     Up/Down: Move | 'Enter': Select
    └──────────────────────────────────────────────────────────────────────────────┘

    失敗した場合等の表示 (詳細はトラブルシューティングガイドを参照)

    ===========
    = Summary =
    ===========
     
    Driver:   Not Selected
    Toolkit:  Installed in /usr/local/cuda-12.6/
     
    Please make sure that
    -   PATH includes /usr/local/cuda-12.6/bin
    -   LD_LIBRARY_PATH includes /usr/local/cuda-12.6/lib64, or, add /usr/local/cuda-12.6/lib64 to /etc/ld.so.conf and run ldconfig as root
     
    To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-12.6/bin
    ***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 560.00 is required for CUDA 12.6 functionality to work.
    To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
       sudo <CudaInstaller>.run --silent --driver
     
    Logfile is /var/log/cuda-installer.log

cuDNNのインストール

cuDNN(CUDA Deep Neural Network library)は、NVIDIAによる深層学習フレームワークのためのGPU加速ライブラリです。これにより、TensorFlowやPyTorchでの学習速度が大幅に向上します。

cuDNNのダウンロード

  1. NVIDIA cuDNNページにアクセス:
    • cuDNN Download から使用するCUDAバージョンに対応したcuDNNをダウンロードします。
  2. NVIDIA Developerアカウントにサインイン:
    • cuDNNのダウンロードにはNVIDIA Developerアカウントが必要です。

Ref.:

  1. https://developer.nvidia.com/rdp/form/cudnn-download-survey

cuDNNのインストール

Windowsの場合

  1. ダウンロードしたZIPファイルを解凍します。
  2. bin, include, libフォルダを、CUDA Toolkitのインストール先ディレクトリにコピーします(デフォルトはC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.X)。

Linuxの場合

  1. ダウンロードした.tgzファイルを解凍します。
    tar -xzvf cudnn-<version>-linux-x64-vX.X.X.tgz
  2. 次のコマンドでライブラリをCUDAディレクトリにコピーします。
    sudo cp -a cuda/include/* /usr/local/cuda/include/
    sudo cp -a cuda/lib64/* /usr/local/cuda/lib64/
    sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

NVIDIA Container Toolkitのインストール

NVIDIA Container Toolkitを使用すると、Dockerコンテナ内でGPUを使用することができます。これにより、GPUリソースを共有する複数のコンテナを効率的に管理できます。

Dockerのインストール

Dockerをインストールしていない場合は、まずDockerをインストールします。

Windows(WSL)の場合

  1. Docker Desktopをダウンロード:
    • Docker Desktopからダウンロードしてインストールします。

Linuxの場合

  1. Dockerをインストール:
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io

NVIDIA Container Toolkitのインストール

Windows(WSL)の場合

  1. Docker DesktopでGPUサポートを有効化します。Settings > Resources > WSL Integrationで、使用するWSLディストリビューションに対してEnable GPU supportを有効にします。

Linuxの場合

  1. パッケージリポジトリを追加します。

    curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
    && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
    sudo apt-get update
    sudo apt-get install -y nvidia-docker2
    sudo systemctl restart docker
  2. DockerがGPUを認識しているか確認します。

    docker run --gpus all nvidia/cuda:10.0-base nvidia-smi

Dockerの構成

Dockerコンテナ内でGPUを使用するためには、docker-composedocker runコマンドで--gpusオプションを使用して、コンテナにGPUリソースを割り当てます。

設定をはじめるには

sudo nvidia-ctk runtime configure --runtime=docker

Docker Composeの設定例

version: '3.8'
services:
  gpu-app:
    image: nvidia/cuda:10.0-base
    deploy:
      resources:
        reservations:
          devices:
            - capabilities: [gpu]
    runtime: nvidia
    environment:
      - NVIDIA_VISIBLE_DEVICES=all

Dockerを使用する

再起動させましょう

sudo systemctl restart docker

参考

  1. CUDA on WSL
  2. CUDA Toolkit 12.1 Downloads
  3. GPU in Windows Subsystem for Linux (WSL)
  4. Upgrading to the NVIDIA Container Runtime for Docker :: DGX Systems Documentation
  5. CUDA Installation Guide for Linux
  6. How to remove cuda completely from ubuntu?
  7. CUDA Installation Guide for Linux
  8. How to remove cuda completely from ubuntu?