-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Clean up our auto-caching #1604
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
Comments
I would prefer we make a good model by default for the user w/ auto-normalization & auto-calibration. The auto-caching is simply a matter of speed, not final model quality, but is quite related to the overall user happiness. |
I think this is not the first time we have this argument.
Because of the above, we don't want any of these smarts to be part of the core ML.NET API. We need to expose the API to normalize, cache and calibrate at user's request. Our existing smarts can be converted into tooling (VS code analyzer warnings etc.). |
This feeds back into a general principle (not just for ML.NET) that APIs are best explicit, not implicit. Tools can get away with implicit behavior, APIs should not. Programming against an unfamiliar API is hard enough without having to worry about the API essentially rewriting your program for you and doing things you didn't ask for because it "knows better." Like @Zruty0 I'm actually a little surprised we are still having this argument. |
Checking the impl mechanism: so we'll have configs for norm/calibration/cache (or we already have them through TrainContext/TrainInfo) and default normalization, calibration and caching will be no? |
No, we just remove all auto-caching, calibration and normalization, period. The users will be responsible to normalize the data if needed (via |
Would it be feasible to provide some documentation/hints on when normalization/caching/calibration are important? For example, if a learner today is configured to add normalization, should we update the docs for that learner to suggest that normalization is important? Or perhaps just explain in the docs on normalization in which situations it might be important. /cc @JRAlexander |
We already changed it long ago, no learners are adding normalization. Or calibration. This work item is to also remove auto-caching, everything else is already gone. The cookbook has a section on normalization. |
It looks like both of |
Currently, some of our trainers cache the data prior to training, without a possibility to disable that.
I believe the good incremental step would be to disable all auto-caching, and rely on user to call
AppendCacheCheckpoint
prior to multi-pass training.This is not really ideal, since the default setup for multi-pass trainers will train slower. I still think it is better to have a consistent story about our 'smarts' (that is, we have no auto-normalization, no auto-caching and no auto-calibration), and use extensive documentation (and tooling, in the future) to cover these pitfalls.
cc @GalOshri @TomFinley @eerhardt
The text was updated successfully, but these errors were encountered: