譯者 | 陳峻
公司在選擇他們的在線特征存儲之前,通常會執行全面的基準測試,以比較哪一種架構是最高效且具有成本效益的。本文將和您討論四種成功部署了實時 AI/ML 用例的開源與商業化的特征存儲架構和基準。
如今,隨著欺詐預防和個性化推薦等實際商業用例的廣泛使用,特征存儲(Feature Stores)在將AI/ML技術實時、成功地部署到生產環境的過程中,發揮著關鍵性的作用。
目前最流行的開源特征存儲平臺之一當屬Feast。用戶在其Slack社區(https://slack.feast.dev/)中提及最多的便是Feast的可擴展性與性能。畢竟,對于實時的AI/ML特征存儲而言,最重要的指標便是被用于在線預測或評分的ML模型的特征服務速度。
通常,成功的特征存儲應當滿足如下嚴格的要求:
- 低延遲(以毫秒為單位)
- 一致性(以99%的情況結果來衡量)
- 成規模(每秒高達十萬、甚至百萬的查詢量,以及千兆、甚至TB字節的數據集)
- 較低的總體擁有成本和高精確度
公司在選擇他們的在線特征存儲之前,通常會執行全面的基準測試,以比較哪一種架構是最高效且具有成本效益的。下面,我們將和您一起討論四種成功部署了實時AI/ML用例的開源與商業化的特征存儲架構和基準。
1.開源的Feast
我們先來看看Feast(https://feast.dev/)開源特征存儲的基準數據、及其數據架構。在其最近的一個基準測試中,Feast比較了使用不同的在線存儲(即Redis、Google Cloud DataStore和AWS DynamoDB)時特征服務的延遲,并比較了使用不同機制的提取特征(如Java gRPC服務器、Python HTTP服務器、以及lambda函數等)時的速度。您可以從鏈接—https://feast.dev/blog/feast-benchmarks/,了解完整的基準測試設置及其結果。其中,Feast發現在使用Java gRPC服務器與Redis組合作為在線存儲時,性能最高。
來源:https://www.applyconf.com/agenda/using-feast-in-a-ranking-syst
在上圖中,您可以看到知名的在線抵押貸款公司Better.com是如何使用開源的Feast特征存儲,來構建對其潛在客戶的評分排名系統。Better.com的高級軟件工程師Vitaly Sergey介紹了從離線存儲(S3、Snowflake和Redshift)到在線存儲(Redis)的過程。同時,他們也將特征從流媒體源(Kafka的各個主題)攝取到了在線存儲。Feast最近也添加了對于流式數據源(除了批處理數據源)的支持,不過目前僅支持Redis。
由于此類用例需要依賴實時數據,因此支持流式數據源對于實時的AI/ML用例是非常重要的。例如,在該評分用例中,新的潛在客戶數據被實時地攝取到。只要有一個新的潛在客戶被發現,它就會被模型攝取并予以評分,同時它會被攝取到在線存儲中,以便我們在后續對其進行重新排名。同時,Better.com會讓潛在客戶在48小時后過期。這是在Redis在線存儲中實現的。他們只需將TTL(生存時間,time to live)設置為48小時,那么實體(即潛在客戶)與關聯特征向量就會在48小時后過期。也就是說,特征存儲會自動自行清理,以保證沒有舊的實體或特征占用寶貴的在線存儲空間。
Feast的另一個實現是Microsoft Azure的特征存儲(https://techcommunity.microsoft.com/t5/ai-customer-engineering-team/bringing-feature-store-to-azure-from-microsoft-azure-redis-and/ba-p/2918917)。你可以通過鏈接--https://techcommunity.microsoft.com/t5/image/serverpage/image-id/323561i3F763F78F483587D/image-size/large?v=v2&px=999,來參考它的架構。它運行在針對低延遲實時AI/ML用例進行過優化的Azure云上,能夠支持批處理和流式數據源,并集成到Azure數據和AI生態系統中。各種特征從批處理源(Azure Synapse Serverless SQL、Azure Storage/ADLS)和流式源(Azure Event Hub)被攝取到在線存儲處。在線存儲使用的是帶有Enterprise Tiers of Azure Redis的Azure Cache,包括了通過主動異地復制,來創建具有高達99.999%可用性的全局分布式緩存。因此,如果您的應用已經部署在Azure上,或熟悉Azure生態系統,那么此類特征存儲就比較適合。此外,通過使用Enterprise Flash層在分層內存架構上運行Redis,并使用內存(DRAM)和閃存(NVMe或SSD)來存儲數據,還可以進一步降低成本。
2.Wix將DIY特征存儲作為MLOps平臺的基石
流行的網站建設平臺Wix(https://www.wix.com/)將特征存儲架構用于諸如推薦、生產、溢價、預測、排名、以及垃圾郵件分類器等MLOps平臺應用中。雖然Wix能夠為超過2億的注冊用戶提供服務,但是在任何給定的時間內,通常只有少部分的活躍用戶。因此,這對特征存儲的實現方式提出了一定的影響。下圖源自Wix的ML Engineering領導Ran Romano在TechTalk上的演示文稿(https://youtu.be/E8839ENL-WY?t=2061)。Wix的特征存儲中存儲著超過90%的點擊流,ML模型可以按照網站或用戶被觸發。Ran解釋說,對于生產環境中的實時用例而言,他們需要在幾毫秒內提取特征向量,因此需要避免延遲。
來源:https://youtu.be/E8839ENL-WY?t=2061
如上圖所示,原始數據被存儲在AWS Parquet文件的S3存儲桶中,并按業務單元(如“編輯”、“餐廳”、“預訂”等)以及日期進行分區。在使用Spark SQL的日常構建批處理過程(需要幾分鐘到幾小時)中,所有用戶的歷史記錄特征都會從S3中提取,按用戶進行轉換和聚合,然后被提取到離線存儲(Apache Hbase)中。這種“按用戶”的方式,能夠加快針對用戶的歷史查找。一旦系統檢測到用戶當前處于活動狀態,“預熱(Warmup)”流程就被觸發,該用戶的特征則會被加載到比離線存儲小得多的、只用來保存活動用戶歷史記錄的在線存儲(Redis)中。該“預熱”過程通常需要幾秒鐘。最后,在線特征存儲中的特征,會使用來自用戶的每個事件(使用Apache Storm)作為“實時”流數據,進行持續更新。
與Feast架構相比,Wix架構的讀寫速率較低。但是由于它只為在線存儲中的活躍用戶提供存儲特征,而非所有用戶,因此在具體化(materialization)和在線存儲方面非常高效。而且,活躍用戶在Wix中僅占所有注冊用戶的一小部分,因此也節省了不少空間。
不過,雖然我們從在線存儲中檢索特征只需幾毫秒,但前提是在線存儲中已經存在了這些特征。相反,由于預熱過程需要幾秒鐘,那么對于某些變得活躍的用戶而言,可能會由于加載相關特征的速度不夠快,根據競態條件(race conditions),用戶會因評分過低而導致失敗。可見,只要用例不是關鍵性的流程或任務(如:批準交易或防范欺詐),就可以使用此類架構。
3.商業化特征存儲--Tecton
除了批量數據源和流式數據源,商業化的企業特征存儲Tecton(https://www.tecton.ai/)架構還支持“開箱即用”的實時數據源(也稱為“實時特性”或“實時轉變”)。由于Tecton已經能夠被特征存儲原生支持,因此它更易于實現。
與Feast和Wix的特征存儲一樣,Tecton也在注冊表中定義了各種特征,以便為離線和在線存儲進行一次性的邏輯定義,以顯著減少訓練服務的偏差,進而確保ML模型在生產環境中的高精度。
來源:https://www.tecton.ai/blog/delivering-fast-ml-features-with-tecton-and-redis-enterprise-cloud/
下面我們來看看Tecton在離線存儲、在線存儲和基準測試等方面的特點:就離線特征存儲而言,Tecton支持S3。就在線存儲而言,Tecton為客戶提供DynamoDB和Redis Enterprise Cloud之間的選擇(https://www.tecton.ai/blog/delivering-fast-ml-features-with-tecton-and-redis-enterprise-cloud/)。而在最近的一次演示中,Tecton首席技術官Kevin Stumpf根據公司近期執行的基準測試,給出了有關如何選擇在線特征存儲的建議,請參見--https://youtu.be/osxzKxiznm4。除了對延遲和吞吐量進行基準測試,Tecton也對在線存儲的成本進行了基準測試。其原因在于,對于高吞吐量或低延遲的用例而言,在線存儲的成本可能占整個MLOps平臺總擁有成本的大部分,因此任何成本的節省都是非常有益的。
Tecton在對用戶的典型高吞吐量用例進行基準測試時發現,與DynamoDB相比,Redis Enterprise的速度提高了3倍,同時成本降低了14倍。詳細的測試結果請參見--https://www.tecton.ai/blog/announcing-support-for-redis/。可見,除非您只有一個用例,而且它既沒有高并發量,又沒有嚴格的延遲要求,那么就可以使用DynamoDB。
4.Lightricks使用商業化特征存儲——Qwak
Lightricks是一家專為視頻和圖像編輯開發移動應用程序的獨角獸公司,Facetune就是其著名的自拍編輯APP。它也將特征存儲用到了其推薦系統上。
來源:https://www.youtube.com/watch?v=CG2vUCcvnD8&t=1915s
如上圖所示,Qwak的特征庫也支持開箱即用的三種特征源——批處理、流式和實時特征。這與Tecton十分類似。不過,在使用Qwak特征存儲時,他們是從離線存儲(使用S3上的Parquet文件)和在線存儲(使用Redis)的原始數據源處,將特征具體化到了特征存儲中的。這與來自Wix、Feast或Tecton的特征存儲示例有所不同。此舉動的好處在于,不僅單個特征的轉換邏輯,在訓練和服務流之間是統一的(就像上面的Feast、Wix和Tecton的特征存儲一樣),而且實際的轉換或特征計算也是統一完成的,這樣就進一步減少了訓練-服務的偏差。也就是說,擁有源于原始數據的統一離線與在線,可以在生產環境中確保更高的準確性。您可以通過鏈接--https://drive.google.com/file/d/1KfOMI9C-aitJNPdGB56L-6tA8BBp9gsl/view,了解Qwak的更多有關特征存儲架構和組件的內容。
5.小結
通過對上述四種用于實時AI/ML特征存儲的基準和架構的討論,我們可以看到,由于架構、支持的特性類型和選擇的組件的不同,它們所產生的特性存儲的性能和成本會存在顯著的差異。同時,我們也在文中比較了哪一種在線存儲的性能最高、最具成本效益,以及該使用哪一種機制或特征服務器,從在線存儲中提取特征。
原文鏈接:https://www.kdnuggets.com/2022/03/feature-stores-realtime-ai-machine-learning.html
譯者介紹
陳峻 (Julian Chen),51CTO社區編輯,具有十多年的IT項目實施經驗,善于對內外部資源與風險實施管控,專注傳播網絡與信息安全知識與經驗;持續以博文、專題和譯文等形式,分享前沿技術與新知;經常以線上、線下等方式,開展信息安全類培訓與授課。