配置 FeatureStore 項(xiàng)目
FeatureStore項(xiàng)目對(duì)應(yīng)一個(gè)離線數(shù)據(jù)源和在線數(shù)據(jù)源,各個(gè)項(xiàng)目中彼此獨(dú)立,而項(xiàng)目?jī)?nèi)可共享所有的離線、在線特征表。本文為您介紹如何配置特性平臺(tái)項(xiàng)目。
前提條件
已創(chuàng)建離線和在線數(shù)據(jù)源,操作詳情請(qǐng)參見配置數(shù)據(jù)源。
已將Label表存儲(chǔ)于離線數(shù)據(jù)源中。
Label表是模型訓(xùn)練時(shí)Label所在的表,帶有模型訓(xùn)練目標(biāo)和特征實(shí)體的JoinId。在推薦場(chǎng)景中一般是由行為表通過(guò)group by user_id/item_id/request_id等操作得到。
以下為創(chuàng)建一個(gè)示例Label表的建表語(yǔ)句,您可以參考以下建表命令對(duì)應(yīng)的表結(jié)構(gòu)了解Label表的常見字段。
CREATE TABLE IF NOT EXISTS rec_sln_demo_fs_rec_sln_demo_sorting_label_table_v3 ( request_id string ,user_id string ,page string ,net_type string ,day_h bigint COMMENT '行為發(fā)生在當(dāng)天的第幾小時(shí)' ,week_day bigint COMMENT '行為發(fā)生在當(dāng)前周的第幾天' ,day_min string ,event_unix_time bigint ,item_id string ,playtime double ,is_click BIGINT ,ln_playtime DOUBLE ,is_praise BIGINT ) PARTITIONED BY ( ds string ) LIFECYCLE 90 ;
新建項(xiàng)目
進(jìn)入特征平臺(tái)頁(yè)面。
登錄PAI控制臺(tái),在左側(cè)導(dǎo)航欄單擊 。
在右側(cè)頁(yè)面中選擇工作空間后單擊進(jìn)入FeatureStore。
單擊新建項(xiàng)目,在彈出的頁(yè)面中配置項(xiàng)目參數(shù)。
其中關(guān)鍵參數(shù)如下。
參數(shù)
說(shuō)明
離線數(shù)據(jù)源
選擇已創(chuàng)建的離線數(shù)據(jù)源。
在線數(shù)據(jù)源
選擇已創(chuàng)建的在線數(shù)據(jù)源。
離線數(shù)據(jù)表生命周期
通過(guò)FeatureStore自動(dòng)創(chuàng)建、存儲(chǔ)于離線數(shù)據(jù)源MaxCompute中的表的生命周期。
單擊提交,完成項(xiàng)目創(chuàng)建。
新建特征實(shí)體
特征實(shí)體(FeatureEntity)代表了一組特征表的集合,以推薦系統(tǒng)場(chǎng)景為例,可以設(shè)置兩個(gè)特征實(shí)體user和item。
在特征項(xiàng)目列表中,單擊特征項(xiàng)目名稱,進(jìn)入項(xiàng)目詳情頁(yè)面。
在特征實(shí)體頁(yè)簽中單擊新建實(shí)體,在彈出的頁(yè)面中配置特征實(shí)體參數(shù)。
其中關(guān)鍵參數(shù)配置指導(dǎo)如下。
參數(shù)
說(shuō)明
特征實(shí)體名稱
自定義。以推薦場(chǎng)景為例,可配置兩個(gè)特征實(shí)體,名稱分別為user、item。
Join Id
Join Id是關(guān)聯(lián)特征視圖到特征實(shí)體的特征表字段,每個(gè)特征實(shí)體都會(huì)有一個(gè)Join Id , 通過(guò)Join Id可以關(guān)聯(lián)多個(gè)特征視圖的特征。
說(shuō)明每一個(gè)特征視圖都有一個(gè)主鍵(索引鍵)來(lái)獲取其下面的特征數(shù)據(jù),但是特征視圖的索引鍵可以和JoinId的名稱不一致。
以推薦場(chǎng)景為例,Join Id可以配置為user表和item表的主鍵user_id、item_id。
單擊提交,完成創(chuàng)建。
新建特征視圖
特征視圖(FeatureView)是一組特征,包含一組特征以及這些特征的衍生特征的信息。一個(gè)特征視圖是特征實(shí)體的全量特征集合的一個(gè)子集,離線特征表和在線特征表的映射。
在特征項(xiàng)目詳情頁(yè)面的特性視圖頁(yè)簽,單擊新建特征視圖。
在彈出的頁(yè)面中配置視圖參數(shù),完成后單擊提交,完成視圖創(chuàng)建。
創(chuàng)建離線特征視圖:將離線特征數(shù)據(jù)注冊(cè)FeatureStore中。
創(chuàng)建在線特征視圖:將實(shí)時(shí)特征數(shù)據(jù)注冊(cè)FeatureStore中。關(guān)于實(shí)時(shí)特征更詳細(xì)的內(nèi)容介紹,請(qǐng)參見實(shí)時(shí)特征內(nèi)容介紹。
離線視圖與在線視圖的核心配置參數(shù)請(qǐng)參見下文。
新建離線特征視圖
核心配置參數(shù)如下。
參數(shù) | 說(shuō)明 |
類型 | 選擇離線時(shí),表明此特征視圖是將離線特征數(shù)據(jù)注冊(cè)FeatureStore中的視圖表。 |
寫入方式 |
待配置的字段屬性包括:
|
同步在線特征表 | 選擇是否需要將此視圖中的特征數(shù)據(jù)自動(dòng)同步到同特征項(xiàng)目的在線數(shù)據(jù)源中。 |
特征實(shí)體 | 選擇特征視圖關(guān)聯(lián)的特征實(shí)體。 說(shuō)明 多個(gè)特征視圖可以關(guān)聯(lián)一個(gè)特征實(shí)體。 |
特征生命周期 | 設(shè)置特征視圖的生命周期。設(shè)置完成后,后續(xù)同步寫入實(shí)時(shí)數(shù)據(jù)源中的特征生命周期即為此處配置的生命周期。 |
新建實(shí)時(shí)特征視圖
核心配置參數(shù)如下。
參數(shù) | 說(shuō)明 |
視圖名稱 | 參照控制臺(tái)界面提示,進(jìn)行自定義配置。 |
類型 | 選擇實(shí)時(shí)時(shí),表明此特征視圖是將在線特征數(shù)據(jù)注冊(cè)FeatureStore中的視圖表。 |
特征實(shí)體 | 選擇特征視圖關(guān)聯(lián)的特征實(shí)體。 說(shuō)明 多個(gè)特征視圖可以關(guān)聯(lián)一個(gè)特征實(shí)體。 |
寫入方式 | 在線特征視圖僅支持自定義表結(jié)構(gòu)的寫入方式,即自定義本次新建離線視圖的表結(jié)構(gòu)。 選擇此種方式后,您需要根據(jù)界面提示手動(dòng)添加視圖字段并配置字段屬性。 待配置的字段屬性包括:
|
特征字段 | 您可以根據(jù)實(shí)際需要的字段數(shù)來(lái)填寫。
|
特征生命周期 | 一般需要大于1,默認(rèn)為30,單位為天。 |
高級(jí)配置 | 使用JSON方式進(jìn)行高級(jí)選項(xiàng)的配置。當(dāng)前支持配置save_original_field字段。
說(shuō)明 由于GraphCompute中各個(gè)字段名稱長(zhǎng)度不能超過(guò)30個(gè)字符,當(dāng)MaxCompute字段名稱較長(zhǎng)時(shí),需要配置 |
新建Label表
Label表是模型訓(xùn)練時(shí)Label所在的表,帶有模型訓(xùn)練目標(biāo)和特征實(shí)體的JoinId。在推薦場(chǎng)景中一般是由行為表通過(guò)group by user_id/item_id/request_id
等操作得到。
在特征項(xiàng)目詳情頁(yè)面的Label表頁(yè)簽,單擊新建Label表。
在彈出的頁(yè)面中,選擇Label表所在的數(shù)據(jù)源及Label表名。
配置Label表字段,完成后單擊提交。
字段配置
說(shuō)明
特征字段
Label表中如果存在某些特征的話,可勾選對(duì)應(yīng)字段為特征字段。
FG保留字段
當(dāng)前階段可不做配置。
事件時(shí)間
勾選Label表中記錄行為產(chǎn)生的時(shí)間戳字段。
Label字段
勾選Label表中的Label字段。
分區(qū)字段
勾選Label表中的分區(qū)字段。
新建模型特征
模型特征是指定訓(xùn)練上線過(guò)程中所使用的特征的集合,選擇好特征創(chuàng)建模型后,會(huì)在MaxCompute中創(chuàng)建一張train set表,用于離線訓(xùn)練。后續(xù)您也可以在EAS、PAI-rec中指定FeatureStore的模型特征,即可自動(dòng)拉取用于推理的特征數(shù)據(jù)。
在特征項(xiàng)目詳情頁(yè)面的模型特征頁(yè)簽,單擊新建模型特征。
在彈出的頁(yè)面中配置模型特征參數(shù),完成后單擊提交。
核心參數(shù)如下。
參數(shù)
說(shuō)明
選擇特征
選擇當(dāng)前離線視圖中的特征,并配置特征別名。
Label表名稱
選擇已創(chuàng)建的Label表名稱。
導(dǎo)出表名
提交后,后續(xù)會(huì)在MaxCompute中自動(dòng)創(chuàng)建一張train set表,用于離線訓(xùn)練。
實(shí)時(shí)特征內(nèi)容介紹
基本概念
實(shí)時(shí)特征一般是指會(huì)實(shí)時(shí)變化的特征,可能會(huì)在毫秒級(jí)時(shí)間內(nèi)發(fā)生改變,通常在服務(wù)端等系統(tǒng)中迅速生成或更新,并立即用于處理和決策的特征。實(shí)時(shí)特征的生成和使用通常發(fā)生在實(shí)時(shí)數(shù)據(jù)流分析或系統(tǒng)中,具有高時(shí)效性和快速響應(yīng)的特點(diǎn)。
實(shí)時(shí)特征通常是從數(shù)據(jù)流中提取的,使用數(shù)據(jù)流系統(tǒng)(例如Flink)可以計(jì)算并生成實(shí)時(shí)特征,以確保特征盡可能反映當(dāng)前的狀態(tài)。實(shí)時(shí)特征要求整個(gè)鏈路具有高性能和低延遲的特點(diǎn),并且實(shí)時(shí)特征會(huì)動(dòng)態(tài)更新,系統(tǒng)會(huì)不斷重新計(jì)算這些特征。
應(yīng)用場(chǎng)景
實(shí)時(shí)特征一般具有以下應(yīng)用場(chǎng)景:
在線廣告:根據(jù)用戶當(dāng)前的瀏覽行為實(shí)時(shí)調(diào)整廣告內(nèi)容。
欺詐檢測(cè):在金融交易中實(shí)時(shí)檢測(cè)可疑行為,并觸發(fā)警報(bào)或阻止交易。
個(gè)性化推薦:根據(jù)用戶當(dāng)前的活動(dòng)和歷史數(shù)據(jù)實(shí)時(shí)更新推薦列表。
IoT系統(tǒng):在物聯(lián)網(wǎng)系統(tǒng)中實(shí)時(shí)監(jiān)測(cè)和控制設(shè)備,生成和使用實(shí)時(shí)特征以響應(yīng)環(huán)境變化。
實(shí)時(shí)特征在推薦廣告等機(jī)器學(xué)習(xí)系統(tǒng)中應(yīng)用
實(shí)時(shí)特征寫入過(guò)程
在特征平臺(tái)(FeatureStore)中新建實(shí)時(shí)特征視圖后,會(huì)自動(dòng)在在線數(shù)據(jù)引擎中新建一張同樣Schema的表,用于實(shí)時(shí)特征數(shù)據(jù)的寫入和讀取。當(dāng)使用FeatureDB、TableStore、Hologres或GraphCompute等數(shù)據(jù)源時(shí),客戶后端可以接入阿里云DataHub消息隊(duì)列,通過(guò)DataHub將數(shù)據(jù)傳輸?shù)?span id="z68uejxpaoma" class="help-letter-space">Flink,在Flink進(jìn)行實(shí)時(shí)特征的處理和計(jì)算后,可以將實(shí)時(shí)特征的結(jié)果寫入到對(duì)應(yīng)的在線數(shù)據(jù)源的表中(您可以在實(shí)時(shí)特征視圖詳情頁(yè)中查看具體表名)。
線上特征的讀取
當(dāng)使用EasyRec Processor時(shí),其內(nèi)置FeatureStore Cpp SDK,只需要指定模型特征名(fs_model),即可自動(dòng)分析出哪些特征是實(shí)時(shí)特征,從而自動(dòng)讀取實(shí)時(shí)特征。當(dāng)使用FeatureStore Go SDK或者FeatureStore Java SDK時(shí),可以根據(jù)SDK的設(shè)置進(jìn)行對(duì)應(yīng)的特征讀取。
離線樣本的導(dǎo)出
特征平臺(tái)會(huì)自動(dòng)將特征視圖對(duì)應(yīng)的離線數(shù)據(jù)引擎中的表聯(lián)接后導(dǎo)出。對(duì)于實(shí)時(shí)特征視圖,當(dāng)使用FeatureDB時(shí),F(xiàn)eatureDB會(huì)自動(dòng)把在線寫入的數(shù)據(jù)寫入到離線數(shù)據(jù)引擎對(duì)應(yīng)的離線表中。當(dāng)不使用FeatureDB時(shí),需要您自己建任務(wù)將數(shù)據(jù)寫入到離線數(shù)據(jù)引擎對(duì)應(yīng)的離線表中。或者使用PAI-Rec中的推薦算法定制,可以離線生產(chǎn)出模擬實(shí)時(shí)數(shù)據(jù),作為對(duì)應(yīng)的實(shí)時(shí)特征視圖離線表數(shù)據(jù)。
特征平臺(tái)實(shí)時(shí)特征視圖
實(shí)時(shí)特征視圖應(yīng)用流程
特征平臺(tái)中的實(shí)時(shí)特征視圖專門用來(lái)處理實(shí)時(shí)變化的特征,它通過(guò)DataHub消息隊(duì)列和Flink實(shí)時(shí)寫入在線特征,然后使用EasyRec Processor實(shí)時(shí)輪詢讀取特征或者通過(guò)FeatureStore SDK實(shí)時(shí)讀取特征,從而能夠在下游實(shí)時(shí)感知到特征的毫秒級(jí)變化。
導(dǎo)出操作
您可以選擇多個(gè)實(shí)時(shí)特征視圖、離線特征視圖來(lái)創(chuàng)建模型特征,創(chuàng)建好模型特征后可以進(jìn)行導(dǎo)出。特征平臺(tái)支持自動(dòng)導(dǎo)出,實(shí)時(shí)特征視圖中對(duì)應(yīng)離線數(shù)據(jù)表的來(lái)源根據(jù)使用的場(chǎng)景有不同的差異,具體如下:
在線數(shù)據(jù)源 | FeatureDB | Hologres/TableStore/GraphCompute | |
推薦引擎 | 都可以 | PAI-REC (使用推薦算法定制) | 其它 |
導(dǎo)出方案 | 直接使用特征平臺(tái)導(dǎo)出。 | 將推薦算法定制的模擬數(shù)據(jù)導(dǎo)入對(duì)應(yīng)的實(shí)時(shí)特征視圖的離線表后,使用特征平臺(tái)導(dǎo)出。 | 需手動(dòng)導(dǎo)出實(shí)時(shí)特征視圖對(duì)應(yīng)的離線表數(shù)據(jù),使用特征平臺(tái)導(dǎo)出。 |
同步操作
同步操作可以分為以下兩種:
通過(guò)Flink Connect寫入,詳情請(qǐng)參見設(shè)置Flink Connector。
通過(guò)SDK寫入,詳情請(qǐng)參見FeatureStore SDK參考。
相關(guān)文檔
配置好FeatureStore項(xiàng)目后,如何應(yīng)用FeatureSotre,詳情請(qǐng)參見在推薦系統(tǒng)中應(yīng)用FeatureStore管理特征。