目录

CI/CD应用于机器学习

项目架构

下一步


下载源 - 1.2 MB

在本系列文章中,我们将引导您完成将CI/CD应用于AI任务的过程。您最终会得到满足Google MLOps 成熟度模型2级要求的功能管道。我们将尽量保持简单,以免用复杂的术语和步骤分散您对主要目标的注意力。

我们假设您对PythonDeep LearningDockerDevOpsFlask有一定的了解。我们将使用Google Cloud PlatformGoogle Kubernetes Engine进行管道部署。但是,您可以以相同的方式使用任何其他云提供商。

我们将在这个项目中使用的数据集是COVID-19 放射照相复制,它在Kaggle非常流行。我们不会过多讨论我们将使用的数据集或模型,因为在本系列文章的上下文中,两者都不是特别重要。有关详细信息,请参阅此笔记本,其中涵盖了整个模型创建过程。

CI/CD应用于机器学习

现在每个人都在谈论CI/CD——它是什么?持续集成/持续交付,又名CI/CD,是将自动化引入软件开发阶段的一种方式。持续集成使所有开发人员将他们的代码更改上传并合并到一个中央存储库。持续交付意味着应用程序发布是自动化的。通常,CD 吸收了另一个步骤,即持续部署,并广泛用于软件开发周期的自动化。

所有这些概念如何应用于人工智能,特别是机器学习(ML),它最流行的子集?嗯,现在真正的挑战不是构建一个实现良好性能的ML模型,而是构建和运行一个使用该模型在生产中提供预测的系统。ML代码只是冰山一角——见下图。

在现实生活中,这个过程涉及的程序比图片显示的还要多。

开发和操作基于ML的软件远非易事,这就是将DevOps原则应用于AI系统的价值所在。与任何其他软件相比,ML系统需要来自持续集成的额外服务:重新训练模型并将其合并到管道中。

项目架构

这是我们将在这个项目中使用的CI/CD管道的架构:

您可能会注意到,它由Jenkins编排的3个主要管道(CI/CD管道管理的默认和最受欢迎的工具)、6个自动化任务和模型注册表(一个用于测试的目录和另一个用于生产的目录)组成:

  1. 如果JenkinsCodeCommit存储库中检测到推送(这意味着开发人员修改了模型代码中的某些内容),它将使用其中分配的代码(持续集成)和数据存储库中可用的数据集从头开始训练。训练将在Docker容器上执行,最后,如果模型达到预定义的准确度,将保存在模型测试注册表(持续交付)中。该单元将使用UnitTesting分配的代码在生产环境的克隆中进行测试,如果所有阶段都通过,成功将通过电子邮件通知产品所有者,这将需要执行半自动化生产部署(持续部署),这是一个脚本,将模型从测试目录复制到生产目录并启动预测服务(模型API)。
  2. 如果Jenkins数据集存储库中检测到推送(意味着已经收集了更多数据),管道将检查模型是否已经存在于生产注册表中。如果是,Jenkins将启动该模型的重新训练(持续训练)并将其保存在模型测试目录中(持续交付)。如果在生产目录中未检测到模型,则将重新训练测试目录中可用的模型。为此,Jenkins将使用在DataCommit存储库中分配的再训练代码和在Dataset 中的一个数据集。接下来,将执行单元测试(使用UnitTesting可用的代码存储库),如果一切顺利,结果将通过电子邮件通知产品所有者,这将需要执行半自动化生产部署工作流(持续部署)。
  3. 最后,如果在UnitTesting存储库中进行了任何更改(意味着在单元测试步骤中添加了更多测试),则会加载并测试来自注册表的模型。如果一切顺利,它将再次保存在注册表中。

下一步

接下来的文章中,我们将建立CI/CD基地——GitHub上,Docker Google Cloud Platform。敬请关注!

https://www.codeproject.com/Articles/5301644/Automatic-Training-Testing-and-Deployment-of-AI-Us

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