このトピックでは、公開データセットを使用して PAI-Rec をすぐに使い始める方法を説明します。手順に従って、特徴量エンジニアリング、リコール、カスタムレコメンデーションアルゴリズムの詳細ランキングなどの主要な機能を構成できます。その後、コードを生成し、DataWorks の対応するワークフローにデプロイできます。
前提条件
開始する前に、以下の準備を完了してください:
PAI を有効化します。詳細については、「PAI を有効化してデフォルトのワークスペースを作成する」をご参照ください。
VPC と vSwitch を作成します。詳細については、「IPv4 CIDR ブロックを持つ VPC を作成する」をご参照ください。
PAI-FeatureStore を有効化します。詳細については、「データソースの作成」の「前提条件」セクションをご参照ください。Hologres を有効化する必要はありません。データソースとして FeatureDB を選択します。詳細については、「オンラインストアの作成: FeatureDB」をご参照ください。
MaxCompute を有効化し、`project_mc` という名前の MaxCompute プロジェクトを作成します。詳細については、「MaxCompute の有効化」および「MaxCompute プロジェクトの作成」をご参照ください。
Object Storage Service (OSS) バケットを作成します。詳細については、「バケットの作成」をご参照ください。
DataWorks を有効化し、以下の操作を実行します:
DataWorks ワークスペースを作成します。詳細については、「ワークスペースの作成」をご参照ください。
DataWorks 用の Serverless リソースグループを購入します。詳細については、「Serverless リソースグループの使用」をご参照ください。このリソースグループは、PAI-FeatureStore のデータを同期し、eascmd コマンドを実行して PAI-EAS サービスを作成および更新するために使用されます。
DataWorks データソースを構成します:
OSS データソースを作成してアタッチします。詳細については、「データソース管理」をご参照ください。
MaxCompute データソースを作成してアタッチします。詳細については、「MaxCompute 計算リソースのアタッチ」をご参照ください。
FeatureStore プロジェクトと特徴エンティティを作成します。Serverless リソースグループを使用する場合は、このステップをスキップできます。DataWorks に専用のリソースグループを使用する場合は、リソースグループに FeatureStore Python SDK をインストールする必要があります。詳細については、「II. FeatureStore の作成と登録」および「FeatureStore Python SDK のインストール」をご参照ください。
Realtime Compute for Apache Flink を有効化します。詳細については、「Realtime Compute for Apache Flink の有効化」をご参照ください。注意: [ストレージクラス] を [OSS バケット] に設定し、[完全マネージドストレージ] には設定しないでください。Flink の OSS バケットが PAI-Rec 用に構成されたものと同じであることを確認してください。Flink は、リアルタイムのユーザー行動データを記録し、リアルタイムのユーザー特徴量を計算するために使用されます。
EasyRec (TensorFlow) を選択した場合、モデルはデフォルトで MaxCompute 上でトレーニングされます。
TorchEasyRec (PyTorch) を選択した場合、モデルはデフォルトで PAI-DLC 上でトレーニングされます。PAI-DLC 上で MaxCompute データをダウンロードするには、Data Transmission Service を有効化する必要があります。詳細については、「Data Transmission Service の専用リソースグループの購入と使用」をご参照ください。
1. PAI-Rec インスタンスを作成してサービスを初期化する
パーソナライズドレコメンデーションプラットフォームのホームページにログインし、[今すぐ購入] をクリックします。
PAI-Rec インスタンス購入ページで、以下の主要なパラメーターを構成し、[今すぐ購入] をクリックします。
パラメーター
説明
リージョンとゾーン
クラウドサービスがデプロイされているリージョン。
サービスタイプ
このソリューションでは [プレミアムエディション] を選択します。
説明Standard Edition と比較して、Premium Edition にはデータ診断とカスタムレコメンデーションソリューション機能が追加されています。
PAI-Rec コンソールにログインします。トップメニューバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[インスタンスリスト] を選択します。インスタンス名をクリックして、インスタンス詳細ページに移動します。
[操作ガイド] セクションで、[初期化] をクリックします。[システム構成] > [エンドツーエンドサービス] ページにリダイレクトされます。[編集] をクリックし、次の表の説明に従ってリソースを構成してから、[完了] をクリックします。
左側のナビゲーションウィンドウで、[システム構成] > [権限管理] を選択します。[アクセスサービス] タブで、各クラウドプロダクトの権限付与ステータスを確認し、アクセスが正常であることを確認します。
2. 公開データセットのクローンを作成する
1. データテーブルの同期
このソリューションの入力データは、2 つの方法で提供できます:
`pai_online_project` プロジェクトから固定タイムウィンドウのデータをクローンします。この方法は、定期的なタスクスケジューリングをサポートしていません。
Python スクリプトを使用してデータを生成します。DataWorks でタスクを実行して、特定の期間のデータを生成できます。
毎日のデータ生成とモデルトレーニングをスケジュールするには、2 番目の方法を使用します。指定された Python コードをデプロイして、必要なデータを生成する必要があります。詳細については、[コードを使用してデータを生成] タブをご参照ください。
固定タイムウィンドウのデータを同期する
PAI-Rec は、公開されている `pai_online_project` プロジェクトで、レコメンデーションアルゴリズム用の 3 つの一般的なテーブルを提供します:
ユーザーテーブル: `pai_online_project.rec_sln_demo_user_table`
アイテムテーブル: `pai_online_project.rec_sln_demo_item_table`
行動テーブル: `pai_online_project.rec_sln_demo_behavior_table`
このソリューションの以降の操作は、これら 3 つのテーブルに基づいています。データはランダムに生成およびシミュレートされており、実際のビジネス上の意味はありません。そのため、トレーニングから得られる曲線下面積 (AUC) などのメトリックは低くなります。DataWorks で SQL コマンドを実行して、`pai_online_project` プロジェクトから `DataWorks_a` などの DataWorks プロジェクトにテーブルデータを同期する必要があります。手順は次のとおりです:
DataWorks コンソールにログインします。トップメニューバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[データ開発とガバナンス] > [データ開発] をクリックします。
作成した DataWorks ワークスペースを選択し、[データ開発に進む] をクリックします。
[作成] にカーソルを合わせ、[ノードの作成] > [MaxCompute] > [ODPS SQL] を選択します。次の表の説明に従ってパラメーターを構成し、[確認] をクリックします。
新しいノードセクションで、次のコードを実行して、`pai_online_project` プロジェクトから `project_mc` などの MaxCompute プロジェクトにユーザー、アイテム、および行動テーブルを同期します。このコードは、2023 年 1 月 1 日から 2023 年 2 月 16 日までのデータを同期します。
CREATE TABLE IF NOT EXISTS rec_sln_demo_user_table_v1( user_id BIGINT COMMENT '一意のユーザー ID', gender STRING COMMENT '性別', age BIGINT COMMENT '年齢', city STRING COMMENT '都市', item_cnt BIGINT COMMENT '作成されたアイテム数', follow_cnt BIGINT COMMENT 'フォロー数', follower_cnt BIGINT COMMENT 'フォロワー数', register_time BIGINT COMMENT '登録時間', tags STRING COMMENT 'ユーザータグ' ) PARTITIONED BY (ds STRING) STORED AS ALIORC; INSERT OVERWRITE TABLE rec_sln_demo_user_table_v1 PARTITION(ds) SELECT * FROM pai_online_project.rec_sln_demo_user_table WHERE ds > "20221231" and ds < "20230217"; CREATE TABLE IF NOT EXISTS rec_sln_demo_item_table_v1( item_id BIGINT COMMENT 'アイテム ID', duration DOUBLE COMMENT '動画の長さ', title STRING COMMENT 'タイトル', category STRING COMMENT 'プライマリタグ', author BIGINT COMMENT '作成者', click_count BIGINT COMMENT '総クリック数', praise_count BIGINT COMMENT '総いいね数', pub_time BIGINT COMMENT '公開時間' ) PARTITIONED BY (ds STRING) STORED AS ALIORC; INSERT OVERWRITE TABLE rec_sln_demo_item_table_v1 PARTITION(ds) SELECT * FROM pai_online_project.rec_sln_demo_item_table WHERE ds > "20221231" and ds < "20230217"; CREATE TABLE IF NOT EXISTS rec_sln_demo_behavior_table_v1( request_id STRING COMMENT 'インストルメンテーション ID/リクエスト ID', user_id STRING COMMENT '一意のユーザー ID', exp_id STRING COMMENT '実験 ID', page STRING COMMENT 'ページ', net_type STRING COMMENT 'ネットワークタイプ', event_time BIGINT COMMENT '行動時間', item_id STRING COMMENT 'アイテム ID', event STRING COMMENT '行動タイプ', playtime DOUBLE COMMENT '再生/読み取り時間' ) PARTITIONED BY (ds STRING) STORED AS ALIORC; INSERT OVERWRITE TABLE rec_sln_demo_behavior_table_v1 PARTITION(ds) SELECT * FROM pai_online_project.rec_sln_demo_behavior_table WHERE ds > "20221231" and ds < "20230217";
コードを使用してデータを生成する
固定タイムウィンドウのデータを使用すると、定期的なタスクスケジューリングはサポートされません。タスクをスケジュールするには、特定の Python コードをデプロイして必要なデータを生成する必要があります。手順は次のとおりです:
DataWorks コンソールで、PyODPS 3 ノードを作成します。詳細については、「MaxCompute ノードの作成と管理」をご参照ください。
create_data.py をダウンロードし、ファイルの内容を PyODPS 3 ノードに貼り付けます。
右側のペインで、[スケジュール構成] をクリックし、パラメーターを構成してから、右上隅にある [保存]
アイコンと [送信]
アイコンをクリックします。スケジューリングパラメーターを構成します:
注意: `$user_table_name` を `rec_sln_demo_user_table` に、`$item_table_name` を `rec_sln_demo_item_table` に、`$behavior_table_name` を `rec_sln_demo_behavior_table` に置き換えることができます。

