在 Kubernetes 上部署机器学习模型的指南

发布时间:2024年01月18日

如何在 Kubernetes 上部署模型

Kubernetes 是一个容器编排平台,用于管理容器化应用程序。 它是用于自动化容器管理过程的重要部分,例如:容器复制、扩展、监控和调度。 它是一个用 Google 的 Go 编程语言编写的开源平台。 Kubernetes 是最流行的容器管理系统之一,用于为许多不同的服务和平台提供支持。包括跨不同环境或在云网络托管服务器中运行移动应用程序。

Kubernetes 在机器学习的发展中日益发挥着重要作用。 容器化开发和部署正在成为机器学习模型的重要元素。 机器学习模型在容器化时可以轻松扩展和调度,并且工作负载性能的管理可以自动化。 容器化在不同的服务器或云环境中提供一致的状态。 开源的 Kubernetes 凭借强大的社区支持,它成为在容器内管理机器学习模型的最流行的方法之一。

它还开发了特定的工具包,比如:Kubeflow,这是专门为机器学习开发的Kubernetes工具包,使得在 Kubernetes 上部署机器学习模型的过程变得简单。 它提供了针对机器学习管道编排工具以及流行的机器学习框架和组件的简化访问。 机器学习生命周期的容器化为希望高效部署模型的组织带来了许多好处。 可扩展性和可移植性是机器学习部署的两个主要好处。

借助 Kubernetes,组织可以在容器中嵌入端到端机器学习工作流程。 本文将探讨在 Kubernetes 上部署机器学习模型,包括有关设置及其可能带来的好处的说明。

什么是 Kubernetes?

Kubernetes 是一个用于管理容器化应用程序的开源平台,最初由 Google 开发。 它是一个容器编排平台,并自动扩展、监控和调度集群内的容器。 容器是部署应用程序的虚拟环境,每个容器都与操作系统隔离部署。 这意味着容器化应用程序可以从各种不同来源(无论是本地网络还是云)获取资源,同时保持一致的环境。

尽管容器是一种轻量级解决方案,但每个容器的编排可能很复杂。 Kubernetes 用作编排工具来扩展和复制容器,并维护容器的运行状况。 它还可以自动化负载均衡和资源扩展等。 容器在加强机器学习开发和部署方面具有独特的优势,因为可扩展性和资源分配是升级机器学习模型不可或缺的一部分。 Kubernetes 能够实现 GPU 加速等元素的自动化,有助于提高机器学习实验和部署的效率。 Kubeflow 是专门为 Kubernetes 上的机器学习模型设计的工具包。

什么是Kubeflow?

Kubeflow 是一个开源工具包,包含专为 Kubernetes 上的机器学习模型开发的工具、组件和框架。 它旨在通过 Kubernetes 简化容器化环境中机器学习模型的开发、部署和持续管理。 其目标是为整个机器学习生命周期提供端到端平台。 它涵盖了训练、生产和部署,而不仅仅是机器学习生命周期的一个要素。 Kubeflow 由 Google 构建,作为在 Kubernetes 上部署机器学习模型的一种方式,然后作为开源平台发布。 重点是为端到端机器学习工作流程提供平台,并改进实际部署模型的过程。

Kubeflow 为整个机器学习管道提供了一个框架,它由不同的模块组成。 每个阶段都概述了机器学习生命周期,从数据清理和验证到模型训练和部署。 Kubeflow 提供了运行更广泛的机器学习工作流程的这些独立模块的能力,每个步骤都借鉴机器学习框架。 它是针对 Kubernetes 的机器学习的特定改进。 用户可以为机器学习管道中的每个步骤选择不同的组件。

实际上,这意味着可以从不同的设备和系统访问整个机器学习工作流程。 整个管道位于一系列容器内,这意味着该模型是可移植的。 容器也更容易扩展,在需要时可以利用更多 GPU 或 CPU 资源。 这与传统部署形成鲜明对比,传统部署会将机器学习管道部署在许多不同的状态和环境中。

Kubeflow 引入了模型、框架和存储等机器学习特定的管理,而 Kubernetes 则负责容器管理。

如何在 Kubernetes 上部署机器学习模型?

第一步是清晰地概述从实验阶段到生产和部署的机器学习工作流程。 可以通过概述机器学习工作流程的每个步骤来确定应在容器内部署的独特阶段。 至于在 Kubernetes 上部署模型的过程,有一些工具包和平台可用于简化该过程。 Kubernetes 专为编排容器化应用程序而设计,这些平台引入了特定于机器学习和深度学习的元素。

在 Kubernetes 上部署机器学习模型的主要平台是 Kubeflow。 与 Kubernetes 本身一样,Kubeflow 最初是由 Google 开发的。 它是一个专用工具包,专为在 Kubernetes 上端到端部署机器学习模型而设计。 另一个专为深度学习框架设计的平台是最初由 IBM 开发的 Fabric for Deep Learning (FfDL)。 这两个平台都允许用户添加不同的组件来自动化或管理机器学习工作流程的不同阶段。 例如,借助 Kubeflow,可以将 Jupyter Notebook 集成到工作流程的实验阶段,在该阶段数据科学家可以与数据交互并分析数据。 可以添加 Seldon Deploy 等组件来帮助自动化机器学习管道的生产阶段。

使用 Kubeflow 在 Kubernetes 上部署机器学习模型

