Scala製機械学習サーバ「Apache PredictionIO」
Transcript of Scala製機械学習サーバ「Apache PredictionIO」
Introduction toApache PredictionIO
Naoki Takezoe@takezoen
BizReach, Inc
自己紹介
● 竹添 直樹: @takezoen● ビズリーチという会社でScalaを書いてます
● OSS開発や技術書の執筆などもしています
今日はPredictionIOという機械学習サーバを紹介します
Introduction to
システム面から見る機械学習の課題
● スケーラビリティ○ 主に学習・予測処理、ストレージ
● ガバナンス○ 開発・メンテナンス・運用などの効率
Apache PredictionIOとは?
● オープンソースの機械学習サーバ
● カスタマイズ可能なテンプレートから予測APIをWebサービスとしてデプロイできる
● Spark MLlibやOpenNLPをサポート
● 学習データやモデルを格納するためのストレージ
も統合
簡単に言うと...
● AWSやGCPなどの機械学習サービスを自前で
構築するための基盤ソフトウェア
● 細かいチューニングが可能、クラウドロックインの
回避、オンプレ活用などのメリット
PredictionIOの歴史
2013年 PredictionIO社設立
2014年 $2.5Mのシード資金調達
2016年 Salesforce社に買収されASFに寄贈
現在はApache Incubatorで開発中
Apache Software Foundationとは?
● オープンソースのソフトウェアプロジェクトを支援
する非営利団体(1999年発足)
● もとはWebサーバApacheのために発足
● その後Java→BigDataとオープンソースのトレン
ドを支え続けている
Apache Software Foundationの役割
● オープンソースプロジェクトにインフラ提供
● 法的訴訟から開発者を保護する
● ソフトウェアの法的権利を保障する
一方で…
● インフラが使いにくい
● ルールが多い
● などの理由により開発が停滞しがちな側面も
PredictionIOの基本的な利用フロー
PredictionIOの基本的な利用フロー
Engine
git clonecreate enginefrom template
PredictionIOの基本的な利用フロー
Engine
EventServer
Event Storage
git clonecreate enginefrom template
import training data
PredictionIOの基本的な利用フロー
Engine
EventServer
Event Storage
pio buildcompile enginegit clone
create enginefrom template
import training data
PredictionIOの基本的な利用フロー
Model
Engine
EventServer
Event Storage Model Storage
pio traintrain and store model
pio buildcompile enginegit clone
create enginefrom template
import training data
PredictionIOの基本的な利用フロー
Model
Engine
EventServer
Event Storage Model Storage
EngineServer
pio deploydeploy as web service
pio traintrain and store model
pio buildcompile enginegit clone
create enginefrom template
import training data
PredictionIOの基本的な利用フロー
Model
Engine
EventServer
Event Storage Model Storage
EngineServer
pio deploydeploy as web service
pio traintrain and store model
App
query
result
pio buildcompile enginegit clone
create enginefrom template
import training data
図には書いていませんが、evaluationの機能もあります
ストレージ
● メタデータ(エンジンの情報など)○ PostgreSQL, MySQL, Elasticsearch
● イベントデータ(学習用データ)○ PostgreSQL, MySQL, Elasticsearch, HBase
● モデルデータ(予測モデル)○ PostgreSQL, MySQL, HDFS, S3, Local File System
テンプレート
用途に応じた様々なエンジンのテンプレートが用意されている。GitHubリポジトリで提供されているのでgit cloneして使用する。
テンプレート Algorithmクラスに学習を行うtrain()、推定を行うpredict()などのメソッドが定義されている
クイックスタート日本語版
http://takezoe.hatenablog.com/entry/2017/05/11/132410
in BizReach, Inc
PredictionIO導入の動機
● 機械学習エンジニアが本業に集中できない○ 構築や運用も担当していた
○ 得意分野ではないので効率が悪い
● 属人化が発生していた○ 特にスタンダードなやり方が決まっていない
○ 少人数で作るので各自が独自のやり方で作ってしまう
PredictionIOを導入することで開発・運用をテンプレート化開発・運用を効率化し、本来の作業に集中できる
We have four committers!
@marevol
@takezoen @shimamoto
@haginot
これまでの主なコントリビューション
● Elasticsearch 5.xやS3のサポート
● Scalaコードのリファクタリングやサンプル、ドキュ
メントの整理
● バイナリディストリビューションの作成
● デフォルトのサポートバージョンの最新化
● 依存ライブラリのライセンス問題の解決
地味な作業ばかりですがTLP昇格のため...
将来の計画
● リッチなWebコンソールを作りたい
● Pythonサポート(scikit-learnなどMLlib以外の
ライブラリも使えるようになるかも?)
● オンライン学習のためにストリーム形式のデータ
を処理できるようにする
● Windowsでも動かせるようにしたい
PredictionIO Meetup #38月30日(水) @ 渋谷(予定)