Kubeflow Pipelines 运行 GPU 组件可以并行吗?
Can Kubeflow Pipelines run GPU components in parallel?
我正在尝试构建一个 kubeflow 管道,其中 运行 两个组件(具有 GPU 约束)并行。这似乎不是问题,但每次我尝试时,一个组件都会卡在 "pending",直到另一个组件完成。
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()
问题可能与您使用卷有关。您是否尝试过使用更受支持的数据传递机制?
将与 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 个并行副本。
检查训练器是否运行并联
P.S。最好在官方仓库中创建问题:https://github.com/kubeflow/pipelines/issues
我正在尝试构建一个 kubeflow 管道,其中 运行 两个组件(具有 GPU 约束)并行。这似乎不是问题,但每次我尝试时,一个组件都会卡在 "pending",直到另一个组件完成。
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()
问题可能与您使用卷有关。您是否尝试过使用更受支持的数据传递机制?
将与 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 个并行副本。
检查训练器是否运行并联
P.S。最好在官方仓库中创建问题:https://github.com/kubeflow/pipelines/issues