バッチ推論ジョブの作成 - Amazon Personalize

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

バッチ推論ジョブの作成

バッチ推論ジョブを作成して、Amazon S3 からの入力データに基づいてユーザー向けのバッチアイテムのレコメンデーションを取得します。入力データは、JSON 形式のユーザーもしくはアイテム (またはその両方) のリストにすることができます。Amazon Personalize コンソール、AWS Command Line Interface (AWS CLI)、または AWS SDK を使用してバッチ推論ジョブを作成できます。

許可の要件、レコメンデーションスコアリング、入力データの準備とインポートなど、Amazon Personalize のバッチワークフローの詳細については、「バッチレコメンデーションとユーザーセグメントの取得」を参照してください。

バッチ推論ジョブの作成 (コンソール)

バッチ入力データの準備とインポート を完了すると、バッチ推論ジョブを作成する準備が整います。この手順は、ソリューションとソリューションバージョン (トレーニング済みモデル) を既に作成していることを前提としています。

バッチ推論ジョブを作成するには (コンソール)
  1. https://console.aws.amazon.com/personalize/home で Amazon Personalize コンソールを開き、アカウントにサインインします。

  2. [Dataset groups] (データセットグループ) のページで、データセットグループを選択します。

  3. ナビゲーションペインで [Batch inference jobs (バッチ推論ジョブ)] を選択してから、[Create batch inference job (バッチ推論ジョブの作成)] を選択します。

  4. [Batch inference job details (バッチ推論ジョブ詳細)] の [Batch inference job name (バッチ推論ジョブ名)] で、バッチ推論ジョブの名前を指定します。

  5. [IAM service role] (IAM サービスロール) で、設定時に Amazon Personalize 用に作成した IAM サービスロールを選択します。このロールには、入力および出力の Amazon S3 バケットへの読み取りおよび書き込みアクセスがそれぞれ必要です。

  6. [Solution] (ソリューション) で、ソリューションを選択してから、レコメンデーションの生成に使用する [Solution version ID] (ソリューションバージョン ID) を選択します。

  7. [Number of results] (結果の数) で、オプションで、入力データの各行についてのレコメンデーション数を指定します。デフォルトは 25 です。

  8. [Input data configuration] (入力データの設定) で、入力ファイルへの Amazon S3 パスを指定します。

    次の構文を使用します: s3://<name of your S3 bucket>/<folder name>/<input JSON file name>

    入力データは、ソリューションで使用するレシピに適した形式である必要があります。入力データの例については、「入力および出力 JSON の例」を参照してください。

  9. [Output data configuration] (出力データの設定) で、出力場所へのパスを指定します。出力データには別の場所 (フォルダまたは別の Amazon S3 バケット) を使用することをお勧めします。

    次の構文を使用します: s3://<name of your S3 bucket>/<output folder name>/

  10. [Filter configuration] (フィルター設定) で、オプションでフィルターを選択して、バッチレコメンデーションにフィルターを適用します。フィルターでプレースホルダーパラメーターを使用する場合は、パラメーターの値が入力 JSON に含まれていることを確認してください。詳細については、を参照してください入力 JSON にフィルター値を提供する

  11. タグ」には、オプションで任意のタグを追加します。Amazon Personalize リソースのタグ付けの詳細については、「」を参照してくださいAmazon Personalize リソースへのタグ付け

  12. [Create batch inference job (バッチ推論ジョブの作成)] を選択します。バッチ推論ジョブの作成が開始され、[Batch inference jobs (バッチ推論ジョブ)] ページが開いて、[Batch inference job detail (バッチ推論ジョブ詳細)] セクションが表示されます。

  13. バッチ推論ジョブのステータスが [Active] (アクティブ) に変わると、指定した出力 Amazon S3 バケットからジョブの出力を取得できます。出力ファイルの名前は input-name.out という形式になります。

バッチ推論ジョブの作成 (AWS CLI)

バッチ入力データの準備とインポート を完了すると、次の create-batch-inference-job コードを使用してバッチ推論ジョブを作成する準備が整います。ジョブ名を指定し、Solution version ARN をソリューションバージョンの Amazon リソースネーム (ARN) に置き換えます。また、IAM service role ARN を、設定中に Amazon Personalize 用に作成した IAM サービスロールの ARN に置き換えます。このロールには、入力および出力の Amazon S3 バケットへの読み取りおよび書き込みアクセスがそれぞれ必要です。オプションで、レコメンデーションをフィルタリングするためのフィルター ARN を指定します。フィルターでプレースホルダーパラメーターを使用する場合は、パラメーターの値が入力 JSON に含まれていることを確認してください。詳細については、「」を参照してくださいバッチレコメンデーションとユーザーセグメントのフィルタリング

