亚马逊AWS官方博客

新功能 — Amazon SageMaker 管道为您的机器学习项目带来开发运维能力

今天,我非常高兴地宣布推出 Amazon SageMaker 管道,这是 Amazon SageMaker 的一项新功能,可让数据科学家和工程师轻松构建、自动化、并扩展端到端的机器学习管道。

机器学习 (ML) 本质上是实验性的,且不可预测。您花费数天或数周时间以许多不同的方式探索和处理数据,试图破解开 Geode 以揭示其珍贵宝石。然后,您可以尝试不同的算法和参数,培训和优化大量模型以寻找最高准确度。此过程通常涉及许多不同的步骤,它们之间存在依赖关系,人工管理可能会变得相当复杂。特别是,跟踪模型沿袭可能很困难,这妨碍了可审计性和治理。最后,部署顶级模型,然后根据参考测试集对其进行评估。终于? 不是很重要,因为你肯定会一次又一次地迭代,无论是尝试新想法,还是只是就新数据建立定期重新培训模型。

遗憾的是,无论 ML 有多令人兴奋,它确实涉及大量重复性工作。即使是小型项目也需要几百个步骤才能获得生产绿灯。随着时间的推移,这项工作不仅减少了项目的乐趣和兴奋,还为监督和人为错误创造了充足的空间。

为了减轻人工工作并提高可追溯性,许多机器学习团队采用了开发运维理念,并实施了持续集成和持续交付 (CI/CD) 的工具和流程。尽管这肯定是朝着正确方向迈出的一步,但编写自己的工具往往会导致复杂的项目,这些项目需要的软件工程和基础设施工作量超过最初预期。宝贵的时间和资源被从实际机器学习项目中挪用,使得创新放缓。可悲的是,一些团队决定恢复人工工作,以进行模型管理、批准和部署。

Amazon SageMaker 管道简介
简而言之,Amazon SageMaker 管道为您的机器学习项目带来了一流的开发运维实践。这一新功能使数据科学家和机器学习开发人员能够轻松创建自动化、可靠的端到端机器学习管道。与往常使用 SageMaker 一样,所有基础设施都是完全托管的,不需要您做任何工作。

Care.com 是全球领先的寻找和管理高质量家庭护理的平台。Care.com 数据科学经理 Clemens Tummeltshammer 告诉我们的:“一个供需平衡的强大护理行业,对于从个体家庭到全国国内生产总值的经济增长都至关重要。我们对 Amazon SageMaker 功能库和 Amazon SageMaker 管道感到兴奋,因为我们相信,它们将通过使用一组一致的精选数据,帮助我们在数据科学和开发团队中更好地实现扩展,我们可以使用这些数据构建从数据准备到部署的可扩展端到端机器学习 (ML) 模型管道。借助 Amazon SageMaker 新公布的功能,我们可以加快针对不同应用程序的机器学习模型的开发和部署,通过更快的实时推荐帮助客户作出更明智的决策。

让我向您详细介绍 Amazon SageMaker 管道中的主要组件:管道、模型注册表和 MLOps 模板。

管道 — 模型构建管道使用简单的 Python SDK 定义。它们可以包括 Amazon SageMaker 中可用的任何操作,例如使用 Amazon SageMaker ProcessingAmazon SageMaker Data Wrangler 进行数据准备、模型培训、模型部署到实时终端节点或批量转换。您还可以将 Amazon SageMaker Clarify 添加到您的管道中,以便在培训之前或模型部署后检测偏向。同样,您可以添加 Amazon SageMaker 模型监控器来检测数据和预测质量问题。

一旦启动,模型构建管道将作为 CI/CD 管道执行。每个步骤都会被记录下来,并提供详细的日志记录信息,以供追踪和调试。当然,您还可以在 Amazon SageMaker Studio 中可视化管道,并实时跟踪不同的执行情况。

模型注册表 — 模型注册表允许您跟踪和编录模型。在 SageMaker Studio 中,您可以轻松查看模型历史记录、列出和比较版本以及跟踪模型评估指标等元数据。您还可以定义在生产环境中可部署或不部署哪些版本。事实上,您甚至可以构建管道,在获得批准后自动触发模型部署。您会发现,模型注册表在跟踪模型沿袭、改进模型治理和加强合规性状况方面非常有用。

