Dockerで機械学習環境を整える
## 前置き
複数人で使用するGPUリソースがあるのですが,それぞれ使うライブラリであったり,それを動かすためのCudaのバージョンが違うなどの問題があり,それを解決するための時間を削減するために導入して見ました.
Dockerとは
アプリケーションの依存関係を容易に解決でき,動作が軽やかなため同時に複数のコンテナを動かすことができたり,作成したアプリケーションのデプロイを簡易にしたりすることができます.
Dockerfile
コンテナを作成するためにイメージを作成します.
このイメージを作成するためにDockerfileを記述していきます.
FROM nvidia/cuda:8.0-cudnn5-devel MAINTAINER TrsNium RUN rm /bin/sh && ln -s /bin/bash /bin/sh RUN apt-get -y update RUN apt-get -y upgrade RUN apt-get -y install git build-essential libssl-dev RUN apt-get -y install software-properties-common RUN add-apt-repository -y ppa:neovim-ppa/unstable RUN apt-get -y update RUN apt-get -y install neovim #setup nevoim RUN git clone https://github.com/TrsNium/nvim_config.git ~/nvim_config RUN mkdir ~/.config RUN mv ~/nvim_config/nvim $HOME/.config/ && mv ~/nvim_config/dein ~/.config/ RUN rm -r ~/nvim_config #setup pyenv RUN git clone https://github.com/pyenv/pyenv.git ~/.pyenv RUN echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc RUN echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc RUN echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc
1行目の FROM nvidia/cuda:8.0-cudnn5-devel
はあらかじめCuda環境がセットアップされたイメージをベースに使います.
cuda 8 cudnn5がデフォルトでセットアップされた環境が作成されます.
その下のapt-get -y
でgitや開発環境のneovimを導入します.
-y
オプションを付けないとイメージのビルドに成功しないので気をつけてください.
setup neovim
では僕がいつも使用しているneovimの環境をgitのレポジトリからクローンしてコンフィグファイルに入れいています.
setup pyenv
では好きなpython環境を使用できるようにpyenvを導入しています.
あとは sudo nvidia-docker build -t {お好きなイメージタグ名} --no-cache ./
でビルドが始まりイメージがきます.
コンテナの起動は sudo nvidia-docker run -it -d --name {お好きなコンテナ名} {お好きなイメージタグ名}
.
コンテナに接続するためには sudo docker exec -it {お好きなコンテナ名} /bin/bash
です.