Successfully reported this slideshow.
Your SlideShare is downloading. ×

PredictionIOのPython対応計画

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
PredictionIO構築入門
PredictionIO構築入門
Loading in …3
×

Check these out next

1 of 27 Ad

More Related Content

Slideshows for you (18)

Similar to PredictionIOのPython対応計画 (20)

Advertisement

More from Shinsuke Sugaya (14)

Recently uploaded (20)

Advertisement

PredictionIOのPython対応計画

  1. 1. Apache BizReach, Inc. Shinsuke SugayaPredictionIO勉強会 第2回 Python対応計画
  2. 2. 自己紹介 名前:菅谷 信介 会社:株式会社ビズリーチ AI室 興味があること: ・機械学習やDeep Learning等で解決方法を考える ・オープンソースのプロダクトを作る
  3. 3. Topics ・PredictionIOのPython対応を考える
  4. 4. PredictionIOの Python対応状況
  5. 5. Pythonを使えません…
  6. 6. がしかし… ・Pythonの機械学習系ライブラリは多い  →scikit-learn, TensorFlow, Chainer,... ・Jupyterとかで分析したい  →matplotlibで普通にグラフを書きたい この手のニーズは普通にあるのでは?
  7. 7. どう実現するか? PredictionIOは主に以下の機能がある ・イベントサーバ  →RESTでデータを登録するので、Python対応不要 ・学習処理  →Spark上で動くので、Python対応必要 ・予測サーバ  →Spark MLであれば、対応不要  →scikit-learnなどのモデルを作った場合は要対応
  8. 8. 対応する箇所 ・学習処理  →PySparkを使えるようにする ・予測サーバ  →Python独自のモデルへの対応  →(学習処理対応後に考える…)
  9. 9. PySpark
  10. 10. PySparkとは ・Sparkを実行するためのPython API ・pysparkを実行するとインタラクティブモードで起動 $ ./bin/pyspark Welcome to ____ __ / __/__ ___ _____/ /__ _ / _ / _ `/ __/ '_/ /__ / .__/_,_/_/ /_/_ version 2.1.1 /_/ Using Python version 3.5.2 (default, Oct 31 2016 16:46:00) SparkSession available as 'spark'. >>>
  11. 11. PySparkとは ・Jupyter上でも実行できる!
  12. 12. PySparkの仕組み(ざっくりと…) pyspark spark-submit spark-class $ ./bin/pyspark ____ __ / __/__ ___ _____/ /__ _ / _ / _ `/ __/ '_/ /__ / .__/_,_/_/ /_/_ version 2.1.1 /_/ >>> PYTHONSTARTUPを 指定してpythonを実行 Pythonを実行する コマンド引数を返却 Py4Jのサーバを起動 Sparkとの連携は Py4Jで行う
  13. 13. PIOとPySpark
  14. 14. 前提 ・データはイベントサーバ上にある  →RDDやDataFrameはPEventStoreから取る ・実行しているテンプレートの情報が必要  →pioコマンド経由で実行する
  15. 15. PIOでの仕組み pio pyspark pio-class $ ./bin/pyspark ____ __ / __/__ ___ _____/ /__ _ / _ / _ `/ __/ '_/ /__ / .__/_,_/_/ /_/_ version 2.1.1 /_/ >>> pysparkを実行する コマンド引数を返却 pyspark spark-submit spark-class
  16. 16. 開発 ・以下のブランチで開発を始めました https://github.com/jpioug/incubator-predictionio/tree/pyspark ・将来的にはApacheに入れる予定
  17. 17. 課題 作業を始めると様々な壁に遭遇… ・Python上ではSpark上のPy4Jの参照  →pysparkは参照をラップして使いやすくしてる ・Python-Py4J-Java-Scalaでのアクセスが必要  →Pythonからアクセスしにくい ・PIOは主にRDDを使っている  →DataFrameでない不便
  18. 18. これらの壁を乗り越えて pio pysparkを実行 $ export PYSPARK_PYTHON=$PYENV_ROOT/shims/python $ export PYSPARK_DRIVER_PYTHON=$PYENV_ROOT/shims/jupyter $ export PYSPARK_DRIVER_PYTHON_OPTS="notebook" $ ./bin/pio pyspark せっかくなので、Jupyterで実行する
  19. 19. 動作確認 pysparkが読み込まれていればSparkContextがいる
  20. 20. 便利関数作成 Scalaへアクセスする便利関数が必要
  21. 21. 便利関数作成 PIOへアクセスする 便利関数が必要
  22. 22. PIOの初期化 pio trainの処理と同じように実行して初期化
  23. 23. DataFrameの取得 Spark側でDataFrameを作成して Python側ではpysparkのDataFrameでラップする
  24. 24. DataFrameでの表示 show()で内容を表示する
  25. 25. SQLでの表示 Viewを作成して、Spark SQLで取得
  26. 26. 今後 ・コードを整理して、Apacheに入れたい ・予測サーバでの対応を考える ・続きはPIO勉強会#3で…
  27. 27. Apache Thank You

×