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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Shinsuke Sugaya
July 03, 2017
Technology
0
4.2k
PredictionIOのPython対応計画
PredictionIOでPythonをどのように利用できるようにするかを説明します。
Shinsuke Sugaya
July 03, 2017
Tweet
Share
More Decks by Shinsuke Sugaya
See All by Shinsuke Sugaya
社内ドキュメント検索システム構築のノウハウ
marevol
0
430
LastaFluteでKotlinをはじめよう
marevol
0
460
日本最大級の求人検索エンジン「スタンバイ」を支える技術
marevol
2
990
Fess/Elasticsearchを使った業務で使える?全文検索への道
marevol
0
1.3k
PredictionIO構築入門
marevol
0
4.3k
全文検索システムFessを用いた 検索システム構築入門
marevol
0
3k
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
marevol
0
300
Elasticsearchベースの全文検索システムFess
marevol
0
270
LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境
marevol
0
600
Other Decks in Technology
See All in Technology
OCI技術資料 : コンピュート・サービス 概要
ocise
4
54k
Scrumは歪む — 組織設計の原理原則
dashi
0
110
GitLab Duo Agent Platform + Local LLMサービングで幸せになりたい
jyoshise
0
280
SRE NEXT 2026 CfP レビュアーが語る聞きたくなるプロポーザルとは?
yutakawasaki0911
0
230
JAWS DAYS 2026 ExaWizards_20260307
exawizards
0
410
決済サービスを支えるElastic Cloud - Elastic Cloudの導入と推進、決済サービスのObservability
suzukij
2
590
When an innocent-looking ListOffsets Call Took Down Our Kafka Cluster
lycorptech_jp
PRO
0
120
製造業ドメインにおける LLMプロダクト構築: 複雑な文脈へのアプローチ
caddi_eng
1
550
プロジェクトマネジメントをチームに宿す -ゼロからはじめるチームプロジェクトマネジメントは活動1年未満のチームの教科書です- / 20260304 Shigeki Morizane
shift_evolve
PRO
1
250
複数クラスタ運用と検索の高度化:ビズリーチにおけるElastic活用事例 / ElasticON Tokyo2026
visional_engineering_and_design
0
130
2026-03-11 JAWS-UG 茨城 #12 改めてALBを便利に使う
masasuzu
2
340
親子 or ペアで Mashup for the Future! しゃべって楽しむ 初手AI駆動でものづくり体験
hiroramos4
PRO
0
100
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
So, you think you're a good person
axbom
PRO
2
1.9k
It's Worth the Effort
3n
188
29k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
300
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
210
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
120
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
150
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
180
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
140
How STYLIGHT went responsive
nonsquared
100
6k
WCS-LA-2024
lcolladotor
0
480
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