Kubeflow是運行在K8S之上的一套技術(shù)棧,通過各種組件實現(xiàn)機器學(xué)習(xí)模型的訓(xùn)練和推理部署到云原生的模型平臺。
Kubeflow組件
Kubeflow提供了一大堆組件,涵蓋了機器學(xué)習(xí)的方方面面,為了對Kubeflow有個更直觀深入的了解,先整體看一下Kubeflow都有哪些組件,并對Kubeflow的主要組件進行簡單的介紹:
- Central Dashboard:Kubeflow的dashboard看板頁面
- Metadata:用于跟蹤各數(shù)據(jù)集、作業(yè)與模型
- Jupyter Notebooks:一個交互式業(yè)務(wù)IDE編碼環(huán)境
- Frameworks for Training:支持的ML框架,支持PyTorch,TensorFlow等
- Pipelines:一個ML的工作流組件,用于定義復(fù)雜的ML工作流
- Multi-Tenancy in Kubeflow:Kubeflow中的多租戶
- Fairing:一個將code打包構(gòu)建image的組件
Kubeflow中大多數(shù)組件的實現(xiàn)都是通過定義CRD來工作。目前Kubeflow主要的組件有: - Operator是針對不同的機器學(xué)習(xí)框架提供資源調(diào)度和分布式訓(xùn)練的能力(TF-Operator,PyTorch-Operator,Caffe2-Operator,MPI-Operator,MXNet-Operator);
- Pipelines是一個基于Argo實現(xiàn)了面向機器學(xué)習(xí)場景的流水線項目,提供機器學(xué)習(xí)流程的創(chuàng)建、編排調(diào)度和管理,還提供了一個Web UI。
- Katib Hyperparameter Tuning是基于各個Operator實現(xiàn)的超參數(shù)搜索和簡單的模型結(jié)構(gòu)搜索的系統(tǒng),支持并行搜索和分布式訓(xùn)練等。超參優(yōu)化在實際的工作中還沒有被大規(guī)模的應(yīng)用,所以這部分的技術(shù)還需要一些時間來成熟;
- Serving支持部署各個框架訓(xùn)練好的模型的服務(wù)化部署和推理。Kubeflow提供基于TFServing,KFServing,Seldon等好幾種方案。
- Seldon Core Serving
- TensorFlow Serving(TFJob):提供對Tensorflow模型的在線部署,支持版本控制及無需停止線上服務(wù)、切換模型等
- NVIDIA Triton Inference Server(Triton以前叫TensorRT),大語言模型版本是TensorRT-LLM,是LLM推理加速神器
- TensorFlow Batch Prediction
TensorRT-LLM
TensorRT-LLM支持模型架構(gòu)定義、預(yù)訓(xùn)練權(quán)重編譯、推理加速,GPU 上的高效推理,做了 SOTA 級別的優(yōu)化,包含了一個可與 Triton Inference Server 集成的 backend,自帶主流的預(yù)定義熱門大語言模型,包括 baichuan、LlaMA、ChatGLM、BLOOM、GPT等。
LightLLM
LightLLM是商湯發(fā)布的推理服務(wù)框架,簡單高效,易于二次開發(fā)和其他框架的集成。
Knative
Knative 是谷歌發(fā)起的基于kubernetes平臺的Serverless 開源項目,致力將Serverless標(biāo)準(zhǔn)化。Kubernetes作為基礎(chǔ)設(shè)施,解決應(yīng)用編排和運行環(huán)境。Knative 將kubernetes和istio的復(fù)雜度進行抽象和隔離,解決了繁瑣的構(gòu)建,部署,服務(wù)治理步驟,并且基于開放標(biāo)準(zhǔn)使得服務(wù)變得可移植。
- Isito作為通信基礎(chǔ)設(shè)施層,保證服務(wù)的運行可檢測、可配置、可追蹤;
- Knative使用應(yīng)用模板和統(tǒng)一的運行環(huán)境來標(biāo)準(zhǔn)化服務(wù)的構(gòu)建、部署和管理;
- Knative構(gòu)建在Kubernetes、Istio、Container的基礎(chǔ)上,以K8S的CRD形式存在。
Knative的三個組件(Serving、Build、Eventing)遵循了三個云原生最佳實踐的設(shè)計實現(xiàn)。
- 服務(wù)的編排要實現(xiàn)計算資源彈性化
- 服務(wù)的構(gòu)建和部署要實現(xiàn)高度自動化
- 事件驅(qū)動基礎(chǔ)設(shè)施標(biāo)準(zhǔn)化