Apache Flink社群發布機器學習函式庫Flink ML 2.0.0,在這個新版本中,開發團隊重構Flink ML早期的函式庫,擴展Flink ML API並更新Runtime主要功能,像是開始支援多輸入和多輸出,和新增串流批次統一函式庫等,另外,這個版本還添加了5個演算法實作。

Flink ML是Apache Flink串流處理框架的一部分,提供機器學習API和基礎設施函式庫,能夠簡化機器學習工作管線建置工作。

Flink ML和基於Flink的機器學習演算法平臺Alink開發人員合作,一起重新設計API,來提供高效能演算法,現在官方開始在Flink ML添加演算法,目前這個版本官方已經實作了5種演算法,包括對數機率迴歸、k-means、K-近鄰演算法、單純貝氏分類器以及One-hot編碼器,除了加入新的演算法外,官方也會持續進行壓力測試和最佳化,確保演算法的效能。

由於機器學習工作流程的各階段,可能需要多個輸入,並回傳多個輸出,例如圖嵌入演算法需要讀取兩個表格,分別獲取圖的邊和節點資料,又或是工作流程可能有一個階段,需要將輸入資料集拆分成為兩個資料集,分別用於訓練和測試。

而在Flink ML 2.0.0中,演算法開發人員可以使用多輸入和多輸出功能,將機器學習工作流程,組裝成為預定義階段的有向無環圖(DAG),並可以在不清楚細節的情況下,配置和部署該工作流程,而這大幅擴展了Flink ML的可用性和應用性。

Flink ML新版本更好地支援線上學習,使用公開模型資料的API,官方解釋,在原生的線上學習場景中,用戶可能擁有一個長期執行的工作,不斷地處理訓練資料,並更新機器學習模型,用戶能夠在網頁伺服器上,部署多個工作來進行線上推理,而這需要將最新的資料,以接近即時的延遲,從訓練工作傳輸到推理工作。

但問題是,傳統的Estimator/Transformer範式,並不提供API以串流的方式暴露模型資料,因此用戶就許要反覆呼叫fit()來更新模型資料,官方表示,用戶雖然可以每隔數分鐘更新一次模型資料,但是這種方法效率非常差。而新版本中提供了getModelData() API,供用戶將資料模型即時傳輸到網頁伺服器,並使用最新的模型資料進行線上推理,這項功能可以明顯強化Flink ML的線上學習應用能力。

另外,Flink ML 2.0.0還加入了串流批次統一迭代函式庫,官方表示,為了支援訓練機器學習演算法,並根據預測結果,動態調整模型參數,需要原生支援迭代資料處理,但Flink是使用DAG來描述流程邏輯,因此需要在Flink之上,單獨提供迭代函式庫,而且Flink要能支援離線訓練和線上訓練,迭代函式庫還要同時支援串流和批次處理用例。

因此在這個新版本中,官方實作串流批次統一迭代函式庫,提供將紀錄回傳給優先運算子,並在迭代中追蹤進度的功能。用戶可以使用DataStream API和Table API來表達迭代內部的執行邏輯。

由於Python廣受歡迎,許多機器學習開發者,已經習慣使用Python開發機器學習工作流程,因此Flink ML現在還提供Python套件,來滿足Python開發者的需求,接下來官方還會強化Python套件,增加與Java函式庫的互通性。

熱門新聞

Advertisement