数以万计的 AWS 客户使用 AWS 机器学习 (ML) 服务,通过完全托管的基础设施和工具来加速他们的 ML 开发。 对于一直在本地开发 ML 模型(例如本地桌面)的客户,他们希望将其遗留 ML 模型迁移到 AWS 云,以充分利用 AWS 上提供的最全面的 ML 服务、基础设施和实施资源集.
期限 遗留代码 指的是开发为在本地桌面上手动运行的代码,而不是使用云就绪 SDK 构建的,例如 适用于Python的AWS开发工具包(Boto3) or 亚马逊SageMaker Python SDK. 换句话说,这些遗留代码并未针对云部署进行优化。 迁移的最佳实践是使用 亚马逊SageMaker API 或 SageMaker Python 开发工具包。 但是,在某些情况下,拥有大量遗留模型的组织可能没有时间或资源来重写所有这些模型。
在这篇文章中,我们分享了一种可扩展且易于实施的方法,可将遗留 ML 代码迁移到 AWS 云以使用 亚马逊SageMaker 和 AWS步骤功能,需要最少的代码重构。 您可以轻松扩展此解决方案以添加更多功能。 我们展示了两个不同的角色,一个数据科学家和一个 MLOps 工程师,如何协作提升和转移数百个遗留模型。
解决方案概述
在这个框架中,我们在容器中运行遗留代码作为 SageMaker处理 工作。 SageMaker 在处理容器内运行遗留脚本。 处理容器镜像可以是 SageMaker 内置镜像,也可以是自定义镜像。 处理作业的底层基础设施完全由 SageMaker 管理。 无需更改遗留代码。 只需要熟悉创建 SageMaker 处理作业即可。
我们假设有两个角色参与:数据科学家和 MLOps 工程师。 数据科学家负责将代码移至 SageMaker,方法是手动或通过从代码存储库(例如 AWS 代码提交. 亚马逊SageMaker Studio 提供了一个集成开发环境 (IDE) 来实现 ML 生命周期中的各个步骤,数据科学家使用它来手动构建一个自定义容器,其中包含部署所需的代码工件。 该容器将在容器注册表中注册,例如 Amazon Elastic Container注册 (Amazon ECR) 用于部署目的。
MLOps 工程师负责构建一个 Step Functions 工作流,我们可以重复使用该工作流来部署数据科学家使用适当参数开发的自定义容器。 Step Functions 工作流可以根据用例的需要进行模块化,也可以只包含启动单个流程的一个步骤。 为了最大限度地减少迁移代码所需的工作量,我们确定了三个模块化组件来构建功能齐全的部署过程:
- 前处理
- 推理
- 后期处理
下图说明了我们的解决方案架构和工作流程。
该解决方案涉及以下步骤:
- 数据科学家角色使用 Studio 通过从代码存储库克隆来导入遗留代码,然后将代码模块化为遵循 ML 生命周期步骤(预处理、推理和后处理)的单独组件。
- 数据科学家使用 Studio,特别是 Studio 镜像构建 CLI SageMaker 提供的工具,用于构建 Docker 镜像。 此 CLI 工具允许数据科学家直接在 Studio 中构建图像,并自动将图像注册到 Amazon ECR 中。
- MLOps 工程师使用已注册的容器映像,并使用 Step Functions 为特定用例创建部署。 Step Functions 是一种无服务器工作流服务,可以通过使用 Amazon 状态语言直接控制 SageMaker API。
SageMaker处理工作
让我们了解如何 SageMaker处理工作 运行。 下图显示了 SageMaker 如何启动处理作业。
SageMaker 获取您的脚本,从中复制您的数据 亚马逊简单存储服务 (Amazon S3),然后拉取一个处理容器。 处理容器镜像可以是 SageMaker 内置镜像,也可以是您提供的自定义镜像。 处理作业的底层基础设施完全由 SageMaker 管理。 集群资源在您的作业期间进行配置,并在作业完成时清理。 处理作业的输出存储在您指定的 S3 存储桶中。 要了解有关构建自己的容器的更多信息,请参阅 构建自己的处理容器(高级场景).
SageMaker 处理作业使用 Docker 容器入口点脚本设置您的处理图像。 您还可以使用 应用规格 应用程序接口。 如果您使用自己的自定义入口点,则可以更加灵活地将其作为独立脚本运行而无需重建图像。
对于此示例,我们构建了一个自定义容器并使用 SageMaker 处理作业进行推理。 预处理和后处理作业利用脚本模式和预构建的 scikit-learn 容器。
先决条件
要按照这篇文章进行操作,请完成以下先决条件步骤:
- 创建一个 Studio 域。 有关说明,请参阅 使用快速设置载入 Amazon SageMaker 域.
- 创建一个S3存储桶。
- 克隆提供的 GitHub回购 进入工作室。
GitHub 存储库被组织成不同的文件夹,对应于 ML 生命周期的各个阶段,便于轻松导航和管理:
迁移遗留代码
在这一步中,我们作为数据科学家负责迁移遗留代码。
我们首先打开 build_and_push.ipynb
笔记本电脑。
笔记本中的初始单元会指导您安装 Studio 镜像构建 CLI. 此 CLI 通过自动创建一个可重用的构建环境来简化设置过程,您可以通过高级命令与之交互。 使用 CLI,构建镜像就像告诉它构建一样简单,结果将是指向您的镜像在 Amazon ECR 中的位置的链接。 这种方法消除了管理由 CLI 编排的复杂底层工作流的需要,从而简化了图像构建过程。
在我们运行构建命令之前,重要的是确保运行该命令的角色具有必要的权限,如 CLI 中指定的那样 GitHub上 自述文件或 相关帖子. 未能授予所需的权限可能会导致构建过程中出现错误。
请参见以下代码:
要简化遗留代码,请将其分为三个不同的 Python 脚本,分别命名为 preprocessing.py、predict.py 和 postprocessing.py。 通过将代码转换为从主函数调用的函数来遵循最佳编程实践。 确保导入所有必需的库并更新 requirements.txt 文件以包含任何自定义库。
组织代码后,将其与需求文件一起打包到 Docker 容器中。 您可以使用以下命令从 Studio 中轻松构建容器:
默认情况下,图像将被推送到名为 sagemakerstudio 的 ECR 存储库,标签为 latest。 此外,还将利用 Studio 应用程序的执行角色以及默认的 SageMaker Python SDK S3 存储桶。 但是,可以使用适当的 CLI 选项轻松更改这些设置。 请参见以下代码:
现在容器已经构建并在 ECR 存储库中注册,是时候深入了解我们如何使用它来运行 predict.py。 我们还向您展示了使用预建的过程 scikit学习 运行 preprocessing.py 和 postprocessing.py 的容器。
生产容器
在这一步中,我们充当 MLOps 工程师,将上一步中构建的容器生产化。
我们使用 Step Functions 来编排工作流程。 Step Functions 允许非常灵活地将各种服务集成到工作流中,以适应遗留系统中可能存在的任何现有依赖项。 这种方法确保所有必要的组件都无缝集成并按所需顺序运行,从而产生高效且有效的工作流解决方案。
Step Functions 可以直接从 Amazon 状态语言控制某些 AWS 服务。 要了解有关使用 Step Functions 及其与 SageMaker 集成的更多信息,请参阅 使用 Step Functions 管理 SageMaker. 使用 Step Functions 与 SageMaker 的集成功能,我们在脚本模式下使用 SageMaker 处理作业运行预处理和后处理脚本,并使用 自定义容器. 我们使用适用于 Python 的 AWS 开发工具包 (Boto3) 创建处理作业 API调用。
前处理
SageMaker 提供了多种运行自定义代码的选项。 如果您只有一个没有任何自定义依赖项的脚本,则可以将该脚本作为自带脚本 (BYOS) 运行。 为此,只需将您的脚本传递到预构建的 scikit-learn 框架容器,并使用 应用规格 应用程序接口。 这是运行简单脚本的直接方便的方法。
检查“预处理脚本模式”状态配置 示例 Step Functions 工作流程 了解如何配置 CreateProcessingJob API 调用以运行自定义脚本。
推理
您可以使用 构建您自己的处理容器 方法。 SageMaker 处理作业与 /opt/ml
本地路径,您可以在配置中指定您的 ProcessingInputs 及其本地路径。 处理作业然后将工件复制到本地容器并启动作业。 作业完成后,它将 ProcessingOutputs 的本地路径中指定的工件复制到其指定的外部位置。
查看“Inference Custom Container”状态配置 示例 Step Functions 工作流程 了解如何配置 CreateProcessingJob API 调用以运行自定义容器。
后期处理
您可以使用 Step Functions CreateProcessingJob 步骤像运行预处理脚本一样运行后处理脚本。 运行后处理脚本允许您在推理作业完成后执行自定义处理任务。
创建 Step Functions 工作流程
为了快速制作原型,我们使用 Step Functions 亚马逊州语言. 您可以使用状态语言直接编辑 Step Functions 定义。 请参阅 示例 Step Functions 工作流程.
您可以通过选择在 Step Functions 控制台上创建新的 Step Functions 状态机 用代码编写您的工作流程.
Step Functions 可以查看您使用的资源并创建角色。 但是,您可能会看到以下消息:
“如果 SageMaker 的 RoleArn 来自路径,Step Functions 无法生成 IAM 策略。 在您的状态机定义中对 SageMaker RoleArn 进行硬编码,或者选择一个具有适当权限的现有角色,以便 Step Functions 调用 SageMaker。”
要解决这个问题,您必须创建一个 AWS身份和访问管理 Step Functions 的 (IAM) 角色。 有关说明,请参阅 为您的状态机创建 IAM 角色. 然后附加以下 IAM 策略以提供运行工作流所需的权限:
下图说明了数据和容器图像在 Step Functions 工作流程的每个步骤中的流动。
以下是在 Step Functions 中初始化所需的最少参数列表; 你也可以参考 示例输入参数 JSON:
- 输入_uri – 输入文件的 S3 URI
- 输出_uri – 输出文件的 S3 URI
- 代码_uri – 脚本文件的 S3 URI
- 自定义图像_uri – 您构建的自定义容器的容器 URI
- scikit_image_uri – 预建 scikit-learn 框架的容器 URI
- 角色 – 运行作业的执行角色
- 实例类型 – 运行容器所需的实例类型
- 卷大小 – 容器所需的存储卷大小
- 最大运行时间 – 容器的最大运行时间,默认值为 1 小时
运行工作流程
我们已将遗留代码分解为可管理的部分:预处理、推理和后处理。 为了支持我们的推理需求,我们构建了一个配备了必要的库依赖项的自定义容器。 我们的计划是利用 Step Functions,利用其调用 SageMaker API 的能力。 我们展示了两种使用 SageMaker API 运行自定义代码的方法:一种是使用预构建图像并在运行时采用自定义脚本的 SageMaker 处理作业,另一种是使用自定义容器的 SageMaker 处理作业,该容器与必要的运行自定义推理的工件。
下图显示了 Step Functions 工作流程的运行。
总结
在本文中,我们讨论了从本地开发环境迁移遗留 ML Python 代码并实施标准化 MLOps 过程的过程。 通过这种方法,您可以毫不费力地转移数百个模型并合并您所需的企业部署实践。 我们介绍了两种在 SageMaker 上运行自定义代码的不同方法,您可以选择最适合您需求的方法。
如果您需要高度可定制的解决方案,建议使用定制容器方法。 如果您有基本脚本并且不需要创建自定义容器,您可能会发现使用预构建的图像来运行自定义脚本更合适,如前面提到的预处理步骤中所述。 此外,如果需要,您可以应用此解决方案来容器化遗留模型训练和评估步骤,就像本文中推理步骤的容器化方式一样。
作者简介
巴瓦那·奇鲁玛米拉 是 AWS 的高级常驻架构师,对数据和机器学习操作充满热情。 她带来了丰富的经验和热情,帮助企业建立有效的数据和 ML 策略。 在业余时间,Bhavana 喜欢与家人共度时光,并参与各种活动,例如旅行、远足、园艺和看纪录片。
希亚姆纳玛瓦兰 是 Amazon Web Services (AWS) 的高级人工智能 (AI) 和机器学习 (ML) 专家解决方案架构师。 他热情地与客户合作,通过提供技术指导并帮助他们在 AWS 上创新和构建安全的云解决方案来加速他们对 AI 和 ML 的采用。 他专注于 AI 和 ML、容器和分析技术。 工作之余,他喜欢运动和徒步旅行体验大自然。
李庆伟 是Amazon Web Services的机器学习专家。 在打破顾问的研究补助金帐户并未能兑现他承诺的诺贝尔奖之后,他获得了运营研究博士学位。 目前,他帮助金融服务和保险行业的客户在AWS上构建机器学习解决方案。 在业余时间,他喜欢阅读和教学。
斯里尼瓦沙沙伊克 是位于波士顿的 AWS 的解决方案架构师。 他帮助企业客户加速他们的云之旅。 他热衷于容器和机器学习技术。 在业余时间,他喜欢与家人共度时光、烹饪和旅行。
- SEO 支持的内容和 PR 分发。 今天得到放大。
- 柏拉图区块链。 Web3 元宇宙智能。 知识放大。 访问这里。
- Sumber: https://aws.amazon.com/blogs/machine-learning/bring-legacy-machine-learning-code-into-amazon-sagemaker-using-aws-step-functions/
- :是
- $UP
- 1
- 10
- 100
- 214
- 7
- 8
- a
- 对,能力--
- 关于
- 加快
- ACCESS
- 账号管理
- 法案
- 操作
- 活动
- 添加
- 另外
- 地址
- 坚持
- 采用
- 高级
- 优点
- 后
- AI
- 所有类型
- 允许
- Amazon
- 亚马逊SageMaker
- 亚马逊网络服务
- 亚马逊网络服务(AWS)
- 量
- 分析
- 和
- API
- APIs
- 应用
- 使用
- 的途径
- 适当
- 架构
- 保健
- 人造的
- 人工智能
- 人工智能(AI)
- AS
- At
- 连接
- 自动
- 可使用
- AWS
- AWS机器学习
- AWS步骤功能
- 基于
- 基本包
- BE
- 开始
- 最佳
- 波士顿
- 带来
- 带来
- 布罗克
- 破
- 建立
- 建筑物
- 建
- 内建的
- by
- 呼叫
- 被称为
- 呼叫
- CAN
- 不能
- 案件
- 例
- 一定
- 更改
- 客户
- 云端技术
- 簇
- 码
- 合作
- COM的
- 完成
- 复杂
- 组件
- 全面
- 流程条件
- 配置
- 安慰
- 建设
- 容器
- 集装箱
- 包含
- 控制
- 便捷
- 创建信息图
- 创建
- 创造
- 目前
- 习俗
- 合作伙伴
- 定制
- data
- 数据科学家
- 更深
- 默认
- 交付
- 演示
- 部署
- 部署
- 描述
- 期望
- 通过电脑捐款
- 发达
- 发展
- 研发支持
- 不同
- 直接
- 讨论
- 不同
- 不同
- 码头工人
- 纪录片
- 域
- 别
- 向下
- ,我们将参加
- 每
- 此前
- 容易
- 效果
- 有效
- 高效
- 努力
- 或
- 消除
- 从事
- 工程师
- 确保
- 确保
- 企业
- 企业
- 热情
- 环境
- 环境中
- 配备
- 故障
- 评估
- 例子
- 特殊
- 执行
- 现有
- 体验
- 经历
- 延长
- 外部
- 促进
- 失败
- 熟悉
- 家庭
- 数字
- 文件
- 金融
- 金融服务
- 找到最适合您的地方
- 适合
- 高度灵活
- 流
- 遵循
- 以下
- 针对
- 骨架
- 止
- 充分
- 功能
- 实用
- 功能
- 功能
- 此外
- 生成
- GitHub上
- 授予
- 指导
- 指南
- 有
- 帮助
- 帮助
- 帮助
- 高水平
- 高度
- 创新中心
- How To
- 但是
- HTML
- HTTP
- HTTPS
- 数百
- 确定
- 身分
- 图片
- 图片
- 履行
- 实施
- 进口
- 重要
- in
- 其他
- 包括
- 合并
- 行业中的应用:
- 基础设施
- 初始
- 开始
- 创新
- 输入
- 安装
- 安装
- 例
- 说明
- 保险
- 集成
- 整合
- 积分
- 房源搜索
- 相互作用
- 参与
- 参与
- IT
- 它的
- 工作
- 工作机会
- 旅程
- JPG
- JSON
- 只有一个
- 语言
- 大
- 最新
- 学习用品
- 学习
- 遗产
- 库
- 自学资料库
- 生命周期
- 喜欢
- 友情链接
- 清单
- 本地
- 圖書分館的位置
- 看
- 机
- 机器学习
- 主要
- 管理
- 管理
- 颠覆性技术
- 手动
- 最多
- 提到
- 的话
- 方法
- 方法
- 迁移
- 移民
- 最低限度
- ML
- 多播
- 时尚
- 模型
- 模型
- 模块化
- 更多
- 最先进的
- 移动
- 命名
- 自然
- 旅游导航
- 必要
- 需求
- 需要
- 全新
- 诺贝尔奖
- 笔记本
- 数
- of
- 优惠精选
- on
- 一
- 开放
- 运营
- 运营
- 优化
- 附加选项
- 精心策划
- 组织
- 举办
- 其他名称
- 产量
- 学校以外
- 己
- 所有权
- 包
- 参数
- 部分
- 情
- 多情
- 径
- 演出
- 权限
- 计划
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 播放
- 政策
- 帖子
- 在练习上
- 做法
- 预测
- 呈现
- 以前
- 奖金
- 过程
- 处理
- 代码编程
- 许诺
- 正确
- 原型
- 提供
- 提供
- 提供
- 优
- 拉
- 目的
- 蟒蛇
- 快速
- 很快
- 范围
- 阅读
- 收到
- 建议
- 重构
- 指
- 在相关机构注册的
- 寄存器
- 注册处
- 知识库
- 要求
- 必须
- 岗位要求
- 研究
- 资源
- 资源
- 提供品牌战略规划
- 导致
- 导致
- 可重复使用
- 角色
- 运行
- 运行
- sagemaker
- 可扩展性
- 脚本
- 科学家
- scikit学习
- 脚本
- SDK
- 无缝
- 安全
- 选择
- 前辈
- 分开
- 序列
- 无服务器
- 服务
- 特色服务
- 集
- 套数
- 设置
- 格局
- 几个
- Share
- 转移
- 显示
- 如图
- 作品
- 简易
- 只是
- 单
- 尺寸
- So
- 方案,
- 解决方案
- 一些
- 专家
- 专业
- 具体的
- 特别是
- 指定
- 花费
- 自旋
- 运动
- 实习
- 独立
- 启动
- 州/领地
- 个人陈述
- 州
- 步
- 步骤
- 存储
- 存储
- 简单的
- 策略
- 精简
- 精简
- 强烈
- 工作室
- 这样
- 合适的
- SUPPORT
- SYS
- 系统
- 行李牌
- 采取
- 需要
- 服用
- 任务
- 教诲
- 文案
- 技术
- 这
- 其
- 他们
- 博曼
- 数千
- 三
- 通过
- 次
- 至
- 工具
- 工具
- 产品培训
- 转让
- 旅游
- 相关
- 理解
- 更新
- 使用
- 用例
- 效用
- 利用
- 利用
- 利用
- 折扣值
- 各个
- 版本
- 体积
- 观看
- 财富
- 卷筒纸
- Web服务
- 这
- WHO
- 将
- 中
- 也完全不需要
- 话
- 工作
- 加工
- 合作
- 完全
- 您一站式解决方案
- 和风网