TuringLang / docs

Documentation and tutorials for the Turing language
https://turinglang.org/docs/
MIT License
229 stars 98 forks source link

Request: FAQ section #437

Open torfjelde opened 6 months ago

torfjelde commented 6 months ago

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 commented 6 months ago

@devmotion @yebai you might have some to add here

yebai commented 6 months ago

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 commented 5 months ago

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.