配置自动训练 - Amazon Personalize

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

配置自动训练

重要

创建解决方案后,您无法更改其配置。默认情况下,所有新解决方案都使用自动训练。使用自动训练,当您的解决方案处于活动状态时,您就会产生培训费用。为避免不必要的开支,请务必在完成后删除该解决方案。有关培训费用的信息,请参阅 Amazon Personalize 定价

创建解决方案时,可以配置解决方案是否使用自动训练。您也可以配置训练频率。例如,您可以将解决方案配置为每五天创建一个新的解决方案版本。

默认情况下,所有新解决方案都使用自动训练,每 7 天创建一次新的解决方案版本。仅当您导入自上次训练以来的批量或实时交互数据时,才会进行自动训练。这包括项目交互,或者对于使用 Next-Best-Action 配方的解决方案,包括动作交互数据。自动训练会一直持续到您删除解决方案为止。

我们建议您使用自动训练。它使维护解决方案变得更加容易。它省去了解决方案从最新数据中学习所需的手动培训。如果没有自动训练,则必须手动为解决方案创建新的解决方案版本,以便从最新数据中学习。这可能会导致过时的推荐和较低的转化率。有关维护 Amazon Personalize 推荐的更多信息,请参阅维护建议相关性

您可以使用 Amazon Personalize 控制台、 AWS Command Line Interface (AWS CLI) 或 AWS 软件开发工具包配置自动训练。有关使用控制台配置自动训练的步骤,请参阅创建解决方案(控制台)

创建解决方案后,记录解决方案 ARN 以备将来使用。通过自动训练,解决方案处于活动状态后,解决方案版本将在一个版本内开始创建。如果您在一小时内手动创建解决方案版本,则该解决方案将跳过第一次自动训练。训练开始后,您可以使用版本 API 操作获取解决方案版本的 Amazon 资源名称 (ARN)。ListSolution要获取其状态,请使用DescribeSolution版本 API 操作。

当解决方案版本处于活动状态时,您就可以使用它来获取建议了。如何使用有效的解决方案版本取决于您如何获得推荐:

  • 要获得实时推荐,您可以通过 Amazon Personalize 活动部署有效的解决方案版本。您可以使用该活动为用户获取推荐。请参阅 创建市场活动

  • 对于批量建议,您可以在创建批处理推理作业或批处理区段作业时指定 ACTIVE 解决方案版本。请参阅 批量建议和用户细分(自定义资源)

指南和要求

以下是自动训练的指导方针和要求:

  • 仅当您导入自上次训练以来的批量或实时交互数据时,才会进行自动训练。这包括项目交互,或者对于使用 Next-Best-Action 配方的解决方案,包括动作交互数据。

  • 每次训练都会考虑数据集组中包含在训练中的所有数据。有关配置训练中使用的列的信息,请参见配置训练时使用的列

  • 您仍然可以手动创建解决方案版本。

  • 解决方案激活后一小时内开始自动训练。如果您在一小时内手动创建解决方案版本,则该解决方案将跳过第一次自动训练。

  • 培训计划基于培训开始日期。例如,如果您的第一个解决方案版本在晚上 7:00 开始训练,而您使用每周培训,则下一个解决方案版本将在一周后的晚上 7:00 开始训练。

  • 对于所有食谱,我们建议至少每周进行一次训练。您可以在 1 到 30 天之间指定训练频率。默认值为每 7 天一次。

    • 如果您使用 Userpersonalization-v2、用户个性化或 Next-Best-Action,则解决方案会自动更新,以考虑将新的项目或操作作为推荐。自动更新与自动训练不同。自动更新不会创建全新的解决方案版本,模型也不会从您的最新数据中学习。为了保持您的解决方案,您的培训频率仍应至少为每周一次。有关自动更新的更多信息,包括其他指导和要求,请参阅自动更新

    • 如果您使用 Trending-Now,则 Amazon Personalize 会在可配置的时间间隔内自动识别交互数据中最热门的物品。Trending-Now 可以通过批量或直播互动数据推荐自上次训练以来添加的项目。您的训练频率仍应至少为每周一次。有关更多信息,请参阅 Trending-Now 食谱

    • 如果您不使用自动更新的食谱或 Trending-Now 食谱,Amazon Personalize 只有在下次培训之后才会考虑推荐新商品。例如,如果您使用 Similar-Items 配方并每天添加新物品,则必须使用每日自动训练频率,这些物品才能在当天出现在推荐中。

配置自动训练 (AWS CLI)

以下代码向您展示了如何创建每五天自动创建一次解决方案版本的解决方案。要关闭自动训练,perform-auto-training请将设置为false

要更改训练频率,可以在schedulingExpression中修改autoTrainingConfig。表达式必须采用rate(value unit)格式。为该值指定一个介于 1 和 30 之间的数字。对于单位,请指定daydays

有关该create-solution命令的完整说明,请参见创建解决方案 (AWS CLI)

aws personalize create-solution \ --name solution name \ --dataset-group-arn dataset group ARN \ --recipe-arn recipe ARN \ --perform-auto-training \ --solution-config "{\"autoTrainingConfig\": {\"schedulingExpression\": \"rate(5 days)\"}}"

配置自动训练 (SDK)

以下代码向您展示了如何使用 AWS 软件开发工具包创建自动训练的解决方案。该解决方案每五天自动创建一个解决方案版本。要关闭自动训练,performAutoTraining请将设置为false

要更改训练频率,可以在schedulingExpression中修改autoTrainingConfig。表达式必须采用rate(value unit)格式。为该值指定一个介于 1 和 30 之间的数字。对于单位,请指定daydays

有关 CreateSolution API 操作的完整说明,请参阅创建解决方案 (AWS SDK)

SDK for Python (Boto3)
import boto3 personalize = boto3.client('personalize') create_solution_response = personalize.create_solution( name = 'solution name', recipeArn = 'recipe ARN', datasetGroupArn = 'dataset group ARN', performAutoTraining = True, solutionConfig = { "autoTrainingConfig": { "schedulingExpression": "rate(5 days)" } } ) solution_arn = create_solution_response['solutionArn'] print('solution_arn: ', solution_arn)
SDK for JavaScript v3
import { CreateSolutionCommand, PersonalizeClient, } from "@aws-sdk/client-personalize"; // create client const personalizeClient = new PersonalizeClient({ region: "REGION" }); // set the solution parameters export const solutionParam = { datasetGroupArn: "DATASET_GROUP_ARN" /* required */, recipeArn: "RECIPE_ARN" /* required */, name: "SOLUTION_NAME" /* required */, performAutoTraining: true /* optional, default is true */, solutionConfig: { autoTrainingConfig: { schedulingExpression: "rate(5 days)" /* optional, default is every 7 days */, }, }, }; export const run = async () => { try { const response = await personalizeClient.send( new CreateSolutionCommand(solutionParam) ); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();