我正在尝试运行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 追溯(最近一次通话): 在lambda_handler中的文件“ /var/task/lambda_function.py”,第96行 StoppingCondition = job ['StoppingCondition']
,对于超参数和标记我也得到相同的错误。
我试图删除这些参数,但是它们是必需的,因此这不是解决方案:
Parameter validation failed:
Missing required parameter in input: "StoppingCondition": ParamValidationError
我试图对这些变量进行硬编码,但是导致了同样的错误。
以前使用的功能完全相同,但是仅用于一些培训工作(大约5个),然后给出了此错误消息。现在它完全停止工作,并且出现相同的错误消息。知道为什么吗?
答案 0 :(得分:1)
在调用“ sm.create_training_job”之前,请删除MetricDefinitions键。为此,请从“算法规范”字典中弹出该键。
job['AlgorithmSpecification'].pop('MetricDefinitions',None)
答案 1 :(得分:0)
很难确切地说明这里出了什么问题以及为什么以前的工作的超参数计无法正常工作。也许不只是将它们传递给新工作,还可以打印出它们以进行检查?
沿这条线前进...
training_job_prefix = 'new-randomcutforest-'
...我要冒险猜测一下,并假设您正在尝试运行RCF。该算法需要的超参数记录在这里:https://docs.aws.amazon.com/sagemaker/latest/dg/rcf_hyperparameters.html