

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

# 超參數和 HPO
<a name="customizing-solution-config-hpo"></a>

**重要**  
根據預設，所有新解決方案都會使用自動訓練。透過自動訓練，您會在解決方案處於作用中狀態時產生訓練成本。為了避免不必要的成本，您可以在完成後[更新解決方案](updating-solution.md)以關閉自動訓練。如需訓練成本的資訊，請參閱 [Amazon Personalize 定價](https://aws.amazon.com/personalize/pricing/)。

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

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

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

不同的配方使用不同的超參數。如需可用的超參數，請參閱[選擇配方](working-with-predefined-recipes.md)中的個別配方。

## 啟用超參數最佳化
<a name="hpo-tuning"></a>

超參數最佳化 (HPO) 或調校是針對特定學習目標選擇最佳超參數的任務。透過使用來自指定可能性範圍的不同值以執行許多訓練任務，來決定最佳超參數。

使用 [User-Personalization-v2](native-recipe-user-personalization-v2.md) 和 [Personalized-Ranking-v2](native-recipe-personalized-ranking-v2.md)，如果您開啟自動訓練，Amazon Personalize 會每 90 天自動執行 HPO。如果沒有自動訓練，則不會發生 HPO。對於所有其他配方，您必須啟用 HPO。若要使用 HPO，請將 `performHPO` 設定為 `true`，並包含 `hpoConfig` 物件。

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

下列程式碼說明如何使用適用於 Python 的 SDK (Boto3) 建立已啟用 HPO 的解決方案。範例中的解決方案使用 [使用者個人化配方](native-recipe-new-item-USER_PERSONALIZATION.md)配方，並將 HPO 設定為 `true`。此程式碼提供 和 `hidden_dimension`和 `categoricalHyperParameterRanges` 的值`integerHyperParameterRanges`。`continousHyperParameterRange` 是空的， 會`hpoResourceConfig`設定 `maxNumberOfTrainingJobs`和 `maxParallelTrainingJobs`。

```
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 的詳細資訊，請參閱[自動模型調校](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning.html)。

## 檢視超參數
<a name="viewing-hyperparameters"></a>

您可以呼叫 [DescribeSolution](API_DescribeSolution.md)操作來檢視解決方案的超參數。下列範例顯示`DescribeSolution`輸出。建立解決方案版本 （訓練模型） 之後，您也可以使用 [DescribeSolutionVersion](API_DescribeSolutionVersion.md)操作檢視超參數。

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