infrastructure as codeでrenom環境構築入門
TRANSCRIPT
富士通株式会社 山中惇平
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