FeatureStore作為PAI產品中心化的資料管理和共用平台,用於組織、儲存和管理機器學習和AI訓練中使用的特徵資料。FeatureStore可以方便地向多人、多團隊共用特徵,保證離線線上特徵資料的一致性,並提供高效的線上特徵訪問。
什麼是FeatureStore
FeatureStore是PAI平台下的特徵平台管理工具,用於儲存和管理離線和線上服務中的特徵資料。
FeatureStore整合了阿里雲上DataHub、Flink、Hologres和Tablestore等產品,並且研發了搜尋推薦專用的特徵資料庫FeatureDB,提供特徵管理功能。應用可以從 DataHub 接收使用者行為日誌、物品和使用者即時更新的屬性特徵,直接同步處理到 MaxCompute ,也可以通過Flink處理後通過 FeatureStore 寫入到相應的線上儲存中。最終Recommendation Engine、使用者增長、金融風控等應用通過調用 FeatureStore SDK 來訪問線上儲存中的特徵資料。
下圖展示了從 MaxCompute 和 DataHub 輸入資料,經過特徵計算和模型樣本管理,發布到線上儲存供用戶端應用的過程。
基本概念
特徵實體:特徵實體(FeatureEntity)一組特徵表集合的名稱,例如在推薦情境下,可以設定兩個特徵實體user和item,因為所有的表特徵要麼屬於user側,要麼屬於item側。
特徵視圖:特徵視圖(FeatureView)是一組特徵,包含一組特徵以及這些特徵的衍生特徵的資訊。一個特徵視圖是特徵實體的全量特徵集合的一個子集,離線特徵表和線上特徵表的映射。
Join Id:Join Id是關聯特徵視圖到特徵實體的特徵表欄位,每個特徵實體都會有一個Join Id , 通過Join Id可以關聯多個特徵視圖的特徵。
說明每一個特徵視圖都有一個主鍵(索引鍵)來擷取其下面的特徵資料,但是特徵視圖的索引鍵可以和JoinId的名稱不一致。
以推薦情境為例,Join Id可以配置為user表和item表的主鍵user_id、item_id。
Label表:Label表是模型訓練時Label所在的表,帶有模型訓練目標和特徵實體的JoinId。在推薦情境中一般是由行為表通過
group by user_id/item_id/request_id等操作得到。
應用情境
推薦系統和廣告排序情境:使用FeatureStore集中系統管理使用者特徵和物品特徵,包括使用者瀏覽歷史、購買記錄和使用者畫像等,FeatureStore的即時特徵讀寫能力能夠提升模型效果,有助於提高廣告精準度和投放效果。
搜尋引擎排序情境:該情境下的特徵資料包括關鍵詞匹配度、點擊率、銷售量等,通過使用FeatureStore訓練排序模型,對Elasticsearch/OpenSearch等搜尋引擎召回結果,用召回結果請求EAS中TensorFlow模型的打分服務,根據使用者的搜尋意圖和個人喜好,為其提供更加精準和個人化的搜尋結果。
使用者增長或風控情境:使用FeatureStore系統管理使用者個人資訊、交易行為和信用記錄等特徵資料,結合機器學習模型(例如XGB和GBDT等)進行風險評估,提高風控準確性和效率。
離線KV資料同步到線上儲存:使用FeatureStore管理商品屬性工作表和使用者屬性等特徵資料,簡化離線資料到線上儲存的同步調度任務。
功能特性
多樣化資料來源支援
FeatureStore 管理從特徵到模型的整個流程。它支援多種離線和線上資料來源,您可以在其中註冊和管理特徵表。
支援的資料來源如下:
離線資料來源:MaxCompute
線上資料來源:FeatureDB、Hologres、TableStore
在將特徵表註冊到FeatureStore後,具有以下優勢:
自動同步:可以自動完成線上和離線表的構建,確保線上和離線的一致性。
節約成本:特徵只需儲存一份,即可在多個團隊間共用,從而降低資源成本。
提升效率:FeatureStore 可以節省時間。以往匯出訓練表或匯入資料到線上庫等複雜操作,現在一行代碼即可完成。
離線特徵和即時特徵管理
特徵平台可以管理離線特徵視圖和即時特徵視圖。離線特徵包括使用者和物品的屬性特徵、統計特徵;即時特徵包括新使用者或新物品上線,通過Flink直接寫入到類似Hologres的線上儲存中,也包括按照時間窗統計的特徵(如1小時的點擊、轉寄、購買數量、轉化率等)。
即時統計特徵和使用者序列特徵管理
一般模型特徵的複雜度、即時性都是逐步增加的,因此管理FlinkRealtime Compute得到的即時統計特徵和使用者行為序列特徵非常必要。FeatureStore定義了離線使用者序列特徵,例如使用者點擊過的物品ID序列。只有物品ID序列也是不夠的,在模型中常使用到物品的屬性特徵(SideInfo),而SideInfo線上上通過網路傳輸資料量較大,而在EasyRec中通過FeatureStore SDK緩衝物品特徵,節約了推理回應時間、提高了推理效能。
自動關聯與模型樣本匯出
可以通過PAI-FeatureStore來管理產出樣本。特別是模型中用到了即時特徵視圖中的特徵的時候,建議使用建立模型特徵功能,通過該功能可能自動基於FeatureDB中記錄的即時特徵更新資訊來得到正確的樣本。通過此功能自動關聯即時特徵,不需要在PAI-Rec引擎中部署Callback 回調介面。
共用新舊特徵
當演算法或BI研發出一組新的使用者特徵/物品特徵的時候,可以設計新的ModelFeature關聯訓練集需要的新舊特徵,通過FeatureStore SDK匯出樣本供離線訓練,也可以通過FeatureStore SDK發布到線上儲存供線上服務使用。當多個模型引用同一個特徵視圖的時候,線上儲存始終只有一份。管理特徵對於演算法工程價特徵非常友好,在增加特徵迭代最佳化模型的時候非常有用。
提供多語言SDK
FeatureStore提供了GO/Java/Python SDK,可以協助使用者在PAI-REC和EasyRecProcessor聯合解決方案中使用FeatureStore的功能;通過Java SDK協助使用者在自己的服務端(搜尋、推薦、風控等引擎)中調用EasyRecProcessor或者其他模型打分的引擎;支援使用者通過Python SDK訪問線上儲存中的資料去完成資料分析、建模等工作。
特徵生產SDK
特徵生產指的是定義、產生特徵,使用者可以很方便的用Python指令碼定義特徵,然後執行Python指令碼產出需要的特徵,最終再註冊到PAI-FeatureStore平台上。特徵生產的SDK是獨立的,基於MaxCompute的SQL來產出特徵的開原始碼,來降低特徵生產的複雜度;實現過程中使用天層級中間資料,當基於30天行為資料來統計使用者的偏好統計特徵時,可以大幅節約計算資源。
自動化特徵工程
FeatureStore計劃提供自動化的特徵工程功能,通過機器學習技術,自動挖掘新特徵,減少研發團隊的手動特徵工程工作量。
特徵監控
FeatureStore計劃提供特徵的監控和警示功能,及時發現和解決特徵的異常和問題,減少團隊的故障排查和修複時間。
與Recommendation EngineEasyRec深度整合
FeatureStore和EasyRec深度整合,支援高效地進行FG(特徵工程)和模型訓練,並且能夠直接部署到線上(EasyRec的EAS Processor),可以做到在短時間內搭建起一套推薦系統,並取得優良的效果。EasyRec能夠提供物品特徵表的記憶體Cache,並提供高效的模型打分。
EasyRec Processor中整合的FeatureStore Cpp SDK對於大規模情境有專門的最佳化,使用FeatureStore後:
記憶體佔用:EasyRec Processor內建的FeatureStore Cpp SDK針對特徵儲存進行了最佳化,相比原生記憶體緩衝,能有效節省50%的記憶體。尤其在處理大量特徵時,節省效果更為顯著,有助於降低資源消耗。
拉取特徵時間:離線特徵視圖可將特徵快速緩衝至記憶體cache,相比線上資料來源,速度快超過5倍,可以在增加速度的同時減少對線上資料來源的壓力。並且由於離線資料來源的高穩定性,實際測試可以同時擴容至數百個EAS執行個體,並且每個執行個體都可以在幾分鐘內載入完所有特徵。因此擴容時不會給線上儲存帶來很大壓力。
模型打分耗時:模型評分即時從最佳化的緩衝中提取特徵,藉助FeatureStore Cpp SDK的專項最佳化,在使用FeatureStore的情況下,tp100效能顯著提升,打分穩定性增強,逾時情況減少。
功能原理
FeatureStore提供資料來源能力,可分別對接離線儲存和線上儲存產品,便於統一讀寫並管理離線、線上特徵資料。
您可以將離線特徵表、線上特徵表註冊至FeatureStore的特徵視圖中,通過特徵視圖匯總和映射特徵資料。
您可以將Label表格儲存體在離線儲存MaxCompute中,通過離線資料來源註冊至FeatureStore中,通過註冊後的FeatureStore Label表映射實際Label表資料。
FeatureStore提供特徵專案和特徵實體功能,通過特徵實體的Join Id來關聯各個專案中的特徵視圖,將一個特徵實體的所有特徵進行關聯,最終結合Label表產出模型特徵表Train Set表,並將Train Set表格儲存體在MaxCompute中。
地區與可用性區域
FeatureStore支援的地區包括:
華北2(北京)、華東2(上海)、華東1(杭州)、華南1(深圳)、中國(香港)、新加坡、美國(矽谷)、美國(維吉尼亞)、德國(法蘭克福)。