kubeflow kfserving 详解

全栈工程师开发手册 (作者:栾鹏)
架构系列文章


github 官方地址 https://github.com/kubeflow/kfserving

kfserving 内部使用的是knative。

封装了一层InferenceService的k8s自定义资源,来实现knative中serving的services,route,configurations,revision

knative 创建管理网络部分

certificates                      kcert              networking.internal.knative.dev    true         Certificate
ingresses                         ing                networking.internal.knative.dev    true         Ingress
serverlessservices                sks                networking.internal.knative.dev    true         ServerlessService

同时创建管理自动化部署部分

configurations                    config,cfg         serving.knative.dev                true         Configuration
revisions                         rev                serving.knative.dev                true         Revision
routes                            rt                 serving.knative.dev                true         Route
services                          kservice,ksvc      serving.knative.dev                true         Service
inferenceservices                 inferenceservice   serving.kubeflow.org               true         InferenceService

可以看出部署knative的serving 就会包含configurations,revisions,routes,services
kubeflow通过部署inferenceservice来操作knative的serving。

knative的serving的api

可以参考https://skyao.io/learning-knative/serving/overview/

knative的serving中的每种资源的yaml格式

可以参考https://skyao.io/learning-knative/serving/api/spec.html

route的yaml中 定义流量向哪个revisions分流比例。也可以直接指向configurations,则表示configurations的最新的那个revisions。通过route的名称去代表配置的是哪个serving.knative.dev

configurations的yaml中定义build( build.knative.dev)和revisionTemplate。已经定义了运行所需要的配置信息。build也就是从从哪个源码进行构建的。构建相关的参数。而在kfserving中并没有使用knative的build。kubeflow中使用fairing的build和deploy,以及knative的serving完成一整套的。

Revision是每次configurations更新的历史信息。image、command、args、env、livenessProbe、readinessProbe、serviceAccountName、concurrencyModel 这些信息都是通过configurations 获取保存下来的。

serving.knative.dev 绑定configuration或者revisionName和

kfseving的模块

api/client 可以通过客户端的包去查询部署的serving信息。
model文件夹中 是k8s资源的部署相关的文件。包含deploy,service,endpoint,TensorFlow service,knative serving相关的部署文件的生成。

kfserving 封装了isvc的概念,也就是InferenceService,用户管理 knative中的service,configurations,route,Revision。

同时因为service可能是不同的算法计算框架,例如xgb,TensorFlow,pytorch等,所以:

kfserving在各种类型的算法框架服务化的基础上,封装了一层Predictor的概念。用于实现模型服务化部署时的公共配置。就是传入对应框架的部署方案和公共配置方案(主要是max_replicas,min_replicas,parallelism,logger,batcher等),来实现部署服务化。在v1alpha2_predictor_spec.py文件中

而每种算法框架的部署文件构建大同小异,分别在v1alpha2_onnx_spec.py、v1alpha2_py_torch_spec.py、v1alpha2_sk_learn_spec.py、v1alpha2_tensorflow_spec.py、v1alpha2_xg_boost_spec.py、v1alpha2_onnx_spec.py。 这些对应框架的服务化配置构建代码中主要是配置部署的resources,runtime_version,storage_uri

类的包含关系

InferenceService:
api_version、kind、metadata、spec(V1alpha2InferenceServiceSpec)、status

InferenceServiceSpec:
default(EndpointSpec)、canary、canary_traffic_percent

EndpointSpec:
explainer(ExplainerSpec)、predictor(PredictorSpec)、transformer(TransformerSpec)

PredictorSpec:
max_replicas、min_replicas、parallelism、service_account_name、tensorflow、xgboost、pytorch、custom(完全自定义运行container的属性)

tensorflow:
resources、runtime_version、storage_uri

在实际部署InferenceService的时候,InferenceService-controller,会检测到InferenceService 产生,根据InferenceService-config的configmap来生成knative的service,route,rev,config等。

InferenceService-controller的代码在kfserving的pkg文件夹下。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

腾讯AI架构师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值