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.yamlrunners:default: local # the defaultlocal: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.yamllarge-images:inputs:- charts/test-wall-113mp.tifflocal: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.
How joblib runs the processes is in its docs.