Skip to main content

Run batches on your machine

The local runner does the runs of qa batch on the machine where you start it, several at a time with joblib. It's the default when qaboard.yaml configures no other runner. When another runner is the default, choose it for one command:

qa batch --runner local my-batch

Run several runs at the same time​

concurrency (joblib's n_jobs) is how many runs run at the same time. Without it, runs are done one at a time; -1 runs one per CPU, as in the qaboard.yaml that qa init creates, and -2 uses all CPUs but one. Set it:

  • in qaboard.yaml, for all batches:

    qaboard.yaml
    runners:
    default: local # the default
    local:
    concurrency: 1 # one at a time
  • per batch, in a batches file, e.g. for a batch whose runs need all the memory:

    qa/batches.yaml
    large-images:
    inputs:
    - charts/test-wall-113mp.tiff
    local:
    concurrency: 1
  • on the command line, for all batches: qa batch --local-concurrency 1 my-batch.

The command line wins, then the batch's setting, then qaboard.yaml. The QA_BATCH_CONCURRENCY environment variable replaces the value from qaboard.yaml.

Stop runs that take too long​

Give each run a timeout, in seconds (0 means no timeout): runners.local.timeout, timeout under a batch's local:, qa batch --local-timeout or QA_BATCH_TIMEOUT. When a run takes longer, qa batch kills it (and what it started), marks it as failed, and goes on with the other runs.

When batches have their own concurrency or timeout, qa batch runs them one after the other, each with its own.

tip

How joblib runs the processes is in its docs.