是否有Python模块/(函数)可以设置dsl ContainerOp(Kubeflow管道)的CPU数量?

是否有Python模块/(函数)可以设置dsl ContainerOp(Kubeflow管道)的CPU数量?,python,kubeflow,Python,Kubeflow,我构建了一个Jupyter笔记本,它将Jupyter笔记本作为管道的一个组件部署到Kubeflow管道服务中。我想知道是否有办法为部署笔记本的ContainerOp指定CPU和内存的数量 目标:当我打开并读取tar.gz文件的内容时,让cpu和mem作为参数显示在yaml文件中 我尝试过使用多处理库,但是我发布的代码示例(隐藏的路径和图像)看起来太愚蠢而不正确。而且这不是我老板想要的 import kfp import random import string i

我构建了一个Jupyter笔记本,它将Jupyter笔记本作为管道的一个组件部署到Kubeflow管道服务中。我想知道是否有办法为部署笔记本的ContainerOp指定CPU和内存的数量

目标:当我打开并读取tar.gz文件的内容时,让cpu和mem作为参数显示在yaml文件中

我尝试过使用多处理库,但是我发布的代码示例(隐藏的路径和图像)看起来太愚蠢而不正确。而且这不是我老板想要的

    import kfp
    import random
    import string
    if not os.path.exists(tmp_dir):
        os.makedirs(tmp_dir)
    def demo_op(input_notebook, output_notebook, name):
        return dsl.ContainerOp(
            name='papermill',
            image=image,
            command=['sh', '-c'],
            pvolumes={"/home/jovyan": dsl.PipelineVolume(pvc="efs-storage",name='efs-storage')},
            arguments=['papermill $0 $1 -p name $2', input_notebook, output_notebook, name] 
        )

    @dsl.pipeline(
        name='papermill demo',
        description='executing notebooks demo'
    )
    def pipeline_func(output_notebook,
                      name,
                      input_notebook='abcd'):  #example of path 

        demo_task = demo_op(input_notebook, output_notebook, name)

    filename = tmp_dir + '/demo{dt:%Y%m%d_%H%M%S}.pipeline.tar.gz'.format(dt=datetime.datetime.now())
    compiler.Compiler().compile(pipeline_func, filename)
    client = kfp.Client()
    experiment = client.create_experiment('papermill_volume_test')
arguments = {'output_notebook': 'abcd', #example
                 'name': 'demo_test'} # Output_notebook prints: demo_test
run_name = 'papermill demo run'
run_result = client.run_pipeline(experiment.id, run_name, filename, arguments)

p = multiprocessing.Process(target=run_func, args=(tmp_dr, 
        image, inp_nb, out_np, mem))
processes.append(p)
p.start()

for d in processes:
    d.join()

这不会给出yaml文件中使用的cpu数量

您可以在编译时通过ContainerOp对象直接在pod上应用cpu和内存限制,方法是:

demo_op.set_memory_limit('4G')
demo_op.set_cpu_limit('4.0')
在调用ContainerOp之前,请使用,
demo\u op(输入、输出、名称)

以下是KFP SDK基于限制调用k8s资源的链接:

这也显示在已编译的Argo yaml中:

- container:
      .....
      resources:
        limits:
          cpu: '4.0'
          memory: 4Gi

您可以在编译时通过ContainerOp对象直接在pod上应用cpu和内存限制,方法是:

demo_op.set_memory_limit('4G')
demo_op.set_cpu_limit('4.0')
在调用ContainerOp之前,请使用,
demo\u op(输入、输出、名称)

以下是KFP SDK基于限制调用k8s资源的链接:

这也显示在已编译的Argo yaml中:

- container:
      .....
      resources:
        limits:
          cpu: '4.0'
          memory: 4Gi