Kubeflow pipeline doesnt create any pod; unknown status

5/22/2019

I started working with kubeflow and created a first, little pipeline. Unfortunately it doesn't work, so when I try to create a run with my pipeline nothing happens. Neither it creates a Kubernetes pod nor does the status of the run change (it keeps saying "Unknown status"). I also cant see the belonging graph or run output.

The code of my pipeline looks like this:

import kfp
from kfp import components
from kfp import dsl
from kfp import onprem
import sys

def train_op(
  epochs,
  validations,
  workers,
  trainset,
  input,
  filenames,
  target,
  train_size,
  learn_rate,
):
  return dsl.ContainerOp(
      name='Train',
      image='pascalschroeder/ml-train-test',
      arguments=[
        '--epochs', epochs,
        '--validations', validations,
        '--workers', workers,
        '--trainset', trainset,
        '--input', input,
        '--filenames', filenames,
        '--target', target,
        '--train_size', train_size,
        '--learn_rate', learn_rate,
      ],
      file_outputs={
          'model': 'path/to/model',
      }
)

def load_op(
  workers,
  testset,
  input,
  filenames,
  target,
  model,
  output
):
  return dsl.ContainerOp(
      name='Load',
      image='pascalschroeder/ml-load-test',
      arguments=[
        '--workers', workers,
        '--testset', testset,
        '--input', input,
        '--filenames', filenames,
        '--target', target,
        '--model', model,
        '--output', output,
      ],
      file_outputs={
          'result': 'path/to/result.txt',
      }
)

@dsl.pipeline(
  name='ML Test Pipeline',
  description='Test'
)


def train_pipeline(
    output,
    epochs=30,
    validations=10,
    trainset='path/to/trainset',
    testset='path/to/testset',
    input='path/to/csv',
    filenames='id',
    target='has_scratch',
    train_size=0.8,
    learn_rate=0.0001,
    workers=2,
):

  train = train_op(epochs,
    validations,
    workers,
    trainset,
    input,
    filenames,
    target,
    train_size,
    learn_rate)
  load = load_op(workers,
    testset,
    input,
    filenames,
    target,
    train.outputs['model'],
    output)

if __name__ == '__main__':
  import kfp.compiler as compiler
  compiler.Compiler().compile(train_pipeline, __file__ + '.zip')

I am working on an Ubuntu system with a MicroK8s and Kubeflow installed.

When I enter kubectl get pods --namespace=kubeflow no new pod appears after I started running the pipeline.

In the kubeflow dashboard I can see the run in the section "All runs" but with no status (Unknown status) and no duration.

When I click on the run and go to Config I am getting these configs:

Run details
Status
Description
Created at 5/22/2019, 11:14:46 AM
Started at -
Finished at -
Duration -
Run parameters
output
epochs 30
validations 10
trainset /path/to/trainset
testset /path/to/testset
input /path/to/csv
filenames id
target has_scratch
train-size 0.8
learn-rate 0.0001
workers 2

Can some of you guys help me?

Thank you!

-- Pascal
kubeflow
kubernetes
pipeline
python

0 Answers