kubeflow

Kubeflow是的机器学习工具包。Kubeflow是运行在K8S之上的一套技术栈,这套技术栈包含了很多组件,组件之间的关系比较松散,我们可以配合起来用,也可以单独用其中的一部分。
在这里插入图片描述
Kubeflow提供了一大堆组件,涵盖了机器学习的方方面面,为了对Kubeflow有个更直观深入的了解,先整体看一下Kubeflow都有哪些组件,并对Kubeflow的主要组件进行简单的介绍:

(1) Central Dashboard:Kubeflow的dashboard看板页面

(2) Metadata:用于跟踪各数据集、作业与模型

(3) Jupyter Notebooks:一个交互式业务IDE编码环境

(4) Frameworks for Training:支持的ML框架

  • Chainer
  • MPI
  • MXNet
  • PyTorch
  • TensorFlow

(5) Hyperparameter Tuning:Katib,超参数服务器

(6) Pipelines:一个ML的工作流组件,用于定义复杂的ML工作流

(7) Tools for Serving:提供在上对机器学习模型的部署

KFServing
Seldon Core Serving
TensorFlow Serving(TFJob):提供对Tensorflow模型的在线部署,支持版本控制及无需停止线上服务、切换模型等
NVIDIA Triton Inference Server(Triton以前叫TensorRT)
TensorFlow Batch Prediction
(8) Multi-Tenancy in Kubeflow:Kubeflow中的多租户

(9) Fairing:一个将code打包构建image的组件

Kubeflow中大多数组件的实现都是通过定义CRD来工作。目前Kubeflow主要的组件有:

Operator是针对不同的机器学习框架提供资源调度和分布式训练的能力(TF-Operator,PyTorch-Operator,Caffe2-Operator,MPI-Operator,MXNet-Operator);

Pipelines是一个基于Argo实现了面向机器学习场景的流水线项目,提供机器学习流程的创建、编排调度和管理,还提供了一个Web UI。

Katib是基于各个Operator实现的超参数搜索和简单的模型结构搜索的系统,支持并行搜索和分布式训练等。超参优化在实际的工作中还没有被大规模的应用,所以这部分的技术还需要一些时间来成熟;

Serving支持部署各个框架训练好的模型的服务化部署和离线预测。Kubeflow提供基于TFServing,KFServing,Seldon等好几种方案。由于机器学习框架很多,算法模型也各种各样。工业界一直缺少一种能真正统一的部署框架和方案。这方面Kubeflow也仅仅是把常见的都集成了进来,但是并没有做更多的抽象和统一。

部署环境及要求

Kubernetes集群必须满足以下最低要求:
集群必须至少包含一个工作节点,且最少为:
4个CPU
50 GB的存储空间
12 GB内存
兼容性说明:
在这里插入图片描述

kubeflow安装

在此强烈推荐使用阿里云k’8s集群进行安装

首先下载kfctl包,这里提供的是1.02版本
下载地址
在这里插入图片描述
没有科学上网的话下载速度非常慢,推荐先用梯子下到电脑上再导入

解压安装包并添加到执行目录

tar -xvf kfctl_v1.0.2-0-ga476281_linux.tar.gz
sudo cp kfctl /usr/bin

在这里插入图片描述

下载manifests工具包到/root/kubeflow/路径:
kubeflow为自己创建

wget https://github.com/kubeflow/manifests/archive/v1.0.2.tar.gz

等候一会即可下载完成,若下载速度很慢也可先下到电脑上再导入
在这里插入图片描述
下载yaml文件:

wget https://raw.githubusercontent.com/kubeflow/manifests/v1.0-branch/kfdef/kfctl_k8s_istio.v1.0.2.yaml

然后修改yaml文件,下拉到最后,将使用manifests文件从远程改为本地:

vim kfctl_k8s_istio.v1.0.2.yaml

在这里插入图片描述

在这里插入图片描述
路径就是manifests下载下来的压缩包路径

然后配置环境:

vim /etc/profile
export BASE_DIR=/自己选定文件目录/
export KF_NAME=my-kubeflow(名字自取,这里以my-kubeflow为例)
export KF_DIR=${BASE_DIR}/${KF_NAME}
export CONFIG_URI="/root/kubeflow/kfctl_k8s_istio.v1.0.2.yaml"

CONFIG_URI值就是yaml文件路径
配置完成后记得使其生效

source /etc/profile

执行

mkdir -p ${KF_DIR}
cd ${KF_DIR}
kfctl build -V -f ${CONFIG_FILE}
kfctl apply -V -f ${CONFIG_FILE}

拉取镜像

由于很多需要翻墙下载,所以很多会无法成功被拉取
在这里插入图片描述

在此推荐采用手动的方式,先将安装所必须的镜像文件下载到docker:

