Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PredictionIOのPython対応計画
Search
Shinsuke Sugaya
July 03, 2017
Technology
0
4.1k
PredictionIOのPython対応計画
PredictionIOでPythonをどのように利用できるようにするかを説明します。
Shinsuke Sugaya
July 03, 2017
Tweet
Share
More Decks by Shinsuke Sugaya
See All by Shinsuke Sugaya
社内ドキュメント検索システム構築のノウハウ
marevol
0
260
LastaFluteでKotlinをはじめよう
marevol
0
280
日本最大級の求人検索エンジン「スタンバイ」を支える技術
marevol
2
770
Fess/Elasticsearchを使った業務で使える?全文検索への道
marevol
0
970
PredictionIO構築入門
marevol
0
4.2k
全文検索システムFessを用いた 検索システム構築入門
marevol
0
2.4k
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
marevol
0
210
Elasticsearchベースの全文検索システムFess
marevol
0
170
LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境
marevol
0
380
Other Decks in Technology
See All in Technology
ChatworkのSRE部って実は 半分くらいPlatform Engineering部かもしれない
saramune
0
150
開発生産性大幅アップ!Postman VS Code拡張機能
nagix
2
350
よく聞くけど使ったことないソフトウェアNo.1 KafkaとSnowflake
foursue
4
320
Azure Container Apps + Bicep 〜 こんな感じで運用しています
kaz29
2
400
データベース02: データベースの概念
trycycle
0
130
「手動オペレーションに定評がある」と言われた私が心がけていること / phpcon_odawara2024
blue_goheimochi
2
370
DevOpsDays History and my DevOps story
kawaguti
PRO
9
2.3k
元インフラエンジニアに成る / Human Resources to Human Relations
bobtani
4
890
On Your Data を超えていく!
hirotomotaguchi
2
620
Meta Quest 3 で動く桜マシマシ WebXR アプリを IBM Cloud Code Engine と Babylon.js で作った話
1ftseabass
PRO
0
120
GraphQL 成熟度モデルの紹介と、プロダクトに当てはめた事例 / GraphQL maturity model
mh4gf
7
1.2k
チームでロジカルシンキングに改めて向き合っている話 〜学習環境と実践⽅法〜
sansantech
PRO
0
180
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
15
3.8k
Faster Mobile Websites
deanohume
298
30k
How to name files
jennybc
64
93k
A better future with KSS
kneath
231
16k
Building a Scalable Design System with Sketch
lauravandoore
455
32k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
240
1.2M
The Language of Interfaces
destraynor
151
23k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
220
21k
Designing Experiences People Love
moore
136
23k
GraphQLの誤解/rethinking-graphql
sonatard
50
9.2k
Teambox: Starting and Learning
jrom
128
8.4k
GitHub's CSS Performance
jonrohan
1024
450k
Transcript
Apache BizReach, Inc. Shinsuke Sugaya PredictionIO勉強会 第2回 Python対応計画
自己紹介 名前:菅谷 信介 会社:株式会社ビズリーチ AI室 興味があること: ・機械学習やDeep Learning等で解決方法を考える ・オープンソースのプロダクトを作る
Topics ・PredictionIOのPython対応を考える
PredictionIOの Python対応状況
Pythonを使えません…
がしかし… ・Pythonの機械学習系ライブラリは多い →scikit-learn, TensorFlow, Chainer,... ・Jupyterとかで分析したい →matplotlibで普通にグラフを書きたい この手のニーズは普通にあるのでは?
どう実現するか? PredictionIOは主に以下の機能がある ・イベントサーバ →RESTでデータを登録するので、Python対応不要 ・学習処理 →Spark上で動くので、Python対応必要 ・予測サーバ →Spark MLであれば、対応不要 →scikit-learnなどのモデルを作った場合は要対応
対応する箇所 ・学習処理 →PySparkを使えるようにする ・予測サーバ →Python独自のモデルへの対応 →(学習処理対応後に考える…)
PySpark
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'. >>>
PySparkとは ・Jupyter上でも実行できる!
PySparkの仕組み (ざっくりと…) pyspark spark-submit spark-class $ ./bin/pyspark ____ __ /
__/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /__ / .__/\_,_/_/ /_/\_\ version 2.1.1 /_/ >>> PYTHONSTARTUPを 指定してpythonを実行 Pythonを実行する コマンド引数を返却 Py4Jのサーバを起動 Sparkとの連携は Py4Jで行う
PIOとPySpark
前提 ・データはイベントサーバ上にある →RDDやDataFrameはPEventStoreから取る ・実行しているテンプレートの情報が必要 →pioコマンド経由で実行する
PIOでの仕組み pio pyspark pio-class $ ./bin/pyspark ____ __ / __/__
___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /__ / .__/\_,_/_/ /_/\_\ version 2.1.1 /_/ >>> pysparkを実行する コマンド引数を返却 pyspark spark-submit spark-class
開発 ・以下のブランチで開発を始めました https://github.com/jpioug/incubator-predictionio/tree/pyspark ・将来的にはApacheに入れる予定
課題 作業を始めると様々な壁に遭遇… ・Python上ではSpark上のPy4Jの参照 →pysparkは参照をラップして使いやすくしてる ・Python-Py4J-Java-Scalaでのアクセスが必要 →Pythonからアクセスしにくい ・PIOは主にRDDを使っている →DataFrameでない不便
これらの壁を乗り越えて 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で実行する
動作確認 pysparkが読み込まれていればSparkContextがいる
便利関数作成 Scalaへアクセスする便利関数が必要
便利関数作成 PIOへアクセスする 便利関数が必要
PIOの初期化 pio trainの処理と同じように実行して初期化
DataFrameの取得 Spark側でDataFrameを作成して Python側ではpysparkのDataFrameでラップする
DataFrameでの表示 show()で内容を表示する
SQLでの表示 Viewを作成して、Spark SQLで取得
今後 ・コードを整理して、Apacheに入れたい ・予測サーバでの対応を考える ・続きはPIO勉強会#3で…
Apache Thank You