首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为KubeFlow管道构建图像?

如何为KubeFlow管道构建图像?
EN

Stack Overflow用户
提问于 2020-02-03 14:59:38
回答 2查看 2.1K关注 0票数 2

我最近发现了kubeflow和kubeflow管道,但我不清楚如何从python程序中构建映像。

让我们假设我有一个简单的python函数,它可以对图像进行裁剪:

代码语言:javascript
复制
class Image_Proc:
    def crop_image(self, image, start_pixel, end_pixel):
        # crop
        return cropped_image

我应该如何在KubeFlow管道中封装它并使用它呢?我是否需要将它封装在API中(例如用Flask ),还是需要连接到某些媒体/数据代理?

KubeFlow管道如何向此代码发送输入并将此代码的输出传输到下一步?

EN

回答 2

Stack Overflow用户

发布于 2020-02-06 03:22:08

基本上,您可以按照Docker 这里提供的步骤创建Docker映像并发布到Docker (或者您可以构建自己的专用码头注册中心,但我认为对于初学者来说,这可能是太多的工作)。简单地列出步骤:

  1. 创建Dockerfile。在您的Dockerfile中,只需指定以下几点:基本映像(在您的情况下,只需使用来自Docker的python映像)、工作目录以及在运行此映像时要执行的命令
  2. 在本地运行映像以确保它按预期工作(如果您还没有安装码头),然后推送到码头集线器
  3. 一旦发布,您将在发布到Docker之后获得图像URL,然后在Kubeflow中创建管道时使用该url。

另外,您可以阅读这个文档来了解如何创建管道(Kubeflow管道只是argo工作流)。对于您的情况,只需在管道YAML文件中填写所需步骤的inputs和/或outputs部分即可。

票数 1
EN

Stack Overflow用户

发布于 2020-06-20 01:28:23

  1. 您不需要构建图像。对于中小型组件,您可以在现有图像的基础上工作。检查一下轻量元件样本。有关python,请参见python组件中的数据传递中的非python,请参见从命令行程序创建组件
  2. KFP SDK对构建容器映像有一定的支持。请参阅构建示例。
  3. 阅读编写文档的正式组件。

让我们假设我有一个简单的python函数,它可以对图像进行裁剪:

您可以从python函数创建一个组件,如下所示:

代码语言:javascript
复制
from kfp.components import InputPath, OutputPath, create_component_from_func

# Declare function (with annotations)
def crop_image(
    image_path: InputPath(),
    start_pixel: int,
    end_pixel: int,
    cropped_image_path: OutputPath(),
):
    import some_image_lib
    some_image_lib.crop(image_path, start_pixel, end_pixel, cropped_image_path)

# Create component
crop_image_op = create_component_from_func(
  crop_image,
  # base_image=..., # Optional. Base image that has most of the packages that you need. E.g. tensorflow/tensorflow:2.2.0
  packages_to_install=['some_image_lib==1.2.3'],
  output_component_file='component.yaml', # Optional. Use this to share the component between pipelines, teams or people in the world
)

# Create pipeline
def my_pipeline():
    download_image_task = download_image_op(...)

    crop_image_task = crop_image_op(
        image=download_image_task.output,
        start_pixel=10,
        end_pixel=200,
    )

# Submit pipeline
kfp.Client(host=...).create_run_from_pipeline_func(my_pipeline, arguments={})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60041794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档