使用MLOps实现AI的自动训练、测试和部署:概述






3.75/5 (3投票s)
在本系列文章中,我们将演示如何利用CI/CD管道——一个通常由开发人员和DevOps团队使用的工具——来创建一个完整的AI训练、测试和部署管道,该管道符合Google MLOps成熟度2级要求。
在本系列文章中,我们将引导您完成将CI/CD应用于AI任务的过程。您将最终获得一个功能齐全的管道,该管道符合Google MLOps成熟度模型2级的要求。我们将尽量保持简单,以免复杂的术语和步骤分散您的注意力。
我们假设您对Python、深度学习、Docker、DevOps和Flask有一定的了解。我们将使用Google Cloud Platform和Google Kubernetes Engine进行管道部署。但是,您也可以用同样的方式使用任何其他云提供商。
本项目将使用的数据集是COVID-19放射学数据集,该数据集在Kaggle上非常受欢迎。我们不会过多讨论数据集或我们将使用的模型,因为在这篇文章系列中,它们都不是特别重要。更多信息,请参阅此笔记本,其中涵盖了完整的模型创建过程。
CI/CD应用于机器学习
如今,每个人都在谈论CI/CD——它是什么?持续集成/持续交付,也称为CI/CD,是一种将自动化引入软件开发阶段的方法。持续集成让所有开发人员将他们的代码更改上传并合并到一个中央存储库中。持续交付意味着应用程序的发布是自动化的。通常,CD会包含另一个步骤,即持续部署,并且广泛用于软件开发周期的自动化。
所有这些概念如何应用于人工智能,特别是其最受欢迎的子集——机器学习(ML)?嗯,如今真正的挑战不是构建一个性能良好的ML模型,而是构建和操作一个使用该模型在生产环境中提供预测的系统。ML代码只是冰山一角——请看下图。
在现实生活中,实际过程中涉及的程序比图中所示的还要多。
开发和操作基于ML的软件绝非易事,因此将DevOps原则应用于AI系统是值得的。与任何其他软件相比,ML系统需要额外的持续集成服务:重新训练模型并将其集成到管道中。
项目架构
这是我们将在本项目中使用的CI/CD管道的架构图
正如您可能注意到的,它由Jenkins(CI/CD管道管理默认且最流行的工具)编排的3个主要管道、6个自动化任务和模型注册中心(一个用于测试的目录,另一个用于生产)组成。
- 如果Jenkins检测到CodeCommit存储库有推送(这意味着开发人员修改了模型代码中的某些内容),它将使用其中分配的代码(持续集成)和Dataset存储库中可用的数据集来启动从头开始的训练。训练将在Docker容器上进行,最后,如果模型达到预定义的准确率,它将被保存在模型测试注册中心(持续交付)。该单元将在使用UnitTesting中分配的代码的生产环境克隆中进行测试,如果所有阶段都通过,将通过电子邮件通知产品负责人成功,他需要执行半自动化生产部署(持续部署),这是一个将模型从测试目录复制到生产目录并启动预测服务(Model API)的脚本。
- 如果Jenkins检测到Dataset存储库有推送(意味着收集了更多数据),管道将检查生产注册中心是否已存在模型。如果存在,Jenkins将启动该模型的重新训练(持续训练),并将其保存在模型测试目录中(持续交付)。如果在生产目录中未检测到模型,则将重新训练测试目录中可用的模型。为此,Jenkins将使用DataCommit存储库中分配的重新训练代码和Dataset存储库中的数据集。接下来,将执行单元测试(使用UnitTesting存储库中可用的代码),如果一切顺利,结果将通过电子邮件通知产品负责人,他将需要执行半自动化生产部署工作流(持续部署)。
- 最后,如果UnitTesting存储库发生任何更改(意味着在单元测试步骤中添加了更多测试),将加载并测试注册中心中的模型。如果一切顺利,它将再次保存在注册中心中。
后续步骤
在下一篇文章中,我们将设置CI/CD基础——GitHub、Docker和Google Cloud Platform。敬请期待!