SageMaker - CloudFormation 中 SageMaker 实体的说明

Posted

技术标签:

【中文标题】SageMaker - CloudFormation 中 SageMaker 实体的说明【英文标题】:SageMaker - clarification on SageMaker entities in CloudFormation 【发布时间】:2020-03-27 08:30:19 【问题描述】:

问题

想澄清 AWS::SageMaker 中的实体。

SageMaker 模型

查看Deploy a Model on Amazon SageMaker Hosting Services 中的图表时,SageMaker 中的 模型 工件是模型训练阶段由 ML 算法 docker 容器生成的数据,并存储在 S3 存储桶中。

但是,AWS::SageMaker::Model 似乎已经捕获了一个 docker 映像以在 SageMaker 端点实例中运行推理代码。没有对 S3 存储桶中的模型数据的引用。因此想知道为什么它被称为 AWS::SageMaker::Model 以及为什么不称为 AWS::SageMaker::InferenceImage

1-1。 AWS SageMaker 中的模型 是什么?

1-2。是用于进行预测/推理的 docker 图像(算法),而不是用于运行算法的数据吗?

1-3。 AWS 是否将运行时(docker 运行时 + 用于推理的 docker 映像)称为模型?

AWS::SageMaker::Model

Type: AWS::SageMaker::Model
Properties: 
  Containers: 
    - ContainerDefinition
  ExecutionRoleArn: String
  ModelName: String
  PrimaryContainer: 
    ContainerDefinition
  Tags: 
    - Tag
  VpcConfig: 
    VpcConfig

S3 中模型数据的 SageMaker Endpoint 或 SageMaker Estimator

SageMaker Estimator 有一个参数 output_path,如 Python SDK Estimators。

用于保存训练结果(模型工件和输出文件)的 S3 位置。如果未指定,结果将存储到默认存储桶。如果具有特定名称的存储桶不存在,则估算器会在 fit() 方法执行期间创建存储桶。

对于 Python ML 环境,我们可以使用 pickle 导出数据并重新加载回模型中,如 3.4. Model persistence。我们可以为Spark ML 做同样的事情。

2-1。 SageMaker 中的等价物是什么,因为 AWS::SageMaker::Model 没有参数来引用 S3 存储桶中的数据?

2-2。能否使用 S3 存储桶中的模型数据重新创建 SageMaker Estimator?

SageMaker 估算器

我认为在 CloudFormation 中会有用于定义 SageMaker Estimator 的资源,但看起来没有。

3-1。请帮助理解是否有原因。

【问题讨论】:

【参考方案1】:

首先澄清一些概念:Amazon SageMaker 模型是对模型工件(即训练模型)、相关推理环境(即 Docker 容器)和推理源代码的引用。 Estimator 用于训练模型并输出模型使用的模型数据(即model.tar.gz)。并且模型不引用训练代码(因此不能从模型构造估计器)并且它也不引用任何推理数据:传递给端点或批量转换。

解决您的大部分问题:您可以在ContainerDefinition 上为AWS::SageMaker::Model 指定ModelDataUrl。您通常会引用从 Amazon SageMaker 训练作业输出的 model.tar.gz 的 Amazon S3 路径。

【讨论】:

以上是关于SageMaker - CloudFormation 中 SageMaker 实体的说明的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Cloudwatch 停止记录 Sagemaker?

在 sagemaker 中使用带有对象检测 API 的 tensorboard

使用 PySpark 和 Step Functions 处理 Sagemaker 作业

在 sagemaker 中进行预测之前,如何预处理输入数据?

SageMaker 无权执行:iam:PassRole

sagemaker-containers 2.6.0