特征平臺(FeatureStore)
FeatureStore作為PAI產品中心化的數據管理和共享平臺,用于組織、存儲和管理機器學習和AI訓練中使用的特征數據。FeatureStore可以方便地向多人、多團隊共享特征,保證離線在線特征數據的一致性,并提供高效的在線特征訪問。
什么是FeatureStore
FeatureStore是PAI平臺下的特征平臺管理工具,用于存儲和管理機器學習特征。
FeatureStore整合了阿里云上DataHub、Flink、Hologres、Graphcompute等產品,為用戶提供一整套的特征管理功能,包括從DataHub接收用戶行為日志、物品和用戶實時更新的屬性特征,可直接同步到MaxCompute,也可以通過Flink處理后寫入到相應的在線存儲中,最終推薦引擎、用戶增長、金融風控等應用通過調用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,可以有效管理和處理多版本的用戶特征,結合像XGB、GBDT等機器學習模型或深度學習模型進行風險評估,有助于提高業務風控的準確性和效率。
搜索引擎排序場景:該場景下的特征數據包括關鍵詞匹配度、點擊率、銷售量等,通過使用FeatureStore訓練排序模型,對Elasticsearch/OpenSearch等搜索引擎召回結果,用召回結果請求EAS中TensorFlow模型的打分服務,根據用戶的搜索意圖和個人喜好,為其提供更加精準和個性化的搜索結果。
離線KV數據同步到線上存儲場景:該場景下的特征數據包括商品屬性表、用戶屬性等,通過使用FeatureStore,簡化離線數據到線上存儲的同步調度任務。
功能特性
數據源能力
FeatureStore封裝了整個特征到模型的流程,支持多種離線和實時數據源,便于您在FeatureStore中進行端到端特征表注冊、管理操作,當前支持的數據源包括:
離線數據源:MaxCompute
在線數據源:Hologres、GraphCompute、TableStore
您將特征表注冊到FeatureStore后:
FeatureStore可以自動完成在線和離線表的構建,保證在線和離線的一致性。
在保證特征表只存一份的情況下,能夠向多人共享特征,減少資源成本。
FeatureStore還可以節省時間成本,比如導出訓練表、導入數據至OnlineStore的操作,原先需要復雜的操作,當前在FeatureStore中都可以通過一行代碼完成。
推薦服務引擎對接
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性能顯著提升,打分穩定性增強,超時情況減少。
管理離線和在線特征數據
離線特征包括用戶和物品的屬性特征、統計特征;實時特征包括新用戶或新物品上線,通過Flink直接寫入到類似Hologres的在線存儲中,也包括按照時間窗統計的特征(如1小時的點擊、轉發、購買數量、轉化率等)。其中線上存儲包括Hologres、GraphCompute、TableStore等。
共享新舊特征
當算法或BI研發出一組新的用戶特征/物品特征的時候,可以設計新的ModelFeature關聯訓練集需要的新舊特征,通過FeatureStore SDK導出樣本供離線訓練,也可以通過FeatureStore SDK發布到線上存儲供線上服務使用。當多個模型引用同一個特征視圖的時候,線上存儲始終只有一份。管理特征對于算法工程價特征非常友好,在增加特征迭代優化模型的時候非常有用。
管理實時統計特征和用戶序列特征
一般模型特征的復雜度、實時性都是逐步增加的,因此管理Flink實時計算得到的實時統計特征和用戶行為序列特征非常必要。FeatureStore定義了離線用戶序列特征,例如用戶點擊過的物品ID序列。只有物品ID序列也是不夠的,在模型中常使用到物品的屬性特征(SideInfo),而SideInfo在線上通過網絡傳輸數據量較大,而在EasyRec中通過FeatureStore SDK緩存物品特征,節約了推理響應時間、提高了推理性能。
提供多語言SDK
FeatureStore提供了GO/Java/Python SDK,可以幫助用戶在PAI-REC和EasyRecProcessor聯合解決方案中使用FeatureStore的功能;通過Java SDK幫助用戶在自己的服務端(搜索、推薦、風控等引擎)中調用EasyRecProcessor或者其他模型打分的引擎;支持用戶通過Python SDK訪問在線存儲中的數據去完成數據分析、建模等工作。
自動化特征工程
FeatureStore計劃提供自動化的特征工程功能,通過機器學習技術,自動挖掘新特征,減少研發團隊的手動特征工程工作量。
特征監控
FeatureStore計劃提供特征的監控和報警功能,及時發現和解決特征的異常和問題,減少團隊的故障排查和修復時間。
功能原理
阿里云FeatureStore為您提供數據源能力,可分別對接離線存儲和在線存儲產品,便于統一讀寫并管理離線、在線特征數據。
您可以將離線特征表、在線特征表注冊至FeatureStore的特征視圖中,通過特征視圖來匯總、映射離線、在線特征數據。
您可以將Label表存儲在離線存儲MaxCompute中,通過離線數據源注冊至FeatureStore中,通過注冊后的FeatureStore Label表映射實際Label表數據。
阿里云FeatureStore為您提供特征項目和特征實體功能,通過特征實體的Join Id來關聯各個項目中的特征視圖,將一個特征實體的所有特征進行關聯,最終結合Label表產出模型特征表Train Set表,并將Train Set表存在離線存儲MaxCompute中。
地域限制
FeatureStore支持的地域包括:華北2(北京)、華東2(上海)、華東1(杭州)、華南1(深圳)、中國(香港)。
操作流程
創建數據源。
數據源包含離線數據源與在線數據源,操作詳情請參見配置數據源。
創建項目,并配置特征實體、特征視圖、Label表等,產出模型特征train set表(訓練數據集)。操作詳情請參見配置FeatureStore項目。
查看任務詳情。
您可以在任務中心中查看各任務的狀態與任務詳情,操作詳情請參見任務中心。
將數據同步到線上存儲,具體操作請參見DSW Gallery案例。
需要在Java/Go在線引擎中讀取和使用FeatureStore在線數據,請搜索釘釘群34415007523,咨詢技術人員。
聯系我們
如果您在使用FeatureStore時遇到問題,可以搜索釘釘群號:34415007523,進入答疑群聯系群技術人員進行咨詢。