-
Notifications
You must be signed in to change notification settings - Fork 45
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
Serialization #733
Serialization #733
Conversation
Codecov Report
@@ Coverage Diff @@
## for-a-0-point-20-release #733 +/- ##
===========================================================
Coverage ? 85.41%
===========================================================
Files ? 36
Lines ? 3470
Branches ? 0
===========================================================
Hits ? 2964
Misses ? 506
Partials ? 0 Continue to review full report at Codecov.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mammoth effort, thanks.
I'm sorry for not catching this earlier but, unless I am missing something, there is no point in including mach.cache
in machines to be serialised. In particular, serializable
can return a machine with cache
undefined. Once a machine has been trained, the only time cache
is ever used is when we update the machine (instead of training ab initio). Once the original training data is gone a machine "update" no longer makes sense, it seems to me, and any attempt to fit!
the machine should start from scratch (and hence not need cache
).
If you're not convinced, let's have another call to clarify.
What happens if the user attempts to:
|
And I'm thinking that we should restore Line 583 in c8a2d56
And in the code just referenced we could catch |
So, I have tried and it turns out the cache is important for |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for these latest changes and continued patience.
Thank you for those in depth explanations! Here is the current state of the code:
What do you think? |
👍🏾
True, it does not play a role in any operation. But it needs to be available to
cache but then you need to change update! (the method you should put back) to see both cache and fitresult , as it needs the signature .
BTW,
👍🏾
Yeah. Doing
An excellent proposal. Warning could be something like "The operation |
I'm pretty sure not, but I will locally test the new API on all registered models when the PR's are ready. |
I haven't put it into the cache either. I actually have removed this method too and updated the
Yes that sounds good! |
Oh, right. I do see that. I'll have a closer look at this and your fail then. |
I finally put my hand on the problem. The reason why the test did not pass was because the In any case I have also added the restoration to |
🚀 ❤️ I'm glad I was busy with something else yesterday 😄 . This must have been a woozy.
You are right! Great catch. This slipped by because the I'm working on fix for this test now. As this is orthogonal to the current PR I will make a PR on a separate branch and rebase Given the complexity of the current PR, I should like to go over this one more time before merge. However, this is definitely in good shape and I will move on to review the supporting PR's for now. Again many thanks for your perseverance. |
Okay, I have made that fix and rebased |
Context: JuliaAI/MLJSerialization.jl#15
This PR contains:
Base.replace
to reuse some code forsave
of Composite modelsUnfortunately I don't think we have CI enabled since this does not target dev.
Happy to take your comments.