gcr.io/kubeflow-images-public/ingress-setup:latest
gcr.io/kubeflow-images-public/admission-webhook:v1.0.0-gaf96e4e3
gcr.io/kubeflow-images-public/kubernetes-sigs/application:1.0-beta
argoproj/argoui:v2.3.0
gcr.io/kubeflow-images-public/centraldashboard:v1.0.0-g3ec0de71
gcr.io/kubeflow-images-public/jupyter-web-app:v1.0.0-g2bd63238
gcr.io/kubeflow-images-public/katib/v1alpha3/katib-controller:v0.8.0
gcr.io/kubeflow-images-public/katib/v1alpha3/katib-db-manager:v0.8.0
mysql:8
gcr.io/kubeflow-images-public/katib/v1alpha3/katib-ui:v0.8.0
gcr.io/kubebuilder/kube-rbac-proxy:v0.4.0
gcr.io/kfserving/kfserving-controller:0.2.2
metacontroller/metacontroller:v0.3.0
mysql:8.0.3
gcr.io/kubeflow-images-public/metadata:v0.1.11
gcr.io/ml-pipeline/envoy:metadata-grpc
gcr.io/tfx-oss-public/ml_metadata_store_server:v0.21.1
gcr.io/kubeflow-images-public/metadata-frontend:v0.1.8
minio/minio:RELEASE.2018-02-09T22-40-05Z
gcr.io/ml-pipeline/api-server:0.2.5
gcr.io/ml-pipeline/visualization-server:0.2.5
gcr.io/ml-pipeline/persistenceagent:0.2.5
gcr.io/ml-pipeline/scheduledworkflow:0.2.5
gcr.io/ml-pipeline/frontend:0.2.5
gcr.io/ml-pipeline/viewer-crd-controller:0.2.5
mysql:5.6
gcr.io/kubeflow-images-public/notebook-controller:v1.0.0-gcd65ce25
gcr.io/kubeflow-images-public/profile-controller:v1.0.0-ge50a8531
gcr.io/kubeflow-images-public/kfam:v1.0.0-gf3e09203
gcr.io/kubeflow-images-public/pytorch-operator:v1.0.0-g047cf0f
docker.io/seldonio/seldon-core-operator:1.0.1
gcr.io/spark-operator/spark-operator:v1beta2-1.0.0-2.4.4
gcr.io/spark-operator/spark-operator:v1beta2-1.0.0-2.4.4
gcr.io/spark-operator/spark-operator:v1beta2-1.0.0-2.4.4
gcr.io/google_containers/spartakus-amd64:v1.1.0
tensorflow/tensorflow:1.8.0
gcr.io/kubeflow-images-public/tf_operator:v1.0.0-g92389064
argoproj/workflow-controller:v2.3.0

以上参考https://blog.csdn.net/qq_46595591/article/details/107765833

完成后再次部署应用

kfctl apply -V -f ${CONFIG_URI}

查看

kubectl -n kubeflow get all

当所有插件镜像状态变为running时即可

NAME                                                           READY   STATUS      RESTARTS   AGE
admission-webhook-bootstrap-stateful-set-0                     1/1     Running     6          2d4h
admission-webhook-deployment-569558c8b6-n8b7k                  1/1     Running     0          13h
application-controller-stateful-set-0                          1/1     Running     3          2d4h
argo-ui-7ffb9b6577-w8pb7                                       1/1     Running     7          3d7h
centraldashboard-659bd78c-fxgqd                                1/1     Running     3          3d7h
jupyter-web-app-deployment-878f9c988-xgh82                     1/1     Running     3          2d5h
katib-controller-7f58569f7d-8bw7z                              1/1     Running     4          3d7h
katib-db-manager-54b66f9f9d-ngqw9                              1/1     Running     3          3d7h
katib-mysql-dcf7dcbd5-7wbck                                    1/1     Running     12         4d1h
katib-ui-6f97756598-4mtjs                                      1/1     Running     3          3d7h
kfserving-controller-manager-0                                 2/2     Running     7          2d5h
metacontroller-0                                               1/1     Running     5          3d7h
metadata-db-65fb5b695d-wq8vh                                   1/1     Running     12         4d1h
metadata-deployment-65ccddfd4c-vwfd2                           1/1     Running     3          3d7h
metadata-envoy-deployment-7754f56bff-svtz2                     1/1     Running     3          3d7h
metadata-grpc-deployment-75f9888cbf-zj4sn                      1/1     Running     5          3d7h
metadata-ui-7c85545947-v68l7                                   1/1     Running     3          3d7h
minio-69b4676bb7-w96xk                                         1/1     Running     12         4d1h
ml-pipeline-5cddb75848-bsc48                                   1/1     Running     3          2d6h
ml-pipeline-ml-pipeline-visualizationserver-7f6fcb68c8-vxjj7   1/1     Running     3          2d7h
ml-pipeline-persistenceagent-6ff9fb86dc-dvxx4                  1/1     Running     5          2d6h
ml-pipeline-scheduledworkflow-7f84b54646-ndxcb                 1/1     Running     3          2d7h
ml-pipeline-ui-6758f58868-gqvlp                                1/1     Running     3          2d6h
ml-pipeline-viewer-controller-deployment-685874bc58-jljw8      1/1     Running     3          2d5h
mysql-6bcbfbb6b8-xmphz                                         1/1     Running     12         4d1h
notebook-controller-deployment-7db7c8589d-mlgb4                1/1     Running     3          2d5h
profiles-deployment-56b7c6788f-kk8kh                           2/2     Running     6          2d7h
pytorch-operator-cf8c5c497-nmfnv                               1/1     Running     7          3d7h
seldon-controller-manager-6b4b969447-qp7l4                     1/1     Running     20         4d1h
spark-operatorcrd-cleanup-rrpxd                                0/2     Completed   0          3d7h
spark-operatorsparkoperator-76dd5f5688-kn28n                   1/1     Running     3          3d7h
spartakus-volunteer-5dc96f4447-xjclm                           1/1     Running     3          3d7h
tensorboard-5f685f9d79-9x549                                   1/1     Running     12         4d1h
tf-job-operator-5fb85c5fb7-lqvrg                               1/1     Running     6          3d7h
workflow-controller-689d6c8846-znvt9                           1/1     Running     12         4d1h

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