

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

# 自動トレーニングの設定
<a name="solution-config-auto-training"></a>

**重要**  
デフォルトでは、すべての新しいソリューションで自動トレーニングが使用されます。自動トレーニングでは、ソリューションがアクティブな間はトレーニングコストが発生します。不要なコストを避けるために、完了したら[ソリューションを更新](updating-solution.md)して自動トレーニングを無効にすることができます。トレーニングのコストの詳細については、「[Amazon Personalize の料金](https://aws.amazon.com/personalize/pricing/)」を参照してください。

ソリューションを作成するときに、ソリューションが自動トレーニングを使用するかどうかを設定できます。トレーニング頻度を設定することもできます。例えば、5 日ごとに新しいソリューションバージョンを作成するようにソリューションを設定できます。

デフォルトでは、すべての新しいソリューションは自動トレーニングを使用して 7 日ごとに新しいソリューションバージョンを作成します。自動トレーニングは、前回のトレーニング以降に一括またはリアルタイムのインタラクションデータをインポートした場合にのみ発生します。これには、アイテムインタラクション、または Next-Best-Action レシピを使用するソリューションの場合はアクションインタラクションデータが含まれます。自動トレーニングは、ソリューションを削除するまで続行されます。

自動トレーニングを使用することをお勧めします。これにより、ソリューションの維持が容易になります。これにより、ソリューションが最新のデータから学習するために必要な手動トレーニングが削除されます。自動トレーニングなしの場合、最新のデータから学習するために、ソリューションの新しいソリューションバージョンを手動で作成する必要があります。これにより、レコメンデーションが古くなり、コンバージョン率が低下する可能性があります。Amazon Personalize レコメンデーションの維持の詳細については、「[レコメンデーションの関連性の維持](maintaining-relevance.md)」を参照してください。

Amazon Personalize コンソール、AWS Command Line Interface (AWS CLI)、または AWS SDK を使用して自動トレーニングを設定できます。コンソールで自動トレーニングを設定する手順については、「[ソリューションの作成 (コンソール)](create-solution.md#configure-solution-console)」を参照してください。

ソリューションを作成したら、今後の使用のためにソリューション ARN を記録します。自動トレーニングでは、ソリューションバージョンの作成は、ソリューションが ACTIVE になってから 1 時間以内に開始されます。1 時間以内にソリューションバージョンを手動で作成した場合、ソリューションは最初の自動トレーニングをスキップします。トレーニングが開始されると、[ListSolutionVersions](https://docs.aws.amazon.com/personalize/latest/dg/API_ListSolutionVersions.html) API オペレーションを使用してソリューションバージョンの Amazon リソースネーム (ARN) を取得できます。ステータスを取得するには、[DescribeSolutionVersion](https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeSolutionVersion.html) API オペレーションを使用します。

**Topics**
+ [ガイドラインと要件](#auto-training-guidelines)
+ [自動トレーニングの設定 (AWS CLI)](#configure-solution-auto-training-cli)
+ [自動トレーニングの設定 (SDK)](#configure-solution-auto-training-sdk)

## ガイドラインと要件
<a name="auto-training-guidelines"></a>

自動トレーニングのガイドラインと要件は次のとおりです。
+  自動トレーニングは、前回のトレーニング以降に一括またはリアルタイムのインタラクションデータをインポートした場合にのみ発生します。これには、アイテムインタラクション、または Next-Best-Action レシピを使用するソリューションの場合はアクションインタラクションデータが含まれます。
+ 各トレーニングでは、トレーニングに含めるデータセットグループ内のすべてのデータを考慮します。トレーニングに使用される列の設定については、「[トレーニング時に使用する列の設定](custom-config-columns.md)」を参照してください。
+ ソリューションバージョンは手動で作成できます。
+ 自動トレーニングは、ソリューションがアクティブになってから 1 時間以内に開始されます。1 時間以内にソリューションバージョンを手動で作成した場合、ソリューションは最初の自動トレーニングをスキップします。
+ トレーニングのスケジュールは、トレーニング開始日に基づいています。例えば、最初のソリューションバージョンが午後 7 時にトレーニングを開始し、毎週のトレーニングを使用する場合、次のソリューションバージョンは 1 週間後の午後 7 時にトレーニングを開始します。
+ すべてのレシピについて、少なくとも毎週のトレーニング頻度を推奨します。1～30 日の間のトレーニング頻度を指定できます。デフォルトは 7 日ごとです。
  +  User-Personalization-v2、User-Personalization または Next-Best-Action を使用すると、ソリューションは自動的に更新され、レコメンデーションに新しいアイテムやアクションが考慮されます。自動更新は、自動トレーニングとは異なります。自動更新では、まったく新しいソリューションバージョンは作成されず、モデルは最新のデータから学習しません。ソリューションを維持するには、トレーニング頻度を少なくとも週 1 回にする必要があります。追加のガイドラインや要件など、自動更新の詳細については、「[自動更新](use-case-recipe-features.md#automatic-updates)」を参照してください。
  + Trending-Now を使用すると、Amazon Personalize は、設定可能な時間間隔で、インタラクションデータ内の最もトレンドの高い項目を自動的に識別します。Trending-Now は、最後のトレーニング以降に追加されたアイテムを、一括またはストリーミングインタラクションデータを通じて推奨することができます。トレーニング頻度を少なくとも週 1 回にする必要があります。詳細については、「[Trending-Now レシピ](native-recipe-trending-now.md)」を参照してください。
  + 自動更新のレシピや Trending-Now レシピを使用しない場合、Amazon Personalize は次回のトレーニングの後にのみ新しいアイテムをレコメンデーションの対象として考慮します。例えば、Similar-Items レシピを使用して毎日新しいアイテムを追加する場合、その日にレコメンデーションに表示されるには、これらのアイテムに毎日の自動トレーニング頻度を使用する必要があります。

## 自動トレーニングの設定 (AWS CLI)
<a name="configure-solution-auto-training-cli"></a>

次のコードは、5 日ごとにソリューションバージョンを自動的に作成するソリューションを作成する方法を示しています。自動トレーニングを無効にするには、`perform-auto-training` を `false` に設定します。

トレーニング頻度を変更するには、`autoTrainingConfig` の `schedulingExpression` を変更します。式は `rate(value unit)` 形式である必要があります。値には、1～30 の数値を指定します。単位には、`day` または `days` を指定します。

`create-solution` コマンドの詳細については、「[ソリューションの作成 (AWS CLI)](create-solution.md#configure-solution-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)
<a name="configure-solution-auto-training-sdk"></a>

次のコードは、AWS SDK で自動トレーニングを使用するソリューションを作成する方法を示しています。このソリューションは、5 日ごとにソリューションバージョンを自動的に作成します。自動トレーニングを無効にするには、`performAutoTraining` を `false` に設定します。

トレーニング頻度を変更するには、`autoTrainingConfig` の `schedulingExpression` を変更します。式は `rate(value unit)` 形式である必要があります。値には、1～30 の数値を指定します。単位には、`day` または `days` を指定します。

CreateSolution API オペレーションの詳細については、「[ソリューションの作成 (AWS SDK)](create-solution.md#configure-solution-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();
```

------

次の Python コードを使用して、自動トレーニングが開始されるのを待つことができます。`wait_for_training_to_start` メソッドは、最初のソリューションバージョンの ARN を返します。

```
import time
import boto3

def wait_for_training_to_start(new_solution_arn):
    max_time = time.time() + 3 * 60 * 60    # 3 hours
    while time.time() < max_time:
        list_solution_versions_response = personalize.list_solution_versions(
            solutionArn=new_solution_arn
        )
        solution_versions = list_solution_versions_response.get('solutionVersions', [])
        if solution_versions:
            new_solution_version_arn = solution_versions[0]['solutionVersionArn']
            print(f"Solution version ARN: {new_solution_version_arn}")
            return new_solution_version_arn
        else:
            print(f"Training hasn't started yet. Training will start within the next hour.")
            time.sleep(60)


personalize = boto3.client('personalize')

solution_arn = "{{solution_arn}}"
solution_version_arn = wait_for_training_to_start(solution_arn)
```