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

PAI-Rec使用示例

PAI-Rec是一款基于Go的在線推薦服務(wù)引擎的框架,您可以基于此框架快速搭建在線推薦服務(wù),也可以定制化進(jìn)行二次開發(fā)。本文為您介紹如何在DataScience集群上使用PAI-Rec搭建一個(gè)簡單的在線推薦服務(wù),實(shí)現(xiàn)U2I召回和特征加載。

背景信息

PAI-Rec框架內(nèi)容如下:

  • 集成Go http Server,提供路由注冊(cè)功能,方便開發(fā)Restful API。

  • 包含推薦引擎的Pipeline流程,里面預(yù)定義了多種召回、過濾、排序策略,內(nèi)置訪問阿里云EAS服務(wù)。

  • 包含多種數(shù)據(jù)源的加載,支持Hologres、MySQL、Redis、Tablestore(OTS)和Kafka等。

  • 基于靈活的配置描述推薦流程。

  • 集成輕量級(jí)A/B Test實(shí)驗(yàn)平臺(tái)。

  • 支持簡單易用的擴(kuò)展點(diǎn),方便自定義操作。

更多框架信息,請(qǐng)參見PAI-Rec文檔

前提條件

  • 已創(chuàng)建DataScience集群,并且選擇了PairecEngine和PostgreSQL服務(wù),詳情請(qǐng)參見創(chuàng)建集群

  • 通過SSH方式連接集群,詳情請(qǐng)參見登錄集群

操作流程

  1. 步驟一:數(shù)據(jù)準(zhǔn)備

  2. 步驟二:加載配置

  3. 步驟三:推薦測試

步驟一:數(shù)據(jù)準(zhǔn)備

因?yàn)橐獙?shí)現(xiàn)U2I召回和特征加載,所以需要準(zhǔn)備相應(yīng)的召回表和特征表。

  1. 單擊preparedata_mysql.sql,下載示例文件。

    該文件會(huì)幫您創(chuàng)建db_pairecdemo數(shù)據(jù)庫及以下數(shù)據(jù)表:

    • 召回表:t_recall,包含字段user_id,表示用戶ID,字段item_ids表示對(duì)應(yīng)要召回的物品ID。

    • user特征表:t_userfeature,包含字段user_id和若干特征字段。

    • item特征表:t_itemfeature,包含字段item_id和若干特征字段。

    重要

    示例中的庫、表和字段信息會(huì)在之后的推薦引擎配置中用到。其中召回表的結(jié)構(gòu)定義是約定好的,不能隨意更改配置。更多配置詳情請(qǐng)參見配置總覽

  2. 執(zhí)行以下命令,獲取MySQL服務(wù)的IP地址和端口。

    kubectl -n bitnami get svc mysql
  3. 使用MySQL客戶端連接服務(wù),執(zhí)行preparedata_mysql.sql文件。

    說明

    數(shù)據(jù)庫root賬號(hào)的默認(rèn)密碼為emr-datascience。

步驟二:加載配置

PAI-Rec推薦引擎的具體Pipeline流程由配置定義,目前配置支持啟動(dòng)時(shí)加載config配置文件和通過配置中心熱加載兩種方式,本示例為通過配置中心熱加載的方式。