Kubeflow 是一个流行的平台,用于为 Kubernetes 构建机器学习管道。 它提供了一种为 Kubernetes 映射和部署端到端机器学习管道的方法,并且是支持容器化机器学习模型的流行方法。 用户可以通过用户界面为机器学习工作流程的每个阶段选择组件,并修改配置文件以微调和调整机器学习管道。

使用 Kubeflow 在 Kubernetes 上部署机器学习模型的一个关键要素是 Kubeflow Pipelines。 它是一个允许端到端编排机器学习管道的平台。 它可以作为 Kubeflow 的一部分或作为独立平台使用。 它具有用于设计机器学习管道的仪表板和用户界面,因此对于针对不同工作流程执行实验非常有用。 然后,机器学习管道可以重复使用或适应新项目,以帮助简化整个流程。

在实践中,Kubeflow被用作整个机器学习工作流程的框架或脚手架。 每个阶段都可以添加流行的组件。 有多种方法可以安装和设置用于机器学习的 Kubeflow。

使用 Kubeflow 在 Kubernetes 上部署机器学习模型的一般流程包括:

  1. 下载 Kubeflow 部署二进制文件
  2. 检查 Kubeflow 与 Kubernetes 服务提供是否兼容。
  3. 为机器学习工作流程的每个阶段调整配置文件。
  4. 将容器部署到您的环境,包括设置集群大小。
  5. 为工作流程的每个阶段安装单独的组件。
  6. 集成在机器学习过程的实验阶段创建的 Jupyter notebooks。
  7. 使用 Kubeflow Pipelines UI 试验工作流程。
  8. 配置训练作业 operator 来训练机器学习模型。
  9. 将训练好的模型导出到 Kubernetes。
  10. 使用 Seldon Core 集成来部署机器学习模型。

使用 Fabric for Deep Learning (FfDL) 在 Kubernetes 上部署机器学习模型

Fabric for Deep Learning (FfDL) 是 IBM 开发的一个平台,用于在 Kubernetes 上运行深度学习框架。 深度学习算法通过多层网络架构模拟人脑。 模型通常用于处理原始模拟数据并自动提取原始数据的特征。

FfDL 主要用作提供深度学习模型即服务的组织的平台。目的是构建一个易于扩展的堆栈,并且可以在云中无缝使用。 这避免了需要本地高资源系统和机器来训练机器学习模型。 相反,用户可以利用云中的容器化深度学习框架。 流行的深度学习框架也可以在 FfDL 框架内选择和使用。

FfDL 由一系列用于机器学习工作流程各个部分的 Pod 组成,由 Kubernetes 管理。 与 Kubeflow 相比,FfDL 在某些领域受到限制,最明显的是具有更多基本的超参数优化选项。 因此,一般的机器学习模型可能更适合使用 Kubeflow。

使用 FfDL 部署机器学习模型的过程包括:

  1. 选择支持机器学习的框架,例如: Pytorch、TensorFlow 或 Caffe。
  2. 将模型管道转换为容器,从模型创建容器镜像。
  3. 上传容器化模型管道。
  4. 连接训练数据并配置训练作业。
  5. 使用 FfDL 用户界面训练模型。
  6. 使用 Seldon Core 将模型部署到 Kubernetes 集群。

在 Kubernetes 上部署机器学习模型的优势

机器学习生命周期由许多不同的元素组成,单独管理这些单独的元素可能非常耗时且资源密集。 例如,训练阶段将需要与最终部署不同的环境和资源。 容器化机器学习模型的好处在于,容器提供了可扩展的一致状态,无论在何处获取资源。 这意味着机器学习管道可以跨一系列设备或网络(例如本地或云服务器)进行部署和访问。

您可以在一处运行机器学习工作流程的所有元素,并在用户运行 Kubernetes 的任何地方进行访问。 Kubernetes 意味着机器学习管道的不同部分不是在不同的系统和服务器上托管和运行,而是全部位于同一个可访问的位置。 这意味着您可以从不同的设备以及本地或云服务器上访问整个机器学习工作流程。 机器学习工作负载的元素可以重复使用并重新用于新项目,从而进一步提高效率。

Kubernetes 的另一个优势是能够自动化部分机器学习过程。 Kubernetes 将自动管理和扩展资源、执行容器运行状况检查和扩展服务。 这消除了手动管理容器的需要,从而简化了机器学习生命周期的管理。 模型的自动部署也可以通过 Kubernetes 进行管理。 机器学习管道也可以修改和重用,进一步提高机器学习项目的效率。

在 Kubernetes 上部署机器学习的主要优势包括:

  1. 机器学习管道的自动化。
  2. 自动容器管理和健康检查,释放资源和时间。
  3. 特定阶段和节点可以逐步更新,从而减少总体停机时间。
  4. 改进了机器学习模型所有领域的访问和可移植性。
  5. 改进基于云的机器学习模型的管理。
  6. 自动扩展机器学习模型,例如在需要时自动加速 GPU 使用。

针对每个组织的机器学习部署方案 Seldon

Seldon 将机器学习从 POC 转移到生产和规模化,缩短了价值实现时间,使模型的运行速度提高了 85%。 在这个快速变化的环境中,Seldon 可以为您提供提升表现所需的优势。

借助 Seldon Deploy,您的企业可以有效地管理和监控机器学习、最大限度地降低风险并了解机器学习模型如何影响决策和业务流程。 这意味着您知道您的团队已经尽职尽责地创建了更公平的系统,同时提高了绩效。

文章来源:https://blog.csdn.net/AAI666666/article/details/135643882
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。