全部產品
Search
文件中心

Platform For AI:配置 FeatureStore 專案

更新時間:Oct 16, 2024

FeatureStore專案對應一個離線資料來源和線上資料來源,各個專案中彼此獨立,而專案內可共用所有的離線、線上特徵表。本文為您介紹如何配置特性平台專案。

前提條件

  • 已建立離線和線上資料來源,操作詳情請參見配置資料來源

  • 已將Label表格儲存體於離線資料來源中。

    Label表是模型訓練時Label所在的表,帶有模型訓練目標和特徵實體的JoinId。在推薦情境中一般是由行為表通過group by user_id/item_id/request_id等操作得到。

    Label表示例(點擊查看詳情)

    以下為建立一個樣本Label表的建表語句,您可以參考以下建表命令對應的表結構瞭解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 '行為發生在當天的第幾小時'
        ,week_day bigint COMMENT '行為發生在當前周的第幾天'
        ,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
    ;

建立專案

  1. 進入特徵平台頁面。

    1. 登入PAI控制台,在左側導覽列單擊資料準備 > 特徵平台(FeatureStore)

    2. 在右側頁面中選擇工作空間後單擊進入FeatureStore

  2. 單擊建立專案,在彈出的頁面中設定項目參數。

    其中關鍵參數如下。

    參數

    說明

    離線資料來源

    選擇已建立的離線資料來源。

    線上資料來源

    選擇已建立的線上資料來源。

    離線資料表生命週期

    通過FeatureStore自動建立、儲存於離線資料來源MaxCompute中的表的生命週期。

  3. 單擊提交,完成專案建立。

建立特徵實體

特徵實體(FeatureEntity)代表了一組特徵表的集合,以推薦系統情境為例,可以設定兩個特徵實體user和item。

  1. 在特徵專案列表中,單擊特徵專案名稱,進入專案詳情頁面。

  2. 特徵實體頁簽中單擊建立實體,在彈出的頁面中配置特徵實體參數。

    其中關鍵參數配置指導如下。

    參數

    說明

    特徵實體名稱

    自訂。以推薦情境為例,可配置兩個特徵實體,名稱分別為user、item。

    Join Id

    Join Id是關聯特徵視圖到特徵實體的特徵表欄位,每個特徵實體都會有一個Join Id , 通過Join Id可以關聯多個特徵視圖的特徵。

    說明

    每一個特徵視圖都有一個主鍵(索引鍵)來擷取其下面的特徵資料,但是特徵視圖的索引鍵可以和JoinId的名稱不一致。

    以推薦情境為例,Join Id可以配置為user表和item表的主鍵user_id、item_id。

  3. 單擊提交,完成建立。

建立特徵視圖

特徵視圖(FeatureView)是一組特徵,包含一組特徵以及這些特徵的衍生特徵的資訊。一個特徵視圖是特徵實體的全量特徵集合的一個子集,離線特徵表和線上特徵表的映射。

  1. 在特徵專案詳情頁面的特性視圖頁簽,單擊建立特徵視圖

  2. 在彈出的頁面中配置視圖參數,完成後單擊提交,完成視圖建立。

    • 建立離線特徵視圖:將離線特徵資料註冊FeatureStore中。

    • 建立線上特徵視圖:將即時特徵資料註冊FeatureStore中。關於即時特徵更詳細的內容介紹,請參見即時特徵內容介紹

    離線視圖與線上視圖的核心配置參數請參見下文。

建立離線特徵視圖

核心配置參數如下。

參數

說明

類型

選擇離線時,表明此特徵視圖是將離線特徵資料註冊FeatureStore中的視圖表。

寫入方式

  • 使用離線表:使用一個已經儲存在離線資料來源中的特徵表的表結構,作為離線特徵視圖的表結構

    選擇此種方式後,您還需根據介面選擇參考使用的離線表所在的資料來源及表名稱,並配置視圖欄位屬性。

  • 自訂表格結構:自訂本次建立離線視圖的表結構。

    選擇此種方式後,您需要根據介面提示手動添加視圖欄位並配置欄位屬性。

