日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用EasyRec構(gòu)建推薦模型

更新時(shí)間:

EasyRec可以幫助您快速構(gòu)建推薦模型。本文以讀取MaxCompute表數(shù)據(jù)為例,介紹如何使用EasyRec進(jìn)行模型訓(xùn)練、配置任務(wù)例行化及部署模型。

前提條件

背景信息

EasyRec算法庫是阿里云PAI的推薦算法工具,包含DeepFM、DIN、MultiTowerDSSM等經(jīng)典推薦排序和召回算法,可以幫助您在PAI平臺(tái)上快速訓(xùn)練推薦算法模型、驗(yàn)證模型效果及部署。EasyRec算法庫已經(jīng)在信息推送、游戲、直播及競(jìng)價(jià)廣告商等客戶的生產(chǎn)環(huán)境中部署,能夠大幅提升模型訓(xùn)練效率。EasyRec算法庫的DataConfig配置和FeatureConfig配置要求如下:

  • DataConfig配置

    • input_fields

      EasyRec支持讀取MaxCompute數(shù)據(jù)或HDFS數(shù)據(jù),MaxCompute表中的每一列或CSV文件中的某一列,都需要與data_config中的一個(gè)input_fields對(duì)應(yīng),且字段順序一致。input_fields的字段詳情如下表所示。

      字段

      描述

      示例

      input_name

      便于在feature_configsdata_config.label_fields中引用。

      input_fields: {
          input_name: "label"
          input_type: FLOAT
          default_val:""
        }

      input_type

      輸入類型,默認(rèn)值為STRING。

      default_val

      數(shù)據(jù)為空時(shí)的默認(rèn)填充值,通常設(shè)置為空字符串。根據(jù)input_type不同取值,default_val配置示例如下:

      • input_typeINT類型時(shí),如果使用填充值6,則default_val配置為"6"

      • input_typeFLOAT類型時(shí),如果使用填充值0.5,則default_val配置為"0.5"

      說明
      • input_fields的字段順序必須與MaxCompute表中的字段順序一致。

      • input_fieldsCSV文件中的字段順序必須一致(CSV文件無Header)。

      • input_fields中的input_type字段必須與MaxCompute表或CSV文件對(duì)應(yīng)列的類型一致,或是可以轉(zhuǎn)換的類型。例如:

        • MaxCompute表中STRING類型的“64”,可以轉(zhuǎn)換為INT類型的64

        • MaxCompute表中STRING類型的“abc”,不能轉(zhuǎn)換為INT類型。

    • input_type

      默認(rèn)為CSVInput。如果在MaxCompute上,則使用OdpsInputV2。

    • separator

      使用CSV格式的輸入時(shí),需要指定separator作為列之間的分隔符。默認(rèn)使用半角逗號(hào)(,)分隔。您也可以使用二進(jìn)制分隔符,例如'\001''\002'

    • label_fields

      Label相關(guān)的列名,根據(jù)算法需要可以設(shè)置多個(gè),例如多目標(biāo)算法。該列名必須在data_config中存在。

    • prefetch_size

      Data Prefetch,以Batch為單位,默認(rèn)值為32。設(shè)置prefetch_size可以提高數(shù)據(jù)加載的速度,防止數(shù)據(jù)瓶頸。

    • shuffle

      設(shè)置該參數(shù),可以對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行Shuffle,以獲得更好的訓(xùn)練結(jié)果。

    • shuffle_buffer_size

      Shuffle Queue的大小,表示每次Shuffle的數(shù)據(jù)量。該參數(shù)取值越大,訓(xùn)練效果越好。建議在訓(xùn)練前進(jìn)行一次充分的Shuffle。

  • FeatureConfig配置

    常用特征主要包括:

    • IdFeature(離散值特征/ID類特征)

      例如user_iditem_idcategory_idage星座均屬于IdFeature。

    • RawFeature(連續(xù)值類特征)

      RawFeature類特征可以在Designer中先進(jìn)行離散化(例如等頻、等距或自動(dòng)離散化),變成IdFeature。也可以直接在feature_configs中配置離散化區(qū)間。

    • TagFeature(多值特征/標(biāo)簽類特征)

      TagFeature類特征格式通常為“XX|XX|XX”。例如,文章標(biāo)簽特征為“娛樂|搞笑|熱門”,其中豎杠(“|”)為分隔符。

    • SequenceFeature(行為序列類特征)

      SequenceFeature類特征格式通常為“XX|XX|XX”。例如,用戶行為序列特征為"item_id1|item_id2|item_id3",其中豎杠(“|”)為分隔符。該特征通常在DIN算法或BST算法中使用。

    • ComboFeature(組合特征)

      對(duì)輸入的離散值進(jìn)行組合

    各特征的共用字段及特有字段如下。

    表 1. 各特征的共用字段

    字段

    描述

    input_names

    輸入的字段。根據(jù)實(shí)際需要,可以設(shè)置1個(gè)或多個(gè)字段。

    feature_name

    特征名稱。如果未設(shè)置該字段,則默認(rèn)為input_names[0]

    shared_names

    其它輸入的數(shù)據(jù)列。僅適用于只有一個(gè)input_names的特征,不適用于有多個(gè)input_names的特征(例如ComboFeature)。

    表 2. 各特征的特有字段

    特征

    字段

    描述

    示例

    IdFeature

    embedding_dim

    Embedding Dimension。

    feature_configs {
      input_names: "uid"
      feature_type: IdFeature
      embedding_dim: 64
      hash_bucket_size: 100000
    }
    重要

    不能同時(shí)指定hash_bucket_sizenum_bucketsvocab_listvocab_file,只能指定其中之一。

    hash_bucket_size

    Hash Bucket的大小,取值策略如下:

    • 對(duì)于user_id等規(guī)模比較大的特征,Hash沖突影響比較小,可以將hash_bucket_size設(shè)置為number_user_ids/ratioratio通常為10~100。

    • 對(duì)于星座等規(guī)模比較小的特征,Hash沖突影響比較大,可以將hash_bucket_size設(shè)置為number_xingzuo_ids*ratioratio通常為5~10。

    num_buckets

    Buckets Number。僅當(dāng)輸入為INT類型時(shí),可以使用該參數(shù)。

    vocab_list

    指定詞表,適合取值比較少,可以枚舉的特征。例如星期、月份或星座。

    vocab_file

    使用文件指定詞表,用于指定比較大的詞表。

    RawFeature

    boundaries

    分桶的值,通過一個(gè)數(shù)組進(jìn)行設(shè)置。

    feature_configs {
      input_names: "ctr"
      feature_type: RawFeature
      boundaries: [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
      embedding_dim: 8
    }

    embedding_dim

    如果設(shè)置了分桶,則需要配置Embedding Dimension。

    TagFeature

    separator

    分割符,默認(rèn)為豎杠(“|”)。

    feature_configs {
      input_names: "article_tag"
      feature_type: TagFeature
      embedding_dim: 16
      hash_bucket_size: 1000
    }

    hash_bucket_size

    Hash分桶大小,配置策略與IdFeature類似。

    num_buckets

    輸入為整數(shù)時(shí)(例如6|20|32),可以配置該參數(shù)為其中的最大值。

    embedding_dim

    Embedding Dimension,與IdFeature中的該參數(shù)類似。

    SequenceFeature

    embedding_dim

    Embedding Dimension。

    feature_configs {
       input_names: "play_sequence"
       feature_type: SequenceFeature
       embedding_dim: 64
       hash_bucket_size: 100000
    }

    hash_bucket_size

    配置策略同IdFeature中的該參數(shù)。

    ComboFeature

    input_names

    需要組合的特征名,數(shù)量大于或等于2,來自data_config.input_fields.input_name

    feature_configs {
            input_names: ["age", "sex"]
            feature_type: ComboFeature
            embedding_dim: 16
            hash_bucket_size: 1000
         }

    embedding_dim

    Embedding Dimension,類似IdFeature中的該參數(shù)。

    hash_bucket_size

    Hash Bucket的大小 。

數(shù)據(jù)集

本文使用天池平臺(tái)上的淘寶點(diǎn)擊數(shù)據(jù),詳情請(qǐng)參見數(shù)據(jù)集

步驟一:創(chuàng)建工作流

  1. 進(jìn)入數(shù)據(jù)開發(fā)頁面。

    登錄DataWorks控制臺(tái),切換至目標(biāo)地域后,單擊左側(cè)導(dǎo)航欄的數(shù)據(jù)開發(fā)與治理 > 數(shù)據(jù)開發(fā),在下拉框中選擇對(duì)應(yīng)工作空間后單擊進(jìn)入數(shù)據(jù)開發(fā)

  2. 數(shù)據(jù)開發(fā)頁面,鼠標(biāo)懸停至新建圖標(biāo),單擊新建業(yè)務(wù)流程

  3. 新建業(yè)務(wù)流程對(duì)話框中,輸入業(yè)務(wù)名稱描述

  4. 單擊新建

  5. 在業(yè)務(wù)流程頁面,創(chuàng)建PAI Designer節(jié)點(diǎn)。

    1. 單擊新建節(jié)點(diǎn),拖拽算法 > PAI Designer至右側(cè)畫布。

    2. 新建節(jié)點(diǎn)頁面的名稱文本框中,輸入prepare_train_data,其他參數(shù)使用默認(rèn)值。

    3. 單擊確認(rèn)

  6. 在業(yè)務(wù)流程頁面,創(chuàng)建MaxCompute SQL節(jié)點(diǎn)。

    1. 拖拽MaxCompute > ODPS SQL至右側(cè)畫布。

    2. 新建節(jié)點(diǎn)頁面的名稱文本框,輸入EasyRec_train,其他參數(shù)使用默認(rèn)值。

    3. 單擊確認(rèn)

  7. 在業(yè)務(wù)流程頁面,創(chuàng)建Shell節(jié)點(diǎn)。

    1. 拖拽通用 > Shell至右側(cè)畫布。

    2. 新建節(jié)點(diǎn)頁面的名稱文本框,輸入deploy,其他參數(shù)使用默認(rèn)值。

    3. 單擊確認(rèn)

步驟二:訓(xùn)練并部署模型

  1. 準(zhǔn)備數(shù)據(jù)。

    您可以直接使用處理后的樣本表:訓(xùn)練表為pai_online_project.easyrec_demo_taobao_train_data,評(píng)估表為pai_online_project.easyrec_demo_taobao_test_data,即省略PAI Designer節(jié)點(diǎn),直接從MaxCompute SQL節(jié)點(diǎn)開始。

    您也可以按照以下流程準(zhǔn)備數(shù)據(jù)。將天池平臺(tái)上淘寶點(diǎn)擊數(shù)據(jù)整合后的表為pai_online_project.easyrec_demo_taobao_ori_data,該數(shù)據(jù)集除大部分STRING類型的IdFeature類特征外,還有一列DOUBLE類型的Price特征(RawFeature類特征),需要使用Designer分箱組件進(jìn)行特征工程,您可以為已創(chuàng)建的機(jī)器學(xué)習(xí)節(jié)點(diǎn)關(guān)聯(lián)如下Designer工作流(只能關(guān)聯(lián)與DataWorks在同一地域的Designer工作流),詳情請(qǐng)參見創(chuàng)建機(jī)器學(xué)習(xí)(PAI)節(jié)點(diǎn)image具體的實(shí)驗(yàn)流程如下。

    序號(hào)

    描述

    讀入數(shù)據(jù)。

    分割出訓(xùn)練數(shù)據(jù)。

    分割出評(píng)估數(shù)據(jù)。

    Shuffle過程。

    使用分箱組件,進(jìn)行等頻離散。

    根據(jù)等頻離散的結(jié)果,對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換。

    將訓(xùn)練數(shù)據(jù)寫入表。

    將評(píng)估數(shù)據(jù)寫入表。

  2. 訓(xùn)練并導(dǎo)出模型。

    在已創(chuàng)建的DataWorksMaxCompute SQL節(jié)點(diǎn)中,執(zhí)行如下命令,進(jìn)行模型訓(xùn)練。

    PAI -project algo_public -name easy_rec_ext 
        -Darn="acs:ram::XXXXX:role/AliyunODPSPAIDefaultRole" 
        -Dbuckets="oss://examplebucket/xxx/" 
        -Dcluster="{\"ps\":{\"count\":2,\"cpu\":1000,\"memory\":40000},\"worker\":{\"count\":8,\"cpu\":1000,\"memory\":40000}}" 
        -Dcmd="train" 
        -Dconfig="oss://examplebucket/xxx/multitower.config" 
        -DossHost="oss-cn-region_name-internal.aliyuncs.com" 
        -Dtrain_tables="odps://pai_online_project/tables/easyrec_demo_taobao_train_data" 
        -Deval_tables="odps://pai_online_project/tables/easyrec_demo_taobao_test_data"
        -Dmodel_dir="oss://examplebucket/xxx/"
        -Dwith_evaluator=1;

    命令中的參數(shù)如下所示,需要根據(jù)實(shí)際情況替換參數(shù)值。

    參數(shù)

    描述

    示例

    project

    工程名。EasyRec算法所在的project,默認(rèn)為algo_public,通常不需要修改。僅特殊情況(EasyRec官方另行通知時(shí))才需要修改。

    algo_public

    arn

    ARN的角色名稱。您可以登錄PAI控制臺(tái),在開通和授權(quán) > 全部云產(chǎn)品依賴頁面的Designer區(qū)域,單擊操作列下的查看授權(quán)信息,獲取arn。

    "acs:ram::XXXXX:role/AliyunODPSPAIDefaultRole"

    buckets

    用于指定算法將要讀取的OSS bucket。

    "oss://examplebucket/xxx/"

    cluster

    分布式運(yùn)行任務(wù)信息,詳情請(qǐng)參見PAI-TF任務(wù)參數(shù)介紹中的cluster參數(shù)介紹。

    "{\"ps\":{\"count\":2,\"cpu\":1000,\"memory\":40000},\"worker\":{\"count\":8,\"cpu\":1000,\"memory\":40000}}"

    cmd

    需要配置為固定值train

    "train"

    config

    模型Config文件的OSS路徑,您可以參考此處的MultiTower模型Config文件(下載Config示例)。

    "oss://examplebucket/xxx/multitower.config"

    ossHost

    OSS Endpoint,地域和Endpoint對(duì)照表請(qǐng)參見公共云下OSS RegionEndpoint對(duì)照表

    oss-cn-region_name-internal.aliyuncs.com

    train_tables

    訓(xùn)練表,多個(gè)訓(xùn)練表之間使用半角逗號(hào)(,)分隔。

    "odps://pai_online_project/tables/easyrec_demo_taobao_train_data"

    eval_tables

    評(píng)估表,多個(gè)評(píng)估表之間使用半角逗號(hào)(,)分隔。

    "odps://pai_online_project/tables/easyrec_demo_taobao_test_data"

    model_dir

    模型目錄,將會(huì)覆蓋config配置的模型路徑,一般在周期性調(diào)度時(shí)使用。

    "oss://examplebucket/xxx/"

    with_evaluator

    是否在訓(xùn)練時(shí)使用一個(gè)Worker進(jìn)行評(píng)估。通常設(shè)置8個(gè)Worker,其中七個(gè)Worker進(jìn)行訓(xùn)練,一個(gè)Worker進(jìn)行評(píng)估(計(jì)算測(cè)試集的AUC)。取值范圍如下:

    • 0:訓(xùn)練時(shí)不使用Worker進(jìn)行評(píng)估。

    • 1:訓(xùn)練時(shí)使用一個(gè)Worker進(jìn)行評(píng)估。

    1

    訓(xùn)練完成后,系統(tǒng)會(huì)自動(dòng)將模型導(dǎo)出至model_dir配置路徑下的/export/final/目錄。

  3. 部署模型(該步驟中的命令均在已創(chuàng)建的DataWorksShell節(jié)點(diǎn)中執(zhí)行)。

    1. 執(zhí)行如下命令編寫描述服務(wù)相關(guān)信息(模型存儲(chǔ)位置及資源規(guī)格等)的JSON文件,該文件的詳細(xì)參數(shù)請(qǐng)參見創(chuàng)建服務(wù),如下僅給出編寫JSON文件的示例命令,需要您根據(jù)實(shí)際情況修改參數(shù)值。

      ymd=$1 #獲取例行化配置中設(shè)置的日期參數(shù)。
      cat << EOF > echo.json
      {
        "cloud": {
        	"computing": {
          	"instance_type": "ecs.c7.large"
            }
          },
       	"metadata": {
        	"instance": 1,
         	"name": "model_name" 
       },
       "model_path": "your_model_path",
       "processor": "tensorflow_cpu_1.12", 
      }
      EOF

      其中:model_path需要配置為上述步驟已生成的模型路徑;name配置為模型服務(wù)名稱,同地域內(nèi)唯一。

    2. 部署模型。

      您可以根據(jù)實(shí)際部署情況,選擇創(chuàng)建服務(wù)或更新服務(wù):

      • 如果首次部署服務(wù),則可以使用如下命令,創(chuàng)建新服務(wù)。

        /home/admin/usertools/tools/eascmd -i <yourAccessId> -k <yourAccessKey> -e <OSS Endpoint> create <echo.json>

        參數(shù)

        描述

        示例

        <yourAccessId>

        阿里云賬號(hào)的AccessKey ID。

        <yourAccessKey>

        阿里云賬號(hào)的AccessKey Secret。

        <OSS Endpoint>

        將模型部署至某地域,此參數(shù)為該地域?qū)?yīng)的Endpoint,取值詳情請(qǐng)參見命令使用說明中地域與Endpoint的對(duì)應(yīng)關(guān)系表。

        pai-eas.cn-shanghai.aliyuncs.com

        <echo.json>

        上一步中編寫的描述服務(wù)相關(guān)信息(模型存儲(chǔ)位置及資源規(guī)格等)的JSON文件名稱。

        echo.json

      • 如果存在已經(jīng)部署的服務(wù),則可以使用如下命令,更新服務(wù)。

        /home/admin/usertools/tools/eascmd -i <yourAccessId> -k <yourAccessKey> -e <Endpoint> modify <cn-beijing/model_name> -s echo.json

        參數(shù)

        描述

        示例

        <yourAccessId>

        阿里云賬號(hào)的AccessKey ID。

        <yourAccessKey>

        阿里云賬號(hào)的AccessKey Secret。

        <Endpoint>

        將模型部署至某地域,此參數(shù)為該地域?qū)?yīng)的Endpoint,取值詳情請(qǐng)參見命令使用說明中地域與Endpoint的對(duì)應(yīng)關(guān)系表。

        pai-eas.cn-shanghai.aliyuncs.com

        <cn-beijing/model_name>

        模型地址與OSS數(shù)據(jù)所在地域一致。該模型名稱指描述服務(wù)相關(guān)信息JSON文件中,name參數(shù)的取值。

        cn-beijing/model_name

        <echo.json>

        描述服務(wù)相關(guān)信息的JSON文件名稱。

        echo.json