スケジューリングの依存関係を構成します。
オペレーションセンターに移動し、 を選択します。
ターゲットタスクの [操作] 列で、 を選択します。
[データ補填] パネルで、データタイムスタンプを設定し、[送信して実行] をクリックします。
適切なデータ補填期間は 60 日です。データ整合性を確保するために、データタイムスタンプを
スケジュールされたタスクの日付 - 60に設定することをお勧めします。
2. 依存ノードの構成
コードの生成とデプロイをスムーズに行うために、事前に DataWorks プロジェクトに 3 つの SQL コードノードを追加します。これらのノードのスケジューリング依存関係をワークスペースのルートノードに構成します。すべての設定が完了したら、ノードを公開します。手順は次のとおりです:
[作成] にカーソルを合わせ、[ノードの作成] > [一般] > [仮想ノード] を選択します。次の表の説明に従って 3 つの仮想ノードを作成し、[確認] をクリックします。

ノードを選択し、各ノードのノードコンテンツを
select 1;に設定し、右側のペインで [スケジュール構成] をクリックして構成を完了します:[時間プロパティ] セクションで、[再実行プロパティ] を [成功または失敗時に再実行] に設定します。
[スケジューリング依存関係] > [上流依存関係] セクションで、DataWorks ワークスペース名を入力し、_root サフィックスを持つノードを選択して、[追加] をクリックします。
3 つすべての仮想ノードを構成します。