S3 input pathS3 output path を、入力ファイルへの Amazon S3 パスと出力場所に置き換えます。出力データには別の場所 (フォルダまたは別の Amazon S3 バケット) を使用することをお勧めします。入力および出力の場所には、s3://<name of your S3 bucket>/<folder name>/<input JSON file name> および s3://<name of your S3 bucket>/<output folder name>/ の構文を使用します。

この例には、オプションの User-Personalization レシピ固有の itemExplorationConfig ハイパーパラメータ (explorationWeight および explorationItemAgeCutOff) が含まれています。オプションで、explorationWeight および explorationItemAgeCutOff の値を含めて、探索を設定します。詳細については、「User-Personalization レシピ」を参照してください。

aws personalize create-batch-inference-job \ --job-name Batch job name \ --solution-version-arn Solution version ARN \ --filter-arn Filter ARN \ --job-input s3DataSource={path=s3://S3 input path} \ --job-output s3DataDestination={path=s3://S3 output path} \ --role-arn IAM service role ARN \ --batch-inference-job-config "{\"itemExplorationConfig\":{\"explorationWeight\":\"0.3\",\"explorationItemAgeCutOff\":\"30\"}}" { "batchInferenceJobArn": "arn:aws:personalize:us-west-2:acct-id:batch-inference-job/batchInferenceJobName" }

バッチ推論ジョブの作成 (AWS SDK)

バッチ入力データの準備とインポート を完了すると、CreateBatchInferenceJob 操作を使用してバッチ推論ジョブを作成する準備が整います。

次のコードは、バッチ推論ジョブを作成する方法を示しています。設定中に Amazon Personalize 用に作成した IAM サービスロールの ARN を、設定中に Amazon Personalize 用に作成した IAM サービスロールの ARN を、設定中に Amazon Personalize 用に作成した IAM サービスロールの ARN を指定します。このロールには、入力および出力出力の Amazon S3 バケットへの読み取りおよび書き込みアクセスが必要です。

出力データには別の場所 (フォルダまたは別の Amazon S3 バケット) を使用することをお勧めします。入力および出力の場所には、s3://<name of your S3 bucket>/<folder name>/<input JSON file name> および s3://<name of your S3 bucket>/<output folder name>/ の構文を使用します。

numResultsで、入力データの各行で、入力データの各行で、入力データの各行について、入力データの各行について、入力データの各行について、入力データの各行について、入力データの各行について オプションで、レコメンデーションをフィルタリングするためのフィルター ARN を指定します。フィルターでプレースホルダーパラメーターを使用する場合は、パラメーターの値が入力 JSON に含まれていることを確認してください。詳細については、を参照してくださいバッチレコメンデーションとユーザーセグメントのフィルタリング

SDK for Python (Boto3)

この例には、オプションの User-Personalization レシピ固有の itemExplorationConfig ハイパーパラメータ (explorationWeight および explorationItemAgeCutOff) が含まれています。オプションで、explorationWeight および explorationItemAgeCutOff の値を含めて、探索を設定します。詳細については、「User-Personalization レシピ」を参照してください。

import boto3 personalize_rec = boto3.client(service_name='personalize') personalize_rec.create_batch_inference_job ( solutionVersionArn = "Solution version ARN", jobName = "Batch job name", roleArn = "IAM service role ARN", filterArn = "Filter ARN", batchInferenceJobConfig = { # optional USER_PERSONALIZATION recipe hyperparameters "itemExplorationConfig": { "explorationWeight": "0.3", "explorationItemAgeCutOff": "30" } }, jobInput = {"s3DataSource": {"path": "s3://<name of your S3 bucket>/<folder name>/<input JSON file name>"}}, jobOutput = {"s3DataDestination": {"path": "s3://<name of your S3 bucket>/<output folder name>/"}} )
SDK for Java 2.x

この例には、オプションの User-Personalization レシピ固有の itemExplorationConfig フィールド (explorationWeight および explorationItemAgeCutOff) が含まれています。オプションで、explorationWeight および explorationItemAgeCutOff の値を含めて、探索を設定します。詳細については、「User-Personalization レシピ」を参照してください。

public static String createPersonalizeBatchInferenceJob(PersonalizeClient personalizeClient, String solutionVersionArn, String jobName, String filterArn, String s3InputDataSourcePath, String s3DataDestinationPath, String roleArn, String explorationWeight, String explorationItemAgeCutOff) { long waitInMilliseconds = 60 * 1000; String status; String batchInferenceJobArn; try { // Set up data input and output parameters. S3DataConfig inputSource = S3DataConfig.builder() .path(s3InputDataSourcePath) .build(); S3DataConfig outputDestination = S3DataConfig.builder() .path(s3DataDestinationPath) .build(); BatchInferenceJobInput jobInput = BatchInferenceJobInput.builder() .s3DataSource(inputSource) .build(); BatchInferenceJobOutput jobOutputLocation = BatchInferenceJobOutput.builder() .s3DataDestination(outputDestination) .build(); // Optional code to build the User-Personalization specific item exploration config. HashMap<String, String> explorationConfig = new HashMap<>(); explorationConfig.put("explorationWeight", explorationWeight); explorationConfig.put("explorationItemAgeCutOff", explorationItemAgeCutOff); BatchInferenceJobConfig jobConfig = BatchInferenceJobConfig.builder() .itemExplorationConfig(explorationConfig) .build(); // End optional User-Personalization recipe specific code. CreateBatchInferenceJobRequest createBatchInferenceJobRequest = CreateBatchInferenceJobRequest.builder() .solutionVersionArn(solutionVersionArn) .jobInput(jobInput) .jobOutput(jobOutputLocation) .jobName(jobName) .filterArn(filterArn) .roleArn(roleArn) .batchInferenceJobConfig(jobConfig) // Optional .build(); batchInferenceJobArn = personalizeClient.createBatchInferenceJob(createBatchInferenceJobRequest) .batchInferenceJobArn(); DescribeBatchInferenceJobRequest describeBatchInferenceJobRequest = DescribeBatchInferenceJobRequest.builder() .batchInferenceJobArn(batchInferenceJobArn) .build(); long maxTime = Instant.now().getEpochSecond() + 3 * 60 * 60; // wait until the batch inference job is complete. while (Instant.now().getEpochSecond() < maxTime) { BatchInferenceJob batchInferenceJob = personalizeClient .describeBatchInferenceJob(describeBatchInferenceJobRequest) .batchInferenceJob(); status = batchInferenceJob.status(); System.out.println("Batch inference job status: " + status); if (status.equals("ACTIVE") || status.equals("CREATE FAILED")) { break; } try { Thread.sleep(waitInMilliseconds); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } return batchInferenceJobArn; } catch (PersonalizeException e) { System.out.println(e.awsErrorDetails().errorMessage()); } return ""; }
SDK for JavaScript v3
// Get service clients module and commands using ES6 syntax. import { CreateBatchInferenceJobCommand } from "@aws-sdk/client-personalize"; import { personalizeClient } from "./libs/personalizeClients.js"; // Or, create the client here. // const personalizeClient = new PersonalizeClient({ region: "REGION"}); // Set the batch inference job's parameters. export const createBatchInferenceJobParam = { jobName: 'JOB_NAME', jobInput: { /* required */ s3DataSource: { /* required */ path: 'INPUT_PATH', /* required */ // kmsKeyArn: 'INPUT_KMS_KEY_ARN' /* optional */' } }, jobOutput: { /* required */ s3DataDestination: { /* required */ path: 'OUTPUT_PATH', /* required */ // kmsKeyArn: 'OUTPUT_KMS_KEY_ARN' /* optional */' } }, roleArn: 'ROLE_ARN', /* required */ solutionVersionArn: 'SOLUTION_VERSION_ARN', /* required */ numResults: 20 /* optional integer*/ }; export const run = async () => { try { const response = await personalizeClient.send(new CreateBatchInferenceJobCommand(createBatchInferenceJobParam)); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

バッチジョブの処理が完了するまでに時間がかかる場合があります。DescribeBatchInferenceJob を呼び出し、入力パラメータとして batchRecommendationsJobArn を渡すことで、ジョブのステータスを確認できます。ListBatchInferenceJobs を呼び出すことで、AWS 環境内のすべての Amazon Personalize バッチ推論ジョブを一覧表示することもできます。