照片由 Arian Darvishi 提供,来源于 Unsplash
MLOps,即机器学习运维,是用于模型部署到生产环境的一系列技术和工具。近年来,DevOps 在缩短软件发布之间的时间和减少差距方面的成功,对任何公司的生命周期都至关重要。
1. 谷歌网络安全证书 - 快速进入网络安全职业生涯。
2. 谷歌数据分析专业证书 - 提升你的数据分析能力
3. 谷歌 IT 支持专业证书 - 支持你的组织的 IT
由于成功的历史,开发人员进入了机器学习领域,应用 DevOps 原则,这催生了 MLOps。通过将 CI/CD 原则与机器学习模型结合,数据领域能够及时整合和交付模型。MLOps 引入了新的原则,如持续训练 (CT) 和持续监控,使生产环境更加适合任何机器学习模型。
随着 MLOps 的进步,我们应该遵循一些最佳实践,以实现最佳工作流程。这些实践是什么呢?让我们深入了解一下。
在继续之前,本文假设读者已具备 MLOps、机器学习和编程的基础知识。考虑到这一点,让我们继续探讨最佳实践。
通过清晰的结构来评估 MLOps 更加容易。没有适用于每一个点的确切 MLOps 流水线和工具,因此我们需要为我们的项目建立清晰的结构。一个组织良好的项目结构使得我们未来的项目更易于导航、维护和扩展。
项目结构意味着我们需要从头到尾了解,从业务问题到生产和监控,都需要精确。一些改进我们项目结构的建议包括:
-
根据环境和功能组织我们的代码和数据。同时,保持代码和数据的命名规范整洁,以避免意外。
-
使用版本控制,如 GIT 或 DVC 来跟踪更改,
-
拥有一致风格的文档,
-
与团队沟通你所做的任何更改。
建立清晰的项目结构是一个麻烦的过程,但从长远来看,它肯定会对我们的项目有帮助。
MLOps 不仅仅是一个概念,它也涉及到工具。你的 MLOps 活动中有很多工具可以选择。然而,选择取决于你的项目和公司要求。
例如,如果公司的合规要求数据分析必须在本公司创建的工具中完成,我们必须遵守。这就是为什么了解你在 MLOps 管道中想使用的工具栈在开发能力时至关重要。
为了帮助你了解项目所需的工具,这里有MLOps Stack Template由Valohai提供,你可以参考。
图片来源:Valohai
另外,尽量将工具限制在三到五个之间。使用的工具越多,情况就会变得越复杂。
在我们的管道中使用 MLOps 的目标是最小化技术债务。这是一个很好的目标,因为我们不希望技术债务让项目变得复杂。然而,不要因为我们想要最小化技术债务而让开支变得过高。
许多用于 MLOps 的工具是基于订阅或按使用收费的,这取决于工具本身。与其从头开发或使用开源工具,许多付费工具提供了更好的集成 MLOps 体验的服务。
但有时我们需要记住,服务是需要收费的,而我们又稀疏使用这些服务,这也是我在早期采用 MLOps 时遇到的情况。记得好好追踪开支,我们不希望 MLOps 带来的价值被金钱削减。
使用像 AWS 这样的云服务,计算器和警报会提醒你开支。如果没有,可以尝试使用各种工具来跟踪。即使是简单的 Excel 也能奏效。
我们不仅需要一个简洁的项目结构,还需要MLOps 管道每个部分的标准。最小化技术债务意味着我们希望一切正常运作,常常问题出在团队缺乏标准。
想象一下,如果工具、变量、脚本、数据等的命名是随机的,并且团队成员之间没有一致性。开发者需要理解发生了什么,过程会变得更长,并且会产生技术债务。
标准化不仅适用于命名约定,还可以应用于与 MLOps 管道相关的所有方面。数据分析过程、使用的环境、管道结构、部署过程等等。制定所有标准,MLOps 的效果会更好。
我们的 MLOps 准备情况有多远是一个我们需要经常问的问题。我们希望充分发挥 MLOps 的好处,这只有在成熟度达到时才会出现。遗憾的是,这不是一天或一个月可以实现的。
这可能需要一些时间,但这就是为什么在实施 MLOps 时不要等待一个完美的管道。相反,从可以首先处理的事项开始,并持续评估我们的 MLOps 准备情况。
作为参考,我喜欢使用 Microsoft Azure 提供的 MLOps 成熟度金字塔来评估准备情况。共有五个级别,每个级别为我们的生态系统提供价值。
图片来源于 Microsoft Azure
MLOps 或机器学习操作对公司生命周期至关重要。这就是为什么你可以遵循一些最佳实践:
-
建立一个清晰的项目结构
-
了解你的工具栈
-
跟踪你的开支
-
为一切设定标准
-
定期评估你的 MLOps 成熟度
希望这有所帮助。
Cornellius Yudha Wijaya 是一名数据科学助理经理和数据撰稿人。在全职工作于 Allianz Indonesia 期间,他喜欢通过社交媒体和写作媒体分享 Python 和数据技巧。