.. _intro_kubeflow: ================== Kubeflow简介 ================== `Kubeflow项目 `_ 是一个简化机器学习(ML)工作流部署到Kubernetes的开源项目,提供了可移植性和可扩展性。也就是说,只要部署了Kubernetes,就能够部署和运行Kubeflow。 功能 ======== Kubeflow提供基本工作流: - 下载和运行Kubeflow部署执行程序 - 定制配置文件 - 运行指定脚本来部署特定环境的容器 可以通过修改配置来选择平台和服务,用于机器学习工作流的每个状态: - 数据准备(data preparation) - 模型训练(model training) - 预测服务(prediction serving) - 服务管理(service management) Kubeflow的目标是尽可能简化机器学习( :ref:`machine_learning` )模型部署到Kubernetes的方法: - 在不同设备上可重复、可移植(从笔记本电脑到集群或云端),管理松散耦合的微服务 - 集成不同的工具满足数据科学需求,实现一个易于使用的 :ref:`machine_learning` 软件堆栈 架构 ======= Kubeflow是一个面向数据科学的机器学习工作流平台,用于开发、测试和生产级别服务: 基于Kubernetes之上,结合了一系列开源组件来实现机器学习系统 .. figure:: ../../_static/kubernetes/kubeflow/kubeflow_arch.png :scale: 50 Kubeflow架构 Kubeflow在 :ref:`kubernetes` 之上部署、扩展和管理复杂的机器学习系统。通过Kubeflow配置界面可以指定工作流所需的机器学习工具,并且可以将工作流部署到各种云、本地和本地平台,以提供实验和生产使用。 ML工作流简介 ------------- 机器学习系统是一个迭代过程,在机器学习工作流的各个阶段需要不断评估输出,并在必要时对模型和参数进行更改,以确保模型持续稳定产生所需的结果: .. figure:: ../../_static/kubernetes/kubeflow/ml_phase.png :scale: 50 机器学习工作流的不同阶段 - 实验阶段(experimental phase): 开发模型,并进行迭代测试和更新模型 - 确定机器学习系统要解决的问题 - 收集和分析训练ML模型所需的数据 - 选择ML框架和算法,并对模型的初始版本进行编码 - 试验数据并训练模型 - 调整规模参数(tune the model hyperparameters)来确保最高效的处理和最准确的结果 - 生产阶段(production phase): 部署系统 - 将数据转换成训练系统所需的格式: 为确保模型在训练和预测阶段表现移植,转换过程在实验和生产阶段必须相同 - 训练ML模型 - 为在线预测或批处理模式运行的模型提供服务 - 监控模型的性能,并将结果输入流程以调整或重新训练模型 .. _kubeflow_components: ML工作流中的Kubeflow组件 ------------------------- .. figure:: ../../_static/kubernetes/kubeflow/kubeflow_in_ml_workflow.png :scale: 50 在机器学习工作流的不同阶段加入Kubeflow提供软件堆栈 在ML的工作流中引入Kubeflow组件能够提供以下价值: - Kubeflow可以生成和管理 :ref:`jupyter` 的服务,使用Jupyter笔记本进行交互式数据科学和ML工作流程试验 - Kubeflow Piplines: 构建、部署和管理基于 :ref:`docker` 容器的多步骤ML工作流的平台 - 提供了多个组件可以实现跨多个平台构建ML训练、参数调整和服务工作负载 以下是一个特定机器学习工作流的案例: .. figure:: ../../_static/kubernetes/kubeflow/kubeflow_in_ml_workflow_example.png :scale: 50 在机器学习工作流的不同阶段加入Kubeflow的案例 Kubeflow核心组件 ----------------- .. figure:: ../../_static/kubernetes/kubeflow/kubeflow_components.jpg :scale: 60 Kubeflow组件 - Jupyter: 创建和管理多用户交互式Jupyter notebooks - Tensorflow/PyTorch: 当前主要支持的机器学习引擎 - Seldon: 提供在 Kubernetes 上对机器学习模型的部署 - TF-Serving: 提供对 Tensorflow 模型的在线部署,支持版本控制及无需停止线上服务切换模型等功能 - Argo: 基于 Kubernetes 的工作流引擎 - Pipelines: 是一个基于Argo实现了面向机器学习场景的工作流项目,提供机器学习流程的创建、编排调度和管理,还提供了一个Web UI。 - Ambassador: 对外提供统一服务的网关(API Gateway) - Istio: 提供微服务的管理,Telemetry 采集监控数据 - Ksonnet: Kubeflow 使用 ksonnet 来向 kubernetes 集群部署需要的 k8s 资源 - Operator:针对不同的机器学习框架提供资源调度和分布式训练的能力(TF-Operator,PyTorch-Operator,Caffe2-Operator,MPI-Operator,MXNet-Operator) - Katib:基于各个Operator实现的超参数(hyperparameters)搜索和简单的模型结构搜索的系统,支持并行搜索和分布式训练等 - Pachyderm:Pachyderm版本控制数据,类似于Git对代码的处理。 可以跟踪一段时间内的数据状态,对历史数据进行回溯测试,与队友共享数据,以及恢复到以前的数据状态 参考 ====== - `Kubeflow Getting Started >> Introduction `_ - `浅析机器学习工作流Kubflow Pipelines `_ 这篇文档参考翻译了 `Machine Learning Pipelines with Kubeflow `_ 其中案例可以后续深入学习研究