Dockerにtensorflowを組み込んでDeep Learningしてみる

はじめに

機械学習やら色々な新しい事を実践的に試すべく エロサイトを開発中。モトダチ 開発実践用にオープンしているので広告は入っておりませんのでお気軽にどうぞ。 色々工夫したアプリケーションの作りになっているのでレスポンスは速いはず。

今回のミッション

dockerにTensorFlowをインストールしてDeep Learningを使う環境を構築する

TensorFlowとは

大規模な数値計算を行うライブラリ。 機械学習や深層学習が実践できるが、それだけでなく汎用的な仕組みを提供。 テンソルというの多次元行列計算のこと。

Windows/MacOS/Linuxと各種OSで動かすことが可能で、PythonJava、Go、C言語とさまざまな言語から利用可能。 機械学習のライブラリとして人気が高く資料も充実。

Dockerのインストール

Windowsの人 https://docs.docker.com/docker-for-windows/install/ Macの人 https://docs.docker.com/docker-for-mac/install/

Docker fileの作成

これを適当なワーキングディレクトリに「Dockerfile」として作成

FROM ubuntu:16.04
MAINTAINER test@test.com

ENV LANG C.UTF-8

# install for Python
RUN set -x && \
    apt-get update && \
    apt-get install -y --no-install-recommends \
        build-essential \
        curl \
        libfreetype6-dev \
        libpng12-dev \
        libzmq3-dev \
        pkg-config \
        python3 \
        python3-dev \
        python3-pip \
        python3-setuptools \
        python3-wheel \
        gcc \
        git \
        rsync \
        software-properties-common \
        libgtk2.0-dev \
        libavcodec-dev \
        libavformat-dev \
        libswscale-dev \
        libopencv-dev \
        libdc1394-22 \
        libdc1394-22-dev \
        libjpeg-dev \
        libpng12-dev \
        libtiff5-dev \
        libjasper-dev \
        libavcodec-dev \
        libavformat-dev \
        libswscale-dev \
        libxine2-dev \
        libgstreamer0.10-dev \
        libgstreamer-plugins-base0.10-dev \
        libv4l-dev \
        libtbb-dev \
        libqt4-dev \
        libfaac-dev \
        libmp3lame-dev \
        libopencore-amrnb-dev \
        libopencore-amrwb-dev \
        libtheora-dev \
        libvorbis-dev \
        libxvidcore-dev \
        x264 \
        v4l-utils \
        unzip \
        nano \
        language-pack-ja \
        fonts-ipafont \
        && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

RUN set -x && \
#   pip3 install --upgrade pip && \
    pip3 --no-cache-dir install \
        requests \
        setuptools \
        Pillow \
        nose \
        h5py \
        ipykernel \
        jupyter \
        matplotlib \
        mlxtend \
        numpy \
        pandas \
        scipy \
        sklearn \
        seaborn \
        opencv-python==3.4.0.12 \
        tensorflow==1.5.0 \
        keras==2.1.4 \
        flask

RUN set -x && \
    mkdir -p /root/.config/matplotlib && \
    echo 'backend : Agg' > /root/.config/matplotlib/matplotlibrc && \
    echo 'font.family : IPAPGothic' >> /root/.config/matplotlib/matplotlibrc


ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP.UTF-8
ENV LC_ALL ja_JP.UTF-8

dockerイメージをビルド

Dockerfileが置いてあるワーキングディレクトリ内で下記コマンドを走らせる。 sample-nameはお好きな名前にどうぞ

docker build -t sample-name .

ビルドしたイメージを実行

docker run -it -p 8888:8888 -v `pwd`:/src sample-name

次回からの起動法とコンテナへの接続方法(Dockerの基本操作)

#コンテナ一覧を取得
docker ps -a #これでDockerの一覧を取得。コンテナIDが重要

#コンテナの起動
docker start CONTAINER-ID #上のコマンドで見えるコンテナIDを入力

#コンテナの停止
docker stop CONTAINER-ID #上のコマンドで見えるコンテナIDを入力

#コンテナの再起動
docker restart CONTAINER-ID #上のコマンドで見えるコンテナIDを入力

#コンテナに接続
docker attach CONTAINER-ID #上のコマンドで見えるコンテナIDを入力

TesorFlowのインストール

#コンテナに接続した状態で
pip install --upgrade tensorflow==1.5.0

これだけ、簡単ですな。

最後に

モトダチ是非是非よろしくお願いします!!

色々意見頂けると開発のモチベーションが上がります。 何かあればぜひコメント下さい。