步驟三:配置任務(wù)例行化

以天級(jí)別更新的模型為例,需要每天例行進(jìn)行以下操作:

  1. 生成訓(xùn)練和評(píng)估樣本表。

  2. 調(diào)用EasyRec進(jìn)行訓(xùn)練并導(dǎo)出模型。

  3. EasyRec導(dǎo)出后的模型部署到EAS

DataWorks中創(chuàng)建的業(yè)務(wù)流程如下所示。業(yè)務(wù)流程您需要自行配置各節(jié)點(diǎn)的屬性及調(diào)度依賴等關(guān)系,此處僅以EasyRec_train節(jié)點(diǎn)為例,介紹如何配置節(jié)點(diǎn)屬性及調(diào)度依賴。

  1. 打開節(jié)點(diǎn)頁面。

    您可以通過以下任意一種方式打開EasyRec_train節(jié)點(diǎn):

    • 雙擊EasyRec_train節(jié)點(diǎn)。

    • 右鍵單擊EasyRec_train,在快捷菜單中,單擊打開節(jié)點(diǎn)

  2. 在節(jié)點(diǎn)頁面,單擊頁面右側(cè)的調(diào)度配置

  3. 調(diào)度配置頁面的調(diào)度參數(shù)區(qū)域,配置時(shí)間參數(shù),以區(qū)分不同天的任務(wù)。image

  4. 調(diào)度配置頁面的調(diào)度依賴區(qū)域,配置上下游節(jié)點(diǎn),詳情請(qǐng)參見配置同周期調(diào)度依賴image

    說明

    如果節(jié)點(diǎn)無上游依賴,則使用工作空間根節(jié)點(diǎn)。

  5. 單擊Shell節(jié)點(diǎn)頁面上方的image圖標(biāo),保存配置。

  6. 在業(yè)務(wù)流程頁面,單擊上方的運(yùn)行圖標(biāo),運(yùn)行Shell節(jié)點(diǎn)。

