LoginSignup
2
3

VScode+Devcontainerでpytorch-cuda開発環境を構築する

Last updated at Posted at 2023-08-07

概要

自分用にVS Codeのdevcontainer機能を活用した機械学習環境を作ったのでメモ。

リポジトリ

使い方

リポジトリを見てください

カスタマイズ

  • デフォルトのDockerfileは以下のように定義しています。
    • ベースイメージは使いたいpytorchのバージョンを指定してください。
      • GPGエラーが出る場合、参考サイトを見て新しいkeyに更新してください。
    • 新しいユーザーを追加していますが、rootユーザーで作成したファイルがホスト側から編集できなくなることへの対処です。必要なければ削除しても問題ありません。
    • 必要に応じてパッケージやライブラリを追加してください。
FROM pytorch/pytorch:1.11.0-cuda11.3-cudnn8-devel
# ベースイメージによってはdocker build時にGPGエラーが発生して途中で止まる。
# その場合、<https://zenn.dev/takakurasato/scraps/d3e0ee6132a5c5>を参考にして解決する。
RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub
RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub

RUN apt-get update && apt-get install -y \
    git wget libgl1-mesa-glx libglib2.0-0 \
    sudo \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# Add user
ARG USERNAME=developer
ARG GROUPNAME=localuser
ARG UID=1000
ARG GID=1000
ARG PASSWORD=pass
RUN groupadd -g $GID $GROUPNAME && \
    useradd -m -s /bin/bash -u $UID -g $GID -G sudo $USERNAME && \
    echo $USERNAME:$PASSWORD | chpasswd && \
    echo "$USERNAME   ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
USER $USERNAME

RUN pip install jupyter black flake8 mypy numpy pandas matplotlib scikit-learn opencv-python torchinfo torchsummary
  • デフォルトのdevcontainer.jsonは以下のように定義しています。
    • nameはVS Code画面左下に表示される開発コンテナー:XXXXに表示される名前です。好きなものに変更してください。
    • buildにはdevcontainer.jsonのパスからみたDockerfileの相対位置を指定しています。同じパスならファイル名だけ記述すればよいです。
    • runArgsはdocker runのオプションを記述する所です。必要があれば追加してください。
    • customizationsには好きなVS Codeの拡張機能を追加してください。
{
    "name": "pytorch",
    "build": {
        "dockerfile": "Dockerfile"
    },
    "runArgs": [
        "--rm",
        "--shm-size",
        "1g",
        "--gpus",
        "all"
    ],
    "customizations": {
        "vscode": {
            "extensions": [
                // Python
                "ms-python.python",
                "ms-python.flake8",
                "ms-python.black-formatter",
                "njpwerner.autodocstring",
                // Jupyter
                "ms-toolsai.jupyter",
                // Git
                "eamodio.gitlens",
                "donjayamanne.githistory",
                // etc
                "visualstudioexptteam.vscodeintellicode"
            ]
        }
    }
}

参考

2
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3