機械学習とか

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 です.