2016-11-10 76 views
11

我正在評估用於生產基於ML的應用程序的工具,我們的一個選項是Spark MLlib,但是我有一些關於如何在模型被訓練後提供服務的問題?如何提供Spark MLlib模型?

例如,在Azure ML中,一旦接受培訓,該模型將作爲可從任何應用程序中使用的Web服務公開,這與Amazon ML也是類似的情況。

如何在Apache Spark中提供/部署ML模型?

回答

11

從一方面,隨着火花建立了一個機器學習模型無法送達您在Azure中ML或亞馬遜ML成爲以傳統的方式的方式。 Databricks聲稱能夠使用它的筆記本部署模型,但我還沒有真正嘗試過。

在另一方面,您可以通過三種方式使用一個模型:在飛行

  • 培訓應用程序,然後將預測的內部。這可以在火花應用程序或筆記本中完成。
  • 火車模型,並保存它,如果它實現了一個MLWriter然後在應用程序或筆記本電腦加載並運行它針對您的數據。
  • 使用Spark培訓模型並使用jpmml-spark將其導出爲PMML格式。 PMML允許不同的統計和數據挖掘工具使用相同的語言。通過這種方式,可以在工具和應用程序之間輕鬆移動預測解決方案,而無需進行自定義編碼。 e.g從星火ML到R.

這些是三種可能的方式。

當然,你可以認爲你有RESTful服務的背後,你可以建立使用每個例如火花jobserver訓練和部署,但需要一定的發展架構。這不是一個開箱即用的解決方案。

您也可以使用像Oryx 2這樣的項目來創建完整的lambda體系結構來訓練,部署和服務模型。

不幸的是,描述上述解決方案的每一個都是相當寬泛的,並不適合於SO的範圍。

+0

我會給spark-jobserver一個機會。您可以輕鬆快速地緩存模型(完整的火花管道),並快速回答ml相關的查詢,例如分類或查詢。它還使您有機會緩存​​聚合表並快速返回包含此數據或其部分的json以供可視化或在另一個應用程序中進一步處理。 –

4

您正在比較兩個完全不同的東西。 Apache Spark是一個計算引擎,雖然您提到亞馬遜和微軟解決方案提供服務。這些服務在現場可能還有帶MLlib的Spark。他們可以幫助您免除自己創建Web服務的麻煩,但是您需要額外付費。公司

號碼,像多米諾數據實驗室,Cloudera公司或IBM提供的產品,你可以部署自己的星火集羣上,輕鬆地建立一個圍繞你的模型服務(具有不同程度的靈活性)。

當然,您可以使用各種開源工具自行構建服務。具體哪個?這完全取決於你以後的樣子。用戶應該如何與模型進行交互?是否應該有某種用戶界面或開玩笑的REST API?你需要改變模型或模型本身的一些參數嗎?這些工作是否更具批處理或實時性?你自然可以建立一體化解決方案,但這將是一個巨大的努力。

我個人的建議是,儘可能利用亞馬遜,Google,微軟等公司提供的其中一項服務。需要本地部署?檢查Domino Data Lab,他們的產品是成熟的,並允許輕鬆使用模型(從構建到部署)。 Cloudera更專注於集羣計算(包括Spark),但它需要一段時間纔能有一些成熟的東西。

[編輯]我建議看看Apache PredictionIO,這是一個開源的機器學習服務器 - 這個項目很有潛力。