MLOps指南:核心理念、实践方法

2023年11月14日 由 alex 发表 446 0

1

为什么是MLOps?

机器学习运维,或者更常见的简称MLOps,是一个在数据领域频繁出现的术语。


尽管我们大多数人在学校或者通过在线课程学习了关于机器学习和创建机器学习模型的知识,但在大多数地方,MLOps依然是一个未被触及的话题。


在我们深入了解MLOps的“内容”之前,想象一下这个场景 —— 你的初创公司销售各种商品,如服装、鞋子、个人护理用品等等。你们每个月卖出1000+件商品。但你想把销量提高,以此来降低这些商品的生产成本。假设每月销售10,000+件商品可以显著降低生产成本。但你怎么才能卖这么多呢?你想到的一个点子是建立一个推荐系统,来基于用户的浏览和购买行为给予建议。你为你的业务构建了一个强大的机器学习模型,这个模型能向你的用户推荐产品,并且你已经测试过了。


但这就是主要问题出现的时候 —


  • 你如何以及在哪里部署这个模型?
  • 你怎样才能将这个模型提供给网站,以便于网站易于使用这个模型并向用户显示相关输出?
  • 你每天都会获得大量的新数据,这些数据可以用于进一步提高模型的准确性,那么你应该如何去重新训练它呢?


那么什么是MLOps呢?

上面提到的问题构成了我们所说的机器学习运营或简称MLOps的基础。正如名称所暗示的,MLOps是一种实践,它允许你自动化一个机器学习流程的端到端生命周期。


MLOps不仅帮助开发模型,还帮助处理其它关键方面,这些方面有助于构建一个生产就绪的模型,比如跟踪不同的机器学习实验、检测数据偏移、部署、提供和监控模型。


构成MLOps平台有效性的关键组件


2


  • 合作环境 —— 一个你和你的团队成员可以聚集在一起构建机器学习模型的地方,因为你通常会和一个团队合作来创建健壮的模型。拥有一个协作环境有助于整个团队更好地理解已完成的工作,并允许其他成员贡献和协作构建一个高效的模型。
  • 版本控制 —— 可以将其看作是专门为跟踪模型更改而设计的“git”。每个预测建模任务实际上都是一个实验,直到你获得结果。就像任何其他实验一样,你需要了解所做的更改,这样你就有一些上下文,并且在需要时可以回到那些更改。
  • 模型注册 —— 可认为是版本控制的扩展。想象一下你正在处理10个不同的模型的情况。当你在本地进行操作时,你可能会将模型命名为“test”、“test_4”、“test_best”、“test_worst”等等。这只会造成极大的混乱。然而,MLOps平台的版本控制组件与模型注册组件相结合,使得跟踪和命名模型更加流畅。将此功能视为你的机器学习模型的目录。这样的功能帮助追踪不同版本,试验超参数,并选择最佳表现的模型进行部署。
  • 模型部署和服务 —— 这是我个人最喜欢的部分,因为这是你能看到你的模型付诸实践的地方。模型部署简化了确定如何打包你的模型、选择合适的基础设施以及自动扩缩的过程。一旦你的模型部署完成,你可以创建一个API端点,以便模型可以向最终用户(大多数是模型集成到其中的产品)“服务”。这就是你看到你的模型付诸实践的方式!
  • 监控 —— 这是机器学习管道后期生产环节中非常关键的一个组成部分。一旦模型部署并提供服务,你想要了解其性能指标,比如响应时间、准确性和资源利用率。监控有助于为任何性能下降设置警报。
  • CI/CD —— 持续集成和持续部署是软件工程原则,延伸到从数据工程到机器学习管道的各个方面。当你的代码更新时,你想确保模型重新进行训练、验证和测试。CI/CD有助于此,并允许你在实际部署模型之前设定某些基准。


MLOps平台还有更多组件,如安全性、模型治理、文档和A/B测试,这些都需要考虑并根据需要利用。


如何有效使用MLOps平台?

MLOps不能被视为一个独立的努力,因为它需要多个团队的合作,例如数据工程、数据科学、机器学习和DevOps。构建一个跨职能和协作的团队是有效构建和发布机器学习模型的关键第一步。


