Scala製機械学習サーバ「Apache PredictionIO」

Post on 21-Jan-2018

6.058 views 0 download

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でも動かせるようにしたい

JPIOUG: Japan PredictionIO User Group

http://jpioug.org/

PredictionIO Meetup #38月30日(水) @ 渋谷(予定)