Infrastructure as CodeでReNom環境構築入門

Preview:

Citation preview

富士通株式会社 山中惇平

ReNom User Group #2

Infrastructure as CodeでReNom環境構築入門

Copyright 2017 FUJITSU LIMITED 0

本資料及びLTでお話する内容は、個人の見解であり、 所属する組織の公式見解でも代表する意見でもありません。

Who?

名前 山中 惇平 / Jumpei Yamanaka

所属 富士通株式会社 AIサービス事業本部 AIインテグレーション事業部

仕事 AIプラットフォームサービスの開発 ↑で作ったAIプラットフォームを用いた商談対応、データ分析

言語 R/Python/Javascript/Java

昔 ロボットの強化学習 (DL黎明期、まだ黒魔術と呼ばれていた頃。私は触れずに卒業)

Copyright 2017 FUJITSU LIMITED 1

話しの内容

Copyright 2017 FUJITSU LIMITED

Infrastructure as Codeで

ReNom環境構築入門

2

話しの内容

Copyright 2017 FUJITSU LIMITED

Infrastructure as Codeで

ReNom環境構築入門

3

話しの内容

Copyright 2017 FUJITSU LIMITED

Infrastructure as Codeで

ReNom環境構築入門

多くの人が ReNomを

すぐに 使えるように!

4

データ分析環境の構築

データ分析の「環境」をどう整えるか?

Copyright 2017 FUJITSU LIMITED

1. サーバーを用意する 2. OSをインストールする 3. 分析に用いる言語(Python、Rなど)をインストールする 4. パッケージをインストールする 5. エディタ、または統合開発環境を用意する

データ分析を始めるまで

ただしデータそのもののの準備は除く

5

データ分析環境の構築

データ分析の「環境」をどう整えるか?

Copyright 2017 FUJITSU LIMITED

1. サーバーを用意する 2. OSをインストールする 3. 分析に用いる言語(Python、Rなど)をインストールする 4. パッケージをインストールする 5. エディタ、または統合開発環境を用意する

データ分析を始めるまで

ただしデータそのもののの準備は除く

その後 このパッケージPython 2しか

対応して無い! Pythonのバージョンを変えないと~

上司「分析の手が足り無そうなので 新しい分析者をアサインしました。

環境の準備をよろしく。」

実データの分析に移行するにあたって より強力なクラウドサーバで分析を… パッケージがアップデートされて

以前と同じ実験結果が出ない…

6

Docker!!

Copyright 2017 FUJITSU LIMITED 7

DockerでReNom分析環境構築

Copyright 2017 FUJITSU LIMITED 8

注:今回はGPU、cudaまわりは置いておいて まずはCPU環境で作ります。

DockerでReNom分析環境構築

Copyright 2017 FUJITSU LIMITED

nvidia-dockerという dockerのラッパーのようなもので

作れそうではあります

9

Dockerとは

オープンソースの仮想化プラットフォーム

「コンテナ」としてソフトウェアをパッケージングし、 個別の仮想マシンのように使えるようにする。

Copyright 2017 FUJITSU LIMITED

コンテナと仮想マシンの違い

Docker公式Webページより https://www.docker.com/what-container

コンテナは個別にOSを持たない=仮想マシンより軽量、立ち上がりも早い ⇒分析環境の構築/分離/再現に便利

10

Docker導入

https://www.docker.com/

様々なプラットフォームに対応

•デスクトップ *| Windows / Mac

•クラウド向け | Docker for AWS / Docker for Azure

•サーバ | Windows Server / CentOS / Debian / RHEL / Ubuntu /…

*) Windows、MacはバージョンによりDockerの種類が変わる

Copyright 2017 FUJITSU LIMITED

イメージの作成 or

ダウンロード

イメージから コンテナの起動

使ってみる

ここから 入手

インストール後

イメージ =コンテナの素 Docker Hubで 様々なものが公開されている https://hub.docker.com/

11

ReNomイメージの作成

Copyright 2017 FUJITSU LIMITED 12

Python分析環境の導入

DockerはDockerfileというスクリプトからイメージのビルドを行う

Copyright 2017 FUJITSU LIMITED

# イメージの取得。今回はReNomの推奨環境であるUbuntu 16.04ベース FROM Ubuntu:16.04 # パッケージのインストールとアップデート RUN apt-get update && apt-get –y upgrade RUN apt-get –y install build-essential ¥ git vim curl wget ¥ zlib1g-dev ¥ libssl-dev ¥ libreadline-dev ¥ libyaml-dev ¥ libxml2-dev ¥ libxslt-dev ¥ libncurses5-dev ¥ libncursesw5-dev # pyenvのインストール RUN git clone https://github.com/yyuu/pyenv.git /root/.pyenv RUN git clone https://github.com/yyuu/pyenv-pip-rehash.git ¥ /root/.pyenv/plugins/pyenv-pip-rehash ENV PYENV_ROOT root/.pyenv ENV PATH $PYENV_ROOT/bin:$PATH # anacondaのインストール ENV ANACONDA_VER 4.4.0 RUN pyenv install anaconda3-$ANACONDA_VER RUN pyenv global anaconda3-$ANACONDA_VER ENV PATH $PYENV_ROOT/versions/anaconda-$ANACONDA_VER/bin:$PATH # pyenvの初期化 RUN cd /root && eval “$(pyenv init -)” RUN echo ‘eval “$(pyenv init -)”’ >> /root/.bashrc # ReNomインストール RUN git clone https://github.com/ReNom-dev-team/ReNom.git ¥ /root/ReNom RUN mkdir /root/work ENV RENOM_PRECISION 64 RUN cd /root/ReNom && /root/.pyenv/shims/pip install -e . # コンテナ起動時の実行コマンド(Jupyterの起動) CMD /bin/bash -l –c ¥ '/root/.pyenv/shims/jupyter notebook ¥ --NotebookApp.open_browser=False ¥ --NotebookApp.ip=* ¥ --allow-root ¥ --NotebookApp.notebook_dir="/root/work/"'

