如何實現實時機器學習? - huyenchip
有兩個級別的實時機器學習。
- 級別1:您的 ML 系統進行實時預測(批量預測)。
- 級別2:您的系統可以合併新資料並實時更新您的模型(實時學習)。
階段 1. 批量預測
所有的預測都是批量預先計算的,以一定的間隔生成,例如每 4 小時或每天。批量預測的典型用例是協同過濾、基於內容的推薦。使用批量預測的公司的例子有 DoorDash 的餐廳推薦、Reddit 的 subreddit 推薦、Netflix 大約 2021 年的推薦。截至本文,Netflix 正在將他們的預測轉移到網上。
批量預測很大程度上是遺留系統的產物:在過去的十年中,大資料處理一直由 MapReduce 和 Spark 等批處理系統主導,這使我們能夠非常有效地定期處理大量資料。當公司開始使用機器學習時,他們利用現有的批處理系統進行預測。
階段 2. 具有批量特徵的線上預測
不是在請求到達之前生成預測,而是在請求到達之後生成預測。他們實時收集使用者在其應用上的活動。但是,這些事件僅用於查詢預先計算的嵌入以生成會話嵌入。沒有從流資料中實時計算特徵。
當新訪問者訪問您的網站時,您不會向他們推薦通用專案,而是根據他們的活動向他們展示專案。例如,如果他們檢視了鍵盤和計算機顯示器,他們可能正在檢視在家工作的設定,並且您的演算法應該推薦相關專案,例如 HDMI 電纜或顯示器支架。
為此,您需要在此訪問者的活動發生時對其進行收集和處理。如果該訪問者檢視了第 1 項、第 10 項和第 20 項,則您從資料倉儲中提取第 1、10 和 20 項的嵌入。這些嵌入被組合(例如平均)以建立該訪問者的當前會話嵌入。
系統將至少包含三個模型:一個用於學習嵌入,一個用於檢索,一個用於排名。
已經在進行線上推理或在其 2022 年路線圖上進行線上推理的公司名單正在增加,包括 Netflix、YouTube、Roblox、Coveo 等。預計在接下來的兩年中,大多數推薦系統將是基於會話的:每次點選、每次檢視、每次交易都將用於(近)實時生成新的相關推薦。
在此階段,您將需要:
- 將您的模型從批量預測更新為基於會話的預測。這意味著您可能需要新增新模型。負責團隊:資料科學/ML。
- 將會話資料整合到您的預測服務中。通常,您可以使用由兩個元件組成的流式基礎設施來做到這一點:
- 流傳輸,例如 Kafka / AWS Kinesis / GCP Dataflow,用於移動流資料(使用者活動)。大多數公司都使用託管實時傳輸——自託管 Kafka 很痛苦。
- 流式計算引擎,例如 Flink SQL、KSQL、Spark Streaming,用於處理流式資料。在會話內適應的情況下,這個流計算引擎負責將使用者的活動劃分為會話並跟蹤每個會話內的資訊(狀態保持)。這裡提到的三個流計算引擎中,Flink SQL 和 KSQL 是業界比較認可的,為資料科學家提供了一個很好的 SQL 抽象。
好處:
使用線上預測,您不必為未訪問您網站的使用者生成預測:如果您每天為每個使用者生成預測,那麼用於生成 98% 預測的計算將被浪費。
如果您的公司已經使用流式傳輸進行日誌記錄,那麼這種變化不應該太陡峭。但是,這可能會給您的流媒體基礎架構帶來更重的工作負載,這可能需要升級以使其更高效/可擴充套件。
這一階段的挑戰將在:
- 推理延遲:使用批量預測,您無需擔心推理延遲。然而,對於線上預測,推理延遲至關重要。
- 設定流式基礎設施:許多工程師仍然害怕在流上進行類似 SQL 的連線,儘管圍繞它的工具正在成熟。
- 擁有高質量的嵌入,尤其是當您處理不同的專案型別時。
階段 3. 具有複雜流 + 批量特徵的線上預測
- 批量特徵是從歷史資料中提取的特徵,通常使用批處理。也稱為靜態特徵或歷史特徵。
- 流特徵是從流資料中提取的特徵,通常使用流處理。也稱為動態功能或線上功能。
如果處於第 2 階段的公司需要很少的流處理,則處於第 3 階段的公司使用更多的流功能。例如,使用者在 Doordash 上下訂單後,他們可能需要以下功能來估計交貨時間:
- 批次特徵:這家餐廳過去的平均準備時間
- 流媒體功能:此時,他們還有多少其他訂單,有多少送貨人可用
在第 2 階段討論的基於會話的推薦的情況下,您可能會使用流特徵,例如使用者在網站上花費的時間量、專案的購買次數,而不是僅使用專案嵌入來建立會話嵌入在過去的 24 小時內。
此階段的公司示例包括 Stripe、Uber、Faire,用於欺詐檢測、信用評分、駕駛和交付評估以及建議等用例。
要將您的 ML 工作流程移至此階段,您需要:
- 成熟的流媒體基礎設施,具有高效的流處理引擎,可以以可接受的延遲計算所有流媒體特徵。您需要能夠將請求傳送到您的流傳輸中,並在下一個請求到達之前足夠快地處理它們以供預測服務使用。
- 用於管理物化特徵並確保訓練和預測期間流特徵的一致性的特徵儲存。注意:當前的特徵儲存通常管理物化流特徵,但不管理特徵計算或特徵的原始碼。
- 樣板店。流特徵在建立後需要進行驗證。為確保新功能確實有助於提高模型的效能,您希望將其新增到模型中,從而有效地建立新模型。理想情況下,您的模型商店應該可以幫助您管理和評估使用新的流功能建立的模型,但同時評估模型的模型商店還不存在。您可以將其中的一部分委託給功能儲存。
- 最好有更好的開發環境。資料科學家目前即使在建立流媒體功能時也會處理歷史資料,這使得提出和驗證新的流媒體功能變得困難。如果我們可以讓資料科學家直接訪問資料流,這樣他們就可以快速試驗和驗證新的流特性會怎樣?不是資料科學家只能訪問歷史資料,如果他們也可以訪問來自筆記本的傳入資料流怎麼辦?
。。。
實時機器學習在很大程度上是一個基礎設施問題。解決它需要資料科學/機器學習團隊和平臺團隊共同努力。
線上推理和持續學習都需要成熟的流媒體基礎設施。持續學習的訓練部分可以批量進行,但線上評估部分需要流式處理。許多工程師擔心流媒體既困難又昂貴。3 年前確實如此,但從那時起,流媒體技術已經顯著成熟。越來越多的公司正在提供解決方案以使公司更容易遷移到流媒體,包括 Spark Streaming、Snowflake Streaming、Materialize、Decodable、Vectorize 等。
原文點選標題
相關文章
- 飛漿(paddle)實現機器學習機器學習
- 用機器學習實現情感分析機器學習
- 《機器學習Python實現_10_02_整合學習_boosting_adaboost分類器實現》機器學習Python
- 機器學習|決策樹-sklearn實現機器學習
- 如何通過 JavaScript 實現機器學習和神經學網路?JavaScript機器學習
- 《機器學習Python實現_10_09_整合學習_bagging_stacking原理及實現》機器學習Python
- 《機器學習Python實現_10_06_整合學習_boosting_gbdt分類實現》機器學習Python
- 機器學習實戰-SVM模型實現人臉識別機器學習模型
- 【機器學習】線性迴歸python實現機器學習Python
- 【機器學習】線性迴歸sklearn實現機器學習
- 機器學習——決策樹模型:Python實現機器學習模型Python
- 【Python機器學習實戰】感知機和支援向量機學習筆記(三)之SVM的實現Python機器學習筆記
- 《機器學習實戰》學習大綱機器學習
- 機器學習PAI全新功效——實時新聞熱點OnlineLearning實踐機器學習AI
- 【機器學習】多項式迴歸python實現機器學習Python
- 【機器學習】多項式迴歸sklearn實現機器學習
- Yarn已過時!Kubeflow實現機器學習排程平臺才是未來Yarn機器學習
- 如何使用華為機器學習服務和Kotlin實現語音合成機器學習Kotlin
- ML-機器學習實踐機器學習
- python機器學習實戰(二)Python機器學習
- 【Python機器學習實戰】決策樹和整合學習(二)——決策樹的實現Python機器學習
- 機器學習之線性迴歸(純python實現)機器學習Python
- 【機器學習】--xgboost初始之程式碼實現分類機器學習
- 機器學習之 決策樹(Decision Tree)python實現機器學習Python
- 吳恩達機器學習 ex1 python實現吳恩達機器學習Python
- 機器學習--線性迴歸--梯度下降的實現機器學習梯度
- 機器學習分享——KNN演算法及numpy實現機器學習KNN演算法
- 機器學習之分類迴歸樹(python實現CART)機器學習Python
- 使用pmml實現跨平臺部署機器學習模型機器學習模型
- 機器學習可視分析框架設計與實現機器學習框架
- 如何學習機器學習機器學習
- 實時機器學習是什麼,面臨哪些挑戰?機器學習
- 經驗教訓:Instacart 的實時機器學習之旅 - shu機器學習
- 實戰 | 如何上線一個機器學習專案?機器學習
- 機器學習實踐:如何將Spark與Python結合?機器學習SparkPython
- 回顧·機器學習/深度學習工程實戰機器學習深度學習
- 如何使用Python實現FTP伺服器?Python學習教程PythonFTP伺服器
- 《機器學習實戰》第一章 機器學習基礎機器學習