概要
自分用にVS Codeのdevcontainer機能を活用した機械学習環境を作ったのでメモ。
リポジトリ
使い方
リポジトリを見てください
カスタマイズ
- デフォルトの
Dockerfile
は以下のように定義しています。- ベースイメージは使いたいpytorchのバージョンを指定してください。
- GPGエラーが出る場合、参考サイトを見て新しいkeyに更新してください。
- 新しいユーザーを追加していますが、rootユーザーで作成したファイルがホスト側から編集できなくなることへの対処です。必要なければ削除しても問題ありません。
- 必要に応じてパッケージやライブラリを追加してください。
- ベースイメージは使いたいpytorchのバージョンを指定してください。
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は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"
]
}
}
}
参考