繁体   English   中英

在不更新配置的情况下将新的 model 部署到 sagemaker 端点?

[英]Deploying a new model to a sagemaker endpoint without updating the config?

我想将新的 model 部署到现有的 AWS SageMaker 终端节点。 model 由不同的管道训练并在 S3 中存储为 mode.tar.gz。 sagemaker 端点配置指向此作为 model 数据 URL。然而,Sagemaker 不会重新加载 model,我不知道如何说服它这样做。

我想将新的 model 部署到 AWS SageMaker 终端节点。 model 由不同的管道训练并在 S3 中存储为 mode.tar.gz。 我使用 AWS CDK 配置了 Sagemaker Endpoint。 现在,在训练管道中,我想让数据科学家有选择地将他们新训练的 model 上传到端点进行测试。 我不想创建新的 model 或端点配置。 另外,我不想更改基础设施 (AWS CDK) 代码。

model 被上传到 sagemaker 端点配置用作model_data_url的 S3 位置。 因此它应该使用新的 model。但它不会加载它。 我知道 Sagemaker 在容器内缓存模型,但不知道如何强制新加载。

本文档建议将 model tarball 存储在同一个 S3 文件夹中,并更改代码以调用 model。这对我的应用程序来说是不可能的。 一旦TargetModel参数不存在,我不希望 Sagemaker 默认为旧的 model。

这是将 model 上传到 S3 后我目前正在做的事情。 即使端点转换为更新state,它也不会强制重新加载 model:


def update_sm_endpoint(endpoint_name: str) -> Dict[str, Any]:
    """Forces the sagemaker endpoint to reload model from s3"""
    sm = boto3.client("sagemaker")
    return sm.update_endpoint_weights_and_capacities(
        EndpointName=endpoint_name,
        DesiredWeightsAndCapacities=[
            {"VariantName": "main", "DesiredWeight": 1},
        ],
    )

有任何想法吗?

如果要修改在 SageMaker 端点中调用的 model,则必须创建新的 model object 和新的端点配置。 然后调用update_endpoint这不会更改端点的名称。

对您的问题和 SageMaker 文档的评论:

  • 您提到的文档( “本文档建议将 model tarball 存储在同一个 S3 文件夹中,并更改代码以调用模型” )适用于 SageMaker 多模型端点,这是一种将多个模型存储在同一文件夹中的服务端点并行。 这不是你需要的。 您需要一个单模型 SageMaker 端点,并且您使用

  • 此外,您提到的sm.update_endpoint_weights_and_capacities不需要您想要的(除非您希望从 model 1 到 model 2 的流量逐步推出)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM