创建批量推理作业 - Amazon Personalize
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建批量推理作业

创建批量推理作业,以根据来自 Amazon S3 的输入数据为用户获取批处理项目建议。输入数据可以是 JSON 格式的用户或项目(或两者)的列表。您可以使用 Amazon Personalize 控制台创建批处理推理作业,Amazon Command Line Interface(Amazon CLI),或者Amazon开发工具包。

有关 Amazon Personalize 中的批处理工作流程的更多信息,包括权限要求、推荐评分以及准备和导入输入数据,请参阅获取批量推荐和用户细分.

创建批量推理作业(控制台)

完成后准备和导入批量输入数据,您已准备好创建批处理推理作业。此过程假定您已经创建了解决方案和解决方案版本(训练模型)。要获取批处理推荐,请创建批处理推理作业并指定作业名称,

创建批量推理作业(控制台)

  1. 从打开 Amazon Personalize 控制台https://console.aws.amazon.com/personalize/home然后登录您的账户。

  2. 在存储库的数据集组页面中,选择数据集组。

  3. 在导航窗格中选择 Batch inference jobs (批处理推理作业),然后选择 Create batch inference job (创建批处理推理作业)

  4. Batch inference job details (批处理推理作业详细信息) 中,在 Batch inference job name (批处理推理作业名称) 中,指定批处理推理作业的名称。

  5. 适用于IAM 服务角色中,选择您在设置过程中为 Amazon Personalize 化创建的 IAM 服务角色。此角色必须分别具有对输入和输出 Amazon S3 存储桶的读写访问权限。

  6. 适用于解决方案,选择解决方案,然后选择解决方案版本 ID要用于生成建议的内容。

  7. 适用于Number of results,可以选择指定每行输入数据的建议数量。默认值为 25。

  8. 适用于输入数据配置中,指定指向您的输入文件的 Amazon S3 路径。

    使用下面的语法:s3://<name of your S3 bucket>/<folder name>/<input JSON file name>

    您的输入数据必须采用解决方案使用的配方的正确格式。有关输入数据示例请参阅输入和输出 JSON 示例.

  9. 适用于输出数据配置,指定指向输出位置的路径。我们建议您的输出数据使用不同的位置(文件夹或其他 Amazon S3 存储桶)。

    使用下面的语法:s3://<name of your S3 bucket>/<output folder name>/

  10. 适用于筛选器配置(可选)选择一个筛选器,将筛选器应用于添加到输出 JSON 文件的推荐。有关更多信息,请参阅筛选批处理推荐和用户细分.

  11. 选择 Create batch inference job (创建批处理推理作业)。此时将开始创建批处理推理作业,Batch inference jobs (批处理推理作业) 页面将显示,并显示 Batch inference job detail (批处理推理作业详细信息) 部分。

  12. 当批量推理作业的状态更改为处于活动状态,您可以从指定的输出 Amazon S3 存储桶中检索作业的输出。输出文件的名称将采用 input-name.out 格式。

创建批量推理作业 (Amazon CLI)

完成之后准备和导入批量输入数据,您已准备好使用以下方法创建批处理推理作业。create-batch-inference-job代码。指定作业名称,替换Solution version ARN将替换为解决方案版本的 Amazon 资源名称 (ARN),IAM service role ARN使用您在设置期间为 Amazon Personalize 化创建的 IAM 服务角色的 ARN。此角色必须分别具有对输入和输出 Amazon S3 存储桶的读写访问权限。

ReplaceS3 input pathS3 output path使用指向输入文件和输出位置的 Amazon S3 路径。我们建议您的输出数据使用不同的位置(文件夹或其他 Amazon S3 存储桶)。您可以对添加到输出 JSON 文件的推荐应用过滤器。有关更多信息,请参阅筛选批处理推荐和用户细分.

对于输入和输出位置使用以下语法:s3://<name of your S3 bucket>/<folder name>/<input JSON file name>s3://<name of your S3 bucket>/<output folder name>/.

该示例包括特定于可选的用户个性化配方itemExplorationConfig超参数:explorationWeightexplorationItemAgeCutOff. 可选包括explorationWeightexplorationItemAgeCutOff用于配置探索的值。有关更多信息,请参阅用户个性化配方

aws personalize create-batch-inference-job --job-name Batch job name \ --solution-version-arn Solution version 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" }

创建批量推理作业 (Amazon开发工具包)

完成后准备和导入批量输入数据,您已准备好使用创建批处理推理作业CreateBatchInferenceJoboperation. 以下代码演示如何使用创建批处理推理作业。Amazon SDK for Python (Boto3)要么Amazon SDK for Java 2.x.

对于输入和输出位置使用以下语法: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 存储桶的读写访问权限。

使用指向输入文件和输出位置的 Amazon S3 路径替换 Amazon S3 数据源和数据目标。我们建议您的输出数据使用不同的位置(文件夹或其他 Amazon S3 存储桶)。您可以对添加到输出 JSON 文件的推荐应用过滤器。有关更多信息,请参阅筛选批处理推荐和用户细分.

该示例包括特定于可选的用户个性化配方itemExplorationConfig超参数:explorationWeightexplorationItemAgeCutOff. 可选包括explorationWeightexplorationItemAgeCutOff用于配置探索的值。有关更多信息,请参阅用户个性化配方

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", 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(亚马逊资源名称)、作业的名称、存储输入数据的 Amazon S3 位置 (s3InputDataSourcepath)、bucket-name/folder name输出数据位置(s3datadeStinationPath)以及服务相关角色的 ARN(请参阅为 Amazon Personalize 创建 IAM 服务角色)。我们建议您的输出数据使用不同的位置(文件夹或其他 Amazon S3 存储桶)。

该示例包括特定于可选的用户个性化配方itemExplorationConfig字段:explorationWeightexplorationItemAgeCutOff. 可选包括explorationWeightexplorationItemAgeCutOff用于配置探索的值。有关更多信息,请参阅用户个性化配方

public static String createPersonalizeBatchInferenceJob(PersonalizeClient personalizeClient, String solutionVersionArn, String jobName, 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) .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 作为输入参数来检查作业的状态。您还可以在您的中列出所有 Amazon Personalize 批处理推理作业。Amazon通过调用环境ListBatchInferenceJobs.