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