From d3ec6d99566ab55cd814d7598afacaf4b6726e7d Mon Sep 17 00:00:00 2001 From: hardikxk Date: Sun, 19 Jul 2026 16:28:08 +0530 Subject: [PATCH 1/7] Replace Turing.PROGRESS with AbstractMCMC.PROGRESS Updated the sampler and variational defaults, tests, api doc, and added a history entry. --- HISTORY.md | 2 ++ docs/src/api.md | 6 ------ src/Turing.jl | 17 ----------------- src/mcmc/Inference.jl | 2 +- src/mcmc/hmc.jl | 2 +- src/mcmc/particle_mcmc.jl | 2 +- src/mcmc/repeat_sampler.jl | 5 ++--- src/variational/Variational.jl | 10 ++++------ test/runtests.jl | 3 ++- test/variational/vi.jl | 22 +++++++++++----------- 10 files changed, 24 insertions(+), 47 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 580932cb71..cc05c3d448 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,7 @@ # 0.46.0 +- **Breaking**: Removed Turing's local `PROGRESS` and `setprogress!`; use `AbstractMCMC.PROGRESS` and `AbstractMCMC.setprogress!` instead. + ## Breaking changes ### DynamicPPL 0.42 diff --git a/docs/src/api.md b/docs/src/api.md index 1342014ae6..8ea7049e48 100644 --- a/docs/src/api.md +++ b/docs/src/api.md @@ -144,12 +144,6 @@ See the [AD guide](https://turinglang.org/docs/tutorials/docs-10-using-turing-au | `AutoMooncake` | [`ADTypes.AutoMooncake`](@extref) | Mooncake.jl backend | | `AutoReverseDiff` | [`ADTypes.AutoReverseDiff`](@extref) | ReverseDiff.jl backend | -### Debugging - -```@docs -setprogress! -``` - ### Distributions These distributions are defined in Turing.jl, but not in Distributions.jl. diff --git a/src/Turing.jl b/src/Turing.jl index 45c6459e7f..ec4411fbb4 100644 --- a/src/Turing.jl +++ b/src/Turing.jl @@ -24,21 +24,6 @@ using ADTypes: ADTypes, AutoForwardDiff, AutoReverseDiff, AutoMooncake, AutoEnzy const DEFAULT_ADTYPE = ADTypes.AutoForwardDiff() -const PROGRESS = Ref(true) - -# TODO: remove `PROGRESS` and this function in favour of `AbstractMCMC.PROGRESS` -""" - setprogress!(progress::Bool) - -Enable progress logging in Turing if `progress` is `true`, and disable it otherwise. -""" -function setprogress!(progress::Bool) - @info "[Turing]: progress logging is $(progress ? "enabled" : "disabled") globally" - PROGRESS[] = progress - AbstractMCMC.setprogress!(progress; silent=true) - return progress -end - # Random probability measures. include("stdlib/distributions.jl") include("stdlib/RandomMeasures.jl") @@ -141,8 +126,6 @@ export AutoReverseDiff, AutoMooncake, AutoEnzyme, - # Debugging - Turing - setprogress!, # Distributions Flat, FlatPos, diff --git a/src/mcmc/Inference.jl b/src/mcmc/Inference.jl index b9aa08e8f6..bf5f3fafb1 100644 --- a/src/mcmc/Inference.jl +++ b/src/mcmc/Inference.jl @@ -18,7 +18,7 @@ using DynamicPPL: using Distributions, Libtask, Bijectors using FlexiChains: FlexiChains, VNChain using LinearAlgebra -using ..Turing: PROGRESS, Turing +using ..Turing: Turing using StatsFuns: logsumexp using Random: AbstractRNG using AbstractMCMC: AbstractModel, AbstractSampler diff --git a/src/mcmc/hmc.jl b/src/mcmc/hmc.jl index 3e7a28945c..a990cadf89 100644 --- a/src/mcmc/hmc.jl +++ b/src/mcmc/hmc.jl @@ -91,7 +91,7 @@ function AbstractMCMC.sample( chain_type=DEFAULT_CHAIN_TYPE, initial_params=Turing.Inference.init_strategy(sampler), initial_state=nothing, - progress=PROGRESS[], + progress=AbstractMCMC.PROGRESS[], nadapts=sampler.n_adapts, discard_adapt=true, discard_initial=-1, diff --git a/src/mcmc/particle_mcmc.jl b/src/mcmc/particle_mcmc.jl index 2bef555edc..348d1905f6 100644 --- a/src/mcmc/particle_mcmc.jl +++ b/src/mcmc/particle_mcmc.jl @@ -134,7 +134,7 @@ function AbstractMCMC.sample( check_model=true, chain_type=DEFAULT_CHAIN_TYPE, initial_params=Turing.Inference.init_strategy(sampler), - progress=PROGRESS[], + progress=AbstractMCMC.PROGRESS[], discard_initial=0, thinning=1, verbose=false, diff --git a/src/mcmc/repeat_sampler.jl b/src/mcmc/repeat_sampler.jl index 6f97321da7..db23efaa73 100644 --- a/src/mcmc/repeat_sampler.jl +++ b/src/mcmc/repeat_sampler.jl @@ -116,8 +116,7 @@ function AbstractMCMC.sample( check_model=true, initial_params=Turing.Inference.init_strategy(sampler), chain_type=DEFAULT_CHAIN_TYPE, - progress=PROGRESS[], - verbose=true, + progress=AbstractMCMC.PROGRESS[], kwargs..., ) check_model && Turing._check_model(model, sampler) @@ -146,7 +145,7 @@ function AbstractMCMC.sample( check_model=true, initial_params=fill(Turing.Inference.init_strategy(sampler), n_chains), chain_type=DEFAULT_CHAIN_TYPE, - progress=PROGRESS[], + progress=AbstractMCMC.PROGRESS[], kwargs..., ) check_model && Turing._check_model(model, sampler) diff --git a/src/variational/Variational.jl b/src/variational/Variational.jl index 0ab9560231..eebae72d55 100644 --- a/src/variational/Variational.jl +++ b/src/variational/Variational.jl @@ -18,7 +18,8 @@ using DynamicPPL: DynamicPPL, LogDensityFunction using LinearAlgebra using LogDensityProblems: LogDensityProblems using Random -using ..Turing: DEFAULT_ADTYPE, PROGRESS +using ..Turing: DEFAULT_ADTYPE +import AbstractMCMC export vi, q_locationscale, @@ -345,9 +346,7 @@ Base.rand(res::VIResult, sz::Integer...) = Base.rand(Random.default_rng(), res, algorithm::AdvancedVI.AbstractVariationalAlgorithm = KLMinRepGradProxDescent( adtype; n_samples=10 ), - unconstrained::Bool=requires_unconstrained_space(algorithm), - fix_transforms::Bool=false, - show_progress::Bool = Turing.PROGRESS[], + show_progress::Bool = AbstractMCMC.PROGRESS[], kwargs... ) @@ -390,8 +389,7 @@ function vi( adtype; n_samples=10 ), unconstrained::Bool=requires_unconstrained_space(algorithm), - fix_transforms::Bool=false, - show_progress::Bool=PROGRESS[], + show_progress::Bool=AbstractMCMC.PROGRESS[], kwargs..., ) transform_strategy = unconstrained ? DynamicPPL.LinkAll() : DynamicPPL.UnlinkAll() diff --git a/test/runtests.jl b/test/runtests.jl index c4faea5a37..bc53b1e324 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -4,6 +4,7 @@ using Pkg using Random: seed! using Test using TimerOutputs: TimerOutputs, @timeit +import AbstractMCMC import Turing # Fix the global Random.seed for reproducibility. @@ -13,7 +14,7 @@ include("test_utils/models.jl") include("test_utils/numerical_tests.jl") include("test_utils/sampler.jl") -Turing.setprogress!(false) +AbstractMCMC.setprogress!(false) included_paths, excluded_paths = parse_args(ARGS) # Filter which tests to run and collect timing and allocations information to show in a diff --git a/test/variational/vi.jl b/test/variational/vi.jl index a8bdcc079b..f55d4e055f 100644 --- a/test/variational/vi.jl +++ b/test/variational/vi.jl @@ -3,7 +3,7 @@ module AdvancedVITests using ..Models: gdemo_default using ..NumericalTests: check_gdemo -using AbstractMCMC: AbstractMCMC +import AbstractMCMC using AdvancedVI using Bijectors: Bijectors using Distributions: Dirichlet, Normal @@ -48,14 +48,14 @@ using Turing.Variational end @testset "default interface" begin - for q0 in [q_meanfield_gaussian, q_fullrank_gaussian] - result = vi(gdemo_default, q0, 100; show_progress=Turing.PROGRESS[], adtype) - @test result isa Turing.Variational.VIResult - @test rand(result) isa DynamicPPL.VarNamedTuple - @test rand(result, 2) isa Vector{<:DynamicPPL.VarNamedTuple} - @test size(rand(result, 2)) == (2,) - @test rand(result, 5, 2) isa Matrix{<:DynamicPPL.VarNamedTuple} - @test size(rand(result, 5, 2)) == (5, 2) + for q0 in [q_meanfield_gaussian(gdemo_default), q_fullrank_gaussian(gdemo_default)] + q, _, _ = vi( + gdemo_default, q0, 100; show_progress=AbstractMCMC.PROGRESS[], adtype + ) + c1 = rand(q, 10) + end + @test_throws "unconstrained" begin + q, _, _ = vi(gdemo_default, Normal(), 1; adtype) end end @@ -76,7 +76,7 @@ using Turing.Variational q_fullrank_gaussian, T; algorithm, - show_progress=Turing.PROGRESS[], + show_progress=AbstractMCMC.PROGRESS[], ) c2 = rand(result, 10) @test c2 isa Vector{<:DynamicPPL.VarNamedTuple} @@ -105,7 +105,7 @@ using Turing.Variational q_fullrank_gaussian, T; algorithm, - show_progress=Turing.PROGRESS[], + show_progress=AbstractMCMC.PROGRESS[], ) N = 1000 From 0a6b67d8724dc34b83895a7bbb8f314ea18c06e5 Mon Sep 17 00:00:00 2001 From: hardikxk Date: Sun, 19 Jul 2026 16:31:05 +0530 Subject: [PATCH 2/7] refactor history entry --- HISTORY.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index cc05c3d448..dd8d127eb3 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,9 +1,9 @@ # 0.46.0 -- **Breaking**: Removed Turing's local `PROGRESS` and `setprogress!`; use `AbstractMCMC.PROGRESS` and `AbstractMCMC.setprogress!` instead. - ## Breaking changes +- Removed Turing's local `PROGRESS` and `setprogress!`; use `AbstractMCMC.PROGRESS` and `AbstractMCMC.setprogress!` instead. + ### DynamicPPL 0.42 Turing.jl v0.46 brings with it all the underlying changes in DynamicPPL 0.42. From 79c550bc38937b113e44a2c25bab7e09a16b3f9e Mon Sep 17 00:00:00 2001 From: hardikxk Date: Sun, 19 Jul 2026 16:40:35 +0530 Subject: [PATCH 3/7] fix formatting --- HISTORY.md | 2 +- src/variational/Variational.jl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index dd8d127eb3..32bccac84b 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -2,7 +2,7 @@ ## Breaking changes -- Removed Turing's local `PROGRESS` and `setprogress!`; use `AbstractMCMC.PROGRESS` and `AbstractMCMC.setprogress!` instead. + - Removed Turing's local `PROGRESS` and `setprogress!`; use `AbstractMCMC.PROGRESS` and `AbstractMCMC.setprogress!` instead. ### DynamicPPL 0.42 diff --git a/src/variational/Variational.jl b/src/variational/Variational.jl index eebae72d55..0e3deab3b2 100644 --- a/src/variational/Variational.jl +++ b/src/variational/Variational.jl @@ -95,7 +95,7 @@ function q_initialize_scale( energy = mean( map(1:num_samples) do _ z = rand(rng, q) - LogDensityProblems.logdensity(ldf, z) + return LogDensityProblems.logdensity(ldf, z) end, ) From f8bfc90df25e6969650d7e7f21a329fa4339bbc6 Mon Sep 17 00:00:00 2001 From: hardikxk Date: Sun, 19 Jul 2026 17:24:02 +0530 Subject: [PATCH 4/7] fix formatting and test updation --- HISTORY.md | 2 +- src/mcmc/repeat_sampler.jl | 1 + src/variational/Variational.jl | 3 +++ test/mcmc/chains.jl | 2 +- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 32bccac84b..6bb1d56494 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -2,7 +2,7 @@ ## Breaking changes - - Removed Turing's local `PROGRESS` and `setprogress!`; use `AbstractMCMC.PROGRESS` and `AbstractMCMC.setprogress!` instead. + - Removed Turing's local `PROGRESS` and `setprogress!`; use `AbstractMCMC.PROGRESS` and `AbstractMCMC.setprogress!` instead. ### DynamicPPL 0.42 diff --git a/src/mcmc/repeat_sampler.jl b/src/mcmc/repeat_sampler.jl index db23efaa73..3b63c8c1b4 100644 --- a/src/mcmc/repeat_sampler.jl +++ b/src/mcmc/repeat_sampler.jl @@ -117,6 +117,7 @@ function AbstractMCMC.sample( initial_params=Turing.Inference.init_strategy(sampler), chain_type=DEFAULT_CHAIN_TYPE, progress=AbstractMCMC.PROGRESS[], + verbose=true, kwargs..., ) check_model && Turing._check_model(model, sampler) diff --git a/src/variational/Variational.jl b/src/variational/Variational.jl index 0e3deab3b2..ef6c4e3877 100644 --- a/src/variational/Variational.jl +++ b/src/variational/Variational.jl @@ -346,6 +346,8 @@ Base.rand(res::VIResult, sz::Integer...) = Base.rand(Random.default_rng(), res, algorithm::AdvancedVI.AbstractVariationalAlgorithm = KLMinRepGradProxDescent( adtype; n_samples=10 ), + unconstrained::Bool=requires_unconstrained_space(algorithm), + fix_transforms::Bool=false, show_progress::Bool = AbstractMCMC.PROGRESS[], kwargs... ) @@ -389,6 +391,7 @@ function vi( adtype; n_samples=10 ), unconstrained::Bool=requires_unconstrained_space(algorithm), + fix_transforms::Bool=false, show_progress::Bool=AbstractMCMC.PROGRESS[], kwargs..., ) diff --git a/test/mcmc/chains.jl b/test/mcmc/chains.jl index 7189448d4e..3922395c9c 100644 --- a/test/mcmc/chains.jl +++ b/test/mcmc/chains.jl @@ -9,7 +9,7 @@ using Random: Random, Xoshiro using Test using Turing -Turing.setprogress!(false) +AbstractMCMC.setprogress!(false) # This sampler does nothing (it just stays at the existing state) struct StaticSampler <: AbstractMCMC.AbstractSampler end From 9f7efa33ef744478ba3a8608ce4dc957c4432ba9 Mon Sep 17 00:00:00 2001 From: hardikxk Date: Sun, 19 Jul 2026 19:11:00 +0530 Subject: [PATCH 5/7] refactor tests --- test/variational/vi.jl | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/test/variational/vi.jl b/test/variational/vi.jl index f55d4e055f..90ff1c8da6 100644 --- a/test/variational/vi.jl +++ b/test/variational/vi.jl @@ -48,14 +48,14 @@ using Turing.Variational end @testset "default interface" begin - for q0 in [q_meanfield_gaussian(gdemo_default), q_fullrank_gaussian(gdemo_default)] - q, _, _ = vi( - gdemo_default, q0, 100; show_progress=AbstractMCMC.PROGRESS[], adtype - ) - c1 = rand(q, 10) - end - @test_throws "unconstrained" begin - q, _, _ = vi(gdemo_default, Normal(), 1; adtype) + for q0 in [q_meanfield_gaussian, q_fullrank_gaussian] + result = vi(gdemo_default, q0, 100; show_progress=AbstractMCMC.PROGRESS[], adtype) + @test result isa Turing.Variational.VIResult + @test rand(result) isa DynamicPPL.VarNamedTuple + @test rand(result, 2) isa Vector{<:DynamicPPL.VarNamedTuple} + @test size(rand(result, 2)) == (2,) + @test rand(result, 5, 2) isa Matrix{<:DynamicPPL.VarNamedTuple} + @test size(rand(result, 5, 2)) == (5, 2) end end From d04c65e708aedeeac7a3ded5498378ec073d7743 Mon Sep 17 00:00:00 2001 From: hardikxk Date: Sun, 19 Jul 2026 19:12:45 +0530 Subject: [PATCH 6/7] yafc --- test/variational/vi.jl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/variational/vi.jl b/test/variational/vi.jl index 90ff1c8da6..e685181630 100644 --- a/test/variational/vi.jl +++ b/test/variational/vi.jl @@ -49,7 +49,9 @@ using Turing.Variational @testset "default interface" begin for q0 in [q_meanfield_gaussian, q_fullrank_gaussian] - result = vi(gdemo_default, q0, 100; show_progress=AbstractMCMC.PROGRESS[], adtype) + result = vi( + gdemo_default, q0, 100; show_progress=AbstractMCMC.PROGRESS[], adtype + ) @test result isa Turing.Variational.VIResult @test rand(result) isa DynamicPPL.VarNamedTuple @test rand(result, 2) isa Vector{<:DynamicPPL.VarNamedTuple} From 11ef549e61a462d040c71f3d8d71e546d7c9d59a Mon Sep 17 00:00:00 2001 From: hardikxk Date: Tue, 21 Jul 2026 20:41:12 +0530 Subject: [PATCH 7/7] ver bump --- HISTORY.md | 6 ++++-- test/runtests.jl | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 6bb1d56494..aa4dbc662f 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,9 +1,11 @@ +# 0.47.0 + + - Removed Turing's local `PROGRESS` and `setprogress!`; use `AbstractMCMC.PROGRESS` and `AbstractMCMC.setprogress!` instead. + # 0.46.0 ## Breaking changes - - Removed Turing's local `PROGRESS` and `setprogress!`; use `AbstractMCMC.PROGRESS` and `AbstractMCMC.setprogress!` instead. - ### DynamicPPL 0.42 Turing.jl v0.46 brings with it all the underlying changes in DynamicPPL 0.42. diff --git a/test/runtests.jl b/test/runtests.jl index bc53b1e324..e5e889808d 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -4,7 +4,7 @@ using Pkg using Random: seed! using Test using TimerOutputs: TimerOutputs, @timeit -import AbstractMCMC +using AbstractMCMC: AbstractMCMC import Turing # Fix the global Random.seed for reproducibility.