Debug

運(yùn)行EasyRec命令時(shí),DataWorks會(huì)打印Logview。您可以通過Logview快速查看模型訓(xùn)練效果或定位錯(cuò)誤。

  1. 在瀏覽器中打開Logview(即下圖紅框中的鏈接)。Logview

  2. 在日志頁面的Job Details頁簽,雙擊ODPS Tasks實(shí)例。

  3. 在日志頁面的ODPS Tasks區(qū)域,單擊ODPS Tasks實(shí)例。

  4. Worker運(yùn)行頁面,可以根據(jù)需要選擇查看對(duì)應(yīng)的實(shí)例。

    image其中:

    • worker 0為訓(xùn)練worker(worker 0、worker 2~worker 7均為訓(xùn)練worker),單擊StdEarr列下的image圖標(biāo),即可查看訓(xùn)練進(jìn)程。訓(xùn)練進(jìn)程log_step_count_steps步,打印一次日志。

    • worker1為評(píng)估worker,單擊stderr列下的image圖標(biāo),即可查看模型在評(píng)估集上的指標(biāo)。指標(biāo)

后續(xù)步驟

您可以在EAS中查看已經(jīng)部署的模型,并在線調(diào)用該服務(wù),詳情請(qǐng)參見服務(wù)在線調(diào)試