Introduce "Learner not ready" error
Some adaptive algorithms may be implemented such that they are not ready to request new data until more data arrives. While this reduces the suitability of these algorithms to parallelization, there is no reason to prohibit it.
We could handle this as follows:
- Introduce an
InsufficientData
error (name is tentative) that could be a subclass ofStopIteration
if we view learners as iterators (see #45). - Teach the runners and
BalancingLearner
to catch this error and only resume querying the learner after they supply additional data.
That way we could even write a trivial wrapper learner that works with any adaptive algorithm and blocks on every step.