Skip to content

Benchmarks fails indeterministically #905

@mhauru

Description

@mhauru

Occasionally this happens:

[ Info: Running benchmark for Dynamic
ERROR: LoadError: DomainError with 1.0000000000000198:
atanh(x) is only defined for |x|  1.
Stacktrace:
  [1] atanh_domain_error(x::Float64)
    @ Base.Math ./special/hyperbolic.jl:240
  [2] atanh(x::Float64)
    @ Base.Math ./special/hyperbolic.jl:256
  [3] _link_chol_lkj_from_upper(W::Matrix{Real})
    @ Bijectors ~/.julia/packages/Bijectors/L7xKL/src/bijectors/corr.jl:327
  [4] _link_chol_lkj_from_lower
    @ ~/.julia/packages/Bijectors/L7xKL/src/bijectors/corr.jl:336 [inlined]
  [5] transform(b::Bijectors.VecCholeskyBijector, X::LinearAlgebra.Cholesky{Real, Matrix{Real}})
    @ Bijectors ~/.julia/packages/Bijectors/L7xKL/src/bijectors/corr.jl:231
  [6] with_logabsdet_jacobian
    @ ~/.julia/packages/Bijectors/L7xKL/src/bijectors/corr.jl:225 [inlined]
  [7] with_logabsdet_jacobian(f::ComposedFunction{Bijectors.VecCholeskyBijector, ComposedFunction{DynamicPPL.ToChol, DynamicPPL.ReshapeTransform{Tuple{Int64}, Tuple{Int64, Int64}}}}, x::Vector{Real})
    @ ChangesOfVariables ~/.julia/packages/ChangesOfVariables/d747N/src/with_ladj.jl:98
  [8] (::DynamicPPL.var"#166#167"{DynamicPPL.VarInfo{DynamicPPL.Metadata{Dict{AbstractPPL.VarName, Int64}, Vector{Distributions.Distribution}, Vector{AbstractPPL.VarName}, Vector{Real}}, DynamicPPL.AccumulatorTuple{3, @NamedTuple{LogPrior::DynamicPPL.LogPriorAccumulator{Float64}, LogLikelihood::DynamicPPL.LogLikelihoodAccumulator{Float64}, NumProduce::DynamicPPL.NumProduceAccumulator{Int64}}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName, Int64}, Vector{Distributions.Distribution}, Vector{AbstractPPL.VarName}, Vector{Real}}, Vector{AbstractPPL.VarName}})(vn::AbstractPPL.VarName{:mat1, typeof(identity)})
    @ DynamicPPL ~/projects/DynamicPPL.jl/src/varinfo.jl:1380
  [9] iterate
    @ ./generator.jl:47 [inlined]
 [10] collect_to!(dest::Vector{Vector{Float64}}, itr::Base.Generator{Vector{AbstractPPL.VarName}, DynamicPPL.var"#166#167"{DynamicPPL.VarInfo{DynamicPPL.Metadata{Dict{AbstractPPL.VarName, Int64}, Vector{Distributions.Distribution}, Vector{AbstractPPL.VarName}, Vector{Real}}, DynamicPPL.AccumulatorTuple{3, @NamedTuple{LogPrior::DynamicPPL.LogPriorAccumulator{Float64}, LogLikelihood::DynamicPPL.LogLikelihoodAccumulator{Float64}, NumProduce::DynamicPPL.NumProduceAccumulator{Int64}}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName, Int64}, Vector{Distributions.Distribution}, Vector{AbstractPPL.VarName}, Vector{Real}}, Vector{AbstractPPL.VarName}}}, offs::Int64, st::Int64)
    @ Base ./array.jl:892
 [11] collect_to_with_first!(dest::Vector{Vector{Float64}}, v1::Vector{Float64}, itr::Base.Generator{Vector{AbstractPPL.VarName}, DynamicPPL.var"#166#167"{DynamicPPL.VarInfo{DynamicPPL.Metadata{Dict{AbstractPPL.VarName, Int64}, Vector{Distributions.Distribution}, Vector{AbstractPPL.VarName}, Vector{Real}}, DynamicPPL.AccumulatorTuple{3, @NamedTuple{LogPrior::DynamicPPL.LogPriorAccumulator{Float64}, LogLikelihood::DynamicPPL.LogLikelihoodAccumulator{Float64}, NumProduce::DynamicPPL.NumProduceAccumulator{Int64}}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName, Int64}, Vector{Distributions.Distribution}, Vector{AbstractPPL.VarName}, Vector{Real}}, Vector{AbstractPPL.VarName}}}, st::Int64)
    @ Base ./array.jl:870
 [12] _collect(c::Vector{AbstractPPL.VarName}, itr::Base.Generator{Vector{AbstractPPL.VarName}, DynamicPPL.var"#166#167"{DynamicPPL.VarInfo{DynamicPPL.Metadata{Dict{AbstractPPL.VarName, Int64}, Vector{Distributions.Distribution}, Vector{AbstractPPL.VarName}, Vector{Real}}, DynamicPPL.AccumulatorTuple{3, @NamedTuple{LogPrior::DynamicPPL.LogPriorAccumulator{Float64}, LogLikelihood::DynamicPPL.LogLikelihoodAccumulator{Float64}, NumProduce::DynamicPPL.NumProduceAccumulator{Int64}}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName, Int64}, Vector{Distributions.Distribution}, Vector{AbstractPPL.VarName}, Vector{Real}}, Vector{AbstractPPL.VarName}}}, ::Base.EltypeUnknown, isz::Base.HasShape{1})
    @ Base ./array.jl:864
 [13] collect_similar
    @ ./array.jl:763 [inlined]
 [14] map
    @ ./abstractarray.jl:3286 [inlined]
 [15] _link_metadata!!(::DynamicPPL.Model{typeof(DynamicPPLBenchmarks.Models.dynamic), (Symbol("##arg#308"),), (), (), Tuple{DynamicPPL.TypeWrap{Vector{Float64}}}, Tuple{}, DynamicPPL.DefaultContext}, varinfo::DynamicPPL.VarInfo{DynamicPPL.Metadata{Dict{AbstractPPL.VarName, Int64}, Vector{Distributions.Distribution}, Vector{AbstractPPL.VarName}, Vector{Real}}, DynamicPPL.AccumulatorTuple{3, @NamedTuple{LogPrior::DynamicPPL.LogPriorAccumulator{Float64}, LogLikelihood::DynamicPPL.LogLikelihoodAccumulator{Float64}, NumProduce::DynamicPPL.NumProduceAccumulator{Int64}}}}, metadata::DynamicPPL.Metadata{Dict{AbstractPPL.VarName, Int64}, Vector{Distributions.Distribution}, Vector{AbstractPPL.VarName}, Vector{Real}}, target_vns::Vector{AbstractPPL.VarName})
    @ DynamicPPL ~/projects/DynamicPPL.jl/src/varinfo.jl:1369
 [16] _link(model::DynamicPPL.Model{typeof(DynamicPPLBenchmarks.Models.dynamic), (Symbol("##arg#308"),), (), (), Tuple{DynamicPPL.TypeWrap{Vector{Float64}}}, Tuple{}, DynamicPPL.DefaultContext}, varinfo::DynamicPPL.VarInfo{DynamicPPL.Metadata{Dict{AbstractPPL.VarName, Int64}, Vector{Distributions.Distribution}, Vector{AbstractPPL.VarName}, Vector{Real}}, DynamicPPL.AccumulatorTuple{3, @NamedTuple{LogPrior::DynamicPPL.LogPriorAccumulator{Float64}, LogLikelihood::DynamicPPL.LogLikelihoodAccumulator{Float64}, NumProduce::DynamicPPL.NumProduceAccumulator{Int64}}}}, vns::Vector{AbstractPPL.VarName})
    @ DynamicPPL ~/projects/DynamicPPL.jl/src/varinfo.jl:1308
 [17] link
    @ ~/projects/DynamicPPL.jl/src/varinfo.jl:1282 [inlined]
 [18] link
    @ ~/projects/DynamicPPL.jl/src/abstract_varinfo.jl:779 [inlined]
 [19] model_dimension(model::DynamicPPL.Model{typeof(DynamicPPLBenchmarks.Models.dynamic), (Symbol("##arg#308"),), (), (), Tuple{DynamicPPL.TypeWrap{Vector{Float64}}}, Tuple{}, DynamicPPL.DefaultContext}, islinked::Bool)
    @ DynamicPPLBenchmarks ~/projects/DynamicPPL.jl/benchmarks/src/DynamicPPLBenchmarks.jl:28
 [20] top-level scope
    @ ~/projects/DynamicPPL.jl/benchmarks/benchmarks.jl:96

I've seen this both locally and e.g. in https://github.com/TuringLang/DynamicPPL.jl/actions/runs/13976141942/job/39130301857. Haven't looked into it at all yet, but a bit surprised because I thought we had fixed all seeds.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions