机器学习技术系列:【机器学习工程化平台 Kubeflow】简介

时间:2023-02-20 19:57:09

导言

如今,很多科技企业都投入了对机器学习技术的研究和应用中。但是面临的情况可能是组织已经在本地使用机器学习,但还不能够将其部署到生产环境中;或者能够部署模型,但无法对其进行有效管理。在这种情况下,最有价值的技能不是训练模型,而是管理模型,并以让它们产生最大影响的方式部署它们。

了解模型开发生命周期

通常机器学习或模型开发遵循以下路径:数据→信息→知识→洞察力。这种从数据中产生洞察力的方式可以用下图来形象地描述。 机器学习技术系列:【机器学习工程化平台 Kubeflow】简介

了解“机器学习工程化”

机器学习工程化是指将机器学习模型的开发、部署和维护纳入到软件工程的流程中,以确保模型能够在生产环境中稳定、高效地运行。机器学习工程化的目标是实现模型的可重复性、可扩展性、可维护性和可监控性,同时保持模型的准确性和可解释性。

一些实现机器学习工程化的最佳实践:

  1. 数据管道:建立自动化的数据收集、清洗、处理和转换管道,确保数据的一致性和准确性。
  2. 版本控制:对于代码、数据和模型等重要组件进行版本控制,以便快速回滚和追溯。
  3. 自动化测试:建立自动化的单元测试和集成测试,确保模型的准确性和稳定性。
  4. 模型监控:建立监控系统,定期检查模型的性能和预测结果,及时发现和解决问题。
  5. 模型部署:使用容器技术(如Docker)将模型封装为服务,方便部署和管理。
  6. 可解释性:尽量使用可解释的模型,以便在出现问题时能够理解模型的决策过程。
  7. 质量保证:建立质量保证流程,确保模型的可靠性和一致性。
  8. 持续集成和持续部署:建立自动化的持续集成和持续部署流程,确保模型的快速迭代和发布。
  9. 团队协作:建立跨学科的团队合作机制,促进数据科学家、数据开发工程师和运维人员之间的协作和交流。
  10. 安全和隐私:建立安全和隐私保护机制,确保模型的数据和预测结果的保密性和安全性。

如果你是一名数据科学家,试图将模型投入生产;或者你是一名数据工程师,试图使模型具有可扩展性和可靠性,Kubeflow都可以帮助到我们。Kubeflow解决的正是机器学习从研究到生产的问题。

了解Kubeflow

Kubeflow 是一个云原生工具集,适用于MDLC(模型开发生命周期)的所有阶段(数据探索、特征准备、模型训练/调整、模型服务、模型测试和模型版本管理)。它是基于Kubernetes 的机器学习工具包,这些工具可以让传统上独立的工具无缝地结合在一起工作。工具的一个重要部分是Pipeline系统,它允许用户建立集成的端到端Pipeline,用于连接MDLC中的所有组件。   我们可以通过 Kubeflow 调整配置以选择要用于 ML 工作流每个阶段的平台和服务:

  • 数据准备
  • 模型训练
  • 预测服务
  • 服务管理

Kubeflow试图通过三个特征来简化机器学习:可组合性、可移植性和可扩展性。

  • 可组合性:Kubeflow的核心组件来自机器学习从业者已经熟悉的数据科学工具。它们可以独立使用,以促进机器学习的特定阶段,也可以组合在一起形成端到端Pipeline。
  • 可移植性:通过基于容器的设计并利用Kubernetes及其云原生架构,Kubeflow不限制开发环境。我们可以在笔记本电脑上进行实验和原型设计,并毫不费力地将其部署到生产中。
  • 可扩展性:通过使用Kubernetes,Kubeflow可以根据集群上的需求,通过改变底层容器与机器的数量和大小来动态扩展。

Kubeflow 架构概述

下图显示了 Kubeflow 作为一个平台,用于构建在 Kubernetes 之上的 ML 系统组件: 机器学习技术系列:【机器学习工程化平台 Kubeflow】简介

了解机器学习工作流

开发和部署 ML(机器学习) 系统时,ML 工作流通常由多个阶段组成。开发 ML 系统是一个迭代过程。我们需要评估 ML 工作流各个阶段的输出,并在必要时对模型和参数进行更改,以确保模型不断生成所需的结果。 机器学习技术系列:【机器学习工程化平台 Kubeflow】简介 在试验阶段,我们将根据初始假设开发模型,并以迭代方式测试和更新模型以生成所需的结果:

  • 确定我们希望 ML 系统解决的问题。
  • 收集和分析训练 ML 模型所需的数据。
  • 选择 ML 框架和算法,并对模型的初始版本进行编码。
  • 试验数据和训练模型。
  • 调整模型超参数,以确保最高效的处理和最准确的结果。

在生产阶段,部署执行以下过程的系统:

  • 将数据转换为训练系统所需的格式。为了确保模型在训练和预测期间行为一致,转换过程在试验和生产阶段必须相同。
  • 训练 ML 模型。
  • 为模型提供在线预测或以批处理模式运行。
  • 监视模型的性能,并将结果馈送到流程中,以调整或重新训练模型。

Kubeflow 组件 在 ML workflow 中的功能示意

机器学习技术系列:【机器学习工程化平台 Kubeflow】简介

部署 Kubeflow

我们是在纯净的K8s集群进行的安装,详细部署过程请参见我们同事的安装文档,非常详尽《Kubeflow(1.6.1)部署》

Kubeflow 用户界面 (UI) 概述

机器学习技术系列:【机器学习工程化平台 Kubeflow】简介

 

  • Home:主页,访问最新资源、活动实验和有用文档的中心枢纽。
  • Notebook Servers:管理笔记本服务器。
  • TensorBoards:用于管理TensorBoard服务器。
  • Volumes:用于管理群集的卷。
  • Models:管理已部署的 KF 服务模型。
  • Experiments (AutoML):用于管理 Katib 实验。
  • Experiments (KFP):管理 Kubeflow Pipelines (KFP) 实验。
  • Pipelines:管理 KFP 管道。
  • Runs:管理 KFP 运行任务。
  • Recurring Runs:管理 KFP 定期运行任务。
  • Artifacts:跟踪 ML 元数据 (MLMD) 项目。
  • Executions:跟踪 MLMD 中的各种组件执行。
  • Manage Contributors:在 Kubeflow 部署中配置跨命名空间的用户访问共享。

这篇对于 Kubeflow 的简介文章暂且先到这儿,在使用 Kubeflow 的过程中还是感受到了较高的使用成本,等熟练掌握了希望再进行填充更新。另外,从 Kubeflow 官网的博客宣传得知,它已经进入了CNCF(云原生基金会)项目孵化进程,希望借助CNCF 使之生态愈加繁荣,我们的使用愈加简单便捷。

希望大家关注我的 GitHub 开源项目 https://github.com/yaocoder/Architect-CTO-growth 包括技术实践及手册撰写:涵盖DevOps,云原生技术,大数据,人工智能,高并发&高性能&高可用服务等,后续会逐渐细化一些知识点。一起学习成长!如果对你有用,也请星标一下O(∩_∩)O