> For the complete documentation index, see [llms.txt](https://k-hirotaka.gitbook.io/knowledge/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://k-hirotaka.gitbook.io/knowledge/wiki/unix-linux/docker-for-ml-experiments.md).

# Docker for ML Experiments

再利用可能な実験環境構築のためのDocker入門

本来、環境構築はさっさと済まし実験に注力すべきであるが、環境構築に何週間もかけ結局できませんでしたなんぞは明かに愚かで恥ずべき行為である。ここでは、Dockerを用いて可能な限り瞬時に実験環境の構築を行う為の方法を紹介する。

PyTorchが提供しているDockerイメージ

### 環境構築の苦悩

カンブリア紀のごとく様々な手法で環境構築を行なっている世界では次のような事が頻発する。

1. ライブラリのバージョンが明記されていない為、同じ名前のライブラリをインストールしても動かない。
2. なぜかLinuxコマンドをスクリーンショットで撮りWordに貼り付けている。
3. OSのバージョンを揃えろと言ったのに出てきたポップアップを何も考えずに押してバージョンアップしてしまう。

などなど...

では、これの何がいけないのだろうか？それぞれ説明しよう。

1. 同じ名前のライブラリをインストールしても動かない。\
   これはよくある事だが、ライブラリのバージョンが想定しているものよりも低ければ当然、関数やクラスが実装されていない事があるだろう。反対に最新のバージョンで問題が起こるのは、関数・クラスが廃止されたか名称が変わった、もしくは引数が変更されたというのが考えられる。<br>
2. コマンドをスクショして貼り付ける。\
   悲しいことに等幅フォントという概念を知らなかったのであろう。確かに動いた。イラストが。<br>
3. OSのバージョンを揃えろと言ったのにバージョンを上げる。\
   言語野に問題がある。病院に行く事をお勧めする。

では、Dockerを使う事でこれらの問題を解決する事ができるだろうか？\
先に答えを述べると、万能ではないが多くの場面で解決できる。実際に試してみよう。

### ハンズオン

**問題設定**\
**`sklearn`** を使ってアヤメを分類する実験を行うとする。実験環境を統一したい。

Scikit-Learn には様々なバージョンが公開されているし、Pythonにだって2系や3系、その中に細かいバージョンがある。さらに言えば、OSはWindowsなのか、macOSなのかはたまたLinux系なのかと色々ある。これの手順書を書こうと思ったら大変な労力と時間がかかり、それが確実に動くとは限らない。

ここで、Dockerを用いた実験管理ではいくつかの制限をかける代わりに上の問題に挑戦する。

1. OS は Linux固定
2. 基本CUI

1つ目、DockerはLinuxカーネルの機能を利用した仕組みなので、Docker内で動作するシステムはLinux向けのプログラムとなる。\
2つ目、方法はあるが労力に見合わないのでCUIのみである。

問題設定と制約を決めたので早速Dockerイメージ作成に取り掛かろう。

1. Dockerfileの作成&#x20;

```bash
FROM continuumio/miniconda3:4.7.12
RUN pip install scikit-learn
```

2\. Dockerfileをビルド

終わりである。

PyTorchが提供しているDockerイメージ

<https://hub.docker.com/r/pytorch/pytorch/tags>

devel ... 開発用

runtime ...実行用

## Docker Hub と Google Container Registry

現在作成中