待配置的欄位屬性包括:

  • 主鍵:設定視圖的主鍵欄位。

  • 事件時間&分區欄位:用於標註特徵的時間周期範圍,需要至少設定一個事件時間或分區欄位。

同步線上特徵表

選擇是否需要將此視圖中的特徵資料自動同步到同特徵專案的線上資料來源中。

特徵實體

選擇特徵視圖關聯的特徵實體。

說明

多個特徵視圖可以關聯一個特徵實體。

特徵生命週期

設定特徵視圖的生命週期。設定完成後,後續同步寫入即時資料源中的特徵生命週期即為此處配置的生命週期。

建立即時特徵視圖

核心配置參數如下。

參數

說明

視圖名稱

參照控制台介面提示,進行自訂配置。

類型

選擇即時時,表明此特徵視圖是將線上特徵資料註冊FeatureStore中的視圖表。

特徵實體

選擇特徵視圖關聯的特徵實體。

說明

多個特徵視圖可以關聯一個特徵實體。

寫入方式

線上特徵視圖僅支援自訂表格結構的寫入方式,即自訂本次建立離線視圖的表結構。

選擇此種方式後,您需要根據介面提示手動添加視圖欄位並配置欄位屬性。

待配置的欄位屬性包括:

  • 主鍵:設定視圖的主鍵欄位。

  • 事件時間&分區欄位:用於標註特徵的時間周期範圍,需要至少設定一個事件時間或分區欄位。

特徵欄位

您可以根據實際需要的欄位數來填寫。

  • 當使用FeatureDB時,您可以不填寫事件時間欄位,FeatureDB會預設建立事件時間欄位,並取值為實際特徵寫入時間。您也可以設定 event_time 事件時間欄位,寫入特徵時設定該事件時間。

  • 當不使用FeatureDB時,需要填寫事件時間欄位,並通過後續寫入其事件時間對應的值,用於在離線匯出樣本時使用。

特徵生命週期

一般需要大於1,預設為30,單位為天。

進階配置

使用JSON方式進行進階選項的配置。當前支援配置save_original_field欄位。

  • {"save_original_field":"true"} 時,表示MaxCompute的schema與 GraphCompute節點的schema保持一致。

  • {"save_original_field":"false"} 時,表示需要通過FeatureStore進行schema映射。

說明

由於GraphCompute中各個欄位名稱長度不能超過30個字元,當MaxCompute欄位名稱較長時,需要配置{"save_original_field":"false"}

建立Label表

Label表是模型訓練時Label所在的表,帶有模型訓練目標和特徵實體的JoinId。在推薦情境中一般是由行為表通過group by user_id/item_id/request_id等操作得到。

  1. 在特徵專案詳情頁面的Label表頁簽,單擊建立Label表

  2. 在彈出的頁面中,選擇Label表所在的資料來源及Label表名。

  3. 配置Label表欄位,完成後單擊提交

    欄位配置

    說明

    特徵欄位

    Label表中如果存在某些特徵的話,可勾選對應欄位為特徵欄位。

    FG保留欄位

    當前階段可不做配置。

    事件時間

    勾選Label表中記錄行為產生的時間戳記欄位。

    Label欄位

    勾選Label表中的Label欄位。

    分區欄位

    勾選Label表中的分區欄位。

建立模型特徵

模型特徵是指定訓練上線過程中所使用的特徵的集合,選擇好特徵建立模型後,會在MaxCompute中建立一張train set表,用於離線訓練。後續您也可以在EAS、PAI-rec中指定FeatureStore的模型特徵,即可自動拉取用於推理的特徵資料。

  1. 在特徵專案詳情頁面的模型特徵頁簽,單擊建立模型特徵

  2. 在彈出的頁面中配置模型特徵參數,完成後單擊提交

    核心參數如下。

    參數

    說明

    選擇特徵

    選擇當前離線視圖中的特徵,並配置特徵別名。

    Label表名稱

    選擇已建立的Label表名稱。

    匯出表名

    提交後,後續會在MaxCompute中自動建立一張train set表,用於離線訓練。