ReNom推奨であるUbuntuイメージから作成

Anacondaで必要なライブラリやJupyterを 一気にいれる

肝のReNomインストール

コンテナ起動時にJupyterが動くようにする

イメージの作成 or

ダウンロード

イメージから コンテナの起動

使ってみる

注)2017/9/26現在(ReNom ver 2.1.0)でビルド確認

13

Python分析環境の導入

Dockerfileがあるフォルダでビルドのコマンドを実行する

コンテナを起動

Copyright 2017 FUJITSU LIMITED

$ docker build –t renom-jupyter:2.1.0 . …(省略)… $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE renom-jupyter 2.1.0 3f63a0357beb 42 seconds ago 2.57 GB

イメージの作成 or

ダウンロード

イメージから コンテナの起動

使ってみる

$ docker run -d -p 8989:8888 -v /home/yamanaka/work/:/root/work/ --name renom_2_1_0_yamanaka renom-jupyter:2.1.0 f30d5b9504b5855c6f0cf4714e28c5055c62e3fa2eb5c95ab865336029aae749 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f30d5b9504b5 renom-jupyter:2.1.0 "/bin/sh -c '/bin/..." 16 minutes ago Up 16 minutes 0.0.0.0:8989->8888/tcp renom_2_1_0_ yamanaka

ホストのポート8989を8888にフォワード

ホストのフォルダを作業フォルダとしてマウント Dockerはコンテナ立ち上げ後にデータを保持できない (終了させるとイメージの状態に戻る)ため データはコンテナ外部に保存する必要がある

14

Python分析環境の導入

コンテナが起動したらブラウザでPythonを使える(Jupyter)

Copyright 2017 FUJITSU LIMITED

イメージの作成 or

ダウンロード 使ってみる

イメージから コンテナの起動

15

できあがったもの

Copyright 2017 FUJITSU LIMITED

Docker コンテナ

サーバOS(基本的にはLinux、Windows等でも可)

Docker

pyenv

anaconda (Jupyter, Numpy, …)

Python

ReNom

できたこと→ReNomを使ったデータ分析環境の素早い構築 一度イメージを作れば、あとはdocker run ~~で環境を作成可能 Anacondaが入った重めのイメージでも約2.6GB

16

まだできていないこと

Docker Hub等への公開

誰か有志がいらっしゃいましたら作ってくださってもいいです

GPU対応

必要に迫られるまでは…

ポート枯渇問題

一サーバに環境をたくさんたてすぎるとポートが枯渇する(してる)

その他分析環境とあわせる

R / Rstudio等

その他ツールとあわせる

Git等

Copyright 2017 FUJITSU LIMITED 17

Infrastracture as Code?

インフラのコード化

インフラの構成をコードとして自動化し、また管理、再利用しやすくする

コードなのでアプリケーションの知見(テストやバージョン管理など)が適用できる

特に「アジャイル」の文脈から継続的インテグレーションに運用面の課題を解決するために出てきた経緯がある

データ分析における役割

分析環境を自動で立ち上げる(本日の話でおそらく第一歩)

作ったロジックをディストリビュートするには?

データ分析とアプリとインフラをつなぐ「たしなみ」

データ分析者を増やす →データ分析への敷居を下げに下げることが重要

Copyright 2017 FUJITSU LIMITED

データ

アプリ インフラ

初学者的理解

18

Infrastracture as Code?

インフラのコード化

インフラの構成をコードとして自動化し、また管理、再利用しやすくする

コードなのでアプリケーションの知見(テストやバージョン管理など)が適用できる

特に「アジャイル」の文脈から継続的インテグレーションに運用面の課題を解決するために出てきた経緯がある

データ分析における役割

分析環境を自動で立ち上げる(本日の話でおそらく第一歩)

作ったロジックをディストリビュートするには?

データ分析とアプリとインフラをつなぐ「たしなみ」

データ分析者を増やす →データ分析への敷居を下げに下げることが重要

Copyright 2017 FUJITSU LIMITED

データ

アプリ インフラ

初学者的理解

より多くのデータサイエンティストを!!

19

http://renom.jp/ja/notebooks/tutorials.html

Copyright 2017 FUJITSU LIMITED

より多くのデータサイエンティストを!!

20

まとめ

データ分析の環境をどう立ち上げる?

DockerでReNomコンテナをたててみた

二度目以降は数分で分析環境を立ち上げられるようになる

Infrastructure as Code

データ分析にもとっても役立つ

Copyright 2017 FUJITSU LIMITED 21

Copyright 2017 FUJITSU LIMITED

Thank you!_

22

Recommended