Skip to content

Pipelines / DAG #10

@arthur-flam

Description

@arthur-flam

Currently QA-Board lacks expressiveness for our common use-case of:

  1. Run on some images
  2. Calibration
  3. Validation
    Likewise, we can't express easily pipelines like training-evaluation.

We need to express running series of steps / pipelines / tasks organized as directed-acyclic-graph.

We're looking for feedback or alternative ideas. Especially if you have experience with various flow engines, e.g. DVC. Thanks!

Workarounds

User have done this:

  • wrapped qa batch with a scripted pipeline
  • wrote complicated run() function with lots of logic

Status

  • Implement user-side support for sequential pipelines
  • Support pipelines officially in QA-Board
  • Support DAGs

Possible API

batch1:
  inputs:
  - A.jpg
  - B.jpg
  configurations:
  - base

batch2:
  needs: batch1
  type: script
  configurations:
  - python my_script.py {o.output_dir for o in needs["batch1"]}

More complex:

my-calibration-images:
    configurations:
    - base
    inputs:
    - DL50.raw
    - DL55.raw
    - DL65.raw
    - DL75.raw

my-calibration:
    needs:
      calibration_images: my-calibration-images
    type: script
    configurations:
    - python calibration.py ${o.output_directory for o in depends[calibration_images]}

my-evaluation-batch:
    needs:
      calibration: my-calibration
    inputs:
    - test_image_1.raw
    - test_image_2.raw
    - test_image_3.raw
    configurations:
    - base
    - ${depends[calibration].output_directory}/calibration.cde
$ qa batch my-evaluation-batch
#=> qa batch my-calibration-images
#=> qa batch my-calibration
#=> qa batch my-evaluation-batch

Thoughts

  • We should add built-in support for script input types, than just executes their config as commands. It goes well with DAGs.
my-script:
  needs: batch1
  type: script
  configurations:
  - echo OK

Expected

  • Easy API
  • Cache friendly
  • Can be used in a non-blocking way

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions