Kubeflow 简介

Kubeflow 是一个开源的 Kubernetes 原生平台,用于开发、编排、部署和运行可扩展且可移植的机器学习工作负载。
376 位读者喜欢这篇文章。
MySQL 8 is coming

Opensource.com

模型构建和训练只是支持机器学习 (ML) 工作流程的一小部分。您还需要解决的其他问题包括将数据移植到可访问的格式和位置;数据清理和特征工程;分析您训练的模型;管理模型版本控制;可扩展地服务于您训练的模型;以及避免训练/服务偏差。当工作流程需要可移植且可重复,并且有许多需要集成的移动部件时,尤其如此。

此外,大多数这些活动在多个工作流程中重复发生,可能只是参数化不同。通常,您正在运行一组需要以可审计和可重复的方式执行的实验。有时,ML 工作流程的部分或全部需要在本地运行,但在其他情况下,使用托管云服务可能更有效率,这使得分发和扩展工作流程步骤以及并行运行多个实验变得容易。对于“突发性”工作负载,它们也往往更经济。

构建任何生产就绪的 ML 系统都涉及各种组件,通常混合使用供应商和手工解决方案。即使对于中等复杂的设置,连接和管理这些服务也会引入复杂性的障碍。通常,部署与它们已部署到的集群紧密相关,以至于这些堆栈是不可移动的,这意味着将模型从笔记本电脑移动到高度可扩展的云集群,或者从实验环境移动到生产就绪的环境,实际上是不可能的,除非进行重大的架构调整。所有这些差异加起来会浪费精力,并在每次转换时创造引入错误的机会。

Kubeflow 帮助解决这些问题。它是一个开源的 Kubernetes 原生 平台,用于开发、编排、部署和运行可扩展且可移植的 ML 工作负载。它有助于支持 ML 工作流程生命周期中的可重复性和协作,允许您管理 ML 管道的端到端编排,在多个或混合环境(例如,根据上下文在本地和云构建块之间交换)中运行您的工作流程,并帮助您在不同的工作流程中重用构建块。Kubeflow 还为您的 ML 工作流程提供可视化和协作支持。

Kubeflow Pipelines 是 Kubeflow 新增的组件,可以帮助您组合、部署和管理端到端、可选的混合 ML 工作流程。由于 Pipelines 是 Kubeflow 的一部分,因此在您从原型设计过渡到生产时,不会存在供应商锁定。Kubeflow Pipelines 支持快速且可靠的实验,其界面可以轻松地在 Jupyter 笔记本中进行开发,因此您可以尝试多种 ML 技术来确定哪种技术最适合您的应用程序。

利用 Kubernetes

在 Kubernetes 之上构建 ML 堆栈有很多优势。无需重新实现此类集群所需的基础功能,例如对复制、运行状况检查和监控的支持。Kubernetes 支持生成强大的声明式规范,并构建为 ML 量身定制的 自定义资源定义 (CRD)。例如,Kubeflow 的 TFJob 是一种自定义资源,可以轻松地在 Kubernetes 上运行分布式 TensorFlow 训练作业。

Kubernetes 提供了支持一致运行的 ML 流程和实验所需的可扩展性、可移植性和可重复性。它有助于构建和组合可重用的工作流程步骤和 ML 构建块,并使在不同集群上运行相同的工作流程变得容易,因为它们从原型过渡到生产,或者从本地集群移动到云端。

Kubeflow 0.3 版本

Kubeflow 已 达到 0.3 版本。以下是其一些值得注意的功能

  • 支持多种机器学习框架
    • 通过 TFJob CRD 支持分布式 TensorFlow 训练。
    • 能够使用 TF Serving 组件 服务于训练好的 TensorFlow 模型。
    • 能够使用 Seldon 服务于来自各种 ML 框架的模型。
    • 来自 Cisco 的 PyTorch 的 v1alpha2 API,它与 TFJob 运算符具有对等性和一致性。
    • 不断增长的示例集,包括 XGBoost 的示例。
  • 与 NVIDIA 合作,支持 NVIDIA TensorRT Inference Server,它支持顶级 AI 框架。

  • 基于 Apache Beam 的批量推理,包括对 GPU 的支持。Apache Beam 可以轻松编写在各种执行引擎上运行的批处理和流数据处理作业。

  • JupyterHub 安装,其中笔记本安装中包含许多常用的库和小部件。

  • 通过 Katib(基于 Google 的 Vizier)和一个新的 Kubernetes 自定义控制器支持超参数调整

  • 声明式和可扩展部署:一个新的命令行部署实用程序 kfctl.sh,以及一个基于 Web 的 启动器(alpha 版,目前用于在 Google Cloud Platform 上部署)。

  • 来自 Cisco 的 Kubebench,一个用于在 Kubeflow 上对 ML 工作负载进行基准测试的框架。

  • Kubeflow Pipelines,将在下面更详细地讨论。

