超參數和 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) 或調校是針對特定學習目標選擇最佳超參數的任務。透過使用來自指定可能性範圍的不同值以執行許多訓練任務,來決定最佳超參數。

透過使用者個人化 V2 和個人化排名第 2 版,如果您開啟自動訓練,Amazon Personalize 人化會每 90 天自動執行一次 HPO。如果沒有自動訓練,就不會發生 HPO。對於所有其他食譜,您必須啟用 HPO。若要使用 HPO,請將 performHPO 設定為 true,並包含 hpoConfig 物件。

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

下面的代碼演示了如何創建一個解決方案與 HPO 使用的 SDK 啟用了 Python(Boto3)。範例中的解決方案使用用戶個性化配方配方,並將 HPO 設定為true。程式碼會為hidden_dimension和提供值integerHyperParameterRangescategoricalHyperParameterRangescontinousHyperParameterRange是空的,而且會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" } }