在批处理转换作业中调用最新的Sagemaker模型

0

【以下的问题经过翻译处理】 如何让负责批量推理作业的Lambda自动使用最新的Sagemaker训练模型? 模型名称为'forecasting-deepar-2022-05-20-22-23-20-225'。

Lambda代码:

如果文件中包含'input_data_4':

def batch_transform():
    transformer = Transformer(
        model_name = 'forecasting-deepar-2022-05-20-22-23-20-225',
        instance_count = 2,
        instance_type = 'ml.m5.xlarge',
        assemble_with = 'Line',
        output_path = output_data_path,
        base_transform_job_name ='daily-output-predictions-to-s3',
        #sagemaker_session = sagemaker.session.Session,
        accept = 'application/jsonlines')
    transformer.transform(data = input_data_path, 
                            content_type = 'application/jsonlines', 
                            split_type = 'Line',
                            wait=False, 
                            logs=True)
    #Waits for the Pipeline Transform Job to finish.
    print('Batch Transform Job Created successfully!')
batch_transform()
profile picture
专家
已提问 1 年前28 查看次数
1 回答
0

【以下的回答经过翻译处理】 虽然你可以简单地使用boto3.client("sagemaker").list_models(...)(它可以按创建时间排序)实现这一点,但我不建议这样做。原因是,通常这会列出SageMaker中的所有模型——即使您今天只有一个DeepAR预测用例,将来可能会包括其他用例。您需要在API调用之后手动过滤。 一个更好的方法可能是在SageMaker模型注册表中注册您的预测模型。这将允许您注册不同的版本,并跟踪每个版本的额外元数据,如指标和批准状态。

  1. 首先创建一个模型包组来跟踪您的预测模型。
  2. 然后(当您创建SageMaker模型时)通过Model.register()将其注册为组中的新版本。
  3. 在您想要查找要使用的模型时,您可以使用list_model_packages来过滤到您特定的模型组,也可以按批准状态过滤。

因此您可以将模型包组名称设置为Lambda函数的配置环境变量,并在需要时使函数动态查找要使用的最新版本的组。

profile picture
专家
已回答 1 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则