经典案例

在 Amazon ECS 上使用 OSS 工具构建高效的 MLOps 平台与 AWS Fargate

datetime

2026-01-27 13:25:30

阅读数量

21

利用OSS工具在Amazon ECS与AWS Fargate构建高效的MLOps平台

作者:Varad Ram Artem Sysuev Danny Portman Mat Chldek Saurabh Gupta,2024年9月18日发表于Amazon机器学习和AWS Fargate

关键要点

MLOps平台构建:使用四个开源工具Airflow、Feast、dbt和MLflow构建集中化的MLOps平台,提升机器学习项目的管理效率。架构概述:在Amazon ECS上采用Fargate,简化基础设施管理,确保资源的高效使用。未来发展方向:着重提升外部模型集成功能以及降低数据科学家的学习曲线。

Zeta Global是一家领先的数据驱动云营销技术公司,致力于帮助企业获取、发展和留住客户。公司推出的Zeta Marketing PlatformZMP是全球最大的以身份数据为核心的全渠道营销平台,利用复杂的人工智能AI分析数十亿个结构化和非结构化数据点,预测消费者意图,并在大规模上实现个性化体验。更多信息请查看Zeta Global官网。

Zeta在AI/ML方面取得的成就

在快速发展的数字营销领域,Zeta Global以其在人工智能领域的突破性进展而脱颖而出。过去几年,Zeta推出了30项相关于深度学习和生成AI应用于营销技术的专利。通过AI,Zeta彻底改变了品牌与受众之间的连接方式,提供的解决方案不仅创新而且极为有效。作为大型语言模型LLM技术的早期采用者,Zeta于2021年推出了电子邮件主题行生成工具,使营销人员能够撰写引人注目的电子邮件主题行,显著提升开启率和参与度,并精准契合受众的偏好和行为。

Zeta还开发了AI Lookalikes技术,使公司能够识别和锁定与其最佳客户相似的新客户,从而优化营销效率,提升投资回报率ROI。这些技术的核心是ZOEZeta优化引擎,它集成了多个数据源,提供客户的统一视图,简化分析查询,促进营销活动的创建。这些由AI驱动的工具和技术正在重新塑造品牌的营销方式,并设定了客户互动的新基准。

除了其开创性的AI创新之外,Zeta还利用Amazon扩展容器服务Amazon ECS与AWS Fargate高效地部署多种小型模型。

Zeta的AI创新建立在一个专有的机器学习操作MLOps系统上,该系统为公司内部开发。

背景

在2023年初,Zeta的机器学习团队从传统的垂直团队转变为更具动态性的横向结构,引入了由多样技能构成的团队集群pods。这一转变旨在通过促进具有不同专业知识的团队之间的合作与协同,加快项目交付。随着机器学习和人工智能应用在各团队之间激增,形成了维护复杂性迷宫,并阻碍了知识的转移与创新,急需一个集中化的MLOps平台以应对这些挑战。

为了应对这些问题,组织基于四个关键的开源工具构建了一个MLOps平台:Airflow、Feast、dbt和MLflow。该平台托管在Amazon ECS上,任务在Fargate上运行,简化了从数据摄取到模型部署的整个ML工作流。本文将深入探讨这一MLOps平台的细节,揭示这些工具的整合如何促进更高效、可扩展的机器学习项目管理。

架构概述

我们的MLOps架构旨在自动化和监控整个机器学习生命周期的所有阶段。其核心整合了:

Airflow 用于工作流编排Feast 用于特征管理dbt 用于加速数据转型MLflow 用于实验跟踪和模型管理

这些组件在Amazon ECS环境中相互作用,提供了一个可扩展的无服务器平台,在Fargate上运行机器学习工作流。这种设置不仅简化了基础设施管理,还确保了资源的高效使用,能够根据需要扩展或缩减。

以下是MLOps架构的示意图。

架构深入探讨

以下详细介绍了在该架构中使用的每个组件。

在 Amazon ECS 上使用 OSS 工具构建高效的 MLOps 平台与 AWS Fargate

Airflow用于工作流编排

Airflow可以安排和管理复杂的工作流,在Python代码中定义任务和依赖关系。一个示例直接有向图DAG可以自动化数据摄取、处理、模型训练和部署任务,确保每个步骤按顺序和正确的时间执行。

