<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <br>
    <br>
    <div class="moz-cite-prefix">On 09/28/2018 04:45 PM, Javier López
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAJn5T5Wy2d4=Gf-Fzb8DtcP2rPCA2cfNjQ44j8VkhK2Y7Y2_tw@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=utf-8">
      <div dir="ltr"><br>
        <br>
        <div class="gmail_quote">
          <div dir="ltr">On Fri, Sep 28, 2018 at 8:46 PM Andreas Mueller
            <<a href="mailto:t3kcit@gmail.com" moz-do-not-send="true">t3kcit@gmail.com</a>>
            wrote:</div>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            Basically what you're saying is that you're fine with
            versioning the <br>
            models and having the model break loudly if anything
            changes.<br>
            That's not actually what most people want. They want to be
            able to make <br>
            predictions with a given model for ever into the future.<br>
          </blockquote>
          <div><br>
          </div>
          <div>Are we talking about "(the new version of) the old model
            can still make predictions" or "the old model makes exactly
            the same predictions as before"? I'd like the first to hold,
            don't care that much about the second.</div>
          <div> </div>
        </div>
      </div>
    </blockquote>
    The second.<br>
    <blockquote type="cite"
cite="mid:CAJn5T5Wy2d4=Gf-Fzb8DtcP2rPCA2cfNjQ44j8VkhK2Y7Y2_tw@mail.gmail.com">
      <div dir="ltr">
        <div class="gmail_quote"><br>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            We're now storing the version of scikit-learn that was used
            in the <br>
            pickle and warn if you're trying to load with a different
            version.</blockquote>
          <div><br>
          </div>
          <div>This is not the whole truth. Yes, you store the sklearn
            version on the pickle and raise a warning; I am mostly ok
            with that, but the pickles are brittle and oftentimes they
            stop loading when other versions of other stuff change. I am
            not talking about "Warning: wrong version", but rather
            "Unpickling error: expected bytes, found tuple" that prevent
            the file from loading entirely.</div>
        </div>
      </div>
    </blockquote>
    Can you give examples of that? That shouldn't really happen afaik.<br>
    <blockquote type="cite"
cite="mid:CAJn5T5Wy2d4=Gf-Fzb8DtcP2rPCA2cfNjQ44j8VkhK2Y7Y2_tw@mail.gmail.com">
      <div dir="ltr">
        <div class="gmail_quote">
          <div> </div>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            That's basically a stricter test than what you wanted. Yes,
            there are <br>
            false positives, but given that this release took a year,<br>
            this doesn't seem that big an issue?<br>
          </blockquote>
          <div><br>
          </div>
          <div>1. Things in the current state break when something else
            changes, not only sklearn.</div>
          <div>2. Sharing pickles is a bad practice due to a number of
            reasons.</div>
          <div>3. We might want to explore model parameters without
            having to load the entire runtime</div>
          <div><br>
          </div>
          <br>
        </div>
      </div>
    </blockquote>
    I agree, it would be great to have something other than pickle, but
    as I said, the usual request is "I want a way for a model to make
    the same predictions in the future".<br>
    If you have a way to do that with a text-based format that doesn't
    require writing lots of version converters I'd be very happy.<br>
    <br>
    Generally, what you want is not to store the model but to store the
    prediction function, and have separate runtimes for training and
    prediction.<br>
    It might not be possible to represent a model from a previous
    version of scikit-learn in a newer version.<br>
  </body>
</html>