はじめに

  • Visual Studio Code (以下 VScode)の Dev Containers (以下 devcontainers)を用いて,cuda 環境を構築する方法をまとめる。

解説しないもの

  • VScode とは
  • devcontainer とは

方法

  1. 利用する CUDA のバージョンを決める

    以下 CUDA 12.1 を利用する。 CUDA と cuDNN のバージョンを合わせないと devcontainers のビルドに失敗する。 まずは,CUDA 12.1 に対応する cuDNN のバージョンを確認する。

    リポジトリ

    CUDA のインストールスクリプトにアクセスし,インストール元のリポジトリを確認する

    2023/10/20 時点では,Ubuntu 20.04 のものが利用されていた NVIDIA_REPO_URL="https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64"

    このリポジトリにアクセスし,CUDA 12.1 に対応する cuDNN のバージョンを確認する cudnn で cuda12.1 に対応しているものは以下の通りにであった

    libcudnn8-dev_8.9.0.131-1+cuda12.1_amd64.deb    429MB   2023-04-06  03:02
    libcudnn8-dev_8.9.1.23-1+cuda12.1_amd64.deb     433MB   2023-05-01  18:32
    libcudnn8-dev_8.9.2.26-1+cuda12.1_amd64.deb     434MB   2023-05-31  15:59
    libcudnn8-dev_8.9.1.23-1+cuda11.8_amd64.deb     434MB   2023-05-01  19:30
    libcudnn8-dev_8.9.3.28-1+cuda12.1_amd64.deb     462MB   2023-07-06  16:11
    

    以下 cuDNN8 8.9.3.28 を利用する

  2. Dev Container を構築する

    F1 キーを押して,以下のコマンドを実行する。

    開発コンテナー:開発コンテナー構成ファイルを追加…
    Dev Containers: Add Dev Container Configuration Files ...
    
  3. ベースの環境を選択する 特にこだわりがなければ Python でよいだろう

    Python 3 devcontainers
    Develop python3 applications.
    

    続いて,Python のバージョンと OS を指定する

    環境維持のため,マイナーバージョン(Python 3.10, 3.11 等)まで指定するとよい bookworm や bullseye は Debian のバージョンである

    3.11-bullseye
    3.11-bookworm
    3.10-bookworm
    

    以下 Python3 3.10-bookworm を利用する

    ※ anaconda が利用したければ,anaconda や miniconda のイメージも存在するが(私の趣味により動作を確認していない)

  4. 拡張機能を追加する ここが本題である まず,cuda を選択する

    NVIDIA CUDA devcontainers
    install shared libraries for NVIDIA CUDA
    

    オプションを構築し,

    installCudnn
    installCudnnDev
    installToolkit
    

    を選択する

    ここで CUDA のバージョン(12.1)を選択する 続いて,cuDNN のバージョン(8.9.3.28)を選択する

  5. 構成ファイルを確認する .devcontainer に devcontainers.json というファイルが出力される

    // For format details, see https://aka.ms/devcontainer.json. For config options, see the
     // README at: <https://github.com/devcontainers/templates/tree/main/src/python>
     {
         "name": "Python 3",
         // Or use a Dockerfile or Docker Compose file. More info: <https://containers.dev/guide/dockerfile>
         "image": "mcr.microsoft.com/devcontainers/python:1-3.10-bookworm",
         "features": {
             "ghcr.io/devcontainers/features/nvidia-cuda:1": {
             "installCudnn": true,
             "installCudnnDev": true,
             "installToolkit": true,
             "cudaVersion": "12.1",
             "cudnnVersion": "8.9.3.28"
             }
         }
    
         // Features to add to the dev container. More info: https://containers.dev/features.
         // "features": {},
    
         // Use 'forwardPorts' to make a list of ports inside the container available locally.
         // "forwardPorts": [],
    
         // Use 'postCreateCommand' to run commands after the container is created.
         // "postCreateCommand": "pip3 install --user -r requirements.txt",
    
         // Configure tool-specific properties.
         // "customizations": {},
    
         // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
         // "remoteUser": "root"
     }
    

    cudaVersion と cudnnVersion が設定した値と合っているか確認する。