0

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

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

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

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

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

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

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

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

4

2 回答 2

0

我不能特别谈论 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/底部的“支持的平台”列表。

于 2021-11-02T16:37:49.720 回答
0

您绝对应该将步骤 1-3 移到 Kubeflow 管道之外,不应该在每次运行管道时都为您的自定义模型服务器构建 docker 映像。

话虽如此,您的自定义图像应该从外部源(即 S3/GS/minio 存储桶)加载运行的祝福模型。

您确定您的模型是基于不在Kserve已经支持的模型服务器列表中的框架构建的,并且您需要创建自定义模型服务器吗?

于 2021-11-03T09:02:43.707 回答