【问题标题】:Can Kubeflow Pipelines run GPU components in parallel?Kubeflow Pipelines 可以并行运行 GPU 组件吗?
【发布时间】:2020-08-10 17:32:11
【问题描述】:

我正在尝试构建一个 kubeflow 管道,在其中并行运行两个组件(具有 GPU 约束)。这似乎不是问题,但每次我尝试时,一个组件都会卡在“待处理”状态,直到另一个组件完成。

Example run

我正在测试的两个组件是带有 GPU 约束的简单 while 循环:

while_op1 = while_loop_op(image_name='tensorflow/tensorflow:1.15.2-py3')
while_op1.name = 'while-1-gpu'
while_op1.set_security_context(V1SecurityContext(privileged=True))
while_op1.apply(gcp.use_gcp_secret('user-gcp-sa'))
while_op1.add_pvolumes({pv_base_path: _volume_op.volume})
while_op1.add_node_selector_constraint('cloud.google.com/gke-accelerator', 'nvidia-tesla-p100')
while_op1.set_gpu_limit(1)
while_op1.after(init_op)

while_loop_op:

import kfp.components as comp
def while_loop_op(image_name):
  def while_loop():
    import time
    max_count = 300
    count = 0
    while True:
      if count >= max_count:
        print('Done.')
        break
      time.sleep(10)
      count += 10
      print("{} seconds have passed...".format(count))
  op = comp.func_to_container_op(while_loop, base_image=image_name)
  return op()

【问题讨论】:

    标签: python kubernetes kubeflow kubeflow-pipelines


    【解决方案1】:

    该问题可能与您对卷的使用有关。您是否尝试过使用更受支持的数据传递机制?

    以这条管道为例:https://github.com/kubeflow/pipelines/blob/091316b8bf3790e14e2418843ff67a3072cfadc0/components/XGBoost/_samples/sample_pipeline.py

    将与 GPU 相关的自定义项应用于训练器:

    some_task.add_node_selector_constraint('cloud.google.com/gke-accelerator', 'nvidia-tesla-p100')
    some_task.set_gpu_limit(1)
    

    将训练器和预测器放入 for _ in range(10): 循环中,这样您就有 10 个并行副本。

    检查训练器是否并行运行。

    附:最好在官方repo中创建问题:https://github.com/kubeflow/pipelines/issues

    【讨论】:

    猜你喜欢
    • 2020-11-03
    • 2021-09-21
    • 2021-05-04
    • 2021-11-28
    • 2021-11-11
    • 2019-09-18
    • 1970-01-01
    • 2018-10-24
    • 2015-07-16
    相关资源
    最近更新 更多