TFX 支持

TensorFlow Extended (TFX) 是一个基于 TensorFlow 的平台,用于在生产环境中进行高性能机器学习,最初设计用于 Google 内部,但现在大部分是开源的。您可以在“TFX:基于 TensorFlow 的生产规模机器学习平台”中找到概述。几个 Kubeflow Pipelines 示例包含 TFX 组件作为构建块,包括使用 TensorFlow TransformTensorFlow Model AnalysisTF Data-ValidationTensorFlow Serving。TFX 库也与 Kubeflow 的 JupyterHub 安装捆绑在一起。

构建和运行 Kubeflow Pipelines

Kubeflow Pipelines 为 Kubeflow 增加了对构建和管理 ML 工作流程的支持。SDK 可以轻松地通过 Python 代码定义管道,并从 Jupyter 笔记本构建管道。

一旦您指定了管道,您就可以将其作为多个实验的基础,每个实验都可以有多个可能计划的运行。您可以利用已定义的管道步骤(组件)和管道,或构建自己的管道。

可以从 Kubeflow 仪表板访问的 Pipelines UI,让您可以轻松地指定、部署和监控您的管道和实验,并检查运行的输出。

Pipeline graph

管道图。

Inspecting the configuration of a pipeline step

检查管道步骤的配置。

Inspecting the logs for a pipeline step

检查管道步骤的日志。

Pipelines UI integrates support for launching TensorBoard

pipelines UI 集成了启动 TensorBoard 以监控给定步骤输出的支持。

Example Tensorboard dashboard

Tensorboard 仪表板示例。

从 Jupyter 笔记本构建和使用管道

Pipelines SDK 包括支持从 Jupyter 笔记本构建和运行管道的功能,包括直接从指定其功能的 Python 代码构建和编译管道的能力,而无需离开笔记本。有关更多详细信息,请参阅此示例笔记本

下一步是什么

Kubeflow 的下一个主要版本 0.4 即将于 2018 年底发布。以下是我们正在努力的一些关键领域

  • 易用性:为了使 Kubeflow 更容易被数据科学家接受,我们希望使在不必学习 Kubernetes 的情况下执行常见的 ML 任务成为可能。在 0.4 中,我们计划提供更多工具,使数据科学家可以轻松地完全从笔记本电脑训练和部署模型。

  • 模型跟踪:跟踪实验是数据科学家和 ML 工程师的主要苦差事来源。在 0.4 中,我们计划通过提供用于跟踪模型的简单 API 和数据库,使其更容易跟踪模型。

  • 生产就绪:在 0.4 版本中,我们将通过将 PyTorch 和 TFJob 运算符升级到 beta 版,继续推动 Kubeflow 向生产就绪迈进。

了解更多

以下是一些用于了解更多信息和获得帮助的资源

如果您要参加 12 月在西雅图举行的 KubeCon Seattle,请不要错过这些会议


Amy Unruh 和 Michelle Casbon 将在 12 月 10 日至 13 日在西雅图举行的 KubeCon + CloudNativeCon North America 上展示 Kubeflow 端到端:GitHub Issue 摘要

User profile image.
Amy 是 Google Cloud Platform 的开发者关系工程师,专注于机器学习和数据分析以及其他 Cloud Platform 技术。Amy 拥有 CS/AI 学术背景,曾在多家初创公司工作,从事工业研发,并出版了一本关于 App Engine 的书。

3 条评论

很棒的文章,非常有趣。谢谢!

这是我今天读到的最好的文章,真的很棒

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.