仮想ノードの前にある
アイコンをクリックして送信します。
3. データの登録
カスタムレコメンデーションソリューションで特徴量エンジニアリング、リコール、およびソートアルゴリズムを構成するには、まず DataWorks プロジェクトに同期した 3 つのテーブルを登録する必要があります。手順は次のとおりです:
PAI-Rec コンソールにログインします。トップメニューバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[インスタンスリスト] を選択します。インスタンス名をクリックして、インスタンス詳細ページに移動します。
左側のナビゲーションウィンドウで、[カスタムレコメンデーションソリューション] > [データ受付] を選択します。[MaxCompute テーブル] タブで、[データテーブルの追加] をクリックします。次の表の説明に従って、ユーザーテーブル、アイテムテーブル、および行動テーブルを 1 つずつ追加し、[インポート開始] をクリックします。
パラメーター
説明
例
MaxCompute プロジェクト
作成した MaxCompute プロジェクトを選択します。
project_mc
MaxCompute テーブル
DataWorks ワークスペースに同期したデータテーブルを選択します。
ユーザーテーブル: rec_sln_demo_user_table_v1
アイテムテーブル: rec_sln_demo_item_table_v1
行動テーブル: rec_sln_demo_behavior_table_v1
データテーブル名
カスタム名を入力します。
ユーザーテーブル
アイテムテーブル
行動テーブル
4. レコメンデーションシナリオの作成
レコメンデーションタスクを構成する前に、レコメンデーションシナリオを作成する必要があります。レコメンデーションシナリオの基本的な概念とトラフィック ID の意味については、「用語」をご参照ください。
左側のナビゲーションウィンドウで、[レコメンデーションシナリオ] を選択します。[シナリオの作成] をクリックし、次の表の説明に従ってレコメンデーションシナリオを作成してから、[OK] をクリックします。
5. アルゴリズムソリューションの作成と構成
完全な実世界のシナリオを構成するために、次のリコールと詳細ランキングの構成をお勧めします:
グローバルホットリコール: ログデータの人気データ統計に基づいて、上位 k 個のアイテムをランク付けします。
グローバルホットフォールバックリコール: レコメンデーション API が空のデータを返すのを防ぐために、Redis をフォールバックとして使用します。
グループ化ホットリコール: 都市や性別などのカテゴリ別にアイテムをリコールし、人気アイテムのレコメンデーションの精度を向上させます。
etrec u2i リコール: etrec 協調フィルタリングアルゴリズムに基づいています。
swing u2i リコール (オプション): Swing アルゴリズムに基づいています。
コールドスタートリコール (オプション): DropoutNet アルゴリズムを使用したコールドスタートリコール。
詳細ランキング: 単一目的のランキングには MultiTower を、多目的のランキングには DBMTL を選択できます。
ベクターリコールまたは PDN リコールアルゴリズムは、通常、リコール段階が包括的になった後に有効になります。ベクターリコールにはベクターリコールエンジンが必要です。FeatureDB はサポートしていないため、この例ではベクターリコールを構成しません。
このトピックは、構成とデプロイのプロセスをガイドすることを目的としています。したがって、リコール構成段階では、グローバルホットリコールと RECommender (eTREC、協調フィルタリングの実装) の u2i リコール戦略のみを構成します。ランキング構成では、エクスペリエンスを最適化するために詳細ランキングを選択します。手順は次のとおりです:
左側のナビゲーションウィンドウで、[カスタムレコメンデーションソリューション] > [ソリューション構成] を選択します。作成したシナリオを選択し、[レコメンデーションソリューションの作成] をクリックし、次の表の説明に従ってソリューションを作成してから、[保存してアルゴリズムソリューションを構成] をクリックします。
説明されていないパラメーターはデフォルト値のままにします。詳細については、「データテーブル構成」をご参照ください。
[データテーブル構成] ノードで、ターゲットデータテーブルの右側にある [追加] をクリックします。次の表の説明に従って、行動ログテーブル、ユーザーテーブル、およびアイテムテーブルを構成します。パーティション、イベント、特徴量、およびタイムスタンプのフィールドを設定し、[次へ] をクリックします。
説明されていないパラメーターはデフォルト値のままにします。詳細については、「データテーブル構成」をご参照ください。
[特徴量設定] ノードで、次の表に従ってパラメーターを設定し、[特徴量を生成] をクリックし、特徴量バージョンを設定し、次に [次へ] をクリックします。
[特徴量の生成] をクリックすると、ユーザーとアイテムに対してさまざまな統計的特徴量が派生します。このソリューションでは、派生した特徴量を編集せず、デフォルト設定のままにします。必要に応じて、派生した特徴量を編集できます。詳細については、「特徴量構成」をご参照ください。
[リコール構成] ノードで、ターゲットカテゴリの右側にある [追加] をクリックし、パラメーターを構成して [確認] をクリックしてから、[次へ] をクリックします。
以下のセクションでは、複数のリコール構成方法について説明します。デプロイプロセスを迅速にガイドするために、グローバルホットリコールとetrec u2i リコールのみを構成できます。ベクターリコールや協調メトリックリコールなどの他の方法は、参考用です。
[ランキング構成] ノードで、[詳細ランキング] の右側にある [追加] をクリックし、次の表の説明に従ってパラメーターを構成し、[確認] をクリックしてから、[次へ] をクリックします。
[スクリプトの生成] ノードで、[デプロイメントスクリプトの生成] をクリックします。
重要スクリプトが正常に生成されると、システムは上の図に示すように OSS アドレスを生成します。この OSS パスには、デプロイするすべてのファイルが保存されます。後でスクリプトを手動でデプロイするために、このアドレスをローカルに保存できます。
スクリプトが生成されたら、ダイアログボックスで [OK] をクリックします。[カスタムレコメンデーションソリューション] > [デプロイメントレコード] ページにリダイレクトされます。
生成に失敗した場合は、実行ログを表示し、特定のエラーを分析して解決してから、スクリプトを再度生成します。
6. レコメンデーションソリューションのデプロイ
スクリプトが生成された後、2 つの方法で DataWorks にデプロイできます。
方法 1: エンドツーエンドレコメンデーションシステム開発プラットフォームを介したデプロイ
ターゲットソリューションの右側にある [デプロイに進む] をクリックします。

