メインコンテンツへスキップ
見出し画像

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

     
     

    yu

     
     
    '09年総合職で自動車部品メーカー入社、7年間金型管理・設計エンジニア。'17年職業訓練校でソフトウェア学習。'18年〜現在プログラマー。 https://nishi10000.github.io/portfolio/

    あなたへのおすすめ