提问者:小点点

如何在kubeflow管道中使用训练运算符(例如TFJob)定义组件/步骤


我知道有一种方法可以通过kubectl使用tfjob运算符,就像这里的示例(https://www.kubeflow.org/docs/components/training/tftraining/):

kubectl create -f https://raw.githubusercontent.com/kubeflow/training-operator/master/examples/tensorflow/simple.yaml

但是我不知道如何在kubeflow管道中合并。一个普通的组件/作业是通过@组件装饰定义的,或者ContainerOp是一种库伯内特斯作业,它在Pod中运行,但是我不知道如何用特殊的训练运算符(如TFJob)定义一个组件,这样我的代码就可以作为

apiVersion: "kubeflow.org/v1"
kind: TFJob

而不是:

apiVersion: "kubeflow.org/v1"
kind: Job

在kubernetes中。

附言:这里有一个例子:https://github.com/kubeflow/pipelines/blob/master/components/kubeflow/launcher/sample.py但看不到任何地方指定TFJob


共1个答案

匿名用户

您引用的示例利用了一些实际创建TFJob的代码(查看示例的文件夹):

  • TFJob在这里被实例化:https://github.com/kubeflow/pipelines/blob/master/components/kubeflow/launcher/src/launch_tfjob.py#L97
  • …并在这里创建为库伯内特斯资源:https://github.com/kubeflow/pipelines/blob/master/components/kubeflow/launcher/src/launch_tfjob.py#L126
  • …前面的代码由这里指定的Kubeflow组件访问:https://github.com/kubeflow/pipelines/blob/master/components/kubeflow/launcher/component.yaml
  • …在这里导入到您引用的示例中:https://github.com/kubeflow/pipelines/blob/master/components/kubeflow/launcher/sample.py#L60

您提出的一般问题仍受到当前讨论的影响。使用tfjob_launcher_op似乎是当前推荐的方式。相反,有些人也原生使用ResourceOps来模拟您的kubectl create调用。