自分用機械学習用dockerイメージ作る
要件
GPUを使いたいので、nvidia/cudaのイメージ使う
pythonの新しめのバージョンで固定する
poetry使いたい
調べるうちに、どいつもこいつもminicondaでサクッとpython入れてるのでこれに従ってしまおうか悩んでる
結果としてはminiconda経由でpython入れて、あとはpoetry等でdockerfile作る
上の要件を満たす上での懸念事項
gpu使うなら
要件2つが一般的にはDockerfileのFROMを要求する
FROM nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04
これをしたいが、そうすると後からpythonを入れる必要がある
FROM python:3.8とかで楽をしたいが、こうするとgpuが使えない
どっちかからどっちかに、ファイルの移動で解決できるならそうしたい
そのためには、
引っ張られる方のインストール作業の理解
必要なバイナリの特定
その他の副作用が存在しないこと
を把握する必要がある
結論 2020/9/2
pytorchの公式イメージが楽で手堅い
https://github.com/pytorch/pytorch/blob/master/docker/pytorch/Dockerfile
nvidia/cudaイメージから初めて、minicondaでpythonを入れる
必要に応じてFROMからなんかやる
code:Dockerfile
FROM pytorch/pytorch
COPY pyproject.toml poetry.lock /code/
WORKDIR /code
RUN pip install poetry
RUN poetry config virtualenvs.create false && poetry install --no-interaction --no-ansi
COPY . /code
こんな感じで十分
必要に応じてバージョン固定とかしよう
以下は調査ログ
調査
kaggleのイメージ
https://github.com/Kaggle/docker-python/blob/master/gpu.Dockerfile
cudaの諸々をコピーしている
普通にpythonのインストール手順を確認
https://linuxize.com/post/how-to-install-python-3-8-on-ubuntu-18-04/
code:bash
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.8
cudaはalpineで動かないので、最終的にgpuを触るイメージは公式サポートのベースに揃えよう
また、それでどうせalpineでないイメージを使うので、ビルドステージをalpineとかにするメリットは無いと思う
https://hub.docker.com/r/nvidia/cuda
ubuntuとcentos
debianは無い?
補足:ubuntuはdebianから派生したos
pytorchの公式イメージは何をしてるか
https://github.com/pytorch/pytorch/blob/master/docker/pytorch/Dockerfile
nvidia/cudaからのminicondaですね
python:3.8.5のlatestはbuster(debianのバージョン、コードネーム)
https://github.com/docker-library/python/blob/master/3.8/buster/Dockerfile
これにkaggleのやり方真似て必要なものコピーしたら動いたが
nvidia-msiが見えない
cudaベースに公式pythonイメージのdockerfileコピペしたりしたけど動かず
面倒なのでpytorch公式イメージからやることにした
https://github.com/pytorch/pytorch/blob/master/docker/pytorch/Dockerfile
短くて理解もできるし…
poetry等でdockerfile作るを参考にして、完成!
nvidia/cudaはgitlabだけどnvidia/nvidia-dockerはgithubなのどういうことなんだろ