嘉賓:盧冕
整理:墨色
#2022年8月6日-7日,AISummit 全球人工智慧技術大會如期舉辦。在會上,OpenMLDB 研發負責人第四範式系統架構師盧冕帶來了主題演講《開源機器學習資料庫OpenMLDB:線上線下一致的生產級特徵平台》,從人工智慧工程化落地的資料和特徵挑戰、OpenMLDB線上線下一致的生產級特徵計算平台、OpenMLDB v0.5:效能、成本、易用性增強,三個面向進行了分享。
現將演講內容整理如下,希望對各位有所啟發。
如今,根據統計,在人工智慧落地過程中有95%的時間都是花費在資料上。雖然市面上有諸如MySQL之類各種各樣的數據工具,但它們遠遠沒有解決人工智慧落地的難題。因此,先來了解一下數據問題。
如果大家有參與過一些機器學習的應用開發,應該對MLOps印象深刻,如下圖所示:
其實,當下對MLOps並沒有嚴格的學術定義,整體上可將其分成離線開發和線上服務兩個流程。每個流程中資訊的載體,從資料、特徵,到模型,會經歷三種不同的載體,從離線開發流程一直走到線上服務流程。
接下來我們聚焦中間特徵流程這一部分,了解到底是如何解決所面臨的挑戰的。
人工智慧發展到現在主要有兩種應用分類,一類是感知類,例如大家熟悉的臉部辨識等都是感知類別的AI應用,基本上會基於DNN演算法進行。另一類是決策類的AI場景,例如淘寶購物的個人化推薦。另外還有一些像是風控場景、反詐騙場景等都是AI在決策類別中使用非常廣泛的應用場景。
因此,我們現在講的應用背景主要是針對這種決策類場景,最大的一個特點在於它的數據是一個二維表格的結構化數據,並且還是一個時序數據。如下圖所示,使用者交易表上有一個“trans_time”,代表了每個記錄所發生的時間點,連起來就是一個時序資料。基於時序資料的特徵工程,最常見的一種處理方式就是基於時間視窗的聚合函數。例如針對使用者一天內的交易總額等,這是決策類別情境中特徵工程常見的操作。
當下,我們為什麼要使用OpenMLDB?一個非常大的背景是要用真正的硬實時計算去滿足AI需求。
什麼是硬實時計算?它有兩層意義,一層是指要用最新鮮的即時數據來達到最大的決策業務效果。比方要用過去10秒或1分鐘內用戶的點擊行為來做決策業務,而不是過去一年或前年的數據。
另外很重要的一點是,做即時運算,使用者一旦發出行為請求就需要在短時間內甚至是毫秒級去進行特徵計算。
目前市面上有許多做大量運算/串流運算的產品,但還沒有達到毫秒級的硬即時運算需求。
例如,如下圖所示做一個滿足生產級上線需求的即時推薦系統,用戶小李做一個關鍵字為「洗衣機」的搜索,他需要在系統中把原始請求數據以及用戶、商品、交易等資訊資料合起來進行即時特徵計算,然後產生一些更有意義的特徵,即所謂的特徵工程,產生特徵的過程。例如係統會產生“過去三個月內某一年齡段顧客購買的前三暢銷洗衣機”,這一類特徵不需要強時效性,是基於較長歷史數據進行計算的。但是,系統可能也會需要一些強時效性的數據,例如「過去一小時內/半小時內的瀏覽記錄」等,系統得到新計算出來的特徵後會給到模型進行推理。而這樣的系統特徵平台的需求主要有兩個,一個是正確性,即線上線下特徵計算一致性;另一個是高效性,即特徵實時計算,延遲
在沒有OpenMLDB方法論之前,大家主要使用如下圖所示的流程進行特徵運算開發。
首先要做一個場景,資料科學家會使用Python/SparkSQL工具做離線特徵抽取。資料科學家的KPI就是去做符合精確度的商業需求模型,當模型品質達標後任務也就完成了。而特徵腳本上線以後所面臨的工程化挑戰,如低延遲、高併發、高可用等並不是科學家的管轄範疇。
為了讓資料科學家寫的Python腳本上線,需要工程化團隊介入,他們要做的就是把數據科學家所做的離線腳本進行重構、最佳化,並使用C /Database做即時特徵抽取服務。這滿足了低延遲、高並發、高可用的一系列工程化的需求,從而使特徵腳本真正上線去做線上服務。
這個流程非常昂貴,需要兩組技能團隊的介入,而且他們所使用的工具不一樣。兩組流程走下來,還需要做計算邏輯的一致性校驗,也就是資料科學家所發展的特徵腳本的計算邏輯要與最後即時特徵抽取上線的邏輯完全一致。這項需求看似明確、簡單,但在一致性校驗過程中會引入大量的溝通成本、測試成本以及迭代開發成本。根據以往經驗,專案越大則一致性校驗所需的時間越長,成本非常大。
一般來說,在一致性校驗過程中線上線下不一致的原因主要在於開發工具不一致,例如科學家用的是Python,工程化團隊用的是資料庫,工具能力有差異就可能會出現功能的妥協、不一致;還有就是對資料的定義、演算法的定義,以及認知有差距等。
總而言之,基於傳統兩套流程的開發成本非常高昂,需要兩組不同技能站的開發人員、兩套系統的開發和運營,中間還要添加堆砌的校驗、核對等。
而OpenMLDB提供了一個低成本開源解決方案。
去年6月,OpenMLDB正式開源,是開源社群中的年輕項目,但已經在100多個場景中落地應用,覆蓋超過300多個節點。
OpenMLDB是一個開源機器學習資料庫,最主要功能是提供一個線上線下一致的特徵平台。那麼OpenMLDB是如何滿足高效能和正確性的需求的呢?
如上圖所示,首先OpenMLDB使用的唯一程式語言就是SQL,不再有兩套工具鏈,不管是資料科學家還是開發人員,都使用SQL表述特徵。
其次,在OpenMLDB內部分出兩套引擎,一套是“批次SQL引擎”,基於Spark 進行源代碼級別的優化,提供了更高性能的計算方式,並做了語法擴充;另外一套是“即時SQL引擎”,這套是我們團隊自研的資源時序資料庫,預設是一個基於記憶體的儲存引擎的時序資料庫。基於“即時SQL引擎”,我們才可以達到線上高效的毫秒級即時運算,同時也確保高可用、低延遲、高並發。
在這兩套引擎之間還有一個重要的“一致性執行計劃產生器”,目的是確保線上線下執行計劃邏輯的一致性。有了它可以天然保證線上線下一致性而不再需要人工進行校對。
總而言之,基於此架構,我們的最終目的是達成「開發即上線」的最佳化目標,主要包括三個步驟:線下SQL特徵腳本開發;一鍵部署上線;接入即時請求資料流。
可以看出,相較於之前兩套流程、兩套工具鏈、兩套開發人員的投入,這套引擎最大的優勢是節省了大量工程化成本,也就是只要資料科學家用SQL開發特徵腳本,不再需要工程化團隊做第二輪優化,便可直接上線,也不再需要中間的線上線下一致性校驗的人工操作,省下了大量時間和成本。
下圖展示了OpenMLDB從離線開發到線上服務的完整流程:
##
整體來看,OpenMLDB解決了一個核心問題-機器學習線上線下一致性;提供了一個核心特性-毫秒級即時特徵運算。這兩點是OpenMLDB所提供的最核心價值。
因為OpenMLDB有線上線下兩組引擎,所以應用方式也不盡相同。下圖展示了我們的推薦方式,可供參考:
接下來介紹OpenMLDB中的一些核心元件或特性:
特性一,線上線下一致性執行引擎,基於統一的底層計算函數,邏輯計劃到物理計劃的線上線下執行模式自適應調整,從而使得線上線下一致性得到天然保證。
特性二,高效能線上特徵運算引擎,包括高效能雙層跳表記憶體索引資料結構;即時運算預聚合技術的混合最佳化策略;提供記憶體/磁碟兩種儲存引擎,滿足不同效能和成本需求。
特性三,以特徵計算為導向的最佳化的離線計算引擎,包括多視窗並行計算最佳化;資料傾斜計算最佳化;SQL語法擴充;針對特徵計算最佳化的Spark發行版等。這些都使得在性能方面相較社群版大幅提升。
特性四,針對特徵工程的SQL擴充。之前提到我們使用SQL做特徵定義,但其實SQL並不是為特徵計算設計的,所以在研究大量案例、累積使用經驗以後,發現有必要對SQL語法做一些擴展,讓它更好處理特徵計算的場景。這裡有兩個比較重要的擴展,一個是LAST JOIN,另一個是比較常用的WINDOW UNION,具體如下圖:
##
特性五,企業級特性支援。 OpenMLDB作為一個分散式資料庫,具有高可用、可無縫擴縮容、可平滑升級等特點,已經在許多企業案例中落地應用。特性六,以SQL為核心的開發與管理,OpenMLDB還是一個資料庫的管理,它與傳統資料庫較為相似,例如提供了CLI,那麼OpenMLDB就可以在整個CLI中實現整套流程,從離線特徵計算、SQL方案上線到線上請求等,可以提供一個基於SQL和CLI的全流程開發體驗。
另外,OpenMLDB目前已經開源,關於其上下游生態的擴展,如下圖所示:
# 接下来,介绍一下OpenMLDB v0.5的一个新版本,我们在三方面做了一些增强。 首先看一下OpenMLDB的发展历程。2021年6月,OpenMLDB开源,其实在这之前已经拥有了很多客户,并且从2017年就已经开始做第一行代码开发,技术的积累已有四五年的时间。 在开源后一周年里,我们迭代了大概五个版本。相较于以往版本,v0.5.0具有以下几个显著特点: 性能升级,聚合技术能够显著提升长窗口性能。预聚合优化使得在长窗口查询下,无论延迟还是吞吐,性能都提升了两个数量级。 成本降低,从v0.5.0版本开始,在线引擎提供基于内存和外存的两种引擎选择。基于内存,低延迟、高并发;较高使用成本提供毫秒级延迟响应。基于外存,对性能较不敏感;低成本使用落地基于SSD的典型配置下成本可下降75%。两种引擎上层业务代码无感知,零成本切换。 易用性增强。我们在v0.5.0版本中引入了用户自定义函数(UDF),这意味着如果SQL不能满足你的特征抽取逻辑表达,支持用户自定义函数,比如C/C UDF、UDF动态注册等,方便用户扩展计算逻辑,提升应用覆盖范围。 最后,感谢各位OpenMLDB开发者,从开源开始已经有接近100位贡献者在我们社区做过代码贡献,同时,我们也欢迎更多的开发者可以加入社区,贡献自己的力量,一起做更有意义的事情。 大会演讲回放及PPT已上线,进入官网查看精彩内容。OpenMLDB v0.5.0:性能、成本、易用性增强
以上是OpenMLDB 研發負責人第四範式系統架構師盧冕:開源機器學習資料庫OpenMLDB:線上線下一致的生產級特徵平台的詳細內容。更多資訊請關注PHP中文網其他相關文章!