すべてのプロダクト
Search
ドキュメントセンター

Artificial Intelligence Recommendation:LinUCB ベースのトレーニングジョブ構成

最終更新日:Jan 11, 2025

このトピックでは、Flink オンライン トレーニングジョブの構成について説明します。

1. Hologres 構成

パラメーター

説明

endpoint

Hologres のエンドポイント。Host:Port の形式です。

hgpostcn-cn-xxxx-cn-beijing-vpc.hologres.aliyuncs.com:80

dbname

Hologres データベースの名前。

db_name

tablename

モデルパラメーターを格納する Hologres テーブルの名前。

rec.contextual_bandit_models

username

Hologres データベースのユーザー名。

${holo_user_name}

password

Hologres データベースのパスワード。

${holo_password}

insertOrUpdate

プライマリキー値がすでに存在するデータを挿入する場合、既存のデータを更新します。

true

hologres.feature.table

特徴量を格納する Hologres テーブルの名前。

rec.contextual_bandit_features

hologres.arm.table

後続のアームを格納する Hologres テーブルの名前。

rec.cold_start_item_table

2. アルゴリズム構成

パラメーター

説明

log.parser.parallelism

ログを解析するワーカーノードの並列度。

4

parallelism

アルゴリズムの並列度。

4

linucb.algo

LinUCB アルゴリズムのタイプ。有効な値: disjoint および hybrid。

hybrid

browse.window.size

インプレッションイベントが他のイベントを待機するために必要な時間。単位: 分。

8

default.window.size

インプレッションイベント以外の他のイベントの待機時間。単位: 分。

5

new.arm.duration.hours

アームのライフサイクル。単位: 時間。

24

new.arm.cache.minutes

新しいアームがメモリにキャッシュされる時間。単位: 分。

1

arm.id.column.name

hologres.arm.table テーブル内のアーム ID の列名。

videoId

arm.create.time.column.name

hologres.arm.table テーブル内のアームの作成時間の列名。

createTime

arm.create.time.column.type

アームの作成時間の形式。

timestamp

注: Realtime Compute for Apache Flink コンソールで構成された並列度の値は、可能であれば log.parser.parallelism 構成項目の値と同じである必要があります。そうでない場合、コンソールで構成された値はこの構成項目の値以上である必要があります。ほとんどの場合、この構成項目の値は DataHub または Kafka パーティションの数以下です。

3. データソース構成

3.1 Kafka データソース

注: Kafka データソースの入力データは、{Key:Value, Key:Value,...} 形式の標準 JSON 文字列 である必要があります。

パラメーター

説明

kafka.bootstrap.servers

Kafka サーバーの IP アドレス。

172.0.XX.XX:9092,172.0.XX.XX:9092

kafka.topic

Kafka トピック。

item_bhv_log

kafka.group.id

Kafka グループ ID。

realtime_rec

input.user.field.path

ユーザー ID の JSON パス

$.userid

input.arm.field.path

アームの JSON パス

$.value.svid

input.event.type.field.path

イベントタイプの JSON パス

$.event_name

input.event.time.field.path

イベント時間の JSON パス

$.gmt

input.event.time.format

イベント時間の形式。

"yyyy-MM-dd HH:mm:ss.SSS"

input.event.reward.json

イベントのリワード。JSON 形式。

{"exposure":0,"svplay":0.5,"svplayend":1,"share":2,"likes":1.5}

input.exposure.event.name

インプレッションイベントの名前。

exposure

input.event.equal.filter

等価条件を満たす場合にのみログが保持されます。形式: {"key": "value"}。

{"from_page":"p_smartvideodetail"}

input.event.in.filter

設定条件を満たす場合にのみログが保持されます。形式: {"key": [...]}。

{"refer":["p_weexpage", "p_svhome", "p_svh_tab_0"]}

注: input.event.reward.json 構成項目でリワードが構成されていないイベントは除外されます。インプレッションイベントのリワードを 0 に設定することをお勧めします。