[デプロイプレビュー] ページの [ファイル差分] セクションで、デプロイするファイルを選択します。これが最初のデプロイであるため、[すべて選択] をクリックし、次に [DataWorks にデプロイ] をクリックします。
ページは自動的に [デプロイメントレコード] ページに戻り、スクリプトのデプロイが進行中であることが示されます。

しばらく待ってから、
をクリックしてリストを更新し、デプロイステータスを確認します。デプロイに失敗した場合は、[操作] 列の [ログの表示] をクリックし、特定のエラーを分析して解決してから、スクリプトを再生成してデプロイします。
[デプロイステータス] が [成功] に変わると、スクリプトは正常にデプロイされます。このソリューション用に構成された DataWorks ワークスペースのデータ開発ページに移動して、デプロイされたコードを表示できます。詳細については、「データ開発プロセスガイド」をご参照ください。

タスクデータのバックフィルプロセスを表示します。
ページで、正常にデプロイされたレコメンデーションソリューションの [操作] 列にある [詳細] をクリックします。
[デプロイプレビュー] ページで、[タスクデータのバックフィルプロセスを表示] をクリックして、バックフィルプロセスと関連する指示を理解し、データの整合性を確保します。

方法 2: 移行アシスタントを使用したデプロイ
スクリプトが正常に生成された後、DataWorks コンソールに移動し、移行アシスタント機能を使用してスクリプトを手動でデプロイすることもできます。主要なパラメーターは以下に説明されています。その他の操作については、「DataWorks インポートタスクの作成と表示」をご参照ください。
インポート名: コンソールのプロンプトに従って設定します。
アップロード方法: [OSS ファイル] を選択し、OSS リンク を入力して、[検証] をクリックします。
デプロイファイルは、ステップ 5 で生成された OSS アドレス (例:
oss://examplebucket/algoconfig/plan/1723717372/package.zip) に保存されます。OSS コンソールにログインし、以下の手順に従って対応するファイルの URL を取得できます。













