ハイパーパラメータおよび HPO - Amazon Personalize

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

ハイパーパラメータおよび HPO

重要

ソリューションを作成した後は、その設定を変更することはできません。デフォルトでは、すべての新しいソリューションで自動トレーニングが使用されます。自動トレーニングでは、ソリューションがアクティブになっている間にトレーニングコストが発生します。不要なコストを避けるため、作業が終了したらソリューションを削除してください。トレーニングコストの詳細については、「Amazon Personalize の料金」を参照してください。

トレーニングの前にハイパーパラメータを指定して、トレーニング済みモデルを特定のユースケースに合わせて最適化します。トレーニングプロセス中に値が決まるモデルパラメータとは対照的です。

ハイパーパラメータは、CreateSolution オペレーションに渡された SolutionConfig オブジェクトの一部である algorithmHyperParameters キーを使用して指定します。

CreateSolution リクエストの簡約版は以下のとおりです。この例には、solutionConfig オブジェクトが含まれています。solutionConfig を使用してレシピのデフォルトパラメータを上書きします。

{ "name": "string", "recipeArn": "string", "eventType": "string", "solutionConfig": { "optimizationObjective": { "itemAttribute": "string", "objectiveSensitivity": "string" }, "eventValueThreshold": "string", "featureTransformationParameters": { "string" : "string" }, "algorithmHyperParameters": { "string" : "string" }, "hpoConfig": { "algorithmHyperParameterRanges": { ... }, "hpoResourceConfig": { "maxNumberOfTrainingJobs": "string", "maxParallelTrainingJobs": "string" } }, }, }

異なるレシピは異なるハイパーパラメータを使用します。利用可能なハイパーパラメータについては、「レシピの選択」で個々のレシピを参照してください。

ハイパーパラメータ最適化の有効化

ハイパーパラメータの最適化 (HPO) またはチューニングは、特定の学習目標に最適なハイパーパラメータを選択するタスクです。最適なハイパーパラメータは、指定された可能性の範囲内から異なる値を使用して多くのトレーニングジョブを実行することで決定されます。

User-Personalization-v2Personalized-Ranking-v2 では、自動トレーニングを有効にすると、Amazon Personalize は 90 日ごとに自動的に HPO を実行します。自動トレーニングがないと、HPO は発生しません。他のすべてのレシピでは、HPO を有効にする必要があります。HPO を使用するには、performHPOtrue に設定し、hpoConfig オブジェクトを含めます。

ハイパーパラメータのタイプは、カテゴリ別、継続的、または整数値のいずれかです。hpoConfig オブジェクトにはこれらの各タイプに該当するキーがあります。ここでは、ハイパーパラメータおよび範囲を指定します。リクエストでは各タイプを指定する必要がありますが、レシピに特定のタイプのパラメーターがない場合は空のままにしておくことができます。例えば、User-Personalization には連続型のチューニング可能なハイパーパラメータはありません。そのため、continousHyperParameterRange には空の配列を渡すことができます。

次のコードは、SDK for Python (Boto3) を使用して HPO を有効にしたソリューションを作成する方法を示しています。この例のソリューションは User-Personalization レシピ レシピを使用し、HPO を true に設定しています。このコードは、hidden_dimensioncategoricalHyperParameterRangesintegerHyperParameterRanges に値を与えます。continousHyperParameterRange は空で、hpoResourceConfigmaxNumberOfTrainingJobsmaxParallelTrainingJobs を設定します。

import boto3 personalize = boto3.client('personalize') create_solution_response = personalize.create_solution( name = "solution name", datasetGroupArn = 'arn:aws:personalize:region:accountId:dataset-group/datasetGroupName', recipeArn = 'arn:aws:personalize:::recipe/aws-user-personalization', performHPO = True, solutionConfig = { "algorithmHyperParameters": { "hidden_dimension": "55" }, "hpoConfig": { "algorithmHyperParameterRanges": { "categoricalHyperParameterRanges": [ { "name": "recency_mask", "values": [ "true", "false"] } ], "integerHyperParameterRanges": [ { "name": "bptt", "minValue": 2, "maxValue": 22 } ], "continuousHyperParameterRanges": [ ] }, "hpoResourceConfig": { "maxNumberOfTrainingJobs": "4", "maxParallelTrainingJobs": "2" } } } )

HPO の詳細については、「モデルの自動チューニング」を参照してください。

ハイパーパラメータの表示

DescribeSolution 操作を呼び出すことによって、ソリューションのハイパーパラメータを表示できます。次の例は DescribeSolution 出力を示しています。ソリューションバージョンの作成 (モデルのトレーニング) 後に、DescribeSolutionVersion 操作を使用してハイパーパラメータを表示することもできます。

{ "solution": { "name": "hpo_coonfig_solution", "solutionArn": "arn:aws:personalize:region:accountId:solution/solutionName", "performHPO": true, "performAutoML": false, "recipeArn": "arn:aws:personalize:::recipe/aws-user-personalization", "datasetGroupArn": "arn:aws:personalize:region:accountId:dataset-group/datasetGroupName", "eventType": "click", "solutionConfig": { "hpoConfig": { "hpoResourceConfig": { "maxNumberOfTrainingJobs": "4", "maxParallelTrainingJobs": "2" }, "algorithmHyperParameterRanges": { "integerHyperParameterRanges": [ { "name": "training.bptt", "minValue": 2, "maxValue": 22 } ], "continuousHyperParameterRanges": [], "categoricalHyperParameterRanges": [ { "name": "data.recency_mask", "values": [ "true", "false" ] } ] } }, "algorithmHyperParameters": { "hidden_dimension": "55" } }, "status": "ACTIVE", "creationDateTime": "2022-07-08T12:12:48.565000-07:00", "lastUpdatedDateTime": "2022-07-08T12:12:48.565000-07:00" } }