【问题标题】:How to specify hyperparameter configuration to enable HPO in Amazon Personalize?如何指定超参数配置以在 Amazon Personalize 中启用 HPO?
【发布时间】:2022-08-19 00:37:49
【问题描述】:

我们是否需要在 algorithmHyperParameters 和 algorithmHyperParameterRanges 中都指定超参数?如果是,那么我们是否应该在 algorithmHyperParameters 中指定一个值(根据文档为字符串),但在 algorithmHyperParameterRanges 中指定一个范围(如果是整数值超参数,则为整数)?

例如:Similar-Items 配方有一个整数值超参数 item_id_hidden_​​dimension。如果我使用以下解决方案配置,其中 item_id_hidden_​​dimension 仅在 algorithmHyperParameterRanges 而不是在 algorithmHyperParameters 中指定,我会收到错误:

调用 CreateSolution 操作时发生错误 (InvalidInputException):提供算法中使用的超参数:arn:aws:personalize:::algorithm/aws-similar-items

\"solution_config\": {
                        \"algorithmHyperParameters\": {},
                        \"hpoConfig\": {
                          \"algorithmHyperParameterRanges\": {
                              \"integerHyperParameterRanges\": [
                                  {
                                      \"name\": \"item_id_hidden_dimension\",
                                      \"minValue\": 30,
                                      \"maxValue\": 200
                                  }
                              ],
                            \"categoricalHyperParameterRanges\": [],
                            \"continuousHyperParameterRanges\": []
                          },
        \"hpoResourceConfig\": {
                              \"maxNumberOfTrainingJobs\": \"4\",
                              \"maxParallelTrainingJobs\": \"2\"
                          }
                        }
    }

但是,如果我使用以下解决方案配置,其中在 algorithmHyperParameterRanges 和 algorithmHyperParameters 中都指定了 item_id_hidden_​​dimension,我仍然会收到相同的错误:

调用 CreateSolution 操作时发生错误 (InvalidInputException):提供算法中使用的超参数:arn:aws:personalize:::algorithm/aws-similar-items

\"solution_config\": {
                        \"algorithmHyperParameters\": {
                            \"item_id_hidden_dimension\": \"100\"
                        },
                        \"hpoConfig\": {
                          \"algorithmHyperParameterRanges\": {
                              \"integerHyperParameterRanges\": [
                                  {
                                      \"name\": \"item_id_hidden_dimension\",
                                      \"minValue\": 30,
                                      \"maxValue\": 200
                                  }
                              ],
                            \"categoricalHyperParameterRanges\": [],
                            \"continuousHyperParameterRanges\": []
                          },
                            \"hpoResourceConfig\": {
                              \"maxNumberOfTrainingJobs\": \"4\",
                              \"maxParallelTrainingJobs\": \"2\"
                          }
                        }
                    }

    标签: amazon-web-services amazon-personalize


    【解决方案1】:

    这是由文档中的错误引起的。超参数名称应为item_id_hidden_dim item_metadata_hidden_dim(注意它们是dim 而不是dimension,如文档所述)。

    这可以通过调用DescribeRecipe API 来确认类似项目配方的algorithmArn,然后调用DescribeAlgorithm API 来获取算法的详细信息。

    import boto3
    import json
    
    personalize = boto3.client('personalize')
    
    response = personalize.describe_recipe(recipeArn = 'arn:aws:personalize:::recipe/aws-similar-items')
    print(json.dumps(response['recipe'], indent=2, default=str))
    
    {
      "name": "aws-similar-items",
      "recipeArn": "arn:aws:personalize:::recipe/aws-similar-items",
      "algorithmArn": "arn:aws:personalize:::algorithm/aws-similar-items",
      "featureTransformationArn": "arn:aws:personalize:::feature-transformation/similar-items",
      "status": "ACTIVE",
      "description": "Predicts items similar to a given item based on co-occurrence of items in the user-item interactions dataset and item metadata in the item dataset.",
      "creationDateTime": "2019-06-10 00:00:00+00:00",
      "recipeType": "RELATED_ITEMS",
      "lastUpdatedDateTime": "2022-08-17 00:25:42.935000+00:00"
    }
    
    algo_arn = response['recipe']['algorithmArn']
    response = personalize.describe_algorithm(algorithmArn = algo_arn)
    print(json.dumps(response['algorithm'], indent=2, default=str))
    
    {
      "name": "aws-similar-items",
      "algorithmArn": "arn:aws:personalize:::algorithm/aws-similar-items",
      "algorithmImage": {
        "name": "Item Similarity"
      },
      "defaultHyperParameters": {
        "item_id_hidden_dim": "100",
        "item_metadata_hidden_dim": "100"
      },
      "defaultHyperParameterRanges": {
        "integerHyperParameterRanges": [
          {
            "name": "item_id_hidden_dim",
            "minValue": 30,
            "maxValue": 200,
            "isTunable": true
          },
          {
            "name": "item_metadata_hidden_dim",
            "minValue": 30,
            "maxValue": 200,
            "isTunable": true
          }
        ],
        "continuousHyperParameterRanges": [],
        "categoricalHyperParameterRanges": []
      },
      "defaultResourceConfig": {
        "maxNumberOfTrainingJobs": "20",
        "maxParallelTrainingJobs": "5"
      },
      "trainingInputMode": "File",
      "creationDateTime": "2019-06-10 00:00:00+00:00",
      "lastUpdatedDateTime": "2022-08-17 00:24:41.307000+00:00"
    }
    

    请注意上面最后一个响应中的超参数名称。

    【讨论】:

      猜你喜欢
      • 2022-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      • 2017-06-26
      相关资源
      最近更新 更多