配置中心也一同部署在DataScience上。

  1. 執(zhí)行以下命令,獲取端口。

    kubectl -n pairec get svc pairec-experiment -o jsonpath='{.spec.ports[0].nodePort}'
  2. 訪問http://<header1節(jié)點(diǎn)的IP地址>:<端口>鏈接,登錄配置中心。

    默認(rèn)用戶名和密碼均為admin。

    說明

    <端口>為步驟1獲取到的。

  3. 新增配置。

    1. 在左側(cè)導(dǎo)航欄,選擇服務(wù)配置 > 推薦引擎配置

    2. 推薦引擎配置頁面,單擊新增

    3. 新增配置對(duì)話框中,填寫配置名稱和配置內(nèi)容,選擇運(yùn)行環(huán)境。

      add_config

      參數(shù)

      描述

      配置名稱

      填寫為pairec_config

      DataScience上部署的PAI-Rec推薦引擎,默認(rèn)使用日常環(huán)境下名稱為pairec_config的配置。因此這里的配置名稱設(shè)為pairec_config,運(yùn)行環(huán)境設(shè)為日常環(huán)境。

      運(yùn)行環(huán)境

      選擇日常環(huán)境

      配置內(nèi)容分為以下幾部分:

      • 數(shù)據(jù)源配置

        {
          // ...
          "MysqlConfs": {  // mysql 配置
              "pairec-mysql": { // 自定義名稱
                "DSN": "root:emr-datascience@tcp(mysql.bitnami)/db_pairecdemo?parseTime=true&loc=Asia%2FShanghai"
              }
            },
          // ...
        }

        如果默認(rèn)配置中沒有MysqlConfs,新增即可。名稱您可以自定義,會(huì)在之后用到。數(shù)據(jù)庫設(shè)為之前數(shù)據(jù)準(zhǔn)備中創(chuàng)建的db_pairecdemo。

      • 召回配置

        {
          // ...
            "RecallConfs": [
                {
                    "Name": "user2item_recall",
                    "RecallType": "UserCustomRecall",
                    "ItemType": "video",
                    "RecallCount": 500,
                    "DaoConf": {
                        "AdapterType": "mysql",
                        "MysqlName": "pairec-mysql",
                        "MysqlTable": "t_recall"
                    }
                }
            ],
          // ...
          "SceneConfs": {
            "default_scene": {
              "default": {
                "RecallNames": [
                  "user2item_recall"
                ]
              }
            }
          },
          // ...
        }

        需要在場景配置中啟用配置好的user2item_recall。其中,涉及的參數(shù)如下表所示。

        參數(shù)

        描述

        RecallType

        填寫為UserCustomRecall ,表示使用U2I的召回方式。

        RecallCount

        填寫為500,表示最多召回500個(gè)item。

        AdapterType

        填寫為mysql,表示使用MySQL數(shù)據(jù)源。

        MysqlName

        填寫為pairec-mysql,表示使用上文中配置的數(shù)據(jù)源- pairec-mysql。

        MysqlTable

        填寫為t_recall,表示召回表名稱為t_recall。

      • 特征配置

        {
          // ...
          "FeatureConfs": {
            "default_scene": {
              "AsynLoadFeature": true,
              "FeatureLoadConfs": [
                {
                  "FeatureDaoConf": {
                    "AdapterType": "mysql",
                    "MysqlName": "pairec-mysql",
                    "FeatureKey": "user:uid",
                    "UserFeatureKeyName": "user_id",
                    "MysqlTable": "t_userfeature",
                    "UserSelectFields": "c1,c14,c15,c16,c17,c18,c19,c20,c21",
                    "FeatureStore": "user"
                  },
                  "Features": [
                  ]
                },
                {
                  "FeatureDaoConf": {
                    "AdapterType": "mysql",
                    "MysqlName": "pairec-mysql",
                    "ItemFeatureKeyName": "item_id",
                    "FeatureKey": "item:id",
                    "MysqlTable": "t_itemfeature",
                    "ItemSelectFields": "item_id,app_category,app_domain,app_id,banner_pos,device_conn_type,device_id,device_ip,device_model,device_type,hour,site_category,site_domain,site_id",
                    "FeatureStore": "item"
                  },
                  "Features": [
                  ]
                }
              ]
            }
          }
          // ...
        }

        其中,涉及的參數(shù)如下表所示。

        參數(shù)

        描述

        AdapterType

        填寫為mysql,表示使用MySQL數(shù)據(jù)源。

        MysqlName

        填寫為pairec-mysql,表示使用上文中配置的數(shù)據(jù)源。

        MysqlTable

        填寫為t_recall,表示召回表名稱為 t_recall。

        UserFeatureKeyName

        用于指定特征表查詢條件中的字段名。

        ItemFeatureKeyName

        FeatureKey

        用于指定從哪里獲取特征表查詢條件中的字段值。

        UserSelectFields

        用于指定查詢哪些特征。

        ItemSelectFields

        FeatureStore

        用于指定將查詢得到的特征存到哪里。

  4. 完成配置后,單擊確定

  5. 保存配置后,單擊配置操作列的發(fā)布

    發(fā)布配置,引擎會(huì)自動(dòng)加載設(shè)置好的配置。release

步驟三:推薦測試

PAI-Rec引擎推薦接口為/api/rec/feed,訪問此接口即可進(jìn)行推薦測試(需要獲取引擎服務(wù)地址)。

參數(shù)

描述

類型

是否必選

示例

uid

用戶ID。

String

10****

size

獲取item數(shù)量。

Integer

10

scene_id

場景ID。

String

feed

category

類目。

String

features

上下文特征。

JSON Map

{"age":20,"sex":"male"}

debug

打印更多的日志。

BOOL

true

您可以通過以下命令獲取引擎端口,然后http://<header1節(jié)點(diǎn)的IP地址>:<端口>即為服務(wù)地址。

kubectl -n pairec get svc pairec-engine -o jsonpath='{.spec.ports[0].nodePort}'

假設(shè)服務(wù)地址為http://127.0.0.1:32204,則可以使用curl工具進(jìn)行訪問和測試。

