オープンソースの機械学習プラットフォームまとめ

PredictionIOは機械学習を使用したアプリケーションを開発・運用するためのプラットフォームを提供するためのOSSですが、世の中には他にも同じ領域のOSSが存在します。PredictionIO含めて各プロダクトの特徴をまとめてみました(PredictionIO以外はドキュメントやソースをチラ見して書いているので見落としていることなどあるかもしれませんがご容赦いただければと思います)。

PredictionIO

github.com

Apache Software Foundationで開発されている機械学習プラットフォームです。基本的にSpark上で動作する機械学習ライブラリをターゲットにしていますが、最近はPython対応なども行われています。作成したマイクロサービスはSprayベースのAPIサーバとして起動することが可能です。用途に応じたテンプレートが多数用意されており、それをカスタマイズして使用できるのが特徴です。

Apacheのプロジェクトですし、ドキュメントやサンプルもそれなりに揃っています。日本人コミッタもおり、国内でのイベントも開催しているので、他のプロダクトと比べると情報を得やすいのもメリットといえます。

PredictionIOの概要については以下のQiitaの記事が参考になります。日本語のハウツー記事も多いので、ググってみていただけるとよいかと思います。

qiita.com

Seldon

github.com

基本的にはPredictionIO同様のユースケースが想定されており、Predict、Recommend用のサービスを構築可能。Spark、scikit-learn、TensorFlow、Kerasなどの機械学習ライブラリをサポートしていたり、作成したマイクロサービスをDockerコンテナとしてデプロイ可能、Graphanaによるマイクロサービスのモニタリング機能も自前で備えているなど機能的にはPredictionIOよりも先行している部分がありますが、ドキュメントが豊富とはいえず、日本語はもちろんのこと英語での情報もまだまだ少ないようです。ただ、企業がやっているOSSなので、そこはコンサルしますよということなのかもしれません。

日本語では以下のQiitaの記事が参考になると思います。

qiita.com

mleap

github.com

MLパイプラインをシリアライズ/デシリアライズし、実行するためのライブラリを提供します。Spark、scikit-learn、TensorFlowをサポート。生成した予測モデルを使用してマイクロサービスとしてデプロイするためのDockerイメージも用意されています。PredictionIOやSeldonと違って機械学習を運用するためのプラットフォームというよりはパイプラインや予測モデルのポータビリティを実現するためのライブラリという感じです。

ドキュメントはSeldonと比べるとかなりしっかりしていますが、日本語情報は今のところ皆無です。

まとめ

アプリケーションに機械学習を活用した機能を組み込むことが一般的になるにつれ、それらを効率よく開発・運用するためにこのような機械学習プラットフォームの必要性は高まってくると考えています。Seldonやmleapのように複数の機械学習ライブラリを扱うことができる仕組みも必要になってくると思いますし、逆に機械学習の専門家がいないチームではPredictionIOのように予め用意されているテンプレートを使用することで機械学習を利用できるというメリットもあるでしょう。

どのプロダクトも作成した予測モデルをマイクロサービスとしてデプロイしてアプリケーションから利用するという形は共通していますが、一方でバッチ的に使用したい場合やオンライン学習などのユースケースをどう取り込んでいくのかという点についても今後の注目ポイントかもしれないと思います。

また、今回はOSS機械学習プラットフォームを紹介しましたが、AWSやAzure、GCPなどで提供されているマネージドな機械学習プラットフォームももちろん有力なオプションです。機械学習プラットフォームの動向という意味ではこれらについても注視していく必要がありそうです。