4.2 Kubeflow 的用户故事
Kubeflow 社区的项目支持将端到端的机器学习运行到Kubernetes 云平台上,本节通过一个完整的用户案例讲解Kubeflow 的几个主要组件,以及Kubeflow 社区中的技术栈是如何融合在一起协同工作的。
Kubeflow在安装时默认创建Kubeflow Jupyter Notebook Hub,用户可以使用Kubeflow Jupyter Notebook Hub 创建一个Jupyter Notebook,在Jupyter Notebook 中创建机器学习项目,进行超参调优、模型训练等操作。Kubeflow Jupyter Notebook Hub 支持多个用户同时使用Jupyter Notebook。
用户可以使用Jupyter Notebook 调用Pipelines 的API 来完成数据预处理、超参调优、模型训练和服务发布等端到端的机器学习工作流,如图4-1 所示。Pipelines 是基于Argo运行的,可以直接使用Argo 查看日志和一些特定的参数,并且根据这些参数分析模型;可以管理和控制机器学习工作流;可以观察机器学习工作流的进度;等等。可以使用Kubeflow Katib 进行超参调优。可以使用Kubeflow 社区中的Operator(如TFJob、PyTorchJob 等)在Kubernetes 集群中进行分布式的快速模型训练。
图4-1 Kubeflow 端到端的机器学习工作流
在模型训练完成后,可以使用KFServing 进行服务发布,在Jupyter Notebook 中,可以直接调用KFServing SDK 的客户端API。KFServing 支持服务的升级、业务量的分流等。可以使用KFServing API 监控、更新、删除服务等。KFServing 提供了一个Kubernetes自定义资源,名为InferenceService,用于在任意机器学习框架上为机器学习模型提供服务。
至此,适用于大多数场景的机器学习端到端的解决方案已经形成,除了描述的场景,还有很多特殊需求,如硬件环境的使用和控制、用户权限的管理和认证等,这些需求在Kubeflow 的Roadmap 中已有规划,部分已经在实现过程中了。