Sunday, March 25, 2018

簡単にKeras+tensorflow+Jupyter notebook環境を導入する方法

kerasとtensorflowを組み合わせた環境が人気ですが、インストールが結構面倒です。
・virtualenv
・pip
をインストールしないとで、しかもpython2と3の場合分けがあったり...
macOS環境もそれなりに汚れます。
そこで、Dockerを使ったインストール方法を説明します。
なお、macOSをベースに説明しますが、Windows10でもほぼ同じと思います。

0. 前提条件
・4GB以上のメモリ(Dockerインストールのため)
・Windowsの場合は10 Proが必要

1. Dockerのインストール
こちらから Community Editionをインストールします。
インストールは普通のソフトウェアと同じです。
インストールが終われば勝手にdockerサービスが起動します。


2. Dockerfileの準備
ベースは以下なのですが、
https://hub.docker.com/r/ermaker/keras-jupyter/
tensorflowが古かったり、Pillowが入ってなかったり、theanoはいらないので改造します。
適当にフォルダを作成(例えば /Users/casey/keras/Docker/build/ とします)し、以下を Dockerfile という名称で保存します。

FROM ubuntu
RUN apt-get update \
  && apt-get install -y --no-install-recommends \
    build-essential \
    curl \
    git \
  && rm -rf /var/lib/apt/lists/*
RUN curl -qsSLkO \
    https://repo.continuum.io/miniconda/Miniconda-latest-Linux-`uname -p`.sh \
  && bash Miniconda-latest-Linux-`uname -p`.sh -b \
  && rm Miniconda-latest-Linux-`uname -p`.sh
ENV PATH=/root/miniconda2/bin:$PATH
RUN conda install -y \
    h5py \
    pandas \
    jupyter \
    matplotlib \
    tensorflow \
    Pillow \
    seaborn \
  && conda clean --yes --tarballs --packages --source-cache \
  && pip install --upgrade -I setuptools \
  && pip install --upgrade \
    pip \
    keras
VOLUME /notebook
WORKDIR /notebook
EXPOSE 8888
CMD jupyter notebook --no-browser --ip=0.0.0.0 --allow-root --NotebookApp.token=

(環境により「\」が「¥」表示になるかもしれません)


3. dockerイメージのビルド
terminalアプリを起動し、以下コマンドを実行します
まずはDockerfileがある場所に移動

cd ~/keras/Docker/build

ビルド

docker build ./ -t ermaker/keras-jupyter

「ermaker/keras-jupyter」の部分は好きな名前でも良いです


4. dockerイメージからの起動
terminalアプリで以下コマンドを実行します。
docker imageの確認

docker images

作成した「ermaker/keras-jupyter」があることを確認します
以下コマンドでdockerコンテナが起動します

docker run -it -p 8888:8888 -v ~/:/notebook ermaker/keras-jupyter

「~/」つまり「/Users/casey/」をdockerコンテナの/notebookにマウントするようにしていますが、
「~/」以外でも大丈夫です。

5. keras環境へのアクセス
webブラウザから

http://localhost:8888

にアクセスするだけでkerasが使えるようになりました!


6. dockerコンテナの終了
docker run〜コマンドを実行したterminalで「Ctrl+c」でdockerコンテナが終了します。
いやいや、dockerは便利ですね

No comments: