天天看點

結合Apache Ignite探索機器學習

此前的文章 中,我們讨論過 Apache Ignite 機器學習網格。當時僅有測試版。在随後的版本2.4中,機器學習得以運用。新版本對部分内容進行了更新,支援 基于分區的資料集 以及 遺傳算法

。Apache Ignite提供了多種可獨立運作的機器學習示例,将入門學習變得簡易。在本系列的後續文章裡,我們将利用Ignite支援的機器學習算法對部分開源資料集進行分析。

簡介

我們将在本部分對機器學習網格進行簡單的回顧,圖1展示了機器學習網格的結構。

圖1:機器學習網格

首先,Apache Ignite所呈現的機器學習能力相當實用,可在Ignite内直接建構預測模型。基于此,使用者在不采取高代價ETL(Extract-Transform-Load)過程或資料傳輸的情況下,擷取高規模高性能的預測模型。

在Ignite出現之前,機器學習模型得訓練和部署在不同的系統上。例如,使用者需要将資料移出Ignite,接着使用其它工具對資料進行訓練,這樣模型才能部署到不同的系統中。此方法存在如下缺點:

  • 需要一個花費昂貴的ETL 程序,特别是針對大型資料集。
  • 在進行ETL時會對資料進行快照。之後,實時系統中的資料也許會發生改變,是以需要将已訓練的資料存放至訓練集中。

其次,現今多數系統需處理大量的資料,這些資料通常會超過單個伺服器容量。分布式計算很好的解決了這個問題,但一些平台并非為資料存儲和操作而設計,它們僅适合訓練。是以,研發人員需要考慮如何在生産環境中解決由部署所引發的複雜問題。

Ignite所呈現的機器學習能力緻力于解決如下問題:

  • 結合Ignite處理資料,能避免因不同系統之間轉換而導緻的ETL昂貴問題。
  • Ignite能夠提供分布式計算,實作對資料的存儲及操作。
  • Ignite更新了部分機器學習算法,此舉對分布式計算進行了優化,并且可充分利用Ignite進行并置處理。
  • Ignite能作為流式資料的接收器,允許機器學習實時應用。

機器學習通常是一個疊代過程,上下文可能會在算法運作時發生改變。是以,為了避免工作損失和延遲,Ignite支援了基于分區的資料集,使其能夠應對節點故障問題。

Apache Ignite目前能夠支援基于分區的資料集。這是一個位于機器學習算法和存儲計算之間的抽象層。它使用類似于MapReduce的操作進行計算。

在Ignite中,對鍵值對(K-V)使用雜湊演算法,以确定值存在叢集中。實際上,值是部分存儲的。在圖2中,我們可以看到兩個節點叢集,它們分别對應兩個分區(P1和P2)。

結合Apache Ignite探索機器學習

圖2:基于分區的資料集

機器學習算法通常采用疊代的方式,并且需要上下文以及資料。此部分展現于圖2中的C和D。

如果某個節點失效,Ignite可重新進行分區并找到上下文,如圖3所示。例如,節點2中有分區1的備份資料(圖中灰色部分),若節點1失效,我們則可用節點2中的資料覆寫節點1。資料可從叢集或者本地ETL(用D*标示)中恢複。

結合Apache Ignite探索機器學習

圖3:節點2中分區1的備份資料

算法及應用

接着,我們将會簡述Ignite所支援的機器學習算法

結合Apache Ignite探索機器學習

表1:機器學習算法

機器學習庫中包含多種遺傳算法,此部分在另一篇博文中進行了探讨。

總結

最新版本的Apache Ignite有着許多重要的特性。基于分區的資料集在節點失效的情況下,通過儲存上下文使得機器學習算法正常運作。機器學習算法支援海量用例。遺傳算法的加入也為處理複雜資料提供了新的機會。

數十款阿裡雲産品限時折扣中,趕緊點選領劵開始雲上實踐吧!

以上為譯文

本文由北郵

@愛可可-愛生活

老師推薦,

阿裡雲雲栖社群

組織翻譯。

文章原标題《Introduction to Machine Learning with Apache Ignitet》,作者:Akmal Chaudhri ,譯者:Elaine,審校:袁虎。

文章為簡譯,更為詳細的内容,請檢視

原文