バッチ推論ジョブの作成 - 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. を使用する場合フィルター構成オプションでフィルターを選択して、バッチレコメンデーションにフィルターを適用します。フィルターでプレースホルダーパラメーターを使用する場合は、パラメーターの値が入力 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 操作を使用してバッチ推論ジョブを作成する準備が整います。次のコードは、AWS SDK for Python (Boto3) または AWS SDK for Java 2.x を使用してバッチ推論ジョブを作成する方法を示しています。

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

SDK for Python (Boto3)

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

Amazon S3 のデータソースとデータの宛先を、入力ファイルへの Amazon S3 パスと出力の場所に置き換えます。出力データには別の場所 (フォルダまたは別の Amazon S3 バケット) を使用することをお勧めします。

この例には、オプションの 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

次の createPersonalizeBatchInferenceJob メソッドを使用して、バッチ推論ジョブを作成します。Amazon Personalize のサービスクライアント、ソリューションバージョンの ARN、およびフィルターの ARN、およびフィルターの ARN、およびフィルターの ARN をパラメータとして渡します。バッチレコメンデーションとユーザーセグメントのフィルタリング)、およびサービスロールの ARN (「」を参照)Amazon Personalize の IAM ロールの作成).

入力データフィールドと出力データフィールドで、入力データを保存した Amazon S3 の場所を渡します。InputDataSourcePath)、bucket-name/folder name出力データの場所 (s3)DataDestinationPath). 出力データには別の場所 (フォルダまたは別の Amazon S3 バケット) を使用することをお勧めします。

この例には、オプションの 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 ""; }

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