Kubeflow是运行在K8S之上的一套技术栈,通过各种组件实现机器学习模型的训练和推理部署到云原生的模型平台。
Kubeflow组件
Kubeflow提供了一大堆组件,涵盖了机器学习的方方面面,为了对Kubeflow有个更直观深入的了解,先整体看一下Kubeflow都有哪些组件,并对Kubeflow的主要组件进行简单的介绍:
- Central Dashboard:Kubeflow的dashboard看板页面
- Metadata:用于跟踪各数据集、作业与模型
- Jupyter Notebooks:一个交互式业务IDE编码环境
- Frameworks for Training:支持的ML框架,支持PyTorch,TensorFlow等
- Pipelines:一个ML的工作流组件,用于定义复杂的ML工作流
- Multi-Tenancy in Kubeflow:Kubeflow中的多租户
- Fairing:一个将code打包构建image的组件
Kubeflow中大多数组件的实现都是通过定义CRD来工作。目前Kubeflow主要的组件有: - Operator是针对不同的机器学习框架提供资源调度和分布式训练的能力(TF-Operator,PyTorch-Operator,Caffe2-Operator,MPI-Operator,MXNet-Operator);
- Pipelines是一个基于Argo实现了面向机器学习场景的流水线项目,提供机器学习流程的创建、编排调度和管理,还提供了一个Web UI。
- Katib Hyperparameter Tuning是基于各个Operator实现的超参数搜索和简单的模型结构搜索的系统,支持并行搜索和分布式训练等。超参优化在实际的工作中还没有被大规模的应用,所以这部分的技术还需要一些时间来成熟;
- Serving支持部署各个框架训练好的模型的服务化部署和推理。Kubeflow提供基于TFServing,KFServing,Seldon等好几种方案。
- Seldon Core Serving
- TensorFlow Serving(TFJob):提供对Tensorflow模型的在线部署,支持版本控制及无需停止线上服务、切换模型等
- NVIDIA Triton Inference Server(Triton以前叫TensorRT),大语言模型版本是TensorRT-LLM,是LLM推理加速神器
- TensorFlow Batch Prediction
TensorRT-LLM
TensorRT-LLM支持模型架构定义、预训练权重编译、推理加速,GPU 上的高效推理,做了 SOTA 级别的优化,包含了一个可与 Triton Inference Server 集成的 backend,自带主流的预定义热门大语言模型,包括 baichuan、LlaMA、ChatGLM、BLOOM、GPT等。
LightLLM
LightLLM是商汤发布的推理服务框架,简单高效,易于二次开发和其他框架的集成。
Knative
Knative 是谷歌发起的基于kubernetes平台的Serverless 开源项目,致力将Serverless标准化。Kubernetes作为基础设施,解决应用编排和运行环境。Knative 将kubernetes和istio的复杂度进行抽象和隔离,解决了繁琐的构建,部署,服务治理步骤,并且基于开放标准使得服务变得可移植。
- Isito作为通信基础设施层,保证服务的运行可检测、可配置、可追踪;
- Knative使用应用模板和统一的运行环境来标准化服务的构建、部署和管理;
- Knative构建在Kubernetes、Istio、Container的基础上,以K8S的CRD形式存在。
Knative的三个组件(Serving、Build、Eventing)遵循了三个云原生最佳实践的设计实现。
- 服务的编排要实现计算资源弹性化
- 服务的构建和部署要实现高度自动化
- 事件驱动基础设施标准化
网友评论