Skip to content

Segregate "scoring" ML.NET components/NuGet packages so the scoring components evolve autonomously from the rest of ML.NET #2403

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
CESARDELATORRE opened this issue Feb 4, 2019 · 2 comments
Labels
P2 Priority of the issue for triage purpose: Needs to be fixed at some point.

Comments

@CESARDELATORRE
Copy link
Contributor

CESARDELATORRE commented Feb 4, 2019

Segregate "scoring" ML.NET components/NuGet packages so the scoring components evolve autonomously from the rest of ML.NET.

This will be a breaking change, although easy to fix in the apps when having the breaking changes.

If we segregate the scoring area of ML,NET, that would help when providing support to:

  • UWP
  • Unity
  • ARM

So initially, only the "scoring" area of ML.NET could be supported in those environments. It would be less expensive than providing support to UWP, Unity and ARM to the whole ML.NET.
And in most scenarios, for those environments, the customer just want to score a model, not to train a model in an UWP app, Unity app or ARM app (Xamarin mobile app or IoT).

Related issues:
#1886
#1736
#22
#2252
https://xamlbrewer.wordpress.com/2019/01/25/machine-learning-with-ml-net-in-uwp-clustering/

@JRAlexander
Copy link

This.

@eerhardt
Copy link
Member

eerhardt commented Feb 5, 2019

The gains you'd get here aren't as big as you first think. If you have any "transforms" in your pipeline, you still need to run them at "scoring" time. And also, the output objects of the "training" code (basically the ModelParameter classes plus the transforms) are also needed at "scoring" time.

In all actuality, the only code you could eliminate at scoring time is the few classes that do the actual training - which wouldn't be a lot of code.

Looking at the above issues, they would all still remain even if we split the "trainer" code into separate assemblies. Reflection.Emit is used by "scoring". MEF is used by the custom transforms. etc.

/cc @TomFinley

@harishsk harishsk added the P2 Priority of the issue for triage purpose: Needs to be fixed at some point. label Jan 12, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
P2 Priority of the issue for triage purpose: Needs to be fixed at some point.
Projects
None yet
Development

No branches or pull requests

4 participants