23
富士通株式会社 山中惇平 ReNom User Group #2 Infrastructure as Codeで ReNom環境構築入門 Copyright 2017 FUJITSU LIMITED 0 本資料及びLTでお話する内容は、個人の見解であり、 所属する組織の公式見解でも代表する意見でもありません。

Infrastructure as CodeでReNom環境構築入門

Embed Size (px)

Citation preview

Page 1: Infrastructure as CodeでReNom環境構築入門

富士通株式会社 山中惇平

ReNom User Group #2

Infrastructure as CodeでReNom環境構築入門

Copyright 2017 FUJITSU LIMITED 0

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

Page 2: Infrastructure as CodeでReNom環境構築入門

Who?

名前 山中 惇平 / Jumpei Yamanaka

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

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

言語 R/Python/Javascript/Java

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

Copyright 2017 FUJITSU LIMITED 1

Page 3: Infrastructure as CodeでReNom環境構築入門

話しの内容

Copyright 2017 FUJITSU LIMITED

Infrastructure as Codeで

ReNom環境構築入門

2

Page 4: Infrastructure as CodeでReNom環境構築入門

話しの内容

Copyright 2017 FUJITSU LIMITED

Infrastructure as Codeで

ReNom環境構築入門

3

Page 5: Infrastructure as CodeでReNom環境構築入門

話しの内容

Copyright 2017 FUJITSU LIMITED

Infrastructure as Codeで

ReNom環境構築入門

多くの人が ReNomを

すぐに 使えるように!

4

Page 6: Infrastructure as CodeでReNom環境構築入門

データ分析環境の構築

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

Copyright 2017 FUJITSU LIMITED

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

データ分析を始めるまで

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

5

Page 7: Infrastructure as CodeでReNom環境構築入門

データ分析環境の構築

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

Copyright 2017 FUJITSU LIMITED

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

データ分析を始めるまで

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

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

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

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

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

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

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

6

Page 8: Infrastructure as CodeでReNom環境構築入門

Docker!!

Copyright 2017 FUJITSU LIMITED 7

Page 9: Infrastructure as CodeでReNom環境構築入門

DockerでReNom分析環境構築

Copyright 2017 FUJITSU LIMITED 8

Page 10: Infrastructure as CodeでReNom環境構築入門

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

DockerでReNom分析環境構築

Copyright 2017 FUJITSU LIMITED

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

作れそうではあります

9

Page 11: Infrastructure as CodeでReNom環境構築入門

Dockerとは

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

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

Copyright 2017 FUJITSU LIMITED

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

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

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

10

Page 12: Infrastructure as CodeでReNom環境構築入門

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

Page 13: Infrastructure as CodeでReNom環境構築入門

ReNomイメージの作成

Copyright 2017 FUJITSU LIMITED 12

Page 14: Infrastructure as CodeでReNom環境構築入門

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

Page 15: Infrastructure as CodeでReNom環境構築入門

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

Page 16: Infrastructure as CodeでReNom環境構築入門

Python分析環境の導入

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

Copyright 2017 FUJITSU LIMITED

イメージの作成 or

ダウンロード 使ってみる

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

15

Page 17: Infrastructure as CodeでReNom環境構築入門

できあがったもの

Copyright 2017 FUJITSU LIMITED

Docker コンテナ

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

Docker

pyenv

anaconda (Jupyter, Numpy, …)

Python

ReNom

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

16

Page 18: Infrastructure as CodeでReNom環境構築入門

まだできていないこと

Docker Hub等への公開

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

GPU対応

必要に迫られるまでは…

ポート枯渇問題

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

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

R / Rstudio等

その他ツールとあわせる

Git等

Copyright 2017 FUJITSU LIMITED 17

Page 19: Infrastructure as CodeでReNom環境構築入門

Infrastracture as Code?

インフラのコード化

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

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

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

データ分析における役割

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

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

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

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

Copyright 2017 FUJITSU LIMITED

データ

アプリ インフラ

初学者的理解

18

Page 20: Infrastructure as CodeでReNom環境構築入門

Infrastracture as Code?

インフラのコード化

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

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

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

データ分析における役割

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

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

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

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

Copyright 2017 FUJITSU LIMITED

データ

アプリ インフラ

初学者的理解

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

19

Page 21: Infrastructure as CodeでReNom環境構築入門

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

Copyright 2017 FUJITSU LIMITED

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

20

Page 22: Infrastructure as CodeでReNom環境構築入門

まとめ

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

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

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

Infrastructure as Code

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

Copyright 2017 FUJITSU LIMITED 21

Page 23: Infrastructure as CodeでReNom環境構築入門

Copyright 2017 FUJITSU LIMITED

Thank you!_

22