如何實現實時機器學習? - 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 等。
原文點選標題
相關文章
- 【機器學習PAI實踐九】如何通過機器學習實現雲端實時心臟狀況監測機器學習AI
- 【機器學習PAI實踐四】如何實現金融風控機器學習AI
- 如何實現定時推送?
- 實時計算如何幫助淘寶實現線上「實時選品」?
- PLC實時資料採集如何實現?
- Java如何實現延時訪問Java
- Java如何實現定時任務?Java
- 用機器學習實現情感分析機器學習
- PH 如何實現調取展示實時影片畫面?
- 如何實現在指定的時間後網頁實現跳轉網頁
- 如何利用Redis實現延時處理Redis
- 如何實現模糊查詢時間段
- NIO中如何實現超時重傳?
- 機器學習|決策樹-sklearn實現機器學習
- 飛漿(paddle)實現機器學習機器學習
- 機器學習程式碼實現 SVM (5)機器學習
- PH 如何實現調取展示實時視訊畫面?
- Kafka如何實現實時流處理 Part 1 - André MeloKafka
- 如何通過 JavaScript 實現機器學習和神經學網路?JavaScript機器學習
- 機器學習實戰-SVM模型實現人臉識別機器學習模型
- web 展現資料時如何實現行列互換Web
- 報表展現時如何實現固定表頭效果
- 萬字長文揭秘:阿里如何實現海量資料實時分析?阿里
- 端智慧系列文章|端側如何實現實時CEP引擎
- 如何使用 Milvus 向量資料庫實現實時查詢資料庫
- 技術乾貨|如何利用 ChunJun 實現資料實時同步?
- 如何實現將markdown檔案實時轉換為html文件HTML
- 如何用istio實現請求超時管理
- .NET中如何實現高精度定時器定時器
- Linux中如何實現定時任務Linux
- SpringBoot如何實現定時任務Spring Boot
- Swift如何純程式碼實現時鐘效果Swift
- spring quartz如何實現多工定時Springquartz
- Yarn已過時!Kubeflow實現機器學習排程平臺才是未來Yarn機器學習
- 【機器學習】線性迴歸sklearn實現機器學習
- 如何使用華為機器學習服務和Kotlin實現語音合成機器學習Kotlin
- 從科研角度談“如何實現基於機器學習的智慧運維”機器學習運維
- AOP如何實現及實現原理