第 3 步:创建解决方案版本 - Amazon Personalize
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

第 3 步:创建解决方案版本

在您完成后第 1 步:选择配方第 2 步:配置解决方案,可随时创建解决方案版本。

A解决方案版本是指经过培训的机器学习模型,您可以部署为客户提供建议。使用控制台创建解决方案版本Amazon Command Line Interface(Amazon CLI),或Amazon开发工具包。如果您的解决方案版本的状态为 CREATE_IN_PROGREST,则可以使用StopSolutionVersionCreation操作停止解决方案版本创建过程。请参阅 停止创建解决方案版本

创建解决方案版本(控制台)

如果您刚刚完成第 2 步:配置解决方案创建解决方案版本,选择FINISH创建解决方案版本。

在解决方案详细信息页面上,您可以在解决方案版本部分。当训练完成时,状态会变为处于活动状态,随时可随时部署营销活动并获取建议。请参阅入门(控制台)教程。

如果您导航离开创建解决方案版本页面或希望为现有解决方案创建其他解决方案版本,请从解决方案概述页面创建新的解决方案版本,如下所示。

创建新解决方案版本

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

  2. 导航到数据集组页面,然后使用新解决方案选择数据集组。

  3. 在导航窗格中,选择解决方案和配方

  4. 在存储库的解决方案和配方页面上,选择要为其创建解决方案版本的解决方案。

  5. 在解决方案概述页面上,选择创建解决方案版本开始训练一个新模型。

在解决方案详细信息页面上,您可以在解决方案版本部分。当训练完成时,状态会变为处于活动状态您可以使用 Amazon Personalize 提供的指标评估它。有关更多信息,请参阅第 4 步:使用指标评估解决方案版本

如果由于错误而未完成培训,则不会向您收取培训费用。如果您的解决方案版本的状态为 CREATE_PING 或 CREATE_IN_Process,则可以停止解决方案版本创建过程。要停止创建解决方案版本,请导航到解决方案版本详细信息页面并选择停止。请参阅 停止创建解决方案版本

创建解决方案版本 (Amazon CLI)

当您的解决方案为 ACTIVE 时,通过运行以下命令来训练模型。Replacesolution arn对使用解决方案 Amazon 资源名称 (ARN) 解决方案第 2 步:配置解决方案

aws personalize create-solution-version \ --solution-arn solution arn

这将显示解决方案版本 ARN,例如:

{ "solutionVersionArn": "arn:aws:personalize:us-west-2:acct-id:solution/SolutionName/<version-id>" }

检查解决方案版本的训练状态,使用describe-solution-version命令。提供上一步中返回的解决方案版本 ARN。有关该 API 的更多信息,请参阅DescribeSolutionVersion

aws personalize describe-solution-version \ --solution-version-arn solution version arn

将显示解决方案版本的属性和训练 status。最初,状态显示为 CREATE PENDING,例如:

{ "solutionVersion": { "solutionVersionArn": "arn:aws:personalize:us-west-2:acct-id:solution/solutionName/<version-id>", ..., "status": "CREATE PENDING" } }

statusACTIVE,您可以使用 Amazon Personalize 提供的指标评估它。有关更多信息,请参阅第 4 步:使用指标评估解决方案版本。如果由于错误而未完成培训,则不会向您收取培训费用。

如果您的解决方案版本的状态为 CREATE_IN_PROGREST,则可以使用StopSolutionVersionCreation操作停止解决方案版本创建过程。请参阅 停止创建解决方案版本

创建解决方案版本 (Amazon开发工具包)

当您的解决方案为 Active 时,请使用以下代码创建具有Amazon SDK for Python (Boto3)或Amazon SDK for Java 2.x。

SDK for Python (Boto3)

要创建解决方案版本,请使用以下create_solution_version方法。将替换solution arn对使用解决方案的 Amazon 资源名称 (ARN)第 2 步:配置解决方案。下面的代码使用DescribeSolutionVersion操作来检索解决方案版本的状态。

