超參數和 HPO - Amazon Personalize

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

超參數和 HPO

重要

根據預設,所有新解決方案都會使用自動訓練。透過自動訓練,您會在解決方案處於作用中狀態時產生訓練成本。為了避免不必要的成本,您可以在完成後更新解決方案以關閉自動訓練。如需訓練成本的相關資訊,請參閱 Amazon Personalize 定價

您可以在訓練之前指定超參數,以最佳化特定使用案例的訓練模型。這與模型參數不同,模型參數的值在訓練過程中決定。

使用 algorithmHyperParameters 金鑰 (這是傳送到 CreateSolution 操作之 SolutionConfig 物件的一部分) 來指定超參數。

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 會HPO每 90 天自動執行一次。如果沒有自動訓練,則不會HPO發生。對於所有其他配方,您必須啟用 HPO。若要使用 HPO,請將 performHPO設定為 true,並包含 hpoConfig 物件。

超參數可以是分類、持續或整數值。hpoConfig 物件擁有對應到每個類型的金鑰,您在其中指定超參數及其範圍。您必須提供請求中的每種類型,但如果配方沒有 類型的參數,則可以將其保留空白。例如,User-Personalization 沒有連續類型的可調校超參數。因此,對於 continousHyperParameterRange,您會傳遞空陣列。

下列程式碼說明如何使用 SDK for Python (Boto3) 建立HPO已啟用 的解決方案。範例中的解決方案使用 使用者個人化配方配方,並將 HPO設定為 true。此程式碼提供 和 hidden_dimensioncategoricalHyperParameterRanges 的值integerHyperParameterRangescontinousHyperParameterRange 是空的, 會hpoResourceConfig設定 maxNumberOfTrainingJobsmaxParallelTrainingJobs

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" } }