curl http://127.0.0.1:32204/api/rec/feed -d '{"uid":"10****", "size":2, "debug":true}'
說明

因?yàn)檎倩睾吞卣鞫寂渲迷赿efault_scene,即默認(rèn)場景下,所以此處無需指定scene_id。

當(dāng)返回如下信息時(shí),表示流程執(zhí)行成功。如果推薦結(jié)果有問題或有其他需求,可以通過日志分析排查推薦流程,詳情信息請(qǐng)參見日志分析

{
  "code": 200,
  "msg": "success",
  "request_id": "16dda535-9d7f-4bbb-aaa9-dc7199f9f6e8",
  "size": 2,
  "items": [
    {
      "item_id": "200001",
      "score": 0,
      "retrieve_id": "user2item_recall"
    },
    {
      "item_id": "200002",
      "score": 0,
      "retrieve_id": "user2item_recall"
    }
  ]
}

日志分析

如果推薦結(jié)果有問題或有其他需求,可以通過日志分析排查推薦流程。

  1. 執(zhí)行以下命令,獲取部署的PAI-Rec引擎的pod名稱。

    kubectl get po -n pairec

    返回信息如下所示。

    # NAME                                        READY   STATUS    RESTARTS   AGE
    # pairec-engine-9669c98fd-w9828               1/1     Running   0          2d4h
  2. 執(zhí)行以下命令,打印pod日志。

    kubectl logs pairec-engine-9669c98fd-w9828 -n pairec

    一次推薦流程的日志示例如下所示。

    I1230 08:36:04.103712       6 log.go:13] [INFO] requestId=16dda535-9d7f-4bbb-aaa9-dc7199f9f6e8  event=begin     uri=/api/rec/feed       address=10.244.0.0:39088        body={"uid":"10****", "size":2, "debug":true}
    I1230 08:36:04.103814       6 logger.go:18] [ERROR]     scene:default_scene, not found the scene info
    I1230 08:36:04.103828       6 log.go:13] [INFO] requestId=16dda535-9d7f-4bbb-aaa9-dc7199f9f6e8,uid=100001,scene_name=default_scene,exp_id=
    I1230 08:36:04.106789       6 log.go:13] [INFO] requestId=16dda535-9d7f-4bbb-aaa9-dc7199f9f6e8  module=UserCustomRecall name=user2item_recall   count=3 cost=2
    I1230 08:36:04.106805       6 log.go:13] [INFO] requestId=16dda535-9d7f-4bbb-aaa9-dc7199f9f6e8  module=recall   cost=2
    I1230 08:36:04.106815       6 log.go:13] [INFO] requestId=16dda535-9d7f-4bbb-aaa9-dc7199f9f6e8  module=Filter   cost=0
    I1230 08:36:04.109738       6 log.go:13] [INFO] requestId=16dda535-9d7f-4bbb-aaa9-dc7199f9f6e8  module=LoadFeatures     cost=2
    &{100001  map[c1:1005 c14:2035 c15:30 c16:25 c17:234 c18:2 c19:4 c20:1002 c21:3 uid:10****] {{0 0} 0 0 0 0}}
    I1230 08:36:04.109810       6 log.go:13] [INFO] requestId=16dda535-9d7f-4bbb-aaa9-dc7199f9f6e8  module=rank     cost=0
    &{200001  0 user2item_recall video [] {{0 0} 0 0 0 0} map[app_category:07d7df22 app_domain:7801e8d9 app_id:ecad2386 banner_pos:0 device_conn_type:0 device_id:a99f214a device_ip:9d046c7f device_model:9a45a8e8 device_type:1 hour:21 recall_name:user2item_recall recall_score:0 site_category:3e814130 site_domain:7687a86e site_id:5b08c53b user2item_recall:0] map[]}
    &{200002  0 user2item_recall video [] {{0 0} 0 0 0 0} map[app_category:07d7df22 app_domain:7801e8d9 app_id:ecad2386 banner_pos:0 device_conn_type:66 device_id:a99f214a device_ip:9d046c7f device_model:9a45a8e8 device_type:23 hour:21 recall_name:user2item_recall recall_score:0 site_category:3e814130 site_domain:7687a86e site_id:5b08c53b user2item_recall:0] map[]}
    I1230 08:36:04.109973       6 log.go:13] [INFO] requestId=16dda535-9d7f-4bbb-aaa9-dc7199f9f6e8  event=end       uri=/api/rec/feed       cost=6

    展示了Pipeline各個(gè)模塊的執(zhí)行情況。其中,count代表結(jié)果數(shù)量, cost代表花費(fèi)時(shí)間。加載的特征也會(huì)打印出來。