import boto3 personalize = boto3.client('personalize') # Store the solution ARN solution_arn = 'solution arn' # Use the solution ARN to get the solution status. solution_description = personalize.describe_solution(solutionArn = 'solution_arn')['solution'] print('Solution status: ' + solution_description['status']) # Use the solution ARN to create a solution version. print ('Creating solution version') response = personalize.create_solution_version(solutionArn = solution_arn) solution_version_arn = response['solutionVersionArn'] print('Solution version ARN: ' + solution_version_arn) # Use the solution version ARN to get the solution version status. solution_version_description = personalize.describe_solution_version( solutionVersionArn = solution_version_arn)['solutionVersion'] print('Solution version status: ' + solution_version_description['status'])
SDK for Java 2.x

要创建解决方案版本,请使用以下createPersonalizeSolutionVersion方法,并将解决方案的 Amazon 资源名称 (ARN) 作为参数传递到第 2 步:配置解决方案。下面的代码使用DescribeSolutionVersion操作来检索解决方案版本的状态。

public static String createPersonalizeSolutionVersion(PersonalizeClient personalizeClient, String solutionArn) { long maxTime = 0; long waitInMilliseconds = 30 * 1000; // 30 seconds String solutionStatus = ""; String solutionVersionStatus = ""; String solutionVersionArn = ""; try { DescribeSolutionRequest describeSolutionRequest = DescribeSolutionRequest.builder() .solutionArn(solutionArn) .build(); maxTime = Instant.now().getEpochSecond() + 3 * 60 * 60; // Wait until solution is active. while (Instant.now().getEpochSecond() < maxTime) { solutionStatus = personalizeClient.describeSolution(describeSolutionRequest).solution().status(); System.out.println("Solution status: " + solutionStatus); if (solutionStatus.equals("ACTIVE") || solutionStatus.equals("CREATE FAILED")) { break; } try { Thread.sleep(waitInMilliseconds); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } // Once the solution is active, start creating a solution version. if (solutionStatus.equals("ACTIVE")) { CreateSolutionVersionRequest createSolutionVersionRequest = CreateSolutionVersionRequest.builder() .solutionArn(solutionArn) .build(); CreateSolutionVersionResponse createSolutionVersionResponse = personalizeClient.createSolutionVersion(createSolutionVersionRequest); solutionVersionArn = createSolutionVersionResponse.solutionVersionArn(); System.out.println("Solution version ARN: " + solutionVersionArn); DescribeSolutionVersionRequest describeSolutionVersionRequest = DescribeSolutionVersionRequest.builder() .solutionVersionArn(solutionVersionArn) .build(); maxTime = Instant.now().getEpochSecond() + 3 * 60 * 60; while (Instant.now().getEpochSecond() < maxTime) { // Use the solution version ARN to get the solution version status. solutionVersionStatus = personalizeClient.describeSolutionVersion(describeSolutionVersionRequest).solutionVersion().status(); System.out.println("Solution version status: " + solutionVersionStatus); if (solutionVersionStatus.equals("ACTIVE") || solutionVersionStatus.equals("CREATE FAILED")) { break; } try { Thread.sleep(waitInMilliseconds); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } return solutionVersionArn; } } catch(PersonalizeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }

要检查当前解决方案版本状态,请调用 DescribeSolutionVersion 操作并传递从 CreateSolutionVersion 操作返回的解决方案版本的 ARN。当statusACTIVE,您可以使用 Amazon Personalize 提供的指标评估它。有关更多信息,请参阅第 4 步:使用指标评估解决方案版本。如果由于错误而未完成培训,则不会向您收取培训费用。

如果您的解决方案版本的状态为 CREATE_IN_PROGREST,则可以使用StopSolutionVersionCreation操作停止解决方案版本创建过程。请参阅 停止创建解决方案版本