阅读我们的文章

class="lazyload

.

在本文中,我们将介绍一款工具,通过实际案例展示我们在生产环境中运行项目时使用 Vertex AI Pipelines 的经验。
这是一篇关于如何使用 Vertex AI Pipelines 配合 Kubeflow v2 在生产环境中训练和部署自定义机器学习模型的端到端教程。如果您对如何使用 Vertex AI 感到困惑,本教程将为您指明方向,因为其中的所有内容均基于实际经验。 文中包含大量管道示例,详细展示了如何利用 Vertex AI 和 Kubeflow 的诸多强大功能。此外,您还将获得一份 Makefile,它能帮助您运行关键操作,从而大幅节省时间,助您快速构建模型并使其在生产环境中顺利运行。

在机器学习中,管道可定义为一组相互关联的任务,用于执行机器学习工作流的全部或特定部分(例如:训练管道)。

简单训练管道的示例

简单训练管道的示例

使用 Kubeflow 在 Vertex AI Pipelines 上构建训练管道的示例

使用 Kubeflow 在 Vertex AI Pipelines 上构建训练管道的示例

如果设计得当,管道具有可重现性和高度可定制性的优势。这两项特性使得对其进行实验以及在生产环境中部署都变得相对容易。通过结合使用 Vertex AI Pipelines 和 Kubeflow,我们得以快速设计并运行具备上述特性的自定义管道。我们在入门套件中展示的管道示例,非常典型地反映了在处理需要部署到生产环境的机器学习项目时可能遇到的情况。 此外,我们还分享了一些技巧和自动化脚本,以便您能专注于熟悉 Vertex AI。

刚开始使用 Vertex AI Pipelines 时,面对完成同一项任务的多种可能性,我感到有些不知所措。当时我并不确定该如何构建管道才是最佳选择。几个月后,我们摸索出了方法,并形成了一些见解——至少在利用这项技术管理生产环境中项目生命周期的核心方面,我们有了明确的认识。

如前所述,本文旨在提供一套入门指南,通过实用的方法,分享我们在使用 Vertex AI Pipelines 过程中的经验和心得。我们希望这能帮助新手快速掌握这一强大的工具,而无需付出高昂的入门成本。

在接下来的章节中,我们将介绍在使用 Vertex AI Pipelines 过程中发现的最有趣的概念和功能。我们还将通过一个简单的预测项目(M5 竞赛)来演示相关内容。我们将有意不侧重于建模部分,而是重点强调将模型投入生产环境所需的各个步骤。

构建一个自定义基础镜像,并将其作为组件的基础

如果您曾使用过 Kubeflow Pipelines,您可能会有一个疑问:何时该使用基于容器的组件,何时又该使用基于函数的组件。这两种选项各有优缺点,不过,其实也存在一种折中方案。 与将所有代码依赖项封装在函数内部且通常更简单的函数型组件相比,容器型组件更适合处理存在大量代码依赖关系的复杂任务。后者运行速度更快,因为我们无需在每次修改代码时都重新构建和部署镜像。在函数型组件中,系统会使用默认的 Python 3.7 镜像来运行你的函数。

我们采用的解决方案是,通过使用默认基础镜像的覆盖版本,以相同的方式运行复杂和简单的组件。在这个修改后的基础镜像中,我们将所有代码打包安装。随后,我们在基于函数的组件中导入这些函数,就像使用 pandas 一样。这样既能以相同的方式处理复杂和简单的任务,又能将镜像构建时间缩短至仅需构建 1 个镜像(即基础镜像)。

我们还以一种便于调整组件和管道输入的方式来组织配置文件

将一个已覆盖的基础镜像作为所有组件的统一基础

将一个已覆盖的基础镜像作为所有组件的统一基础

将管道的某些部分并行化,就像编写一个 for 循环一样简单

在进行机器学习实验时,我们通常需要对一个简单的训练流程进行多次迭代,无论是为了调整超参数,还是为了构建多个模型(例如按产品类别分别构建模型)。

要做到这一点,最佳做法是将不同的训练工作流并行化,从而节省时间并优化资源。借助 Vertex Pipelines 和 Kubeflow,这一过程的设计初衷就是尽可能简化;您只需编写一个 for 循环即可。在编译管道时,Kubeflow 会自动判断哪些步骤或步骤组可以并行执行,哪些则需要依次执行。

class="lazyload

包含并行运行组件的管道示例

条件部署,让您的机器学习模型无缝运行

借助 kfp.dsl.condition,您可以轻松部署已训练好的模型,并通过一些代码逻辑为日后复用做好准备。如果您正在尝试多种配置,并希望在满足特定条件时能无缝将模型投入生产环境,Kubeflow 的这一功能将非常实用。将其与优秀的持续集成与持续部署(CI/CD)系统结合使用,您就能顺畅地管理机器学习模型的生命周期。

class="lazyload

条件部署示例

除了这些功能(以上并非全部)之外,您还将获得可重复性可追溯性可管理性,以及同样重要的出色用户界面,可在 GCP 上的 Vertex AI 界面中监控所有内容。

结论

如今,许多机器学习模型都需要在生产环境中运行。因此,如果您正在使用 GCP 并计划采用 Vertex AI,我们希望这份入门指南能助您顺利掌握该工具。如果您希望项目尽早投入实际应用(即部署到生产环境),也请务必参考这份指南。

非常感谢卢卡·塞拉、杰弗里·凯恩和罗宾·杜默克(Artefact)对构建此入门套件的协助,同时也感谢马克西姆·吕特尔(Maxime Lutel)为我们所使用的玩具项目实际完成了建模工作。

如果您想更进一步,可以在 GCP 文档中找到以下操作指南:

  • 使用cloud 安排管道任务,或通过cloud 触发管道

  • 使用 GCP 团队开发的即用型组件:google_cloud_pipeline_components import aiplatform

class="lazyload

Artefact 的 Medium 博客。

本文最初发表于Medium.com
欢迎关注我们的Medium博客!