Skip to content
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

Port book to PyMC 4.0 #537

Open
twiecki opened this issue Dec 15, 2021 · 7 comments
Open

Port book to PyMC 4.0 #537

twiecki opened this issue Dec 15, 2021 · 7 comments

Comments

@twiecki
Copy link
Contributor

twiecki commented Dec 15, 2021

With PyMC 4.0 almost ready, we should work on porting the examples here. Most models should continue to run just fine.

@CamDavidsonPilon
Copy link
Owner

4.0! Congrats!

I'd like to invite any motivated volunteers watching to help port examples over (ideally entire chapters at a time). @twiecki is it correct that there's not yet a beta release for pymc v4?

@twiecki
Copy link
Contributor Author

twiecki commented Dec 15, 2021

@CamDavidsonPilon Thanks!

is it correct that there's not yet a beta release for pymc v4?

Correct, but we'll release the beta today or tomorrow.

@twiecki
Copy link
Contributor Author

twiecki commented Dec 17, 2021

Beta is out if someone wants to take this on!

@pabloazurduy
Copy link

pabloazurduy commented Jun 6, 2022

Hi!
(I bought the book a few months ago) I'm struggling with translating the code from Chapter 2 to the PYMC4 standard. Almost all Chapter2 is useless, the "migration guide" it's a joke. In the PYMC docs claiming that "Yes, you can just keep your existing PyMC modeling code without having to change anything (in most cases) and get all the improvements for free" seems like or either this book is too outdated vs the last version of PYMC3 (even the online version "ported to PYMC3") or the statement is false. Some of the issues that I found:

    print("parameter.value =", parameter.value)

.value does not exist anymore

the models are no longer declared as in the example:

     import pymc as pm


     parameter = pm.Exponential("poisson_param", 1)
     data_generator = pm.Poisson("data_generator", parameter)
     data_plus_one = data_generator + 1
tau.random()

.random() method does not exist anymore

etc etc, TBH I'm trying to re-write the code on this chapter, but it seems not only that the API has changed completely like I think is better to re-write the chapter using this "new library" or the missing methods are available somewhere but the documentation it's just not giving any hint. Am I missing something? is this chapter that outdated?

Thanks !

@CamDavidsonPilon
Copy link
Owner

CamDavidsonPilon commented Jun 6, 2022

Hi @pabloazurduy,

  1. Comments like "the "migration guide" it's a joke." are not productive, and infact offensive to the authors of that content. Do you agree?
  2. A lot has changed in PyMC3 since this book was written, so yes, things are out-of-date. This is a common problem in software. Part of a developers job is determining the best path forward, given this problem.
  3. Chapters may need to be rewritten completely, or removed altogether.

I appreciate your efforts in porting content to use PyMC4 (it's a great learning exercise I'm sure). There's lots of freedom in how to port it, too, and I'm open to suggestions and PRs on how it's done.

@pabloazurduy
Copy link

pabloazurduy commented Jun 6, 2022

hey @CamDavidsonPilon,
Thanks for the fast replay! 😊

  1. The API changed a LOT from what I can tell, maybe it has major changes between versions of PYMC3 (that will explain that "migration guide"). I was not aware of that, but that will make sense. Didn't want to sound disrespectful, just being sarcastic there.
  2. that's probably the reason behind (1), although I think the "changes" on the interface of the library have been massive, a sample of that is that almost all snippets on this book don't work anymore, and because I have the printer version on my hands I can tell that is not infrequent with PYMC. As you mention that's common in software, however, I must argue that this level of changes (3 completely different interfaces in 2 versions seems kind of an exception rather than a rule). Anyway, this is under PYMC dev guidelines, not sure if there's anything that we can do about it (except /rant about it). my frustration comes from the lack of guides on these changes or documentation in the library itself, probably one of the reasons behind writing a book about it, I can't even know if some methods are completely gone or replaced by other methods.

3+end. I will be more than happy to help, I was trying too! and then I realized that either, you know how to use PYMC3 and then learn how to port it to PYMC4, or you know PYMC4 and write a chapter about it, I think I don't belong to either of those groups 😂😂 (That's why I bought the book on the first place). I found the migration guide, but not very helpful, maybe there is a PYMC3 v1.0 to migration guide somewhere ?. Anyway, thanks for the context, and sorry to sound rude (not my intention ! )

@twiecki
Copy link
Contributor Author

twiecki commented Jun 6, 2022

Yeah, the modeling API is mostly intact but otherwise things definitely changed, and this great book definitely teachers more than just the modeling API. A more comprehensive migration guide is definitely required. For now, you can read https://github.com/pymc-devs/pymc/blob/main/RELEASE-NOTES.md#pymc-400 to get some pointers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants