AWS SageMaker ML DevOps 工具/架构 - Kubeflow?

Posted

技术标签:

【中文标题】AWS SageMaker ML DevOps 工具/架构 - Kubeflow?【英文标题】:AWS SageMaker ML DevOps tooling / architecture - Kubeflow? 【发布时间】:2021-03-19 07:24:21 【问题描述】:

我的任务是为一家中型公司定义用于 ML 开发的 AWS 工具。假设有十几个 ML 工程师和其他熟悉无服务器(lambdas 和框架)的 DevOps 人员。主要问题是:a)什么是允许与 ML 开发相关的主要任务(创建、训练、拟合模型、数据预处理、超参数优化、作业管理、包装无服务器服务、收集模型指标等)的架构),b) 可用于打包和部署事物的主要工具是什么,以及 c) 用于它的开发工具(IDE、SDK、“框架”)是什么? 我只想暂时搁置 Jupyter 笔记本。 Jupyter 笔记本非常适合概念验证,也是最接近 PowerPoint 的管理工具……但是在考虑可部署的代码单元时,我遇到了笔记本的问题。 我的直觉指向一个初步的目标架构,有 5 个部分:

1 - 具有支持基本模型操作(创建空白、创建预训练、训练、测试/拟合等)的 ML 模型的“核心”。我在这里预见到核心 Python 脚本 - 没问题。

2-(可选)执行超参数优化和/或模型版本控制的“容器化集合”

3- 一个'contained-unit-of-Python-scripts-around-models',它公开一个 API,进行作业管理并结合数据预处理。这也会读取和写入 S3 存储桶。

4- 具有高级 API(在 Python 中)的“无服务器层”。它与上面的#3 和/或#1 对话。

5- 一些容器或捆绑的东西,它们将从 Git 解压文件并将它们部署到各种 AWS 服务上,从前 3 点创建东西。

如您所见,我的术语相当模糊:) 如果有人可以具体说明会有所帮助的术语。 我的直觉和初步阅读表明,答案可能包括本地 IDE,如 PyCharm 或 Anaconda 或基于云的 IDE(这些是什么?-请不要提及笔记本)。 我不太清楚的一点是#5。候选人包括适用于 Kubeflow 管道的 Amazon SageMaker 组件和/或适用于 Kubeflow 管道的 Amazon SageMaker 组件和/或适用于 SageMaker 的 AWS Step Functions DS 开发工具包。然而,我不清楚他们如何执行#5。 Kubeflow 看起来很有趣,但它有足够的采用率还是会在 2 年内消亡?适用于 Kubeflow 管道的 Amazon SageMaker 组件、适用于 Kubeflow 管道的 Amazon SageMaker 组件和适用于 SageMaker 的 AWS Step Functions DS 开发工具包是否相互排斥?他们每个人如何帮助“容器化事物”以及基本的供应和部署任务?

【问题讨论】:

【参考方案1】:

这是一个很长的问题,当您考虑为生产设计 ML 基础架构时,这些事情完全有道理。因此,机器学习过程的成熟度分为三个级别。

1- CI/CDeployment:在这个 docker 镜像中,将经历构建、测试和将版本化的训练镜像推送到注册表等阶段。您还可以在这些中执行训练,并可以使用 git 引用存储版本化模型。

2- 持续训练:这里我们处理 ML Pipeline。使用新数据重新训练模型的过程自动化。当您必须使用新数据或新实现运行整个 ML 管道时,它会变得非常有用。

实施工具:Kubeflow 管道、Sagemaker、Nuclio

3- 持续交付:在哪里??在云端还是在边缘?在云端,您可以使用 KF 服务或使用带有 kubeflow 管道的 sage maker,并通过 Kubeflow 使用 sagemaker 部署模型。

Sagemaker 和 Kubeflow 以某种方式提供了相同的功能,但它们各自都有其独特的功能。 Kubeflow 具有 kubernetes、管道、可移植性、缓存和工件的能力,而 Sagemaker 具有托管基础设施和从 0 扩展能力以及 Athena 或 Groundtruth 等 AWS ML 服务的能力。

解决方案:

Kubeflow 管道独立 + AWS Sagemaker(培训+服务模型)+ Lambda 以从 S3 或 Kinesis 触发管道。

需要基础设施。

-Kubernettess cluster (Atleast 1 m5)
-MinIo or S3 
-Container registry
-Sagemaker credentials
-mysql or RDS  
-Loadbalancer
-Ingress for using kubeflow SDK

你又一次用一个问题问了我一年的旅程。如果你有兴趣让我们联系:)

权限:

Kube --> registry (Read)
Kube --> S3 (Read, Write)
Kube --> RDS (Read, Write)
Lambda --> S3 (Read)
Lambda --> Kube (API Access) 
Sagemaker --> S3, Registery

一个很好的入门指南

https://github.com/kubeflow/pipelines/tree/master/manifests/kustomize/env/aws

https://aws.amazon.com/blogs/machine-learning/introducing-amazon-sagemaker-components-for-kubeflow-pipelines/

https://github.com/shashankprasanna/kubeflow-pipelines-sagemaker-examples/blob/master/kfp-sagemaker-custom-container.ipynb

【讨论】:

以上是关于AWS SageMaker ML DevOps 工具/架构 - Kubeflow?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 aws 区域错误“ValueError:必须使用 SageMaker 支持的区域设置本地 AWS 配置”

如何将 AWS SageMaker 提供给组织外部的人员使用?

我们如何在 AWS Sagemaker 推理中添加复杂的预处理

AWS Sagemaker Spark S3 访问问题

Sagemaker批处理转换作业-输入数据位置

如何在等待响应时增加 AWS Sagemaker 调用超时