Test multi-endpoint, Default to Learning engine, Sunset StreamingActiveLearner - #25
Test multi-endpoint, Default to Learning engine, Sunset StreamingActiveLearner#25BenCarter44 wants to merge 10 commits into
Conversation
|
I'm afraid I mostly disagree with the PR. One part is fine: Multi-endpoint baseline test are useful (but some mechanical fixes are needed). But the main part (in volume), the switch of roles, seems strange. Yes, there are fewer inference tasks - but labeling tasks is not difficult by volume, it's just code. More importantly, the default applies to latency-sensitive tasks most (sensors, sinks, selectors, plumbing in general), and the learning pool is most likely a remote HPC resource. It would be much cleaner to have a config option which decides to what pool unlabeled tasks go. Finally: did you measure the impact? This looks like an optimization - but I don't see this justified w/o measurements that this needs optimizing in the first place. What prompted that change, beyond 'fewer inference tasks'? That is a very weak justification for the large change. Also, the switch is not completely applied - I attach my claude review in the next comment. But before acting on that, please respond to the above. Final point, the streaming learner deprecation: that would warrant a separate PR (this PR really has three parts: example, pool switch, learner deprecation). Also I agree the routing part is superseded, but the learner does more than that, and IIUC, the framework is left w/o leaner implementation? I may be missing something here though... |
|
|
Hello Andre, Thank you for the feedback. Yes, there are three things here, and I agree that three PRs would be cleaner. First part: Multi-endpoint baseline test. That is the most important item currently. Second part: Yes, I didn't remove every mention about StreamingActiveLearner as I wanted to talk with you first. So, what I was originally thinking is that the DT framework itself doesn't need to have a streaming learner implementation at all. That is the point of the ModelInvestigator abstraction API. See Inside the science agent and model investigators, there already is the interface for exsitu out-of-stream sections and insitu in-stream sections. So, user code simply extends this with their own implementation / backend labels. BUT: I agree with you that a lot of what the user do will be repeated boilerplate. So, what if StreamingLearnerInvestigator was edited to the following:
Third part: Switch of roles. I agree with you on the config option for switching the default. The main reason behind the switch was that we know ahead-of-time the inference tasks. We don't know ahead-of-time all the workflows/tasks that will run for learning. This is less of an optimization, but more to fit incoming tasks better to the correct roles. Currently, with inference as the default, any workflow or task ROSE creates will be sent to the inference backend. This is a problem, as these are learning tasks which take considerable resources. In the meantime: I will split this into three PRs / Issues |
|
Alright: split into three:
|
|
For point 2, see draft of new |
The test/09-service is changed now to test the DT against two endpoints: inference and learning.
The agent and model investigator themselves carry the respective tag. This is a base-line example to test multiple endpoint runs.
Note: This PR switches the default backend to the learning backend. This is so that by default, all tasks run on the powerful "learning backend" rather than the remote inference machine somewhere else. Tests have been updated to reflect this.
Secondly, the number of inference tasks is much less than the number of learning tasks when using active learning. The user specifically selects the tasks for inference, but the remaining tasks deal with learning.
Also: this supersedes the "StreamingActiveLearner" logic, as now the runtime simply passes the backend name that the user declared.