即時特徵內容介紹

基本概念

即時特徵一般是指會即時變化的特徵,可能會在毫秒級時間內發生改變,通常在服務端等系統中迅速產生或更新,並立即用於處理和決策的特徵。即時特徵的產生和使用通常發生在即時資料串流分析或系統中,具有高時效性和快速響應的特點。

即時特徵通常是從資料流中提取的,使用資料流系統(例如Flink)可以計算並產生即時特徵,以確保特徵儘可能反映當前的狀態。即時特徵要求整個鏈路具有高效能和低延遲的特點,並且即時特徵會動態更新,系統會不斷重新計算這些特徵。

應用情境

即時特徵一般具有以下應用情境:

  • 線上廣告:根據使用者當前的瀏覽行為即時調整廣告內容。

  • 欺詐檢測:在金融交易中即時檢測可疑行為,並觸發警報或阻止交易。

  • 個人化推薦:根據使用者當前的活動和歷史資料即時更新推薦列表。

  • IoT系統:在物聯網系統中即時監測和控制裝置,產生和使用即時特徵以響應環境變化。

即時特徵在推薦廣告等機器學習系統中應用

即時特徵寫入過程

在特徵平台(FeatureStore)中建立即時特徵視圖後,會自動在線上資料引擎中建立一張同樣Schema的表,用於即時特徵資料的寫入和讀取。當使用FeatureDB、TableStore、Hologres或GraphCompute等資料來源時,客戶後端可以接入阿里雲DataHub訊息佇列,通過DataHub將資料轉送到Flink,在Flink進行即時特徵的處理和計算後,可以將即時特徵的結果寫入到對應的線上資料來源的表中(您可以在即時特徵視圖詳情頁中查看具體表名)。

線上特徵的讀取

當使用EasyRec Processor時,其內建FeatureStore Cpp SDK,只需要指定模型特徵名(fs_model),即可自動分析出哪些特徵是即時特徵,從而自動讀取即時特徵。當使用FeatureStore Go SDK或者FeatureStore Java SDK時,可以根據SDK的設定進行對應的特徵讀取。

離線樣本的匯出

特徵平台會自動將特徵視圖對應的離線資料引擎中的表聯結後匯出。對於即時特徵視圖,當使用FeatureDB時,FeatureDB會自動把線上寫入的資料寫入到離線資料引擎對應的離線表中。當不使用FeatureDB時,需要您自己建任務將資料寫入到離線資料引擎對應的離線表中。或者使用PAI-Rec中的推薦演算法定製,可以離線生產出類比即時資料,作為對應的即時特徵視圖離線表資料。

特徵平台即時特徵視圖

即時特徵視圖應用流程

特徵平台中的即時特徵視圖專門用來處理即時變化的特徵,它通過DataHub訊息佇列和Flink即時寫入線上特徵,然後使用EasyRec Processor即時輪詢讀取特徵或者通過FeatureStore SDK即時讀取特徵,從而能夠在下遊即時感知到特徵的毫秒級變化。

匯出操作

您可以選擇多個即時特徵視圖、離線特徵視圖來建立模型特徵,建立好模型特徵後可以進行匯出。特徵平台支援自動匯出,即時特徵視圖中對應離線資料表的來源根據使用的情境有不同的差異,具體如下:

線上資料來源

FeatureDB

Hologres/TableStore/GraphCompute

Recommendation Engine

都可以

PAI-REC (使用推薦演算法定製)

其它

匯出方案

直接使用特徵平台匯出。

將推薦演算法定製的類比資料匯入對應的即時特徵視圖的離線表後,使用特徵平台匯出。

需手動匯出即時特徵視圖對應的離線表資料,使用特徵平台匯出。

同步操作

同步操作可以分為以下兩種:

相關文檔

配置好FeatureStore專案後,如何應用FeatureSotre,詳情請參見在推薦系統中應用FeatureStore管理特徵