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

Request: FAQ section #437

Open
3 tasks
torfjelde opened this issue Mar 29, 2024 · 3 comments
Open
3 tasks

Request: FAQ section #437

torfjelde opened this issue Mar 29, 2024 · 3 comments

Comments

@torfjelde
Copy link
Member

IMO we should have a FAQ section for typical issues people face so that we can easily point them to this resource rather than repeat answers constantly. In particular because we're increasingly getting new users who are not familiar with Julia on its own, and so they might not know "trivial" details like "AD comes in a separate package", "Distriubtions are from Distributions.jl", etc.

Here's a list of a few questions I have in mind:

  1. "predict isn't working with my missing values"
  2. "Why is my model slow?"
    • We should of course just update the performance section quite drastically, but for the time being it would be useful to have a few pointers + tell people to use TuringBenchmarking.jl to benchmark different approaches.
    • There are two aspects to "slow sampling": computational and sampling complexity.
    • Computational:
      1. ForwardDiff.jl is good for low dim models, e.g. <100.
      2. ReverseDiff.jl with compilation is recommended for higher dim models, e.g. >= 100.
      3. Zygote.jl is usually quite slow and can take ages to compile (link to my issue on Zygote.jl compilation times).
      4. Use TuringBenchmarking.jl to benchmark different models.
      5. Avoid indexing, e.g. replace y[i] ~ Normal(...) with y ~ MvNormal(...). NOTE: y is now treated differently and so it might have undesirable effects, see FAQ on predict (the one above).
    • Sampling complexity (probably don't want to say too much about this here though; too broad of a topic):
      1. First thing to try: NUTS.
      2. Try using Gibbs.
  3. "How do I use a custom distribution in Turing.jl?"
    • Point them to the existing docs we have (which I believe needs to be updated).

There are probably many more; please suggest some:)

@torfjelde
Copy link
Member Author

@devmotion @yebai you might have some to add here

@yebai
Copy link
Member

yebai commented Mar 30, 2024

I think it is a great idea; a simple way to start is to introduce a new "tutorial" so we can gradually add more stuff.

@JasonPekos
Copy link
Member

Unless this has changed, one thing that confused me initially was the inability to unpack model arguments, e.g. defining model(data) and then doing:

`model(data)`
    x = data[:,1]
    y =  data[:,2]

Will no longer recognize a, b as observations. I actually spent many hours trying to debug what I thought was a sampler issue.

@yebai yebai pinned this issue May 25, 2024
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