JSON パス は JSON 構造内のパスを示します。このようなパスの名前は $ で始まります。このようなパスの詳細については、「LanguageManual UDF」をご参照ください。さまざまな文字の意味:

  • $: ルートノードを示します。

  • . または ['']: 子ノードを示します。MaxCompute は、これら 2 種類の文字を使用して JSON オブジェクトを解析できます。JSON キーに. が含まれている場合は、代わりに [''] を使用できます。

  • "[] ([number])" は配列の添え字を示し、0 から始まります。

  • ":" は配列のワイルドカードを示します。この文字が path パラメーターで使用されている場合、配列全体が返されます。

次のコードは、ログエントリのコンテンツの例を示しています。

{
    "store": {
        "fruit": [
            {
                "weight": 8,
                "type": "apple"  //りんご
            },
            {
                "weight": 9,
                "type": "pear" //洋梨
            }
        ],
        "bicycle": {  //自転車
            "price": 19.95,  //価格
            "color": "red"  //色
        }
    },
    "email": "a***@example.net", //メール
    "owner": "a**" //所有者
}

JSON パス

$.owner

a**

$.store.bicycle.price

19.95

$.store.fruit[0]

{"weight":8,"type":"apple"}

$.store.fruit[0].type

apple

3.2 DataHub データソース

パラメーター

説明

datahub.endpoint

DataHub のエンドポイント。

http://dh-cn-beijing-int-vpc.aliyuncs.com

datahub.project

DataHub プロジェクトの名前。

xxx_rec

datahub.topic

DataHub トピックの名前。

item_bhv_log

datahub.sub.id

DataHub サブスクリプション ID。

16255766364793VNMA

datahub.access.id

DataHub AccessKey ID。

datahub.access.key

DataHub AccessKey シークレット。

datahub.start.in.ms

ログデータの消費開始時刻。単位: ミリ秒。デフォルト値: ジョブの開始時刻。

input.user.field.path

ユーザー ID の 値パス

userid

input.arm.field.path

アームの 値パス

value.svid

input.event.type.field.path

イベントタイプの 値パス

event_name

input.event.time.field.path

イベント時間の 値パス

gmt

input.event.time.format

イベント時間の形式。

"yyyy-MM-dd HH:mm:ss.SSS"

input.event.reward.json

イベントのリワード。JSON 形式。

{"exposure":0,"svplay":0.5,"svplayend":1,"share":2,"likes":1.5}

input.exposure.event.name

インプレッションイベントの名前。

exposure

input.event.equal.filter

等価条件を満たす場合にのみログが保持されます。形式: {"key": "value"}。

{"from_page":"p_smartvideodetail"}

input.event.in.filter

設定条件を満たす場合にのみログが保持されます。形式: {"key": [...]}。

{"refer":["p_weexpage", "p_svhome", "p_svh_tab_0"]}

注: 構成項目 input.event.reward.json にリワードが構成されていないイベントは除外されます。インプレッションイベントのリワードを 0 に設定することをお勧めします。

3.3 値パス

単一値フィールド: column_name

JSON フィールド: column_name.path

path は JSON 形式の値のパスを示します。ここで:

  • "." は子ノードを示します。

  • "[]" は配列の添え字を示し、key[sub1][sub2][sub3]...... の形式です。

次のコードは、DataHub データソースの value 列の値の例を示しています。

{
    "svd_tab": "recommend", //おすすめ
    "publish_uid": 964655287, //投稿者UID
    "totaltime": 8219, //合計時間
    "exp_id": "ER4_L6#EG8****", //実験ID
    "refer": ["weexpage", "html5"], //参照
    "alogr_name": { //アルゴリズム名
      "name": "U2IRecallV10", //名前
      "type": "linucb" //タイプ
    },
    "svid": "5480249", //動画ID
    "n_svid": "5505132", //次の動画ID
    "playtime": 572, //再生時間
    "n_alogr_name": "SwingU2IRecallV10", //次のアルゴリズム名
    "request_id": "03cabe99-e46c-43bf-b689-5c6b9ab083fa" //リクエストID
}
  • value.svid の値は 5480249 になります。

  • value.alogr_name.name の値は U2IRecallV10 になります。

  • value.refer[1] の値は html5 になります。

3.4 時間形式

パラメーター

説明

timestamp

整数型のタイムスタンプ。単位: 秒。

timestamp.in.millisecond

整数型のタイムスタンプ。単位: ミリ秒。

java SimpleDateFormat

yyyy-MM-dd HH:mm:ss.SSS 形式の文字列。例: 2021-09-14 19:18:37.971。