2016-11-10 18 views
11

私は生産MLベースのアプリケーションのためのツールを評価しています。私たちのオプションの1つはSpark MLlibですが、訓練を受けたモデルを提供する方法についていくつか質問がありますか? AzureのMLで例えばSpark MLlibモデルを提供するには?

は、一度訓練を受け、モデルは、任意のアプリケーションから消費することができ、Webサービスとして公開され、そしてそれは、Amazon MLと似たようなケースです。

Apache SparkでMLモデルをどのように提供/展開しますか?

答えて

11

一方で、sparkで構築された機械学習モデルは、従来の方法でAzure MLまたはAmazon MLで提供する方法では提供できません。

Databricksは、そのノートブックを使用してモデルを展開できると主張していますが、実際にはまだ試みていません。一方

、次の3つの方法でモデルを使用することができます。そして、予測を適用するアプリケーション内でその場で

  • トレーニング。これは、スパークアプリケーションまたはノートブックで行うことができます。
  • MLWriterを実装しているモデルを訓練して保存し、アプリケーションまたはノートブックにロードしてデータに対して実行します。
  • モデルをSparkでトレーニングし、jpmml-sparkを使用してPMML形式にエクスポートします。 PMMLを使用すると、さまざまな統計およびデータマイニングツールで同じ言語を使用できます。このようにして、カスタムコーディングを必要とせずにツールやアプリケーション間で予測ソリューションを簡単に移動できます。例えばスパークMLからR.

にそれらは3つの方法があります。

もちろん、spark-jobserverを使用して訓練と導入を行うことができますが、何らかの開発が必要なRESTfulサービスがあるアーキテクチャを考えることができます。これはすぐに使用できるソリューションではありません。

Oryx 2のようなプロジェクトを使用して、モデルをトレーニング、デプロイ、提供するための完全なラムダアーキテクチャを作成することもできます。残念なことに、上記の各解決策を説明することはかなり広く、SOの範囲に収まらない。

+0

私はspark-jobserverにチャンスを与えます。モデル(完全なスパークパイプライン)をキャッシュして、分類やクエリなどのml関連のクエリに簡単かつ迅速に応答することができます。また、集計されたテーブルをキャッシュし、このデータまたはその一部を含むjsonをすばやく返して、別のアプリケーションでビジュアライゼーションや処理を行うこともできます。 –

4

あなたは2つのかなり異なるものを比較しています。 Apache Sparkは計算エンジンですが、AmazonとMicrosoftのソリューションはサービスを提供しています。これらのサービスでは、SplarkをMLlibとともにシーンの背後に置くこともできます。 Webサービスを自分で構築するのは困難ではありませんが、余分な料金を払っています。あなたがあなた自身のスパーククラスタ上で展開し、簡単に(柔軟性の様々な程度で)あなたのモデルを中心にサービスを構築することができますDominoのデータ・ラボ、Clouderaのか、IBM提供の製品のような企業の

数。

もちろん、さまざまなオープンソースツールを使って自分でサービスを構築します。具体的には?それはあなたが何をしているかによって異なります。ユーザーがモデルと対話する方法何らかのUIがあるのか​​、REST APIを嫌うのでしょうか?モデルまたはモデル自体のいくつかのパラメータを変更する必要がありますか?ジョブはバッチかリアルタイムの性質の方が多いですか?あなたは自然にオールインワンのソリューションを構築することができますが、それは大きな努力になるでしょう。

個人的にはAmazon、Google、Microsoftなどの利用可能なサービスを利用することをお勧めします。オンプレミス展開が必要ですか? Domino Data Labをチェックすると、その製品は成熟しており、モデルを使用して簡単に作業できます(デプロイメントからビルドまで)。 Clouderaはクラスタコンピューティング(Sparkを含む)にもっと集中していますが、成熟するまでにはしばらく時間がかかります。

[編集]私はApache PredictionIO、オープンソースのマシン学習サーバー - 潜在的な多くの素晴らしいプロジェクトを見てお勧めしたいと思います。

関連する問題