更改 docker 映像时更新 Sagemaker 端点

Nic*_*ean 10 amazon-web-services amazon-sagemaker

我正在寻找更新 Sagemaker 端点的最简单的解决方案。我唯一想要更改的是 docker 映像(以更新代码)。

我正在计算机上构建新的 Docker 映像,然后将其上传到 ECR(我计划在不久的将来在 CI/CD 中执行此操作)。

根据我的理解,最简单的方法似乎是创建一个新的EndpointConfig,然后调用UpdateEndpointAPI将端点切换到新的配置,然后删除旧的EndpointConfig。有谁知道更简单的方法吗?或者任何人都可以确认这是最简单的方法吗?

ski*_*bee 0

我的解决方案是使用boto3 sagemaker client具有update_enpoint方法的。

这是Python中的伪代码

  1. 首先使用更新后的create_modeldocker image
session = boto3.Session()
sm_client = session.client('sagemaker')

sm_client.create_model(
            ModelName = cfg.sagemaker.ENDPOINT_NAME,
            ExecutionRoleArn = ROLE_ARN,
            PrimaryContainer = {
                'Image': AWS_IMAGE_FULLNAME,
                'ModelDataUrl': MODEL_CLOUD_PACKAGE,
            }
        )
Run Code Online (Sandbox Code Playgroud)
  1. 创建一个新的端点配置
sm_client.create_endpoint_config(
                EndpointConfigName=CONFIG_NAME,
                ProductionVariants=[{...}],
            )
Run Code Online (Sandbox Code Playgroud)
  1. 更新点
sm_client.update_endpoint(
                EndpointName=ENDPOINT_NAME,
                EndpointConfigName=CONFIG_NAME,
            )
Run Code Online (Sandbox Code Playgroud)