MLOps 模板SageMaker 管道包括一系列内置 CI/CD 模板,用于热门管道(构建/培训/部署、仅部署等)。您还可以添加和发布自己的模板,以便您的团队可以轻松地发现和部署它们。模板不仅节省了大量时间,还使机器学习团队能够轻松地从实验到部署,使用标准流程进行协作,而无需管理任何基础设施。模板还可让运维团队根据需要自定义步骤,并为他们提供故障排除的完全可见性。

现在,我们来做一个快速演示!

使用 Amazon SageMaker 管道构建端到端管道
打开 SageMaker Studio,我选择“Components”(组件)选项卡和“Projects”(项目)视图。这将显示内置项目模板的列表。我选择一个来构建、培训和部署模型。

SageMaker 截图

然后,我只需为项目命名,然后创建它。

几秒钟后,项目就绪。我可以看到,它包含两个托管在 AWS CodeCommit 中的 Git 存储库,一个用于模型培训,另一个用于模型部署。

SageMaker 截图

第一个存储库提供了用于创建多步模型构建管道的支撑代码:数据处理、模型培训、模型评估和基于准确性的条件模型注册。正如您将在 pipeline.py 文件中看到的那样,该管道在众所周知的 Abalone 数据集上使用 XGBoost 算法来培训线性回归模型。此存储库还包括一个构建规范文件,由 AWS CodePipelineAWS CodeBuild 自动执行管道。

同样,第二个存储库包含模型部署的代码和配置文件,以及通过质量门所需的测试脚本。此操作还基于 AWS CodePipelineAWS CodeBuild,后者运行 AWS CloudFormation 模板来创建用于暂存和生产的模型终端节点。

单击两个蓝色链接,我在本地克隆了存储库。这将触发管道的第一次执行。

SageMaker 截图

几分钟后,管道已成功运行。切换到“Pipelines”(管道)视图,我可以直观地显示其步骤。

SageMaker 截图

点击培训步骤,我可以看到模型的均方根错误 (RMSE) 指标。

SageMaker 截图

由于 RMSE 低于条件步骤中定义的阈值,因此我的模型被添加到模型注册表中,如下所示。

SageMaker 截图

为简单起见,注册步骤将模型状态设置为“Approved”(已批准),这将自动触发模型部署到同一账户中的实时终端节点。几秒钟之内,我看到模型正在部署。

SageMaker 截图

或者,您可以将模型注册为“Pending manual approval”(等待人工批准)状态。这将阻止部署,直到模型经过人工审查和批准。由于模型注册表支持跨账户部署,因此您还可以轻松地在其他账户中部署,而无需跨账户复制任何内容。

几分钟后,终端节点启动了,我可以用它来测试我的模型。

SageMaker 截图

一旦我确定此模型能够按预期运行,我就可以发送回显信息给 MLOps 团队,并要求他们在生产环境中部署模型。

打开我的 MLOps 后,我打开 AWS CodePipeline 控制台,看到我的部署确实在等待批准。

SageMaker 截图

然后我批准部署模型,这将触发管道的最后阶段。

SageMaker 截图

返回我的数据科学家,我在 SageMaker Studio 中看到我的模型正在部署中。大功告成!

SageMaker 截图

开始使用
正如您所看到的,Amazon SageMaker Pipelines 使数据科学团队和 MLOps 团队能够使用熟悉的工具轻松协作。他们可以创建和执行强大的自动化机器学习管道,从而比以前更快地提供高质量生产模型。

您可以在 SageMaker 可用的所有商业区域开始使用 SageMaker 管道。在 CodePipeline 也可用的区域,MLOps 功能可用。

我们提供示例笔记本电脑来帮助您入门。立即试用,并向我们提供反馈。我们始终期待您的反馈,您可通过一贯的 AWS Support 联系人向我们提供反馈,也可在针对 SageMaker 在 AWS 论坛上提出反馈。

– Julien

特别感谢我的同事 Urvashi Chowdhary 在早期测试期间提供的宝贵协助。