解开Kubeflow管道的神秘面纱第一部分:Kubernetes上的数据科学工作流程
by liam zheng on 3 September 2020
Kubeflow管道(Pipeline)是构建可移植、可扩展的机器学习工作流程最好的方式,也是更大的Kubeflow生态的一部分,旨在减少大规模训练和部署机器学习模型的复杂性和时间。
在这个系列的博客文章中,我们将介绍Kubeflow pipelines和展示了这种方法来产生可重用和可再现的数据科学。 🚀
我们将探讨为什么Kubeflow为数据科学工作流程带来了正确的标准化,然后说明了如何通过Kubeflow管道实现这一目标。
在第二部分种,我们将开始上手实践。我们也会利用Fashion MNIST数据集和基础Tensorflow示例,采用逐步方法将示例模型转换为Kubeflow管道,以便你可以执行此操作。
为什么要用Kubeflow
机器学习工作流程可能涉及许多步骤,并且如要保存所有这些步骤到笔记本或脚本中将会变得难以维护,共享和协作,这导致大量“机器学习系统中隐藏的技术债务”。
另外,这些步骤通常在不同的系统上运行。在实验的初始阶段,数据科学家将在工作站或本地训练平台上工作,大规模训练通常会在云环境(私有,混合或公有云)中进行,而推理和分布式训练则经常发生在边缘端。
容器提供了正确的封装,避免了每次开发者改变执行环境时调试的需求,且Kubernetes将容器的调度和编排带到了基础设施中。
然而,管理Kubernetes顶端的机器学习工作流程仍然是一项专门的运营工作,这也是我们不想给数据科学家添加的工作。Kubeflow弥补了在AI工作负载和Kubernetes间的间隔,使得机器学习运营更好管理。
什么是Kubeflow管道?
Kubeflow管道是Kubeflow最重要的功能之一,有望使您的AI实验具有可重复性,可组合性。例如,可互换的组件,可扩展,并且易于共享。
管道是机器学习工作流程的统一表示形式,类似于第一幅图中描述的步骤序列,其中包括工作流程的组件及其各自的依存关系。具体地说,管道是有向无环图(DAG),每个节点上都有一个容器化过程,该过程在Argo之上运行。
每个管道组件,呈现为一个区块,是一个独立的代码,通常打包为Docker镜像。它包含输入(参数),输出和管道中执行的一步。在上面管道示例中,transform_data步骤需要作为extract_data和generate_schema步骤的输出产生的参数,并且其输出是train_model的依赖项。
你的机器学习代码是被包入组件中的,你可以对组件进行:
- 指定参数——在每次运行时在仪表中可进行编辑,配置。
- 挂载持久卷——如我们的笔记本无故终止,不能添加持久卷的话,我们会丢失全部的数据。
- 指定要生成的工程文件——如方便地存储在Kubeflow仪表板内的Artifact Store中的图形,表格,选择的图片,模型。
最后,当你运行管道,根据Kubernetes调度,现在将在整个集群中执行每个容器,同时考虑到相关性。
容器化的编排使得其可简单复用,分享或随着工作流程的变化而更换组件,这种情况很常见。
在运行管道后,你能在管道接口上研究结果,调试,调整参数和通过不同参数或数据源执行的管道来进行实验。
通过这样的实验,你保存和比较运行结果,保持最佳性能的模型和工作流程的版本控制。
扩展阅读
要持续学习和实验Kubeflow和Kubeflow管道,你可以:
- 观看我们举办的研讨会
- 尝试运行Github上的Kubeflow示例
- 阅读文章Kubernetes for data science: meet Kubeflow
- 访问ubuntu.com/kubeflow
如何体验Kubeflow?
要在Windows、macOS或者Ubuntu上部署Kubeflow,可参考:
This blog series is part of the joint collaboration between Canonical and Manceps.
Visit our AI consulting and delivery services page to know more.
订阅博客文章
查看更多内容
大型语言模型(LLM):定义、普及原因、训练方式
大型语言模型(LLM)是专门用于理解自然语言的机器学习模型。生成式 AI 在世界范围内被广泛采用之后,大型语言模型便广为人知,但它们的应用范围不止于聊天机器人。LLM 适合生成翻译或内容摘要。本篇博客将介绍大型语言模型 (LLM),包括其优点、挑战、出名的项目和未来发展趋势。 大型语言模型(LLM)是机器学习模型。它们通常包含深度学习的最新进展。这些模型可以执行与语言相关的任务,不只是文本生成。它们采用非常大的非结构化数据集进行训练,以学习模式并识别文本中的关系。文本可以有条件地加以提示,从而简化自然语言或代码中的有用任务。 语言模型的复杂程度各不相同。通常,LLM 指的是使用深度学习技术捕获复杂模式以生成文本的模型。它们具有大量的参数,通常使用自监督学习进行训练。大型语 […]
新吉祥物加冕礼:Noble Numbat
无论是通过民众投票、天意还是湖中仙女赐予王者之剑,登上王位的往往是声名显赫或出身高贵的人。在我们 20 周年前夕,很高兴向大家展示 Ubuntu 24.04 LTS 的吉祥物—— Noble Numbat(尊贵的袋食蚁兽)。 低微出身 说到 “尊贵”,人们可能很难首先想到来自澳大利亚的神秘有袋类动物——袋食蚁兽。不过它们的外表非常具有欺骗性。这些不可思议的濒危物种实际上是口袋大小的食蚁兽,它们完全以蚂蚁为食,依靠身体三分之一长的舌头捕捉蚂蚁。它们的背部有着黑白相间的条纹,像极了王袍,因而被选为西澳大利亚州的象征动物。袋食蚁兽象征着出身低微也能享誉世界的人。 至高成就 同样,Ubuntu 也从构建更加人性化的 Linux 这样一个初出茅庐的梦想发展成为一个备受信赖的平台 […]
基于 MicroK8s 和 Ubuntu 实时内核支持的 Intel FlexRAN 组件自动扩展
RAN 随着每一代移动通信技术的发展而不断演变,从而在用户设备和核心网络之间实现更快的数据传输。内部互连设备数量的增多使得数据量比以往任何时候都要多。至于现有的网络架构,其挑战在于处理不断增加的工作负载,以及更快地处理、分析和传输数据的能力。而对于 5G 生态系统,则需要实现 RAN 的虚拟化。第五代移动网络需要具备更大的灵活性以适应需求,具备可扩展性以满足运行时的网络条件,以及需要自动化以进行远程管理,而这些只能通过虚拟 RAN 来实现。 Intel FlexRAN 解决了传统 RAN 架构所面临的挑战。它能够从核心网络功能中将底层硬件抽象化,以实现最佳的资源利用。FlexRAN 是 O-RAN (OpenRAN) 的改进和参考实现,具有在不同供应商设备之间进行互操作 […]