数据工程师应该专注于通过帮助将正确的数据呈现到数据湖或数据仓库中来简化机器学习工程师和数据科学家的工作。所有基本的数据清理都必须在上游处理,因为这会使数据科学家和机器学习工程师更容易专注于他们最擅长的事情,生成洞察力和构建高效的预测模型。为简单起见,假设数据工程团队已经将所有相关数据推送到像Snowflake这样的数据仓库。这样,机器学习工程师可以轻松地检索数据,因为大多数MLOps平台都有连接器连接并从不同来源获取数据。


数据科学家和机器学习工程师必须合作进行实验。进行实验时,应该通过使用连接器简单地使用数据工程师提供的数据。然而,数据科学家和机器学习工程师的工作是从数据中构建训练、验证和测试数据集。一旦完成这项工作,模型开发、版本控制和模型注册这些有趣的部分就变得至关重要。当不同的实验被执行时,跟踪每个实验所做的工作以及下一个或下一些实验与前一个或前一些实验有何不同变得非常重要,这就是版本控制发挥作用的地方。每当你认为有一个基线模型或一个高性能模型或你想要储存并稍后回到的模型时,就可以轻松地将模型本身上传到注册表。


一旦数据科学家和机器学习工程师对某个模型感到满意,下一步就是部署模型并确定如何提供服务。虽然某些MLOps平台非常容易为模型提供服务,但有些平台可能没有强大的服务模型的能力。如果你想通过API端点为你的模型提供服务,你可以使用Flask或FastAPI创建这样的API。


DevOps在最初阶段和最后阶段成为一个关键组成部分,尤其是当你有一个协助你进行MLOps的工具时。他们将协助从基础设施的角度建立MLOps工具,并应处理该工具的任何可用更新,如果被认为有必要进行定期维护,并确保平台的安全。在最后阶段,一旦从开发到部署到提供服务的一切都完成了,DevOps工程师也可以和机器学习工程师一起建立一个CI/CD过程,以自动化推送给模型的任何新更新,同时为新变化的反映设定一定的基准并启用必要的监控能力。


如何选择一个MLOps平台?

你可以考虑设置的MLOps工具有很多。虽然有些是付费的,但也有一些开源替代品。


开源MLOps工具 —— MLFlow、Kubeflow、Pachyderm、数据版本控制(Data Version Control)是一些开源MLOps工具。


付费MLOps工具 —— AWS SageMaker、Databricks、Snowpark是一些由行业领先者提供的工具。


确定哪个MLOps工具最适合你的团队取决于很多因素:


  • 你的机器学习单元有多大?
  • 你团队的技术专长是什么,即你是否有能够立即设置开源工具的人,相比于托管云工具?
  • 你的预算是多少?
  • 你的模型在生产中的使用频率是多少,以及你需要多少计算资源来进行模型开发?


这些只是一些问题,但回答这些问题(以及任何其他你认为相关的问题)将帮助你做出一个明智的决定,选择哪个工具。许多提供付费MLOps平台的公司通常提供免费试用和演示。


在你决定使用哪个工具之前,通过一个现场演示并通过一个快速的试用/概念验证(PoC)来测试事情是一个好主意。


结论

虽然构建ML/AI模型很有趣,但也很重要的是要考虑一个前瞻性问题——“我如何部署和提供这些模型,同时简化重新训练和运营方面?”


你现在必须已经意识到我为什么说MLOps不是一个孤立的努力。MLOps是一个概念,一种实践,使你能够快速推出机器学习模型的同时简化操作方面。有工具允许你遵循这一实践,但即使在获取工具之后,它仍然是一个跨职能的努力。


MLOps可能看起来不好玩,但正是这一实践使你能够构建那些“酷”的机器学习模型并简化操作部分!

文章来源:https://medium.com/data-engineer-things/mlops-the-why-what-and-how-0359cb9bd024
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
下一篇 解决LLM的幻觉
评论 登录
热门职位
Maluuba
20000~40000/月
Cisco
25000~30000/月 深圳市
PilotAILabs
30000~60000/年 深圳市
写评论取消
回复取消