SIGNATE_おれおれ環境構築備忘録_1(GitHub〜Docker構築編)
前提条件
この手順を実行するには、以下の環境が必要です。
GitHubアカウント: GitHubのリポジトリを利用するため、GitHubアカウントが必要です。アカウントをお持ちでない場合は、GitHubで作成してください。
Docker Desktop: Docker環境が必要です。Docker Desktopをインストールし、動作していることを確認してください。Apple Silicon (M1/M2チップ)を搭載したMacの場合は、Apple Silicon対応版をインストールしてください。
Git: Dockerイメージのビルドに必要なため、Gitがインストールされている必要があります。
Docker Compose: docker-compose.ymlファイルを利用するため、Docker Composeが必要です。Docker Desktopに含まれていますが、含まれていない場合は別途インストールしてください。
(任意) Visual Studio Code (VSCode): VSCodeでJupyter Notebookを利用する場合、VSCodeと必要な拡張機能(Remote - Containersなど)をインストールしてください。
Kaggleの公式Dockerイメージはサイズが大きいため、もっと軽量なイメージを探していました。その過程で、以下のブログ記事を見つけ、参考にさせていただきました。感謝いたします。
https://tech.aru-zakki.com/docker-jupyter-notebook-apple-silicon/
このブログ記事を参考に、Apple Silicon Macでも快適に動作する軽量なJupyter Notebook環境を構築する手順を以下にまとめました。
手順
GitHubにてプロジェクト作成
プロジェクトをClone
プロジェクトフォルダで以下のファイルを作成
Dockerfile
FROM condaforge/miniforge3:latest
RUN apt update && \
apt install -y build-essential
COPY requirements.txt /tmp
RUN pip install -r /tmp/requirements.txt
RUN pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
RUN mkdir /home/work
EXPOSE 8888
CMD ["jupyter", "notebook", \
"--port=8888", \
"--ip=0.0.0.0", \
"--allow-root", \
"--no-browser", \
"--NotebookApp.token=''", \
"--NotebookApp.notebook_dir='/home/work'"]
requirements.txt
numpy
pandas
matplotlib
jupyter
docker-compose.yml
version: "3"
services:
python:
build : ./
shm_size: '2gb'
ports:
- "8888:8888"
volumes:
- "./:/home/work"
プロジェクトフォルダ上で以下のコマンドを実行する。
起動
docker-compose up -d
終了
docker-compose down
requirements.txt 更新時
docker-compose up -d --build
更新後に、noneイメージができるので、消す。
ローカルフォルダとの接続
プロジェクトフォルダがそのまま下記フォルダに接続される。
/home/work
vscodeで使用したいときは上記フォルダを使う。
補足:
condaforge/miniforge3:latest をベースイメージとして使用することで、conda環境も利用可能になります。必要なライブラリがあればrequirements.txtに追加してください。
PyTorchはCPU版をインストールしています。GPUを使用する場合は、適宜変更してください。
shm_size: '2gb' は、Dockerコンテナに共有メモリを割り当てています。メモリ不足が発生する場合は、この値を増やしてください。
noneイメージの削除は、docker image pruneコマンドでまとめて削除できます。
まとめ
上記の手順に従うことで、軽量なDockerイメージを用いたJupyter Notebook環境を構築できます。docker-compose up -dコマンドでコンテナを起動し、ブラウザでhttp://localhost:8888にアクセスすれば、Jupyter Notebookが利用可能です。
この環境は、requirements.txtにライブラリを追加するだけで簡単に拡張できます。condaforge/miniforge3:latestをベースイメージとしているため、condaコマンドも利用可能です。必要に応じて、PyTorchのGPU版への変更や、共有メモリの容量調整なども行えます。
docker-compose.ymlによって、カレントディレクトリがコンテナ内の/home/workにマウントされます。そのため、ローカル環境で編集したファイルがそのままJupyter Notebookで利用可能です。VSCodeのRemote - Containers拡張機能を利用すれば、コンテナ内での開発もスムーズに行えます。
この設定により、Kaggle公式イメージよりも軽量で、かつ必要なライブラリを柔軟に追加できるJupyter Notebook環境を構築することができました。docker image pruneコマンドで不要なイメージを削除することで、ディスク容量の節約にも繋がります。
この記事が気に入ったらサポートをしてみませんか?