首页 > 解决方案 > 从 Kubeflow 管道提供自定义模型

问题描述

我有一个训练自定义(即不基于 sklearn / tensorflow 等类)ml 模型的 kubeflow 管道。现在我想在管道末端添加服务。即我想在我的 Kubernetes 集群中有一个服务,它使用模型来回答预测请求,并且在每次管道运行后应该使用新模型更新该服务。

据我所知,为自定义模型提供服务,我应该:

  1. 将我的模型包装到 kfserving.KFModel 类中

  2. 使用 1) 运行的包装器创建 docker 映像

  3. 使用来自 2) 的图像创建 InferenceService 端点

在 Kubeflow 组件中是否有任何与云无关的方法来执行此操作?(所以基本上组件必须能够构建 docker 镜像)

有没有更好的方法来实现我的目的?

也许我应该将步骤 1-3 移到管道组件之外,只创建一个组件来触发 1-3 的外部执行。这可以做到吗?

标签: kuberneteskubeflowkubeflow-pipelinesknative-serving

解决方案


我不能特别谈论 Kubeflow,但是https://buildpacks.io/提供了一种通用的方法来构建满足某些输入标准的容器(例如,“是一个带有 amain和 a的 python 程序requirements.txt”)。也可以(但更复杂)创建一个新的 buildpack(例如,采用“实现kfserving.KFModel和包装 main 的 python 代码以及围绕它需要的任何其他内容)。我已经为 python 进行了几次演示/ ETC:

https://github.com/evankanderson/klr-buildpack https://github.com/evankanderson/pyfun

请注意,这些不是生产级的,只是我玩了一三天。

您可以使用命令在本地构建构建包pack,也可以使用多种技术在集群上构建构建包。这里有 5 个构建选项的详细文档:https ://buildpacks.io/docs/tools/,以及https://buildpacks.io/features/底部的“支持的平台”列表。


推荐阅读