作者 Madhur Prashant Antara Raisa Amit Arora Johnny Chivers Shamik Ray Srivyshnav K S Jagmohan Dhiman Soumya Kundu日期 2024年6月17日发表于 Amazon SageMaker、Customer Solutions、Technical Howto永久链接评论 分享
本文与Shamik Ray、Srivyshnav K S、Jagmohan Dhiman和Soumya Kundu共同撰写。
如今,全球领先的企业信任Twilio的客户参与平台CEP,以在各地与客户建立直接、个性化的联系。Twilio使企业能够使用通信和数据为客户旅程的每一个环节增加智能与安全,从销售和营销到增长和客户服务,以及许多其他灵活的程序化参与用例。在180个国家中,数百万开发人员和成千上万的企业通过Twilio创造出神奇的客户体验。作为AWS最大的客户之一,Twilio利用数据、人工智能AI和机器学习ML服务来处理日常工作负载。本文概述了AWS与Twilio所采取的步骤,以将Twilio现有的机器学习操作MLOps迁移到Amazon SageMaker。
机器学习模型并不是孤立运行的,它们必须集成到现有的生产系统和基础设施中,以便提供价值。因此,在设计和开发阶段需要考虑整个机器学习生命周期。借助合适的流程和工具,MLOps使得组织能够在各自团队中可靠高效地采用机器学习,以满足具体用例。SageMaker包含一套MLOps功能,包括Amazon SageMaker Pipelines和Amazon SageMaker Model Registry。管道允许轻松创建和管理机器学习工作流,同时提供工作流步骤的存储和重用功能。模型注册表通过集中跟踪模型简化了模型的部署。
本文重点讨论了如何灵活使用所选数据源,并将其与Amazon SageMaker Processing Jobs无缝集成。借助SageMaker Processing Jobs,您可以在SageMaker平台上以简化、Managed的体验运行数据预处理、后处理及模型评估工作负载。
Twilio需要实现一个MLOps管道,该管道从PrestoDB查询数据。PrestoDB是一个开源SQL查询引擎,专为快速分析来自多个源的任意大小数据而设计。
在本文中,我们将逐步实施以下内容:
从SageMaker Processing Job读取PrestoDB中的数据使用SageMaker训练作业训练二进制分类模型,使用SageMaker自动模型调优对模型进行调优对从PrestoDB获取的数据运行批量转换管道进行批量推理将训练后的模型作为实时SageMaker端点进行部署Twilio使用scikitlearn的RandomForestClassifier训练了一种二进制分类机器学习模型,以集成到其MLOps管道中。该模型用作批处理过程的一部分,定期运行以满足日常工作负载,使训练和推理工作流可重复,从而加速模型的开发。该管道使用的训练数据通过PrestoDB提供,并通过PrestoDB Python客户端读取到Pandas中。
nord加速器最终目标是将现有步骤转换为两个管道:一个训练管道和一个批量转换管道,将从PrestoDB查询的数据连接到SageMaker Processing Job中,最终将训练后的模型部署到SageMaker端点以进行实时推理。
在本文中,我们使用通过TPCH连接器提供的开源数据集,以说明Twilio所使用的端到端工作流程。Twilio能够利用此解决方案将其现有的MLOps管道迁移到SageMaker。此解决方案的所有代码均可在GitHub repo上获取。
此解决方案分为三个主要步骤:
模型训练管道 在该步骤中,我们连接SageMaker Processing Job以从PrestoDB实例获取数据,训练和调优机器学习模型,评估它,并将其注册到SageMaker模型注册表中。批量转换管道 在此步骤中,我们运行一个数据预处理步骤,从PrestoDB实例读取数据,并对注册的机器学习模型从模型注册表中运行批量推理,该模型在此管道中被批准。此模型可以通过程序化或手动方式批准。实时推理 在此步骤中,我们将最新的已批准模型部署为实时SageMaker端点,以进行实时推理。所有管道参数都存在于一个文件中configyml。此文件包含连接PrestoDB实例所需的AWS和PrestoDB凭据信息、训练超参数及在训练和推理步骤中运行的SQL查询的信息。此解决方案具有高度的可定制性,适用于特定行业的用例,因此可以通过在配置文件中的简单更新,最小化代码变更即可使用。
以下代码展示了如何在configyml文件中配置查询示例。此查询用于训练管道的数据处理步骤,以从PrestoDB实例获取数据。该查询预测订单是高价值订单还是低价值订单,基于TPCH数据中给定的订单优先级。有关TPCH数据及其数据库实体、关系和特征的更多信息,请访问TPC基准H。您可以在配置文件内更改查询以适应您的用例,并在无代码更改的情况下运行解决方案。
sqlSELECT oorderkey COUNT(llinenumber) AS lineitemcount SUM(lquantity) AS totalquantity AVG(ldiscount) AS avgdiscount SUM(lextendedprice) AS totalextendedprice SUM(ltax) AS totalpayabletax oorderdate oorderpriority CASE WHEN (oorderpriority = 2HIGH) THEN 1 ELSE 0 END AS highvalueorderFROM orders oJOIN lineitem l ON oorderkey = lorderkeyGROUP BY oorderkey oorderdate oorderpriorityORDER BY RANDOM() LIMIT 5000
此解决方案的主要步骤在以下部分详细描述。
数据准备和训练管道包括以下步骤:
从PrestoDB实例读取训练数据,任何所需的特征工程都在PrestoDB中检索数据时的SQL查询中完成。在训练和批量推理阶段用于获取数据的查询在配置文件中配置。我们使用SageMaker Processing Jobs中的FrameworkProcessor,通过Python PrestoDB客户端读取PrestoDB中的数据。在训练和调优阶段,我们使用SageMaker SDK中的SKLearn估算器和scikitlearn中的RandomForestClassifier训练机器学习模型。HyperparameterTuner类用于运行自动模型调优,通过对数据集上的多个训练作业进行多次运行,找到最佳模型版本。模型评估步骤检查训练和调优后的模型的准确性是否超过用户定义的阈值,只有在满足条件的情况下,才会将该模型注册到模型注册表。如果模型准确性未达到阈值,管道将失败,模型不会被注册到模型注册表。然后运行模型训练管道,pipelinestart,该步骤将调用和实例化所有之前的步骤。批量转换管道由以下步骤组成:
管道实现数据准备步骤,从PrestoDB实例中检索数据使用数据预处理脚本,并将批量数据存储在Amazon简单存储服务Amazon S3中。批准训练管道中最新注册的模型。使用Transformer实例运行批量转换作业,以获取存储在Amazon S3中的整个数据集的推理结果。SageMaker端点管道由以下步骤组成:
使用SageMaker SDK中的describemodelpackage功能,从模型注册表中提取最新的批准模型。将最新的批准模型作为实时SageMaker端点部署。使用mlc5xlarge实例在最小实例数量为1,最大实例数量为3由用户可配置的条件下部署模型,并设置自动扩展策略为启用。这可以移除不必要的实例,避免支付未使用的预配实例费用。要实现本文提供的解决方案,您应具备一个AWS帐户、一个SageMaker域来访问Amazon SageMaker Studio,并对SageMaker、Amazon S3和PrestoDB有所了解。
在运行此代码之前,还需要完成以下前提条件:
PrestoDB 我们在此解决方案中使用通过TPCH连接器可用的PrestoDB内置数据集。请遵循GitHub READMEmd中的说明,在您的帐户中设置Amazon Elastic Compute CloudAmazon EC2实例上的PrestoDB。如果您已经可以访问PrestoDB实例,则可以跳过此步骤,但请注意其连接详情请参见配置文件中的Presto部分。当您拥有PrestoDB凭证时,请在配置文件中填写Presto部分,如下所示输入您的主机公共IP、端口、凭证、目录和模式:
yamlpresto host lt0000gt parameter 0000 prestocredentials ltprestocredentialsgt catalog ltcataloggt schema ltschemagt
VPC网络配置 我们还在配置文件中定义了ML模型和操作的加密、网络隔离和VPC配置。有关网络配置和偏好的更多信息,请参阅在VPC内连接到SageMaker。如果您使用默认的VPC和安全组,则可以将这些配置参数留空,请参见此配置文件中的示例。如果不是,则在aws部分中,指定enablenetworkisolation状态、securitygroupids和基于您的网络隔离偏好的子网。yamlnetworkconfig enablenetworkisolation false securitygroupids ltsecuritygroupidgt subnets ltsubnet1gt ltsubnet2gt ltsubnet3gt
IAM角色 设置一个AWS身份和访问管理IAM角色,该角色具有适当的权限,允许SageMaker访问AWS Secrets Manager、Amazon S3和您AWS账户内的其他服务。直到提供一个AWS CloudFormation模板来创建具有所需IAM权限的角色,使用允许AmazonSageMakerFullAccess AWS托管策略的SageMaker角色。Secrets Manager秘密 在Secrets Manager中为PrestoDB用户名和密码设置一个秘密。将秘密命名为prestodbcredentials,并为其添加用户名字段和密码字段。有关说明,请参见创建和管理AWS Secrets Manager的秘密。完成以下步骤以部署解决方案:
在SageMaker Studio中克隆销售热线
营销一部(传统产品):王部长 15371160678
营销二部(光伏焊带):曹部长 13921871003
电子邮箱
hallowed@mac.com
公司地址
邵武市因若之巅325号