Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

6,631 views

Published on

#scalafukuoka

Published in: Software
  • Be the first to comment

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

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

×