-
Notifications
You must be signed in to change notification settings - Fork 229
Closed as not planned
Closed as not planned
Copy link
Description
I'm not certain whether or not this can be considered a "Turing.jl-issue" or not, but I figured I would at least raise it as an issue here so people are aware.
The compilation time of Zygote scales quite badly with the number of ~
statements.
TL;DR: it takes almost 5 minutes to compile a model with 14 ~
statements. I don't have the result here, but at some point I tried one with 20 ~
statements, and it took a full ~23 mins to compile.
Demo
using Turing, Zygote
Turing.setadbackend(:zygote);
adbackend = Turing.Core.ZygoteAD();
spl = DynamicPPL.SampleFromPrior();
results = []
num_tildes = 0
Running the following snippet a couple of times we get a sense of the compilation times:
num_tildes += 1
Zygote.refresh()
expr = :(function $(Symbol(:demo, num_tildes))() end) |> Base.remove_linenums!;
mainbody = last(expr.args);
append!(mainbody.args, [:($(Symbol("x", j)) ~ Normal()) for j = 1:num_tildes]);
f = @eval $(DynamicPPL.model(:Main, LineNumberNode(1), expr, false))
model = f();
vi = DynamicPPL.VarInfo(model);
t = @elapsed Turing.Core.gradient_logp(
adbackend,
vi[spl],
vi,
model,
spl
);
push!(results, t)
results
14-element Vector{Any}:
15.917412882
9.600213651
14.911253238
24.699050206
71.811476745
49.158314248
46.059394601
57.44494627
75.514564551
94.927956369
134.165383535
156.079943416
202.745837585
273.93479382
That is, it takes almost 5 minutes to compile a model with 14 ~
statements. I don't have the result here, but at some point I tried one with 20 ~
statements, and it took a full ~23 mins to compile.
Additional info
versioninfo()
Julia Version 1.6.2
Commit 1b93d53fc4 (2021-07-14 15:36 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
CPU: Intel(R) Core(TM) i7-10710U CPU @ 1.10GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-11.0.1 (ORCJIT, skylake)
Pkg.status()
Status `/tmp/jl_PHYdgF/Project.toml`
[fce5fe82] Turing v0.19.2
[e88e6eb3] Zygote v0.6.32
Metadata
Metadata
Assignees
Labels
No labels