值得一提的是,在运行时,Airflow并不按照常规的抽取、转化和加载ETL任务使用。每个Airflow任务调用Amazon ECS任务,并进行一些覆盖。此外,我们使用了一个名为ECSTaskLogOperator的自定义Airflow操作符,允许我们通过下游系统处理Amazon CloudWatch日志。

pythonmodeltraining = ECSTaskLogOperator( taskid=ltgt taskdefinition=ltgt cluster=ltgt launchtype=FARGATE awsconnid=ltgt overrides={ containerOverrides [ { name ltgt environment [ { name MLFLOWTRACKINGURI value ltgt } ] command [mlflow run ltgt] } ] })

Feast用于特征管理

Feast作为特征的中心仓库,确保训练和生产环境中的模型使用一致且最新的数据。它简化了模型训练和推理的特征访问,显著减少了管理数据管道的时间和复杂性。

此外,Feast促进了特征的重用,从而大大缩短了数据准备所需的时间。

pythonfrom datetime import timedeltafrom feast import Entity FeatureView FeatureService Field SnowflakeSourcefrom feasttypes import Float64

entities = [ Entity(name=siteid joinkeys=[SITEID]) Entity(name=userid joinkeys=[USERID])]

def createfeatureview(name table fieldname schemaname) return FeatureView( name=name entities=entities ttl=timedelta(days=30) schema=[Field(name=fieldname dtype=Float64)] source=SnowflakeSource( database=ltgt schema=ltgt table=table timestampfield=ltgt ) tags=ltgt )

featureview1 = createfeatureview(ltgt)featureview2 = createfeatureview(ltgt)myfeatureservice = FeatureService( name=myfeatureservice features=[featureview1 featureview1] description= This is my Feature Service owner=ltgt)

dbt用于数据转型

dbt用于在数据仓库内转型数据,允许数据团队以SQL定义复杂的数据模型。它促进了一种规范化的数据建模方法,使确保数据质量和一致性变得更加容易。此外,dbt提供了一种简单的方式来跟踪数据沿袭,从而可以预见哪些数据集将受到新引入的变化影响。

以下示意图展示了模式定义和引用该模式的模型。

MLflow用于实验跟踪和模型管理

MLflow用于跟踪实验和管理模型,为日志参数、代码版本、指标和工件提供统一接口,简化了实验比较和模型生命周期管理。

与Airflow类似,MLflow的使用也是部分的。我们主要使用的是跟踪服务器和模型注册表。根据我们的经验,工件服务器有一些限制,例如工件大小的限制因为是通过REST API发送的。因此,我们选择只部分使用这些功能。

我们并未广泛使用MLflow的部署能力,因为在当前的设置中,我们构建自定义的推理容器。

在Amazon ECS上托管与Fargate

Amazon ECS提供了一个高度可扩展和安全的环境来运行容器化应用程序。Fargate消除了管理基础设施的需要,使我们能够专注于部署和运行容器。这种抽象层简化了部署过程,使其能够根据工作负载需求无缝扩展,同时优化资源利用率和成本效率。

我们发现,在不需要GPU或分布式处理的情况下,最适合在Fargate上运行机器学习工作流的组成部分。这些包括dbt管道、数据采集作业、训练、评估和小型模型的批量推理作业。

此外,Amazon ECS和Fargate与其他AWS服务如Amazon弹性容器注册表Amazon ECR无缝集成,用于容器镜像管理,以及AWS系统管理参数存储,用于安全存储和管理密钥和配置。使用Parameter Store,我们可以集中管理配置设置,例如数据库连接字符串、API密钥和环境变量,消除了在容器镜像中硬编码敏感信息的需要。这增强了安全性并简化了维护,因为秘密和配置值可以在运行时动态检索,确保部署的一致性。

此外,将Amazon ECS和Fargate与CloudWatch集成,可以为容器化任务提供全面的监控和日志记录功能。这可以通过在任务定义的logConfiguration参数中启用awslogs日志驱动程序来实现。

为什么选择ECS与Fargate作为解决方案

无服务器模型:无需基础设施管理:通过Fargate,我们无需配置或管理服务器。这简化了操作,降低了运营开销,使团队能够专注于应用程序的开发和部署。

自动扩展:Fargate根据需求自动扩展我们的应用程序,确保最佳性能而无需人工干预。

成本效益:

按需付费:Fargate的费用基于容器使用的资源vCPU和内存。这种模式相比维持空闲资源更具成本效益。

