これは何?
ホスト環境を汚さずに、GPUに対応したJupyterLab環境が作れます。Docker Desktop for Windows(wsl2対応)がインストールされていることが前提となります。
手順
まずは適当な場所にフォルダを作成し、Dockerfileとrequirements.txtを配置します。requirements.txtの方は、その時々作りたい環境に応じて変更してください。
※2023/01/31 時点では、setuptoolsをバージョン指定してインストールしないと、gymが依存関係エラーでコケるので、注意が必要です。
※2023/06/15 時点では、setuptoolsおよびwheelのバージョン指定が必要になっています。
FROM nvcr.io/nvidia/cuda:11.3.0-cudnn8-devel-ubuntu20.04
ENV DEBIAN_FRONTEND=noninteractive
USER root
COPY ./requirements.txt /tmp
WORKDIR /code
RUN apt-get update && apt-get -y upgrade
RUN apt install -y curl python3.9 python3-distutils
RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 10
RUN apt install libgl1-mesa-dev
RUN apt install -y libglib2.0-0
RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && python3 get-pip.py
RUN pip install setuptools==65.5.0 "wheel<0.40.0"
RUN pip install -r /tmp/requirements.txt
jupyter
jupyterlab
nltk == 3.6.5
opencv-python == 4.5.5.62
ttach == 0.0.3
janome == 0.4.1
transformers == 4.15.0
gym == 0.21.0
pyglet == 1.5.16
torchtext == 0.11.2
torchcam == 0.3.0
torchsummary == 1.5.1
grad-cam == 1.3.7
fugashi == 1.1.1
ipadic == 1.0.0
numpy == 1.22.2
scipy == 1.7.3
pandas == 1.3.5
matplotlib == 3.5.1
scikit-learn == 1.0.2
pillow == 8.4.0
gensim == 4.1.2
torch == 1.10.2
torchinfo == 1.6.3
torchvision == 0.11.3
torchaudio==0.10.2
用意ができたら、Dockerイメージをビルドします。
PS C:\Users\hoge\fuga> docker build . -t fuga
ビルドが終わったら、起動します。ローカルのフォルダをマウントしてnotebook-dirに指定することで、ファイルのやり取りが簡単になります。
docker run -i -t -p 8887:8887 --mount type=bind,source="$(pwd)"/src,target=/mnt/src --gpus all fuga /bin/bash -c "\\
jupyter lab \\
--notebook-dir=/mnt/src --ip='*' --port=8887 \\
--no-browser --allow-root"
あとは、起動時のログに出てくるURLにアクセスするだけ。cuda の動作確認は、以下にて。
print(torch.cuda.is_available())
print(torch.cuda.device_count())
print(torch.cuda.get_device_name())
print(torch.cuda.get_device_capability())
True
1
NVIDIA GeForce RTX 2060
(7, 5)
最後に
この手の情報は、その時々によって結果は異なるのですぐにゴミになるけど、とりあえず2023/1/31時点で上手く動いているメモということで備忘まで。基本はGoogle Colaboratoryで良いんだけど、機械学習をローカルで動かしたいということも結構あったりなかったり。。
参考サイト

【Docker】GPU が使える Jupyter Notebook 環境を最速で用意する - Qiita
#目的Docker コンテナで Jupyter Notebook を立ち上げて、GPU が使えるようにします。NVIDIA 公式の CUDA がインストールされた Docker イメージを元にし…

【備忘録】WSL2とDockerでGPU + Miniconda環境を構築 - Qiita
はじめに本記事は筆者の備忘録です。最近ローカル環境を汚すことが多かったので、今回はWSL2 + DockerでGPU環境を構築します。Minicondaを採用した理由としては、普段Poetry…
コメント