Kubeflow是一个开源平台,专为Kubernetes上的机器学习和MLOps而设计,最初由Google推出。它提供了一系列软件组件,对应典型机器学习生命周期的不同阶段,包括模型开发、训练、服务和自动化机器学习。每个组件都可以单独部署,允许用户只采用他们需要的部分,而无需部署整个平台。
该平台旨在通过利用Kubernetes进行编排、扩展和基础设施管理,来简化机器学习系统的部署和管理。它支持一系列流行的框架和工具,使其成为研究和生产环境的灵活选择。
历史
Kubeflow项目最初由Google的David Aronchick、Jeremy Lewi和Vishnu Kannan在2017年北美KubeCon + CloudNativeCon大会上宣布。该项目旨在解决构建生产级机器学习系统时缺乏灵活选项的问题。该项目也是Google将其内部运行TensorFlow的方式开源的一种途径。
首个版本Kubeflow 0.1于2018年发布,2020年的1.0版本标志着生产就绪的重要里程碑。后续版本不断完善组件并增加功能,该项目于2023年获得CNCF孵化状态。
组件
Kubeflow Notebooks用于模型开发
机器学习模型在Kubeflow Notebooks组件中开发。该组件在Kubernetes集群中运行基于Web的开发环境,原生支持Jupyter Notebook、Visual Studio Code和RStudio。它允许数据科学家在熟悉的环境中工作,同时利用集群资源。
Kubeflow Pipelines用于模型训练
模型开发完成后,使用Kubeflow Pipelines组件进行训练。该平台基于Docker容器构建和部署可移植、可扩展的机器学习工作流。Google Cloud Platform在其Vertex AI Pipelines产品中采用了Kubeflow Pipelines DSL,展示了其在云环境中的实用性。
Kubeflow Training Operator用于模型训练
对于某些机器学习模型和库,Kubeflow Training Operator提供Kubernetes自定义资源。它为TensorFlow、PyTorch、Apache MXNet、XGBoost和MPI在Kubernetes上运行分布式或非分布式训练任务。该组件简化了复杂训练任务的编排。
KServe用于模型服务
KServe(前身为KFServing)为TensorFlow、XGBoost、scikit-learn、PyTorch和ONNX等机器学习框架提供Kubernetes自定义资源用于模型服务。它由Google、IBM、Bloomberg、NVIDIA和Seldon合作开发。公开披露的采用者包括Bloomberg、Gojek和维基媒体基金会。
Katib用于自动化机器学习
Katib是一个Kubernetes原生的自动化机器学习项目,用于模型的自动化训练和开发。它具有超参数调优、早停和神经架构搜索功能,能够实现模型性能的自动化优化。
发布时间线
Kubeflow自诞生以来经历了多次版本演进。2018年的0.1版本奠定了基础,2020年的1.0版本标志着生产就绪的里程碑。后续版本继续完善组件并增加功能,该项目于2023年获得CNCF孵化状态。
采用与生态系统
Kubeflow在各行业中被广泛用于机器学习工作流。它与Kubernetes的集成使其对已经使用容器编排的组织具有吸引力。该平台的模块化设计允许团队将其与Machine learning生态系统中的其他工具(如Deep learning框架和Artificial intelligence服务)结合使用。
参见
- Machine learning
- Deep learning
- kubernetes
- MLOps