From 22569ee6e2e7937b03206f33959840b6c22c6c67 Mon Sep 17 00:00:00 2001 From: Penelope Yong Date: Thu, 29 May 2025 17:29:00 +0100 Subject: [PATCH 01/12] Disable Mooncake on prerelease --- test/ad.jl | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/test/ad.jl b/test/ad.jl index 30cfc13d7..dd2911df9 100644 --- a/test/ad.jl +++ b/test/ad.jl @@ -8,13 +8,22 @@ using Random: Random using StableRNGs: StableRNG using Test using ..Models: gdemo_default -import ForwardDiff, ReverseDiff, Mooncake +import ForwardDiff, ReverseDiff + +# Detect if prerelease version, if so, we skip some tests +const IS_PRERELEASE = !isempty(VERSION.prerelease) +const INCLUDE_MOONCAKE = !IS_PRERELEASE + +if INCLUDE_MOONCAKE + Pkg.add("Mooncake") + using Mooncake: Mooncake +end """Element types that are always valid for a VarInfo regardless of ADType.""" const always_valid_eltypes = (AbstractFloat, AbstractIrrational, Integer, Rational) """A dictionary mapping ADTypes to the element types they use.""" -const eltypes_by_adtype = Dict( +eltypes_by_adtype = Dict( Turing.AutoForwardDiff => (ForwardDiff.Dual,), Turing.AutoReverseDiff => ( ReverseDiff.TrackedArray, @@ -25,8 +34,10 @@ const eltypes_by_adtype = Dict( ReverseDiff.TrackedVecOrMat, ReverseDiff.TrackedVector, ), - Turing.AutoMooncake => (Mooncake.CoDual,), ) +if INCLUDE_MOONCAKE + eltypes_by_adtype[Turing.AutoMooncake] = (Mooncake.CoDual,) +end """ AbstractWrongADBackendError @@ -177,11 +188,10 @@ end """ All the ADTypes on which we want to run the tests. """ -ADTYPES = [ - Turing.AutoForwardDiff(), - Turing.AutoReverseDiff(; compile=false), - Turing.AutoMooncake(; config=nothing), -] +ADTYPES = [Turing.AutoForwardDiff(), Turing.AutoReverseDiff(; compile=false)] +if INCLUDE_MOONCAKE + push!(ADTYPES, Turing.AutoMooncake(; config=nothing)) +end # Check that ADTypeCheckContext itself works as expected. @testset "ADTypeCheckContext" begin From 96efb6c944a6391dceb1311b4765deef00d407c1 Mon Sep 17 00:00:00 2001 From: Penelope Yong Date: Thu, 29 May 2025 17:38:54 +0100 Subject: [PATCH 02/12] Remove Mooncake from environment --- test/Project.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/test/Project.toml b/test/Project.toml index d6ed2c79f..d404618b6 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -21,7 +21,6 @@ LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" LogDensityProblems = "6fdf6af0-433a-55f7-b3ed-c6c6e0b8df7c" LogDensityProblemsAD = "996a588d-648d-4e1f-a8f0-a84b347e47b1" MCMCChains = "c7f686f2-ff18-58e9-bc7b-31028e88f75d" -Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" NamedArrays = "86f7a689-2022-50b4-a561-43c23ac3c673" Optim = "429524aa-4258-5aef-a3af-852621145aeb" Optimization = "7f7a1694-90dd-40f0-9382-eb1efda571ba" From c188cc2f076f5bae3eb79d63ee44bb3f42a5eba4 Mon Sep 17 00:00:00 2001 From: Penelope Yong Date: Thu, 29 May 2025 17:56:29 +0100 Subject: [PATCH 03/12] Remove Mooncake compat bound --- test/Project.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/test/Project.toml b/test/Project.toml index d404618b6..e80ce1bdb 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -60,7 +60,6 @@ LinearAlgebra = "1" LogDensityProblems = "2" LogDensityProblemsAD = "1.4" MCMCChains = "5, 6, 7" -Mooncake = "0.4.95" NamedArrays = "0.9.4, 0.10" Optim = "1" Optimization = "3, 4" From 8bf3507208bad2ea1722f8882371002f9eb0eb20 Mon Sep 17 00:00:00 2001 From: Penelope Yong Date: Thu, 29 May 2025 18:16:56 +0100 Subject: [PATCH 04/12] Remove unused imports --- test/mcmc/Inference.jl | 1 - test/mcmc/abstractmcmc.jl | 1 - test/mcmc/gibbs.jl | 1 - test/mcmc/hmc.jl | 1 - test/mcmc/sghmc.jl | 1 - test/optimisation/Optimisation.jl | 2 -- 6 files changed, 7 deletions(-) diff --git a/test/mcmc/Inference.jl b/test/mcmc/Inference.jl index 78d79a548..bc31ebfa9 100644 --- a/test/mcmc/Inference.jl +++ b/test/mcmc/Inference.jl @@ -12,7 +12,6 @@ import MCMCChains import Random import ReverseDiff using StableRNGs: StableRNG -import Mooncake using Test: @test, @test_throws, @testset using Turing diff --git a/test/mcmc/abstractmcmc.jl b/test/mcmc/abstractmcmc.jl index 7651752ba..5dbd89ad3 100644 --- a/test/mcmc/abstractmcmc.jl +++ b/test/mcmc/abstractmcmc.jl @@ -11,7 +11,6 @@ using LogDensityProblems: LogDensityProblems using Random: Random using ReverseDiff: ReverseDiff using StableRNGs: StableRNG -import Mooncake using Test: @test, @test_throws, @testset using Turing using Turing.Inference: AdvancedHMC diff --git a/test/mcmc/gibbs.jl b/test/mcmc/gibbs.jl index 2070c697c..c0b2abba8 100644 --- a/test/mcmc/gibbs.jl +++ b/test/mcmc/gibbs.jl @@ -15,7 +15,6 @@ using DynamicPPL: DynamicPPL using ForwardDiff: ForwardDiff using Random: Random using ReverseDiff: ReverseDiff -import Mooncake using StableRNGs: StableRNG using Test: @inferred, @test, @test_broken, @test_throws, @testset using Turing diff --git a/test/mcmc/hmc.jl b/test/mcmc/hmc.jl index 0649ca8d3..84d0b5823 100644 --- a/test/mcmc/hmc.jl +++ b/test/mcmc/hmc.jl @@ -12,7 +12,6 @@ using LinearAlgebra: I, dot, vec import Random using StableRNGs: StableRNG using StatsFuns: logistic -import Mooncake using Test: @test, @test_logs, @testset, @test_throws using Turing diff --git a/test/mcmc/sghmc.jl b/test/mcmc/sghmc.jl index 6d628ce3c..3796ea915 100644 --- a/test/mcmc/sghmc.jl +++ b/test/mcmc/sghmc.jl @@ -10,7 +10,6 @@ import ForwardDiff using LinearAlgebra: dot import ReverseDiff using StableRNGs: StableRNG -import Mooncake using Test: @test, @testset using Turing diff --git a/test/optimisation/Optimisation.jl b/test/optimisation/Optimisation.jl index cf692cba2..d081fbd0d 100644 --- a/test/optimisation/Optimisation.jl +++ b/test/optimisation/Optimisation.jl @@ -4,9 +4,7 @@ using ..Models: gdemo, gdemo_default using Distributions using Distributions.FillArrays: Zeros using DynamicPPL: DynamicPPL -using ForwardDiff: ForwardDiff using LinearAlgebra: Diagonal, I -using Mooncake: Mooncake using Random: Random using Optimization using Optimization: Optimization From ade78fc8aee46201b5edad695f2722b1358f6a4a Mon Sep 17 00:00:00 2001 From: Penelope Yong Date: Thu, 29 May 2025 18:34:28 +0100 Subject: [PATCH 05/12] Pkg --- test/ad.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/test/ad.jl b/test/ad.jl index dd2911df9..befef5af3 100644 --- a/test/ad.jl +++ b/test/ad.jl @@ -15,6 +15,7 @@ const IS_PRERELEASE = !isempty(VERSION.prerelease) const INCLUDE_MOONCAKE = !IS_PRERELEASE if INCLUDE_MOONCAKE + import Pkg Pkg.add("Mooncake") using Mooncake: Mooncake end From 0131934035b73db7747dd58eb41abd67736601f5 Mon Sep 17 00:00:00 2001 From: Penelope Yong Date: Thu, 29 May 2025 22:01:11 +0100 Subject: [PATCH 06/12] Balance tests --- .github/workflows/Tests.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/workflows/Tests.yml b/.github/workflows/Tests.yml index 8b1272336..87d78c637 100644 --- a/.github/workflows/Tests.yml +++ b/.github/workflows/Tests.yml @@ -26,16 +26,14 @@ jobs: # not included in the others. - name: "mcmc/gibbs" args: "mcmc/gibbs.jl" - - name: "mcmc/hmc" - args: "mcmc/hmc.jl" - - name: "mcmc/abstractmcmc" - args: "mcmc/abstractmcmc.jl" - name: "mcmc/Inference" args: "mcmc/Inference.jl" - - name: "mcmc/ess" - args: "mcmc/ess.jl" + - name: "ad" + args: "ad.jl" + - name: "stdlib/distributions" + args: "stdlib/distributions.jl" - name: "everything else" - args: "--skip mcmc/gibbs.jl mcmc/hmc.jl mcmc/abstractmcmc.jl mcmc/Inference.jl mcmc/ess.jl" + args: "--skip mcmc/gibbs.jl mcmc/Inference.jl ad.jl stdlib/distributions.jl" runner: # Default - version: '1' From 1c8c8cdf0c6cf4691d2f58168b7e823b30383b2f Mon Sep 17 00:00:00 2001 From: Penelope Yong Date: Fri, 30 May 2025 10:47:15 +0100 Subject: [PATCH 07/12] min -> 1.10.4 --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 6dbd03e40..66d42c445 100644 --- a/Project.toml +++ b/Project.toml @@ -83,7 +83,7 @@ Statistics = "1.6" StatsAPI = "1.6" StatsBase = "0.32, 0.33, 0.34" StatsFuns = "0.8, 0.9, 1" -julia = "1.10" +julia = "1.10.4" [extras] DynamicHMC = "bbc10e6e-7c05-544b-b16e-64fede858acb" From 83903b2dedf988250eec08836c27917859b4fdfb Mon Sep 17 00:00:00 2001 From: Penelope Yong Date: Fri, 30 May 2025 10:48:10 +0100 Subject: [PATCH 08/12] Move Gibbs sampling AD bits to the top so that we see it first --- test/ad.jl | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/test/ad.jl b/test/ad.jl index befef5af3..eda6ae7c5 100644 --- a/test/ad.jl +++ b/test/ad.jl @@ -194,6 +194,19 @@ if INCLUDE_MOONCAKE push!(ADTYPES, Turing.AutoMooncake(; config=nothing)) end +@testset verbose = true "AD / Gibbs sampling" begin + # Make sure that Gibbs sampling doesn't fall over when using AD. + @testset "adtype=$adtype" for adtype in ADTYPES + spl = Gibbs( + @varname(s) => HMC(0.1, 10; adtype=adtype), + @varname(m) => HMC(0.1, 10; adtype=adtype), + ) + @testset "model=$(model.f)" for model in DEMO_MODELS + @test sample(model, spl, 2) isa Any + end + end +end + # Check that ADTypeCheckContext itself works as expected. @testset "ADTypeCheckContext" begin @model test_model() = x ~ Normal(0, 1) @@ -290,17 +303,4 @@ end end end -@testset verbose = true "AD / Gibbs sampling" begin - # Make sure that Gibbs sampling doesn't fall over when using AD. - @testset "adtype=$adtype" for adtype in ADTYPES - spl = Gibbs( - @varname(s) => HMC(0.1, 10; adtype=adtype), - @varname(m) => HMC(0.1, 10; adtype=adtype), - ) - @testset "model=$(model.f)" for model in DEMO_MODELS - @test sample(model, spl, 2) isa Any - end - end -end - end # module From 47856f7c90ac06810d2443bcba4b8c0b3e8516e3 Mon Sep 17 00:00:00 2001 From: Penelope Yong Date: Fri, 30 May 2025 10:56:45 +0100 Subject: [PATCH 09/12] Add info --- test/ad.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/test/ad.jl b/test/ad.jl index eda6ae7c5..2a14de479 100644 --- a/test/ad.jl +++ b/test/ad.jl @@ -202,6 +202,7 @@ end @varname(m) => HMC(0.1, 10; adtype=adtype), ) @testset "model=$(model.f)" for model in DEMO_MODELS + @info "Testing Gibbs sampling with model=$(model.f), adtype=$adtype" @test sample(model, spl, 2) isa Any end end From ec634d85d068baaf28b324f025b474294ad20a45 Mon Sep 17 00:00:00 2001 From: Penelope Yong Date: Fri, 30 May 2025 11:17:52 +0100 Subject: [PATCH 10/12] min -> 1.10.2 --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 66d42c445..4b2926158 100644 --- a/Project.toml +++ b/Project.toml @@ -83,7 +83,7 @@ Statistics = "1.6" StatsAPI = "1.6" StatsBase = "0.32, 0.33, 0.34" StatsFuns = "0.8, 0.9, 1" -julia = "1.10.4" +julia = "1.10.2" [extras] DynamicHMC = "bbc10e6e-7c05-544b-b16e-64fede858acb" From 482480624d815d47ef965476f2c3fd24f5cb614e Mon Sep 17 00:00:00 2001 From: Penelope Yong Date: Fri, 30 May 2025 11:29:06 +0100 Subject: [PATCH 11/12] min -> 1.10.1 --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 4b2926158..3b58c8145 100644 --- a/Project.toml +++ b/Project.toml @@ -83,7 +83,7 @@ Statistics = "1.6" StatsAPI = "1.6" StatsBase = "0.32, 0.33, 0.34" StatsFuns = "0.8, 0.9, 1" -julia = "1.10.2" +julia = "1.10.1" [extras] DynamicHMC = "bbc10e6e-7c05-544b-b16e-64fede858acb" From 3f9c30ec158e414c46f740560367e204332307ba Mon Sep 17 00:00:00 2001 From: Penelope Yong Date: Fri, 30 May 2025 12:03:41 +0100 Subject: [PATCH 12/12] Revert "min -> 1.10.1" This reverts commit 482480624d815d47ef965476f2c3fd24f5cb614e. --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 3b58c8145..4b2926158 100644 --- a/Project.toml +++ b/Project.toml @@ -83,7 +83,7 @@ Statistics = "1.6" StatsAPI = "1.6" StatsBase = "0.32, 0.33, 0.34" StatsFuns = "0.8, 0.9, 1" -julia = "1.10.1" +julia = "1.10.2" [extras] DynamicHMC = "bbc10e6e-7c05-544b-b16e-64fede858acb"