【问题标题】:Serving custom model from Kubeflow pipeline从 Kubeflow 管道提供自定义模型
【发布时间】:2021-12-17 03:56:20
【问题描述】:

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

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

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

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

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

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

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

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

【问题讨论】:

    标签: kubernetes kubeflow kubeflow-pipelines knative-serving


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 问题是它仍然需要 docker - 所以我不能在 Kubeflow 组件中使用它。我可以使用 bash 脚本自动化我需要的一切。唉,我想在 Kubeflow 组件中做。
    • 我承认我不熟悉该组件,但是无需访问 Docker 套接字即可使用和构建 buildpack;例如,这就是 Tekton buildpack 任务的工作方式。
    【解决方案2】:

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

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

    您确定您的模型是建立在一个不在list of model servers that Kserve supports 中的框架上,并且您需要创建一个自定义模型服务器吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-16
      • 1970-01-01
      • 2019-12-30
      • 2019-06-30
      • 2020-06-24
      • 2020-11-18
      • 2021-04-21
      • 2022-10-06
      相关资源
      最近更新 更多