機械学習用のDocker環境のテンプレートを提供します。
このリポジトリでは特に技術的に新しいことはやってません。Dockerの特徴を利用した機械学習プロジェクトの運用スキームを提案します。
- 資材の重複を最小限に
- Docker Imageはベースイメージからの変更差分のみを保持するため、似たようなプロジェクトが増えても資材の重複を最小限に収められます。
- スピーディな環境構築
- 必要なものはベース環境にインストールされているため、ベース環境の構築時間分が短縮されます1。
- 簡単に復元可能
- Dockerコンテナは使い捨てなので仮に壊れても簡単に初期状態に戻すことができます。
Dockerおよびdocker composeを利用しているため、これらの技術に対する運用レベルの知識を前提としています。 また、環境構築に必要な資材は以下です。
- OS:
Ubuntu 22.04 LTS
でテスト済み cuda
に対応したGPU- Docker Engine
- Docker Compose
- NVIDIA Container Toolkit
/ml-docker/input
: データセットを格納することができます。ホストマシンの./input
と同期しています。/ml-docker/working
: ノートブックやノートブックの出力ファイルが作成されます。ホストマシンの./working
と同期しています。
- このテンプレートリポジトリから新しいリポジトリを作成します
- 定義のカスタマイズ
Dockerfile
を編集してベースイメージを変更します(特にこだわりがなければそのままでも可)- 初回でインストールする依存パッケージを
./artifact/requirements.txt
に追加します(試行錯誤したい場合は起動後にターミナルからインストールしても可)
docker compose up --build
dockerイメージをビルドしてコンテナを起動します
- ホストマシン上で必要に応じて
./input
にデータセットをダウンロードしておきます(notebookからダウンロードしても可)。 - ブラウザから
http://localhost:8888
にアクセスしてJupyter Labのクライアントを立ち上げます。 - ipython notebookを新規作成して機械学習タスクのコードを編集し、実行します。
- 使い終わったら
docker compose
を起動しているターミナルでCtrl-C
を押してコンテナを停止します。 - コンテナに対して行った変更(例:
pip install
)をクリアしたい場合はdocker compose rm
します。
Footnotes
-
ただし、最初にベースイメージのダウンロードの時間がかかります。 ↩