使用自定义SageMaker项目将SageMaker Autopilot整合到您的MLOps流程中
每个组织都有自己的标准和实践,为其AWS环境提供安全性和治理。Amazon SageMaker是一个全管理服务,可为任何用例准备数据、构建、训练和部署机器学习(ML)模型,拥有完全管理的基础设施、工具和工作流。SageMaker为想要快速开始使用ML工作流和DevOps持续集成和持续交付(CI/CD)流程的组织提供一组模板。
大多数企业客户已经拥有了一个成熟的MLOps实践,具有标准化的环境,例如标准化的存储库、基础设施和安全性防护措施,并希望将其MLOps流程扩展到无代码和低代码AutoML工具。他们还有很多需要遵守的流程,才能将模型推向生产。他们正在寻找一种快速简便的方式,从初始阶段毕业,进入可重复、可靠、最终可扩展的操作阶段,如下图所示。有关更多信息,请参阅基于Amazon SageMaker的企业MLOps基础路线图。
尽管这些公司拥有强大的数据科学和MLOps团队来帮助他们构建可靠和可扩展的流水线,但他们希望低代码AutoML工具用户以符合标准的方式生成代码和模型构件,遵循其代码存储库结构以及适当的验证、测试、步骤和批准。
他们正在寻找一种机制,使低代码工具能够为AutoML任务的每个步骤(预处理、训练和后处理)生成所有源代码,以标准化的存储库结构提供给其专家数据科学家,以便根据其需求查看、验证和修改工作流,然后生成一个自定义流水线模板,可集成到标准化环境中(在其中定义了他们的代码存储库、代码构建工具和流程)。
本文展示了如何使用低代码工具(如Amazon SageMaker Autopilot)实现可重复的流程,以便将其无缝集成到您的环境中,因此您不必自己编排端到端工作流程。我们演示了如何使用CI/CD低代码/无代码工具代码将其集成到您的MLOps环境中,同时遵循MLOps最佳实践。
解决方案概述
为展示编排的工作流程,我们使用公开可用的UCI Adult 1994 Census Income数据集,以预测一个人的年收入是否超过每年5万美元。这是一个二分类问题;收入目标变量的选项要么是超过5万美元,要么是低于5万美元。
以下表格总结了数据集的关键组成部分。
数据集特征 | 多元 | 实例数 | 48842 | 领域 | 社交 |
属性特征: | 分类,整数 | 属性数: | 14 | 捐赠日期 | 1996-05-01 |
关联任务: | 分类 | 是否缺失值? | Yes | Web点击数 | 2749715 |
以下表格总结了属性信息。
列名 | 描述 |
年龄 | 连续 |
工作类别 | 私人,自雇不包含,自雇包括,联邦政府,地方政府,州政府,无薪工作,从未工作过 |
fnlwgt | 连续的 |
教育 | 学士学位,一些大学,11年级,高中,专业学校,学术学位,职业学位,9年级,7-8年级,12年级,硕士学位,1-4年级,10年级,博士学位,5-6年级,学前教育。 |
教育数字 | 连续的 |
婚姻状况 | 已婚-civ-spouse、离婚、从未结婚、分居、丧偶、已婚配偶缺席、已婚-AF-spouse。 |
职业 | 技术支持、工艺维修、其他服务、销售、行政管理、专业特长、处理器清洁剂、机器操作、行政助理、农业-渔业、运输-移动、私人住宅服务、保护服务、武装部队 |
关系 | 妻子、自己的孩子、丈夫、不在家庭中、其他亲属、未婚。 |
人种 | 白人、亚裔太平洋岛民、美洲印第安人-爱斯基摩人、其他、黑人 |
性别 | 女性、男性 |
资本收益 | 连续的 |
资本损失 | 连续的 |
每周工作小时数 | 连续的 |
原籍国 | 美国、柬埔寨、英格兰、波多黎各、加拿大、德国、美国外围地区(关岛-美国维尔京群岛-等)、印度、日本、希腊、南部、中国、古巴、伊朗、洪都拉斯、菲律宾、意大利、波兰、牙买加、越南、墨西哥、
在本文中,我们展示如何使用Amazon SageMaker Projects,这是一个帮助组织设置和标准化MLOps环境的工具,其中包括低代码自动ML工具Autopilot和Amazon SageMaker Data Wrangler。 Autopilot消除了构建ML模型的重负。您只需提供一个表格数据集并选择要预测的目标列,Autopilot将自动探索不同的解决方案以找到最佳模型。然后,您可以直接单击一个按钮将模型部署到生产环境,或者迭代推荐的解决方案以进一步提高模型质量。 Data Wrangler提供了一个端到端的解决方案,用于导入、准备、转换、特征化和分析数据。您可以将Data Wrangler数据准备流集成到您的ML工作流中,以简化和优化数据预处理和特征工程,使用很少或没有编码。您还可以添加自己的Python脚本和转换来自定义工作流程。我们使用Data Wrangler在提交数据到Autopilot之前对数据集进行预处理。 SageMaker Projects帮助组织设置和标准化环境,以自动化ML生命周期中涉及的不同步骤。虽然笔记本对于模型构建和实验很有帮助,但是一组共享代码的数据科学家和ML工程师需要一种更可扩展的方式来维护代码一致性和严格的版本控制。 为帮助您开始常见的模型构建和部署范例,SageMaker Projects提供了一组一方模板(1P模板)。1P模板通常侧重于创建用于模型构建和模型训练的资源。这些模板包括使用AWS本机服务进行CI/CD的项目,例如AWS CodeBuild和AWS CodePipeline。SageMaker Projects可以支持自定义模板提供,其中组织使用AWS CloudFormation模板运行Terraform堆栈并创建所需的ML工作流程资源。 组织可能希望扩展1P模板以支持超出简单培训和部署模型的用例。自定义项目模板是为您创建ML项目的标准工作流程。您可以创建多个模板,并使用AWS身份和访问管理(IAM)策略在Amazon SageMaker Studio上管理对这些模板的访问,以确保每个用户都访问专用于其用例的项目。 要了解有关SageMaker Projects和创建符合最佳实践的自定义项目模板的更多信息,请参阅构建自定义SageMaker项目模板-最佳实践。 这些自定义模板作为AWS服务目录产品创建,并作为组织模板在Studio UI上提供。这是数据科学家可以选择模板并引导和预配置其ML工作流程的地方。项目使用AWS服务目录产品提供。项目模板由组织用于为其各个团队提供项目。 在本文中,我们展示了如何构建自定义项目模板,以使用SageMaker项目、AWS服务目录和Amazon SageMaker Pipelines集成Data Wrangler和Autopilot,使人类介入以便于模型训练和部署的步骤。介入的人类是涉及ML操作实践的不同角色,共同合作实现成功的ML构建和部署工作流程。 以下图表说明了端到端的低代码/无代码自动化工作流程。 工作流包括以下步骤:
有关使用Autopilot创建SageMaker管道的更多详细信息,请参阅从Amazon SageMaker Pipelines直接启动Amazon SageMaker Autopilot实验以轻松自动化MLOps工作流程。
部署步骤包括以下内容:
在以下各节中,我们将详细介绍每个步骤并探讨项目详细信息页面。 先决条件本步骤包括以下先决条件:
使用AWS CloudFormation创建解决方案资源您可以通过AWS CloudFormation控制台、AWS命令行界面(AWS CLI)、SDK或仅选择启动堆栈来下载和启动CloudFormation模板: CloudFormation模板也可在AWS样本GitHub代码库中获得。该存储库包含以下内容:
CloudFormation模板将多个参数作为输入。 以下是AWS服务目录产品信息参数:
以下是AWS服务目录产品支持信息参数:
以下是源代码存储库配置参数:
从此模板启动CloudFormation堆栈后,您可以在AWS CloudFormation控制台上监视其状态。 当堆栈完成时,在 CloudFormation 堆栈的 Outputs 标签页上复制 使用新的自定义模板创建 SageMaker 项目完成以下步骤创建 SageMaker 项目:
一个消息将出现,指示 SageMaker 正在配置资源。 项目完成后,您将收到一个成功消息,并且您的项目现在会列在 项目 列表中。 浏览项目详情在项目详情页面上,您可以查看与该项目相关的各种选项卡。让我们深入了解每个选项卡的详细信息。 仓库此选项卡列出与该项目关联的代码仓库。您可以在 SageMaker 项目中选择 clone repo,以克隆由 SageMaker 项目在 CodeCommit 中创建的两个种子代码仓库。此选项为您提供从 SageMaker 项目本身访问代码仓库的 Git 访问权限。 克隆仓库完成后,本地路径将出现在 本地路径 列中。您可以选择该路径,以在 Studio 中打开包含仓库代码的本地文件夹。 该文件夹将在导航窗格中可用。您可以使用文件浏览器图标来隐藏或显示文件夹列表。您可以在此处进行代码更改,或选择 Git 图标来进行暂存、提交和推送更改。 管道此选项卡列出了SageMaker ML管道,定义了准备数据、训练模型和部署模型的步骤。有关SageMaker ML管道的信息,请参见创建和管理SageMaker管道。 您可以选择当前正在运行的管道以查看其最新状态。在下面的示例中,DataProcessing步骤使用Data Wrangler数据流进行。 您可以从我们之前克隆的代码库的本地路径访问数据流。选择文件浏览器图标以显示路径,路径位于模型构建存储库的pipelines文件夹中。 在pipelines文件夹中,打开autopilot文件夹。 在autopilot文件夹中,打开preprocess.flow文件。 打开Data Wrangler流需要一段时间。 在此示例中,在源和目标之间执行了三个数据转换。您可以选择每个转换以查看更多详细信息。 有关如何在Data Wrangler中包含或删除转换的说明,请参见转换数据。 有关更多信息,请参见使用Amazon SageMaker Data Wrangler和Amazon SageMaker Autopilot统一准备数据和模型训练-第1部分。 完成审查后,选择电源图标并在Running Apps和Kernel Sessions下停止Data Wrangler资源。 实验此选项卡列出了与项目相关的Autopilot实验。有关Autopilot的更多信息,请参见使用Amazon SageMaker Autopilot自动化模型开发。 模型组此选项卡列出了由项目中的管道运行创建的模型版本组。当管道运行完成时,将在此处访问从管道的最后一步创建的模型。 您可以选择模型组以访问模型的最新版本。 以下示例中模型版本的状态为Pending。您可以选择模型版本并选择更新状态来更新状态。 选择Approved并选择更新状态以批准模型。 模型状态批准后,CodePipeline 中的模型部署 CI/CD 管道将启动。 您可以打开已部署的管道,查看存储库中的不同阶段。 如上图所示,此管道有四个阶段:
您可以在 SageMaker 项目的设置选项卡上获取 SageMaker 项目 ID。在 S3 存储桶中,选择项目名称文件夹(例如, 您可以从先前克隆的代码存储库的本地路径中访问测试脚本。选择文件浏览器图标查看路径。请注意,这将是部署存储库。在该存储库中,打开 test 文件夹并选择 您可以根据您的用例更改此测试代码。
终端节点此选项卡列出了托管已部署模型以进行推理的SageMaker终端节点。当模型部署流程中的所有阶段都完成后,模型将部署到SageMaker终端节点并可以在SageMaker项目中访问。 设置这是项目页面上的最后一个选项卡,列出了项目的设置。这包括项目的名称和描述,项目模板和 清理为避免本文示例带来的额外基础设施成本,请确保删除CloudFormation栈。另外,请确保删除SageMaker终端节点、运行中的笔记本和在设置期间创建的S3存储桶。 结论本文介绍了一种易于使用的ML管道方法,可以使用SageMaker项目、数据整理器、自动飞行员、管道和工作室自动化和标准化ML模型的培训和部署。这个解决方案可以帮助你在一个标准化的仓库结构中执行AutoML任务(预处理、训练和后处理),该结构可以为您的专业数据科学家提供查看、验证和修改工作流的能力,然后生成一个可集成到SageMaker项目中的自定义管道模板。 您可以根据自己的用例修改管道,进行预处理和管道步骤,然后部署我们的端到端工作流。在评论中告诉我们自定义模板对您的用例的工作情况。 |