PredictionIOでSparkMLを使った開発方法

20

Click here to load reader

Transcript of PredictionIOでSparkMLを使った開発方法

Page 1: PredictionIOでSparkMLを使った開発方法

Apache

BizReach, Inc.Shinsuke SugayaPredictionIO勉強会 第3回

SparkMLを使った開発方法

Page 2: PredictionIOでSparkMLを使った開発方法

自己紹介

名前:菅谷 信介

会社:株式会社ビズリーチ AI室興味があること:

・機械学習やDeep Learning等で解決方法を考える

・オープンソースのプロダクトを作る

Page 3: PredictionIOでSparkMLを使った開発方法

Topics

PredictionIOを利用した開発の一連の流れを考えてみる

Page 4: PredictionIOでSparkMLを使った開発方法

第三回目にしてようやく実用的な話が

できる気が…

Page 5: PredictionIOでSparkMLを使った開発方法

概要

Page 6: PredictionIOでSparkMLを使った開発方法

PIOでの開発の前提

・今回はデータの管理からAPI化まで紹介する

・学習はPython/PySparkで行う

・Spark 2.x以上が必要

Page 7: PredictionIOでSparkMLを使った開発方法

PIOでの開発の流れ

1. PredictionIOを構築

2. イベントサーバにデータ投入

3. Jupyterでデータ分析・モデル構築

4. Pythonファイル化して、PIOでモデル作成

5. PIOで予測API公開

Page 8: PredictionIOでSparkMLを使った開発方法

開発の流れ

Page 9: PredictionIOでSparkMLを使った開発方法

PIOの導入

まだPython対応がリリースされていない…(PIO-116のIssueで対応中)

・PIO環境の構築方法は第二回の資料を参照 https://www.slideshare.net/shinsuke/predictionio-77450768

・Python対応ブランチからPIOをcloneして利用 https://github.com/marevol/incubator-predictionio/tree/pyspark

Page 10: PredictionIOでSparkMLを使った開発方法

PIOテンプレート作成

・PIOで学習するにはテンプレートの作成が必要

・実際に作るにはサンプルをベースにすると便利

・今回はサンプルテンプレートを利用 https://github.com/jpioug/predictionio-template-iris

 https://github.com/jpioug/predictionio-template-boston-house-prices

$ git clone https://github.com/jpioug/predictionio-template-iris.git

Page 11: PredictionIOでSparkMLを使った開発方法

アプリ登録

・PIOで利用するにはアプリ登録が必要

・pio app newを実行 →IrisAppとして登録 →トークンは任意

$ pio app new --access-key IRIS_TOKEN IrisApp

Page 12: PredictionIOでSparkMLを使った開発方法

データの投入

・イベントサーバにデータを入れる https://github.com/jpioug/predictionio-template-iris/blob/master/data/import_eventserver.py

・自前のプロジェクトで利用する場合は同様に入れる →各種SDKがある

$ python data/import_eventserver.py

Page 13: PredictionIOでSparkMLを使った開発方法

テンプレートのビルド

・テンプレートをビルドする(.scalaが対象) →モデルの保存やAPI化でScalaが利用されるため

$ pio build

Page 14: PredictionIOでSparkMLを使った開発方法

データの分析など

・Jupyterとかでデータを分析、モデルを検討したい →pio-shellでPySpark&Jupyterを実行する →eda.ipynbを開く →SparkMLでモデルを作れる

https://github.com/jpioug/predictionio-template-iris/blob/master/eda.ipynb

$ PYSPARK_PYTHON=$PYENV_ROOT/shims/python \ PYSPARK_DRIVER_PYTHON=$PYENV_ROOT/shims/jupyter \ PYSPARK_DRIVER_PYTHON_OPTS="notebook" pio-shell --with-pyspark

Page 15: PredictionIOでSparkMLを使った開発方法

学習モデル作成

・pio trainでPythonファイルを実行 →学習モデルの作成はバッチ処理化したい →Jupyterで作成したものを.pyにするだけ →モデルの保存はrun_pio_workflow(model)を呼ぶ

https://github.com/jpioug/predictionio-template-iris/blob/master/train.py

$ pio train --main-py-file train.py

Page 16: PredictionIOでSparkMLを使った開発方法

予測APIの調整

・自前のプロジェクトに適用する場合 →予測APIのリクエストとレスポンスを調整 →Algorithm.scalaを修正

https://github.com/jpioug/predictionio-template-iris/blob/master/src/main/scala/org/jpioug/template/iris/Algorithm.scala

Page 17: PredictionIOでSparkMLを使った開発方法

アプリのデプロイ

・API化するためにはアプリをデプロイする →pio deployを実行する

$ pio deploy

Page 18: PredictionIOでSparkMLを使った開発方法

予測APIにアクセス

・localhost:8000/queries.jsonにアクセス →Bodyに予測対象の情報を渡す

$ curl -s -H "Content-Type: application/json" \ -d '{"attr0":5.1,"attr1":3.5,"attr2":1.4,"attr3":0.2}' \ http://localhost:8000/queries.json

Page 19: PredictionIOでSparkMLを使った開発方法

まとめ

・データの管理からAPI化まで実現

・SparkMLのアルゴリズムでモデルを作れる

Page 20: PredictionIOでSparkMLを使った開発方法

Apache

Thank You