1 Kubeflow生态系统
2 生态系统说明
2.1. Hardware(硬件层)
- 提供计算资源的底层硬件支持。GPU(如NVIDIA)通常用于加速机器学习和深度学习的计算任务,而Intel和AMD则可能提供CPU计算资源。
2.2. Infrastructure(基础设施层)
- Kubernetes : Kubeflow的核心基础设施,负责容器编排和管理,使得分布式系统的管理变得更简单和自动化。
- Istio : 服务网格技术,提供微服务间的流量管理、安全、监控和服务治理功能。
- Dex : 用于身份认证管理,确保用户和服务之间的安全交互。
- Kaptain : 一种AI/ML平台,用于简化和加速AI模型的开发、训练和部署。
- AWS, Azure, Google Cloud, Local, Self Hosted, Public Cloud : 提供部署环境。
2.3. 组件和外部插件
- Kubeflow Pipelines : 用于定义、管理和执行机器学习工作流。帮助用户中创建、共享和复用机器学习工作流。
- Kubeflow Notebooks : 提供了互动式环境(如Jupyter Notebooks),用于数据科学家和研究人员执行探索性数据分析和模型开发。
- Central Dashboard : 提供一个中心化的用户界面,帮助用户管理和监控Kubeflow的各种组件和工作流。
- Training Operator : 支持分布式训练的操作组件,帮助用户在集群中并行训练模型。
- Katib : 用于自动超参数调优,帮助用户找到最优的模型参数配置。
- MPI Operator : 支持分布式计算中的MPI(Message Passing Interface)任务,通常用于大规模并行计算。
- KServe : 以前称为KFServing,用于部署和管理机器学习模型的推理服务,确保模型能够被可靠地服务和扩展。
- Model Registry : 模型注册组件,用于存储、版本化和管理模型,便于模型的重用和协作。
- Spark Operator : 使用户能够在Kubernetes集群上运行Apache Spark任务,支持大规模数据处理和分析。
- External Add-Ons(外部插件) :
- Feast : 特征存储,用于管理和服务机器学习模型所需的特征数据。
- Elyra : 提供了用于数据科学项目的开发工具,如图形化的工作流编辑器和代码笔记本的管理。
- BentoML : 一个开源平台,帮助用户将机器学习模型打包为可部署的服务,并简化部署过程。
2.4. Integrations(集成层)
- JupyterLab, RStudio, VSCode : 提供机器学习开发的集成开发环境(IDE),方便用户编写、测试和调试代码。
- PyTorch, TensorFlow, XGBoost, etc. : 这些是常用的机器学习框架,Kubeflow与这些框架深度集成,支持用户在这些框架上开发和部署模型。
- Optuna, Hyperopt : 用于超参数优化,帮助用户更快地找到最佳模型配置。
- Horovod, MPI, etc. : 提供分布式训练支持,使得大规模机器学习任务能够在多个节点上高效运行。
3 机器学习生命周期
当开发和部署 AI 应用程序时,ML 生命周期通常包含多个阶段。开发 ML 系统是一个迭代过程,需要评估 ML 生命周期各个阶段的输出,并在必要时对模型和参数进行更改,以确保模型持续产生您需要的结果。
a.在数据准备步骤中,提取原始数据,执行特征工程以提取离线特征存储的 ML 特征,并准备用于模型开发的训练数据。通常,此步骤与 Spark、Dask、Flink 或 Ray 等数据处理工具相关联。
b. 在模型开发步骤中,选择一个 ML 框架,开发您的模型架构并探索现有的预训练模型以进行微调,例如 BERT 或 Llama。
c. 在模型优化步骤中,优化模型超参数,并使用各种 AutoML 算法(例如神经架构搜索和模型压缩)优化模型。在模型优化期间,您可以将 ML 元数据存储在模型注册表中。
d. 在模型训练步骤中,在大规模计算环境中训练或微调模型。如果单个 GPU 无法处理模型大小,则应使用分布式训练。模型训练的结果是经过训练的模型工件,您可以将其存储在模型注册表中。
e. 在模型服务步骤中,为在线或批量推理提供模型工件。您的模型可能会根据用例执行预测性或生成性 AI 任务。在模型服务步骤中,您可以使用在线特征存储来提取特征。您可以监控模型性能,并将结果输入到 ML 生命周期中的先前步骤中。
4 开发和生产阶段的ML生命周期
5 ML生命周期中的Kubeflow组件
- Kubeflow Spark Operator可用于数据准备和特征工程步骤。
- Kubeflow Notebooks可用于模型开发和交互式数据科学,以试验您的 ML 工作流程。
- Kubeflow Katib可用于使用各种 AutoML算法进行模型优化和超参数调整。
- Kubeflow Training Operator可用于大规模分布式训练或微调。
- Kubeflow 模型注册表可用于存储 ML 元数据、模型工件以及准备用于生产服务的模型。 KServe可用于模型服务步骤中的在线和批量推理。
- Feast可以用作功能商店并管理离线和在线功能。
- Kubeflow Pipelines可用于构建、部署和管理 ML生命周期中的每个步骤。