在批处理转换作业中调用最新的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
EXPERTE
gefragt vor 9 Monaten24 Aufrufe
1 Antwort
0

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

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

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

profile picture
EXPERTE
beantwortet vor 9 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen