特征平臺(FeatureStore)
FeatureStore作為PAI產(chǎn)品中心化的數(shù)據(jù)管理和共享平臺,用于組織、存儲和管理機器學(xué)習(xí)和AI訓(xùn)練中使用的特征數(shù)據(jù)。FeatureStore可以方便地向多人、多團隊共享特征,保證離線在線特征數(shù)據(jù)的一致性,并提供高效的在線特征訪問。
什么是FeatureStore
FeatureStore是PAI平臺下的特征平臺管理工具,用于存儲和管理機器學(xué)習(xí)特征。
FeatureStore整合了阿里云上DataHub、Flink、Hologres、Graphcompute等產(chǎn)品,為用戶提供一整套的特征管理功能,包括從DataHub接收用戶行為日志、物品和用戶實時更新的屬性特征,可直接同步到MaxCompute,也可以通過Flink處理后寫入到相應(yīng)的在線存儲中,最終推薦引擎、用戶增長、金融風控等應(yīng)用通過調(diào)用FeatureStore SDK來訪問在線存儲中的特征數(shù)據(jù)。
下圖從整體上介紹來自MaxCompute、DataHub的輸入數(shù)據(jù),經(jīng)過中間特征計算和模型樣本管理、發(fā)布到線上存儲供各種客戶端應(yīng)用的過程。
基本概念
特征實體
特征實體(FeatureEntity)一組特征表集合的名稱,例如在推薦場景下,可以設(shè)置兩個特征實體user和item,因為所有的表特征要么屬于user側(cè),要么屬于item側(cè)。
特征視圖
特征視圖(FeatureView)是一組特征,包含一組特征以及這些特征的衍生特征的信息。一個特征視圖是特征實體的全量特征集合的一個子集,離線特征表和在線特征表的映射。
Join Id
Join Id是關(guān)聯(lián)特征視圖到特征實體的特征表字段,每個特征實體都會有一個Join Id , 通過Join Id可以關(guān)聯(lián)多個特征視圖的特征。
說明每一個特征視圖都有一個主鍵(索引鍵)來獲取其下面的特征數(shù)據(jù),但是特征視圖的索引鍵可以和JoinId的名稱不一致。
以推薦場景為例,Join Id可以配置為user表和item表的主鍵user_id、item_id。
Label表
Label表是模型訓(xùn)練時Label所在的表,帶有模型訓(xùn)練目標和特征實體的JoinId。在推薦場景中一般是由行為表通過
group by user_id/item_id/request_id
等操作得到。
應(yīng)用場景
推薦系統(tǒng)和廣告排序場景:該場景下的特征數(shù)據(jù)包括用戶的瀏覽歷史、購買記錄、用戶畫像等,通過使用FeatureStore,可以集中更新和管理多版本的實時用戶特征和物品特征,方便模型提高特征的及時性,從而提高模型效果。應(yīng)用于廣告推薦和定向投放,有助于提高廣告精準度和投放效果。
用戶增長或風控場景:該場景下的特征數(shù)據(jù)包括用戶的個人信息、交易行為、信用記錄等,通過使用FeatureStore,可以有效管理和處理多版本的用戶特征,結(jié)合像XGB、GBDT等機器學(xué)習(xí)模型或深度學(xué)習(xí)模型進行風險評估,有助于提高業(yè)務(wù)風控的準確性和效率。
搜索引擎排序場景:該場景下的特征數(shù)據(jù)包括關(guān)鍵詞匹配度、點擊率、銷售量等,通過使用FeatureStore訓(xùn)練排序模型,對Elasticsearch/OpenSearch等搜索引擎召回結(jié)果,用召回結(jié)果請求EAS中TensorFlow模型的打分服務(wù),根據(jù)用戶的搜索意圖和個人喜好,為其提供更加精準和個性化的搜索結(jié)果。
離線KV數(shù)據(jù)同步到線上存儲場景:該場景下的特征數(shù)據(jù)包括商品屬性表、用戶屬性等,通過使用FeatureStore,簡化離線數(shù)據(jù)到線上存儲的同步調(diào)度任務(wù)。
功能特性
數(shù)據(jù)源能力
FeatureStore封裝了整個特征到模型的流程,支持多種離線和實時數(shù)據(jù)源,便于您在FeatureStore中進行端到端特征表注冊、管理操作,當前支持的數(shù)據(jù)源包括:
離線數(shù)據(jù)源:MaxCompute
在線數(shù)據(jù)源:Hologres、GraphCompute、TableStore
您將特征表注冊到FeatureStore后:
FeatureStore可以自動完成在線和離線表的構(gòu)建,保證在線和離線的一致性。
在保證特征表只存一份的情況下,能夠向多人共享特征,減少資源成本。
FeatureStore還可以節(jié)省時間成本,比如導(dǎo)出訓(xùn)練表、導(dǎo)入數(shù)據(jù)至OnlineStore的操作,原先需要復(fù)雜的操作,當前在FeatureStore中都可以通過一行代碼完成。
推薦服務(wù)引擎對接
FeatureStore EasyRec深度集成,可以方便、高效地進行FG(特征工程)和模型訓(xùn)練,并且能夠直接部署到線上(EasyRec的EAS Processor),可以做到在短時間內(nèi)搭建起一套前沿的推薦系統(tǒng),并取得優(yōu)良的效果。EasyRec能夠提供物品特征表的內(nèi)存Cache,并提供高效的模型打分。
EasyRec Processor中集成的FeatureStore Cpp SDK對于大規(guī)模場景有專門的優(yōu)化,使用FeatureStore后:
內(nèi)存占用:EasyRec Processor內(nèi)置的FeatureStore Cpp SDK針對特征存儲進行了優(yōu)化,相比原生內(nèi)存緩存,能有效節(jié)省50%的內(nèi)存。尤其在處理大量特征時,節(jié)省效果更為顯著,有助于降低資源消耗。
拉取特征時間:離線特征視圖可將特征快速緩存至內(nèi)存cache,相比在線數(shù)據(jù)源,速度快超過5倍,可以在增加速度的同時減少對在線數(shù)據(jù)源的壓力。并且由于離線數(shù)據(jù)源的高穩(wěn)定性,實際測試可以同時擴容至數(shù)百個EAS實例,并且每個實例都可以在幾分鐘內(nèi)加載完所有特征。因此擴容時不會給在線存儲帶來很大壓力。
模型打分耗時:模型評分實時從優(yōu)化的緩存中提取特征,借助FeatureStore Cpp SDK的專項優(yōu)化,在使用FeatureStore的情況下,tp100性能顯著提升,打分穩(wěn)定性增強,超時情況減少。
管理離線和在線特征數(shù)據(jù)
離線特征包括用戶和物品的屬性特征、統(tǒng)計特征;實時特征包括新用戶或新物品上線,通過Flink直接寫入到類似Hologres的在線存儲中,也包括按照時間窗統(tǒng)計的特征(如1小時的點擊、轉(zhuǎn)發(fā)、購買數(shù)量、轉(zhuǎn)化率等)。其中線上存儲包括Hologres、GraphCompute、TableStore等。
共享新舊特征
當算法或BI研發(fā)出一組新的用戶特征/物品特征的時候,可以設(shè)計新的ModelFeature關(guān)聯(lián)訓(xùn)練集需要的新舊特征,通過FeatureStore SDK導(dǎo)出樣本供離線訓(xùn)練,也可以通過FeatureStore SDK發(fā)布到線上存儲供線上服務(wù)使用。當多個模型引用同一個特征視圖的時候,線上存儲始終只有一份。管理特征對于算法工程價特征非常友好,在增加特征迭代優(yōu)化模型的時候非常有用。
管理實時統(tǒng)計特征和用戶序列特征
一般模型特征的復(fù)雜度、實時性都是逐步增加的,因此管理Flink實時計算得到的實時統(tǒng)計特征和用戶行為序列特征非常必要。FeatureStore定義了離線用戶序列特征,例如用戶點擊過的物品ID序列。只有物品ID序列也是不夠的,在模型中常使用到物品的屬性特征(SideInfo),而SideInfo在線上通過網(wǎng)絡(luò)傳輸數(shù)據(jù)量較大,而在EasyRec中通過FeatureStore SDK緩存物品特征,節(jié)約了推理響應(yīng)時間、提高了推理性能。
提供多語言SDK
FeatureStore提供了GO/Java/Python SDK,可以幫助用戶在PAI-REC和EasyRecProcessor聯(lián)合解決方案中使用FeatureStore的功能;通過Java SDK幫助用戶在自己的服務(wù)端(搜索、推薦、風控等引擎)中調(diào)用EasyRecProcessor或者其他模型打分的引擎;支持用戶通過Python SDK訪問在線存儲中的數(shù)據(jù)去完成數(shù)據(jù)分析、建模等工作。
自動化特征工程
FeatureStore計劃提供自動化的特征工程功能,通過機器學(xué)習(xí)技術(shù),自動挖掘新特征,減少研發(fā)團隊的手動特征工程工作量。
特征監(jiān)控
FeatureStore計劃提供特征的監(jiān)控和報警功能,及時發(fā)現(xiàn)和解決特征的異常和問題,減少團隊的故障排查和修復(fù)時間。
功能原理
阿里云FeatureStore為您提供數(shù)據(jù)源能力,可分別對接離線存儲和在線存儲產(chǎn)品,便于統(tǒng)一讀寫并管理離線、在線特征數(shù)據(jù)。
您可以將離線特征表、在線特征表注冊至FeatureStore的特征視圖中,通過特征視圖來匯總、映射離線、在線特征數(shù)據(jù)。
您可以將Label表存儲在離線存儲MaxCompute中,通過離線數(shù)據(jù)源注冊至FeatureStore中,通過注冊后的FeatureStore Label表映射實際Label表數(shù)據(jù)。
阿里云FeatureStore為您提供特征項目和特征實體功能,通過特征實體的Join Id來關(guān)聯(lián)各個項目中的特征視圖,將一個特征實體的所有特征進行關(guān)聯(lián),最終結(jié)合Label表產(chǎn)出模型特征表Train Set表,并將Train Set表存在離線存儲MaxCompute中。
地域限制
FeatureStore支持的地域包括:華北2(北京)、華東2(上海)、華東1(杭州)、華南1(深圳)、中國(香港)。
操作流程
創(chuàng)建數(shù)據(jù)源。
數(shù)據(jù)源包含離線數(shù)據(jù)源與在線數(shù)據(jù)源,操作詳情請參見配置數(shù)據(jù)源。
創(chuàng)建項目,并配置特征實體、特征視圖、Label表等,產(chǎn)出模型特征train set表(訓(xùn)練數(shù)據(jù)集)。操作詳情請參見配置FeatureStore項目。
查看任務(wù)詳情。
您可以在任務(wù)中心中查看各任務(wù)的狀態(tài)與任務(wù)詳情,操作詳情請參見任務(wù)中心。
將數(shù)據(jù)同步到線上存儲,具體操作請參見DSW Gallery案例。
需要在Java/Go在線引擎中讀取和使用FeatureStore在線數(shù)據(jù),請搜索釘釘群34415007523,咨詢技術(shù)人員。
聯(lián)系我們
如果您在使用FeatureStore時遇到問題,可以搜索釘釘群號:34415007523,進入答疑群聯(lián)系群技術(shù)人員進行咨詢。