見出し画像

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イメージができるので、消す。

Docker.Appでの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コマンドで不要なイメージを削除することで、ディスク容量の節約にも繋がります。

この記事が気に入ったらサポートをしてみませんか?