【问题标题】:ValidationException error when calling the CreateTrainingJob operation: You can’t override the metric definitions for Amazon SageMaker algorithms调用 CreateTrainingJob 操作时出现 ValidationException 错误:您无法覆盖 Amazon SageMaker 算法的指标定义
【发布时间】:2020-04-13 15:09:01
【问题描述】:

我正在尝试运行 Lambda 函数来创建 SageMaker 训练作业,使用的参数与之前的另一个训练作业相同。这是我的 lambda 函数:

def lambda_handler(event, context):
    training_job_name = os.environ['training_job_name']
    sm = boto3.client('sagemaker')
    job = sm.describe_training_job(TrainingJobName=training_job_name)

    training_job_prefix = 'new-randomcutforest-'
    training_job_name = training_job_prefix+str(datetime.datetime.today()).replace(' ', '-').replace(':', '-').rsplit('.')[0]

    print("Starting training job %s" % training_job_name)

    resp = sm.create_training_job(
            TrainingJobName=training_job_name, 
            AlgorithmSpecification=job['AlgorithmSpecification'], 
            RoleArn=job['RoleArn'],
            InputDataConfig=job['InputDataConfig'], 
            OutputDataConfig=job['OutputDataConfig'],
            ResourceConfig=job['ResourceConfig'], 
            StoppingCondition=job['StoppingCondition'], 
            VpcConfig=job['VpcConfig'],
            HyperParameters=job['HyperParameters'] if 'HyperParameters' in job else {},
            Tags=job['Tags'] if 'Tags' in job else [])
[...]

我不断收到以下错误消息:

调用 CreateTrainingJob 操作时发生错误 (ValidationException):您无法覆盖 Amazon SageMaker 算法的指标定义。请在不指定指标定义的情况下重试请求。:ClientError 回溯(最近一次通话最后): 文件“/var/task/lambda_function.py”,第 96 行,在 lambda_handler 中 StoppingCondition=job['StoppingCondition']

,超参数和标签出现同样的错误。

我试图删除这些参数,但它们是必需的,所以这不是解决方案:

Parameter validation failed:
Missing required parameter in input: "StoppingCondition": ParamValidationError

我尝试对这些变量进行硬编码,但它导致了同样的错误。

完全相同的功能曾经可以工作,但仅适用于少数训练作业(大约 5 个),然后它给出了此错误消息。现在它完全停止工作,并且出现相同的错误消息。知道为什么吗?

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-sagemaker


    【解决方案1】:

    在调用“sm.create_training_job”之前,删除 MetricDefinitions 键。为此,请从“AlgorithmSpecification”字典中弹出该键。

    job['AlgorithmSpecification'].pop('MetricDefinitions',None)
    

    【讨论】:

      【解决方案2】:

      很难确切地说出这里出了什么问题,以及为什么你之前工作的超参数不起作用。也许您可以将它们打印出来以便检查它们,而不是仅仅将它们传递给新作业?

      走这条路……

          training_job_prefix = 'new-randomcutforest-'
      

      ...我将冒险猜测并假设您正在尝试运行 RCF。该算法所需的超参数记录在此处:https://docs.aws.amazon.com/sagemaker/latest/dg/rcf_hyperparameters.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多