无过度配置:由于我们只为所使用的资源付费,因此无需过度配置资源,从而节省成本。

增强的安全性:

隔离:每个Fargate任务在独立环境中运行,增强了安全性。没有与其他租户共享基础计算资源。

quickq加速器

与AWS生态系统的集成:

无缝与AWS服务集成:Amazon ECS与Fargate能够与其他AWS服务如Amazon简单存储服务Amazon S3、Amazon关系数据库服务Amazon RDS和AWS Lambda良好集成,创建一个统一的生态系统用于部署和管理应用程序。

为ML工作负载配置Amazon ECS与Fargate

为ML工作负载配置Amazon ECS与Fargate涉及以下步骤:

Docker镜像:将机器学习模型和应用容器化,包含运行ML工作负载所需的所有依赖、库和配置。创建任务定义:定义资源:创建Amazon ECS任务定义,指定Docker镜像、所需的vCPU、内存和其他配置。

环境变量:设置环境变量,例如模型路径、API密钥和其他必要参数。

IAM角色:为任务分配适当的AWS身份和访问管理IAM角色,以安全地访问其他AWS资源。

使用CloudWatch进行日志记录:使用CloudWatch记录和监控机器学习工作负载的性能和健康状况。

未来发展与应对新挑战

随着MLOps的不断演进,预见和应对即将出现的挑战至关重要,以确保平台的高效性、可扩展性和用户友好性。我们平台的两个主要未来发展方向包括:

增强客户自带模型BYOM的能力降低数据科学家的学习曲线

增强BYOM功能

随着机器学习的日益普及,平台需要便利地集成Zeta客户外部开发的模型。

未来方向:

开发标准化API:实施API,允许轻松集成外部模型,无论是使用何种框架或语言开发。这将涉及创建一组标准化接口,用于模型的引入、验证和部署。创建模型适配器框架:设计一个框架,使外部模型能够与平台的基础设施兼容,确保能够像内部开发的模型一样进行管理、跟踪和部署。增强文档和支持:提供全面的文档和支持资源,引导外部客户完成BYOM过程,包括模型准备、集成和优化的最佳实践。

降低数据科学家的学习曲线

集成多个专用工具Airflow、Feast、dbt和MLflow进入MLOps管道可能使数据科学家的学习曲线陡峭,从而潜在地妨碍他们的生产力和整体ML开发流程的效率。

未来方向:

创建统一接口:开发一个统一接口,包括UI、API和SDK,抽象出与每个工具单独互动的复杂性。该接口可以简化工作流,自动化例行任务,并呈现出整个机器学习生命周期的连贯视图。提供全面培训和资源:投资于针对不同技能水平的数据科学家的培训项目和资源。这可以包括互动教程、研讨会和详细案例研究,展示平台的实际应用。

结论

将Airflow、Feast、dbt和MLflow整合到托管于Amazon ECS与AWS Fargate的MLOps平台中,提供了一种强大的解决方案,用于管理机器学习生命周期。该设置不仅简化了操作,还提高了可扩展性和效率,使数据科学团队能够专注于创新而非基础设施管理。

额外资源

对于希望深入了解的读者,建议探索每个工具的官方文档和教程:Airflow、Feast、dbt、MLflow 和 Amazon ECS。这些资源对于理解我们MLOps平台中每个组件的能力和配置非常宝贵。

关于作者

Varad Ram 是亚马逊网络服务的高级解决方案架构师。他在应用开发、云迁移策略和信息技术团队管理方面拥有丰富经验,最近的重点是帮助客户产品化生成性人工智能用例。

Artem Sysuev 是Zeta的机器学习首席工程师,热衷于创建高效、可扩展的解决方案。他强调高效的流程是成功的关键,这促使他关注机器学习和MLOps。在Zeta,他通过自动化工作流和改进协作,确保机器学习模型顺利集成到生产系统中,从而推动创新。

Saurabh Gupta 是Zeta Global的首席工程师。他热衷于机器学习工程、分布式系统和大数据技术,致力于构建可扩展的平台,使数据科学家和数据工程师能够专注于低延迟、可恢复的系统,简化工作流并推动创新。

Mat Chldek 是Zeta Global的ML Ops高级工程经理,拥有数据科学背景,以分析和机器学习为基础。Mat关注构建可靠、可扩展的基础设施,以支持快速