【Docker】DockerとVSCodeでさくっと作る機械学習環境

Dcoker Docker

機械学習環境ってどれで作るか迷うよね~

昨今では、Google Colaboratory やAmazon SageMaker があるためPythonを用いた機械学習環境の構築に悩むこともなくなってきたと思います。しかし、実務ではコンテナや仮想環境での環境構築が必要になる場面がありますよね。

今回はDockerとVSCodeを使って機械学習環境を構築していくよ!

動作環境

ツールバージョン
Docker Desktop4.13.0 
VS Code1.73
Dev Containers0.262.3
Windows1022H2

ファイル構成

今回はこのようなファイル構成になります。

Test/
├.devcontainer/
│ ├pytohn/
│ │ ├Dockerfile
│ │ └requirements.txt
│ ├devcontainer.json
│ └docker-compose.yml
└work-sample.ipynb

.devcontainerの中にはImageをビルドするためのDockerfileとポート設定などを記述したdocker-compose.yml。後はVS Codeでコンテナにリモート開発プロジェクト構成を記述すdevcontainer.jsonで構成されています。

ベースImage

今回はこちらのImageをベースにします。

https://hub.docker.com/r/jupyter/datascience-notebook

私の環境の場合はWindowsなので、Power Shellで下記のコマンドを入力してイメージを取得します。

docker pull jupyter/datascience-notebook

Git Hubの方にクイックスタートが書かれているのでこちらも参考になりますよ!

GitHub - jupyter/docker-stacks: Ready-to-run Docker images containing Jupyter applications
Ready-to-run Docker images containing Jupyter applications - jupyter/docker-stacks

コード

  • devcontainer.json
  • docker-compose.yml
  • Dockerfile
  • requirements.txt

これらのファイルを作成していきます。

devcontainer.json

“extensions”に”ms-python.python”を設定しておけば、VS Codeでコンテナにリモート接続したときに、最初からPython関係の拡張機能が追加されるため余計な手間がかからないです。

{
	"name": "Python DataSience",
	"dockerComposeFile": [
		"docker-compose.yml"
	],
	"service": "jupyter",
	"workspaceFolder": "/home/jovyan/work",

	"extensions": [
		"ms-python.python"
	]
}

docker-compose.yml

特に解説はありませんが、container_nameは適宜変更してください。

version: "3.9"
services:
  jupyter:
    container_name: my-jupyter
    image: jupyter/datascience-notebook
    build: ./python
    ports:
      - 8888:8888
    environment:
      - JUPYTER_ENABLE_LAB=yes
    volumes:
      - ../work/:/home/jovyan/work
    command: start-notebook.sh

Dockerfile

requirements.txtに記述したモジュールのインストールとpip自体のアップグレードを行います。

FROM jupyter/datascience-notebook

WORKDIR /tmp/work
COPY requirements.txt ${PWD}
RUN pip install --upgrade pip && pip install -r requirements.txt

requirements.txt

今回はプラスαとして、pandas-profilingxgboostをインストールします。適宜必要なライブラリは

ここに追記してください。

pandas-profiling
xgboost

接続

ファイルの準備ができたら、VS CodeよりTestフォルダを開きましょう。

フォルダを開くと左下にポップが表示されます。こちらの”Reopen in Container“をクリック

しても良いですし、画面左下をクリックしてから”Reopen in Container“を選択することもできます。

少しすると無事にコンテナが起動し、勝手にリモート接続します。

試しに、notebookファイルを開いて”Hello”を出力してみましょう。

うまくいきましたね!!

おわりに

いかがだったでしょうか。比較的簡単にDockerを用いた機械学習環境が構築できたと思います。

ホストOSがWindowsだとLinux環境での構築が少々面倒ですが、これなら楽でいいですね!

しかし、慣れるまではいろいろ準備するものが多いためちょっと大変ですね。

タイトルとURLをコピーしました