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 实体的说明的主要内容,如果未能解决你的问题,请参考以下文章
在 sagemaker 中使用带有对象检测 API 的 tensorboard
使用 PySpark 和 Step Functions 处理 Sagemaker 作业