diff --git a/Manifest.toml b/Manifest.toml index 7649ea370..722bbca36 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -2,12 +2,12 @@ julia_version = "1.11.5" manifest_format = "2.0" -project_hash = "5ea45087374f193fc9b541533d3ffc8025f44bcd" +project_hash = "296b7e06e398e8898b40f44ed92b4d60c484484c" [[deps.ADTypes]] -git-tree-sha1 = "e2478490447631aedba0823d4d7a80b2cc8cdb32" +git-tree-sha1 = "be7ae030256b8ef14a441726c4c37766b90b93a3" uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b" -version = "1.14.0" +version = "1.15.0" weakdeps = ["ChainRulesCore", "ConstructionBase", "EnzymeCore"] [deps.ADTypes.extensions] @@ -34,9 +34,9 @@ version = "0.5.24" [[deps.AbstractMCMC]] deps = ["BangBang", "ConsoleProgressMonitor", "Distributed", "FillArrays", "LogDensityProblems", "Logging", "LoggingExtras", "ProgressLogging", "Random", "StatsBase", "TerminalLoggers", "Transducers"] -git-tree-sha1 = "0af45ec8d6c2f6bf98480d8534ea8a239cc390b4" +git-tree-sha1 = "fdf711adc3fab05756e391ff92c38645b8e6847a" uuid = "80f14c24-f653-4e6a-9b94-39d6b0f70001" -version = "5.6.2" +version = "5.6.3" [[deps.AbstractPPL]] deps = ["AbstractMCMC", "Accessors", "DensityInterface", "JSON", "Random", "StatsBase"] @@ -438,15 +438,15 @@ version = "0.10.8" [[deps.ChainRules]] deps = ["Adapt", "ChainRulesCore", "Compat", "Distributed", "GPUArraysCore", "IrrationalConstants", "LinearAlgebra", "Random", "RealDot", "SparseArrays", "SparseInverseSubset", "Statistics", "StructArrays", "SuiteSparse"] -git-tree-sha1 = "204e9b212da5cc7df632b58af8d49763383f47fa" +git-tree-sha1 = "224f9dc510986549c8139def08e06f78c562514d" uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2" -version = "1.72.4" +version = "1.72.5" [[deps.ChainRulesCore]] deps = ["Compat", "LinearAlgebra"] -git-tree-sha1 = "1713c74e00545bfe14605d2a2be1712de8fbcb58" +git-tree-sha1 = "06ee8d1aa558d2833aa799f6f0b31b30cada405f" uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.25.1" +version = "1.25.2" weakdeps = ["SparseArrays"] [deps.ChainRulesCore.extensions] @@ -561,9 +561,9 @@ version = "1.1.1+0" [[deps.ComponentArrays]] deps = ["Adapt", "ArrayInterface", "ChainRulesCore", "ConstructionBase", "Functors", "LinearAlgebra", "StaticArrayInterface", "StaticArraysCore"] -git-tree-sha1 = "1ad20b11ee13c672a502bd1dbb5c10a52ab92492" +git-tree-sha1 = "03aaee628bc8bb682570d70b16d8102b8220ff5a" uuid = "b0b7db55-cfe3-40fc-9ded-d10e2dbeff66" -version = "0.15.27" +version = "0.15.28" [deps.ComponentArrays.extensions] ComponentArraysGPUArraysExt = "GPUArrays" @@ -744,9 +744,9 @@ version = "6.176.0" [[deps.DiffEqCallbacks]] deps = ["ConcreteStructs", "DataStructures", "DiffEqBase", "DifferentiationInterface", "Functors", "LinearAlgebra", "Markdown", "RecipesBase", "RecursiveArrayTools", "SciMLBase", "StaticArraysCore"] -git-tree-sha1 = "76292e889472e810d40a844b714743c0ffb1c53b" +git-tree-sha1 = "80a782f3e65d4900dcf5f2cb71f5e19d9459c04a" uuid = "459566f4-90b8-5000-8ac3-15dfb0a30def" -version = "4.6.0" +version = "4.8.0" [[deps.DiffEqNoiseProcess]] deps = ["DiffEqBase", "Distributions", "GPUArraysCore", "LinearAlgebra", "Markdown", "Optim", "PoissonRandom", "QuadGK", "Random", "Random123", "RandomNumbers", "RecipesBase", "RecursiveArrayTools", "ResettableStacks", "SciMLBase", "StaticArraysCore", "Statistics"] @@ -778,9 +778,9 @@ version = "7.16.1" [[deps.DifferentiationInterface]] deps = ["ADTypes", "LinearAlgebra"] -git-tree-sha1 = "c8d85ecfcbaef899308706bebdd8b00107f3fb43" +git-tree-sha1 = "210933c93f39f832d92f9efbbe69a49c453db36d" uuid = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" -version = "0.6.54" +version = "0.7.1" [deps.DifferentiationInterface.extensions] DifferentiationInterfaceChainRulesCoreExt = "ChainRulesCore" @@ -828,14 +828,15 @@ version = "0.6.54" [[deps.DispatchDoctor]] deps = ["MacroTools", "Preferences"] -git-tree-sha1 = "f311fe66bfe4e38b2f1c8d1081f06920092b57aa" +git-tree-sha1 = "f8768e80847f15f91b01a84df19ea0cf3661e51e" uuid = "8d63f2c5-f18a-4cf2-ba9d-b3f60fc568c8" -version = "0.4.19" -weakdeps = ["ChainRulesCore", "EnzymeCore"] +version = "0.4.20" +weakdeps = ["ChainRulesCore", "EnzymeCore", "Mooncake"] [deps.DispatchDoctor.extensions] DispatchDoctorChainRulesCoreExt = "ChainRulesCore" DispatchDoctorEnzymeCoreExt = "EnzymeCore" + DispatchDoctorMooncakeExt = "Mooncake" [[deps.Distances]] deps = ["LinearAlgebra", "Statistics", "StatsAPI"] @@ -896,9 +897,9 @@ version = "3.5.1" [[deps.DynamicPPL]] deps = ["ADTypes", "AbstractMCMC", "AbstractPPL", "Accessors", "BangBang", "Bijectors", "Chairmarks", "Compat", "ConstructionBase", "DifferentiationInterface", "Distributions", "DocStringExtensions", "InteractiveUtils", "LinearAlgebra", "LogDensityProblems", "MacroTools", "OrderedCollections", "Random", "Requires", "Statistics", "Test"] -git-tree-sha1 = "b694a7408cc1083af9f338d83d4a7e11395d6a10" +git-tree-sha1 = "3738067172de6585ebed513da5623ad5b5301e66" uuid = "366bfd00-2699-11ea-058f-f148b4cae6d8" -version = "0.36.10" +version = "0.36.12" [deps.DynamicPPL.extensions] DynamicPPLChainRulesCoreExt = ["ChainRulesCore"] @@ -930,9 +931,9 @@ version = "1.0.5" [[deps.Enzyme]] deps = ["CEnum", "EnzymeCore", "Enzyme_jll", "GPUCompiler", "InteractiveUtils", "LLVM", "Libdl", "LinearAlgebra", "ObjectFile", "PrecompileTools", "Preferences", "Printf", "Random", "SparseArrays"] -git-tree-sha1 = "ef9aa10938d97cd42c524482eda5c523ec4bf0d5" +git-tree-sha1 = "de7f70d73805f4e1a32395afc9d580e4ffc62924" uuid = "7da242da-08ed-463a-9acd-ee780be4f1d9" -version = "0.13.49" +version = "0.13.51" [deps.Enzyme.extensions] EnzymeBFloat16sExt = "BFloat16s" @@ -951,9 +952,9 @@ version = "0.13.49" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" [[deps.EnzymeCore]] -git-tree-sha1 = "7d7822a643c33bbff4eab9c87ca8459d7c688db0" +git-tree-sha1 = "8272a687bca7b5c601c0c24fc0c71bff10aafdfd" uuid = "f151be2c-9106-41f4-ab19-57ee4f262869" -version = "0.8.11" +version = "0.8.12" weakdeps = ["Adapt"] [deps.EnzymeCore.extensions] @@ -961,9 +962,9 @@ weakdeps = ["Adapt"] [[deps.Enzyme_jll]] deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "168b7e5924b1fdb14bb246e7263438bb26d040c5" +git-tree-sha1 = "97e0a9a3fa1c51ebd94dd076dd847c037b79fd79" uuid = "7cc45869-7501-5eee-bdea-0790c847d4ef" -version = "0.0.181+0" +version = "0.0.183+0" [[deps.EpollShim_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -1063,15 +1064,16 @@ uuid = "442a2c76-b920-505d-bb47-c5924d526838" version = "1.0.2" [[deps.FastPower]] -git-tree-sha1 = "df32f07f373f06260cd6af5371385b5ef85dd762" +git-tree-sha1 = "5f7afd4b1a3969dc34d692da2ed856047325b06e" uuid = "a4df4552-cc26-4903-aec0-212e50a0e84b" -version = "1.1.2" +version = "1.1.3" [deps.FastPower.extensions] FastPowerEnzymeExt = "Enzyme" FastPowerForwardDiffExt = "ForwardDiff" FastPowerMeasurementsExt = "Measurements" FastPowerMonteCarloMeasurementsExt = "MonteCarloMeasurements" + FastPowerMooncakeExt = "Mooncake" FastPowerReverseDiffExt = "ReverseDiff" FastPowerTrackerExt = "Tracker" @@ -1080,6 +1082,7 @@ version = "1.1.2" ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" + Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" @@ -1239,12 +1242,6 @@ git-tree-sha1 = "273bd1cd30768a2fddfa3fd63bbc746ed7249e5f" uuid = "38e38edf-8417-5370-95a0-9cbb8c7f171a" version = "1.9.0" -[[deps.GPUArrays]] -deps = ["Adapt", "GPUArraysCore", "KernelAbstractions", "LLVM", "LinearAlgebra", "Printf", "Random", "Reexport", "ScopedValues", "Serialization", "Statistics"] -git-tree-sha1 = "eea7b3a1964b4de269bb380462a9da604be7fcdb" -uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" -version = "11.2.2" - [[deps.GPUArraysCore]] deps = ["Adapt"] git-tree-sha1 = "83cf05ab16a73219e5f6bd1bdfa9848fa24ac627" @@ -1253,21 +1250,21 @@ version = "0.2.0" [[deps.GPUCompiler]] deps = ["ExprTools", "InteractiveUtils", "LLVM", "Libdl", "Logging", "PrecompileTools", "Preferences", "Scratch", "Serialization", "TOML", "Tracy", "UUIDs"] -git-tree-sha1 = "38e96dd44b8b1db92c81c6eb11ac39d207aa83d5" +git-tree-sha1 = "bbb7004345fb6141989835fc9f2f9e93bba3c806" uuid = "61eb1bfa-7361-4325-ad38-22787b887f55" -version = "1.5.2" +version = "1.5.3" [[deps.GR]] deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Preferences", "Printf", "Qt6Wayland_jll", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "p7zip_jll"] -git-tree-sha1 = "4424dca1462cc3f19a0e6f07b809ad948ac1d62b" +git-tree-sha1 = "1828eb7275491981fa5f1752a5e126e8f26f8741" uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" -version = "0.73.16" +version = "0.73.17" [[deps.GR_jll]] deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "FreeType2_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt6Base_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "d7ecfaca1ad1886de4f9053b5b8aef34f36ede7f" +git-tree-sha1 = "27299071cc29e409488ada41ec7643e0ab19091f" uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" -version = "0.73.16+0" +version = "0.73.17+0" [[deps.GenericSchur]] deps = ["LinearAlgebra", "Printf"] @@ -1275,17 +1272,17 @@ git-tree-sha1 = "f88e0ba1f6b42121a7c1dfe93a9687d8e164c91b" uuid = "c145ed77-6b09-5dd9-b285-bf645a82121e" version = "0.5.5" -[[deps.Gettext_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" -uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" -version = "0.21.0+0" +[[deps.GettextRuntime_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll"] +git-tree-sha1 = "45288942190db7c5f760f59c04495064eedf9340" +uuid = "b0724c58-0f36-5564-988d-3bb0596ebc4a" +version = "0.22.4+0" [[deps.Glib_jll]] -deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] -git-tree-sha1 = "fee60557e4f19d0fe5cd169211fdda80e494f4e8" +deps = ["Artifacts", "GettextRuntime_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] +git-tree-sha1 = "35fbd0cefb04a516104b8e183ce0df11b70a3f1a" uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.84.0+0" +version = "2.84.3+0" [[deps.Graphite2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -1324,9 +1321,9 @@ version = "1.14.6+0" [[deps.HTTP]] deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "PrecompileTools", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "f93655dc73d7a0b4a368e3c0bce296ae035ad76e" +git-tree-sha1 = "ed5e9c58612c4e081aecdb6e1a479e18462e041e" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.16" +version = "1.10.17" [[deps.HarfBuzz_jll]] deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll"] @@ -1363,9 +1360,9 @@ version = "0.3.28" [[deps.IRTools]] deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "950c3717af761bc3ff906c2e8e52bd83390b6ec2" +git-tree-sha1 = "57e9ce6cf68d0abf5cb6b3b4abf9bedf05c939c0" uuid = "7869d1d1-7146-5819-86e3-90919afe41df" -version = "0.4.14" +version = "0.4.15" [[deps.IfElse]] git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" @@ -1383,9 +1380,9 @@ uuid = "22cec73e-a1b8-11e9-2c92-598750a2cf9c" version = "0.3.1" [[deps.InlineStrings]] -git-tree-sha1 = "6a9fde685a7ac1eb3495f8e812c5a7c3711c2d5e" +git-tree-sha1 = "8594fac023c5ce1ef78260f24d1ad18b4327b420" uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" -version = "1.4.3" +version = "1.4.4" [deps.InlineStrings.extensions] ArrowTypesExt = "ArrowTypes" @@ -1494,10 +1491,10 @@ uuid = "b14d175d-62b4-44ba-8fb7-3064adc8c3ec" version = "0.2.4" [[deps.JumpProcesses]] -deps = ["ArrayInterface", "DataStructures", "DiffEqBase", "DiffEqCallbacks", "DocStringExtensions", "FunctionWrappers", "Graphs", "LinearAlgebra", "Markdown", "PoissonRandom", "Random", "RandomNumbers", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "StaticArrays", "SymbolicIndexingInterface", "UnPack"] -git-tree-sha1 = "fb7fd516de38db80f50fe15e57d44da2836365e7" +deps = ["ArrayInterface", "DataStructures", "DiffEqBase", "DiffEqCallbacks", "DocStringExtensions", "FunctionWrappers", "Graphs", "LinearAlgebra", "Markdown", "PoissonRandom", "Random", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "StaticArrays", "SymbolicIndexingInterface", "UnPack"] +git-tree-sha1 = "f8da88993c914357031daf0023f18748ff473924" uuid = "ccbc3e58-028d-4f4c-8cd5-9ae44345cda5" -version = "9.16.0" +version = "9.16.1" weakdeps = ["FastBroadcast"] [[deps.KernelAbstractions]] @@ -1550,9 +1547,9 @@ version = "4.0.1+0" [[deps.LLVM]] deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Preferences", "Printf", "Unicode"] -git-tree-sha1 = "5e8b243b2e4c86648dac82cf767ae1456000b92d" +git-tree-sha1 = "9c7c721cfd800d87d48c745d8bfb65144f0a91df" uuid = "929cbde3-209d-540e-8aea-75f648917ca0" -version = "9.4.0" +version = "9.4.2" [deps.LLVM.extensions] BFloat16sExt = "BFloat16s" @@ -1562,9 +1559,9 @@ version = "9.4.0" [[deps.LLVMExtra_jll]] deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "f8022e2c8b5eef5f30e7fb2fe52c97cc5674db23" +git-tree-sha1 = "2ea068aac1e7f0337d381b0eae3110581e3f3216" uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" -version = "0.0.36+0" +version = "0.0.37+2" [[deps.LLVMOpenMP_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -1769,9 +1766,9 @@ version = "1.11.0" [[deps.LinearSolve]] deps = ["ArrayInterface", "ChainRulesCore", "ConcreteStructs", "DocStringExtensions", "EnumX", "GPUArraysCore", "InteractiveUtils", "Krylov", "LazyArrays", "Libdl", "LinearAlgebra", "MKL_jll", "Markdown", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "StaticArraysCore", "UnPack"] -git-tree-sha1 = "c0d1a91a50af6778863d320761f807f641f74935" +git-tree-sha1 = "062c11f1d84ffc80d00fddaa515f7e37e8e9f9d5" uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" -version = "3.17.0" +version = "3.18.2" [deps.LinearSolve.extensions] LinearSolveBandedMatricesExt = "BandedMatrices" @@ -1781,6 +1778,7 @@ version = "3.17.0" LinearSolveEnzymeExt = "EnzymeCore" LinearSolveFastAlmostBandedMatricesExt = "FastAlmostBandedMatrices" LinearSolveFastLapackInterfaceExt = "FastLapackInterface" + LinearSolveForwardDiffExt = "ForwardDiff" LinearSolveHYPREExt = "HYPRE" LinearSolveIterativeSolversExt = "IterativeSolvers" LinearSolveKernelAbstractionsExt = "KernelAbstractions" @@ -1799,6 +1797,7 @@ version = "3.17.0" EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" FastAlmostBandedMatrices = "9d29842c-ecb8-4973-b1e9-a27b1157504e" FastLapackInterface = "29a986be-02c6-4525-aec4-84b980013641" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" HYPRE = "b5ffcf37-a2bd-41ab-a3da-4bd9bc8ad771" IterativeSolvers = "42fd0dbc-a981-5370-80f2-aaf504508153" KernelAbstractions = "63c18a36-062a-441e-b654-da1e3ab1ce7c" @@ -1817,9 +1816,9 @@ version = "2.1.2" [[deps.LogDensityProblemsAD]] deps = ["DocStringExtensions", "LogDensityProblems"] -git-tree-sha1 = "a10e798ac8c44fe1594ad7d6e02898e16e4eafa3" +git-tree-sha1 = "7b83f3ad0a8105f79a067cafbfd124827bb398d0" uuid = "996a588d-648d-4e1f-a8f0-a84b347e47b1" -version = "1.13.0" +version = "1.13.1" [deps.LogDensityProblemsAD.extensions] LogDensityProblemsADADTypesExt = "ADTypes" @@ -1867,9 +1866,9 @@ version = "1.1.0" [[deps.Lux]] deps = ["ADTypes", "Adapt", "ArgCheck", "ArrayInterface", "ChainRulesCore", "Compat", "ConcreteStructs", "DiffResults", "DispatchDoctor", "EnzymeCore", "FastClosures", "ForwardDiff", "Functors", "GPUArraysCore", "LinearAlgebra", "LuxCore", "LuxLib", "MLDataDevices", "MacroTools", "Markdown", "NNlib", "Optimisers", "Preferences", "Random", "Reexport", "SIMDTypes", "Setfield", "Static", "StaticArraysCore", "Statistics", "WeightInitializers"] -git-tree-sha1 = "4bf87816440bec8e64b610de8724c04a58e65928" +git-tree-sha1 = "9f081e4adc791fea3288e065b8266f60019aa3ad" uuid = "b2108857-7c20-44ae-9111-449ecde12c47" -version = "1.13.4" +version = "1.13.5" [deps.Lux.extensions] LuxComponentArraysExt = "ComponentArrays" @@ -2073,9 +2072,9 @@ version = "0.4.8" [[deps.MPICH_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "3aa3210044138a1749dbd350a9ba8680869eb503" +git-tree-sha1 = "d72d0ecc3f76998aac04e446547259b9ae4c265f" uuid = "7cb0a576-ebde-5e09-9194-50597f1243b4" -version = "4.3.0+1" +version = "4.3.1+0" [[deps.MPIPreferences]] deps = ["Libdl", "Preferences"] @@ -2085,9 +2084,9 @@ version = "0.1.11" [[deps.MPItrampoline_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "ff91ca13c7c472cef700f301c8d752bc2aaff1a8" +git-tree-sha1 = "e214f2a20bdd64c04cd3e4ff62d3c9be7e969a59" uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748" -version = "5.5.3+0" +version = "5.5.4+0" [[deps.MacroTools]] git-tree-sha1 = "1e0228a030642014fe5cfe68c2c0a818f9e3f522" @@ -2192,13 +2191,14 @@ version = "0.8.1" [[deps.Mooncake]] deps = ["ADTypes", "ChainRules", "ChainRulesCore", "DiffRules", "ExprTools", "FunctionWrappers", "GPUArraysCore", "Graphs", "InteractiveUtils", "LinearAlgebra", "MistyClosures", "Random", "Test"] -git-tree-sha1 = "e4811fc54aa752d4a9a5cc9bed5cd85b8ab75db0" +git-tree-sha1 = "877c9084a22143d03c2a4f99228f89cb5728ecb4" uuid = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" -version = "0.4.122" +version = "0.4.128" [deps.Mooncake.extensions] MooncakeAllocCheckExt = "AllocCheck" MooncakeCUDAExt = "CUDA" + MooncakeDynamicExpressionsExt = "DynamicExpressions" MooncakeFluxExt = "Flux" MooncakeJETExt = "JET" MooncakeLuxLibExt = "LuxLib" @@ -2209,6 +2209,7 @@ version = "0.4.122" [deps.Mooncake.weakdeps] AllocCheck = "9b6a8646-10ed-4001-bbdc-1d2f46dfbb1a" CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + DynamicExpressions = "a40a106e-89c9-4ca8-8020-a735e8728b6b" Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c" JET = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b" LuxLib = "82251201-b29d-42c6-8e01-566dec8acb11" @@ -2218,9 +2219,9 @@ version = "0.4.122" [[deps.Moshi]] deps = ["ExproniconLite", "Jieko"] -git-tree-sha1 = "453de0fc2be3d11b9b93ca4d0fddd91196dcf1ed" +git-tree-sha1 = "d5198869af7a8aec7354dc8559ae71aba77a625a" uuid = "2e0e35c7-a2e4-4343-998d-7ef72827ed2d" -version = "0.3.5" +version = "0.3.6" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" @@ -2442,9 +2443,9 @@ version = "0.8.5+0" [[deps.OpenMPI_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML", "Zlib_jll"] -git-tree-sha1 = "047b66eb62f3cae59ed260ebb9075a32a04350f1" +git-tree-sha1 = "ec764453819f802fc1e144bfe750c454181bd66d" uuid = "fe0851c0-eecd-5654-98d4-656369965a5c" -version = "5.0.7+2" +version = "5.0.8+0" [[deps.OpenSSL]] deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] @@ -2466,9 +2467,9 @@ version = "0.5.6+0" [[deps.Optim]] deps = ["Compat", "EnumX", "FillArrays", "ForwardDiff", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "PositiveFactorizations", "Printf", "SparseArrays", "StatsBase"] -git-tree-sha1 = "68115113ff5c7e7d4985e0295f65cc53128ed6bb" +git-tree-sha1 = "61942645c38dd2b5b78e2082c9b51ab315315d10" uuid = "429524aa-4258-5aef-a3af-852621145aeb" -version = "1.13.1" +version = "1.13.2" [deps.Optim.extensions] OptimMOIExt = "MathOptInterface" @@ -2494,15 +2495,15 @@ version = "0.4.6" [[deps.Optimization]] deps = ["ADTypes", "ArrayInterface", "ConsoleProgressMonitor", "DocStringExtensions", "LBFGSB", "LinearAlgebra", "Logging", "LoggingExtras", "OptimizationBase", "Printf", "ProgressLogging", "Reexport", "SciMLBase", "SparseArrays", "TerminalLoggers"] -git-tree-sha1 = "89002c7a2f776c47b693d95acbf8f5c098f4ff8a" +git-tree-sha1 = "c385fdca85f0d6f2f6ade194b4236eaad621e77d" uuid = "7f7a1694-90dd-40f0-9382-eb1efda571ba" -version = "4.3.0" +version = "4.4.0" [[deps.OptimizationBase]] deps = ["ADTypes", "ArrayInterface", "DifferentiationInterface", "DocStringExtensions", "FastClosures", "LinearAlgebra", "PDMats", "Reexport", "Requires", "SciMLBase", "SparseArrays", "SparseConnectivityTracer", "SparseMatrixColorings"] -git-tree-sha1 = "918d9bf579a355222e62ceac955b5382fea7bd61" +git-tree-sha1 = "d42ca664e1fd78cdbe4186d4773d4fa51e1a0e78" uuid = "bca83a33-5cc9-4baa-983d-23429ab6bcbb" -version = "2.7.0" +version = "2.8.0" [deps.OptimizationBase.extensions] OptimizationEnzymeExt = "Enzyme" @@ -2803,9 +2804,9 @@ version = "1.4.3" [[deps.Plots]] deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "TOML", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] -git-tree-sha1 = "809ba625a00c605f8d00cd2a9ae19ce34fc24d68" +git-tree-sha1 = "28ea788b78009c695eb0d637587c81d26bdf0e36" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.40.13" +version = "1.40.14" [deps.Plots.extensions] FileIOExt = "FileIO" @@ -2892,9 +2893,9 @@ version = "1.11.0" [[deps.ProgressLogging]] deps = ["Logging", "SHA", "UUIDs"] -git-tree-sha1 = "80d919dee55b9c50e8d9e2da5eeafff3fe58b539" +git-tree-sha1 = "d95ed0324b0799843ac6f7a6a85e65fe4e5173f0" uuid = "33c8b6b6-d38a-422a-b730-caa89a2f386c" -version = "0.1.4" +version = "0.1.5" [[deps.ProgressMeter]] deps = ["Distributed", "Printf"] @@ -2927,9 +2928,9 @@ version = "6.8.2+1" [[deps.Qt6Wayland_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll", "Qt6Declarative_jll"] -git-tree-sha1 = "2766344a35a1a5ec1147305c4b343055d7c22c90" +git-tree-sha1 = "e1d5e16d0f65762396f9ca4644a5f4ddab8d452b" uuid = "e99dba38-086e-5de3-a5b1-6e4c66e897c3" -version = "6.8.2+0" +version = "6.8.2+1" [[deps.QuadGK]] deps = ["DataStructures", "LinearAlgebra"] @@ -3079,9 +3080,9 @@ version = "0.5.1+0" [[deps.Roots]] deps = ["Accessors", "CommonSolve", "Printf"] -git-tree-sha1 = "3ac13765751ffc81e3531223782d9512f6023f71" +git-tree-sha1 = "668e411c0616a70860249b4c96e5d35296631a1d" uuid = "f2b01f46-fcfa-551c-844a-d8ac1e96c665" -version = "2.2.7" +version = "2.2.8" [deps.Roots.extensions] RootsChainRulesCoreExt = "ChainRulesCore" @@ -3120,9 +3121,9 @@ version = "0.5.0" [[deps.SciMLBase]] deps = ["ADTypes", "Accessors", "Adapt", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "Moshi", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface"] -git-tree-sha1 = "04bbcdc8d1f7d6f667f75fbcc68728231e21fabe" +git-tree-sha1 = "31587e20cdea9fba3a689033313e658dfc9aae78" uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "2.101.0" +version = "2.102.1" [deps.SciMLBase.extensions] SciMLBaseChainRulesCoreExt = "ChainRulesCore" @@ -3164,9 +3165,9 @@ weakdeps = ["SparseArrays", "StaticArraysCore"] [[deps.SciMLSensitivity]] deps = ["ADTypes", "Accessors", "Adapt", "ArrayInterface", "ChainRulesCore", "DiffEqBase", "DiffEqCallbacks", "DiffEqNoiseProcess", "Distributions", "Enzyme", "FastBroadcast", "FiniteDiff", "ForwardDiff", "FunctionProperties", "FunctionWrappersWrappers", "Functors", "GPUArraysCore", "LinearAlgebra", "LinearSolve", "Markdown", "OrdinaryDiffEqCore", "PreallocationTools", "QuadGK", "Random", "RandomNumbers", "RecursiveArrayTools", "Reexport", "ReverseDiff", "SciMLBase", "SciMLJacobianOperators", "SciMLStructures", "StaticArrays", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tracker", "Zygote"] -git-tree-sha1 = "22402dfac0823491e0d3ae3b916940e6761f6e86" +git-tree-sha1 = "3228b1943c449d0f21b3dcd8741deff054b9ace7" uuid = "1ed8b502-d754-442c-8d5d-10ac956f44a1" -version = "7.84.0" +version = "7.86.1" weakdeps = ["Mooncake"] [deps.SciMLSensitivity.extensions] @@ -3191,9 +3192,9 @@ version = "1.3.0" [[deps.Scratch]] deps = ["Dates"] -git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" +git-tree-sha1 = "9b81b8393e50b7d4e6d0a9f14e192294d3b7c109" uuid = "6c6a2e73-6563-6170-7368-637461726353" -version = "1.2.1" +version = "1.3.0" [[deps.SentinelArrays]] deps = ["Dates", "Random"] @@ -3278,9 +3279,9 @@ version = "1.11.0" [[deps.SparseConnectivityTracer]] deps = ["ADTypes", "DocStringExtensions", "FillArrays", "LinearAlgebra", "Random", "SparseArrays"] -git-tree-sha1 = "affde0bfd920cfcaa0944d3c0eb3a573fa9c4d1e" +git-tree-sha1 = "182990067a09adf950274f97f38f68c76f81d2d0" uuid = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" -version = "0.6.20" +version = "0.6.21" [deps.SparseConnectivityTracer.extensions] SparseConnectivityTracerDataInterpolationsExt = "DataInterpolations" @@ -3304,15 +3305,17 @@ version = "0.1.2" [[deps.SparseMatrixColorings]] deps = ["ADTypes", "DocStringExtensions", "LinearAlgebra", "PrecompileTools", "Random", "SparseArrays"] -git-tree-sha1 = "ab958b4fec46d1f1d057bb8e2a99bfdb90744646" +git-tree-sha1 = "9de43e0b9b976f1019bf7a879a686c4514520078" uuid = "0a514795-09f3-496d-8182-132a7b665d35" -version = "0.4.20" +version = "0.4.21" [deps.SparseMatrixColorings.extensions] + SparseMatrixColoringsCUDAExt = "CUDA" SparseMatrixColoringsCliqueTreesExt = "CliqueTrees" SparseMatrixColoringsColorsExt = "Colors" [deps.SparseMatrixColorings.weakdeps] + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" CliqueTrees = "60701a23-6482-424a-84db-faee86b9b1f8" Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" @@ -3512,9 +3515,9 @@ version = "5.2.3+0" [[deps.SymbolicIndexingInterface]] deps = ["Accessors", "ArrayInterface", "PrettyTables", "RuntimeGeneratedFunctions", "StaticArraysCore"] -git-tree-sha1 = "b6a641e38efa01355aa721246dd246e10c7dcd4d" +git-tree-sha1 = "658f6d01bfe68d6bf47915bf5d868228138c7d71" uuid = "2efcf032-c050-4f8e-a9bb-153293bab1f5" -version = "0.3.40" +version = "0.3.41" [[deps.TOML]] deps = ["Dates"] @@ -3575,9 +3578,9 @@ version = "1.11.0" [[deps.ThreadingUtilities]] deps = ["ManualMemory"] -git-tree-sha1 = "2d529b6b22791f3e22e7ec5c60b9016e78f5f6bf" +git-tree-sha1 = "d969183d3d244b6c33796b5ed01ab97328f2db85" uuid = "8290d209-cae3-49c0-8002-c8c24d57dab5" -version = "0.5.4" +version = "0.5.5" [[deps.TimeZones]] deps = ["Artifacts", "Dates", "Downloads", "InlineStrings", "Mocking", "Printf", "Scratch", "TZJData", "Unicode", "p7zip_jll"] @@ -3668,10 +3671,10 @@ uuid = "9d95972d-f1c8-5527-a6e0-b4b365fa01f6" version = "1.6.0" [[deps.Turing]] -deps = ["ADTypes", "AbstractMCMC", "Accessors", "AdvancedHMC", "AdvancedMH", "AdvancedPS", "AdvancedVI", "BangBang", "Bijectors", "Compat", "DataStructures", "Distributions", "DistributionsAD", "DocStringExtensions", "DynamicPPL", "EllipticalSliceSampling", "ForwardDiff", "Libtask", "LinearAlgebra", "LogDensityProblems", "MCMCChains", "NamedArrays", "Optimization", "OptimizationOptimJL", "OrderedCollections", "Printf", "Random", "Reexport", "SciMLBase", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] -git-tree-sha1 = "282ca358181f585fbb271eb9301e16b6fe5c80e0" +deps = ["ADTypes", "AbstractMCMC", "AbstractPPL", "Accessors", "AdvancedHMC", "AdvancedMH", "AdvancedPS", "AdvancedVI", "BangBang", "Bijectors", "Compat", "DataStructures", "Distributions", "DistributionsAD", "DocStringExtensions", "DynamicPPL", "EllipticalSliceSampling", "ForwardDiff", "Libtask", "LinearAlgebra", "LogDensityProblems", "MCMCChains", "NamedArrays", "Optimization", "OptimizationOptimJL", "OrderedCollections", "Printf", "Random", "Reexport", "SciMLBase", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] +git-tree-sha1 = "a2f0daaef3563e3e4fb94ced7cb22b7a0e18912f" uuid = "fce5fe82-541a-59a6-adf8-730c64b5f9a0" -version = "0.39.1" +version = "0.39.3" weakdeps = ["DynamicHMC", "Optim"] [deps.Turing.extensions] @@ -3679,9 +3682,9 @@ weakdeps = ["DynamicHMC", "Optim"] TuringOptimExt = "Optim" [[deps.URIs]] -git-tree-sha1 = "cbbebadbcc76c5ca1cc4b4f3b0614b3e603b5000" +git-tree-sha1 = "24c1c558881564e2217dcf7840a8b2e10caeb0f9" uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.5.2" +version = "1.6.0" [[deps.UUIDs]] deps = ["Random", "SHA"] @@ -3744,15 +3747,9 @@ version = "1.3.243+0" [[deps.Wayland_jll]] deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "XML2_jll"] -git-tree-sha1 = "49be0be57db8f863a902d59c0083d73281ecae8e" +git-tree-sha1 = "53ab3e9c94f4343c68d5905565be63002e13ec8c" uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" -version = "1.23.1+0" - -[[deps.Wayland_protocols_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "54b8a029ac145ebe8299463447fd1590b2b1d92f" -uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" -version = "1.44.0+0" +version = "1.23.1+1" [[deps.WeakRefStrings]] deps = ["DataAPI", "InlineStrings", "Parsers"] @@ -3899,9 +3896,9 @@ version = "1.1.3+0" [[deps.Xorg_xcb_util_cursor_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_jll", "Xorg_xcb_util_renderutil_jll"] -git-tree-sha1 = "04341cb870f29dcd5e39055f895c39d016e18ccd" +git-tree-sha1 = "c5bf2dad6a03dfef57ea0a170a1fe493601603f2" uuid = "e920d4aa-a673-5f3a-b3d7-f755a4d47c43" -version = "0.1.4+0" +version = "0.1.5+0" [[deps.Xorg_xcb_util_image_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_jll"] @@ -3963,17 +3960,23 @@ uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" version = "1.5.7+1" [[deps.Zygote]] -deps = ["AbstractFFTs", "ChainRules", "ChainRulesCore", "DiffRules", "Distributed", "FillArrays", "ForwardDiff", "GPUArrays", "GPUArraysCore", "IRTools", "InteractiveUtils", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NaNMath", "PrecompileTools", "Random", "Requires", "SparseArrays", "SpecialFunctions", "Statistics", "ZygoteRules"] -git-tree-sha1 = "8462a20f0fd85b4ef4a1b7310d33e7475d2bb14f" +deps = ["AbstractFFTs", "ChainRules", "ChainRulesCore", "DiffRules", "Distributed", "FillArrays", "ForwardDiff", "GPUArraysCore", "IRTools", "InteractiveUtils", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NaNMath", "PrecompileTools", "Random", "SparseArrays", "SpecialFunctions", "Statistics", "ZygoteRules"] +git-tree-sha1 = "a29cbf3968d36022198bcc6f23fdfd70f7caf737" uuid = "e88e6eb3-aa80-5325-afca-941959d7151f" -version = "0.6.77" -weakdeps = ["Colors", "Distances", "Tracker"] +version = "0.7.10" [deps.Zygote.extensions] + ZygoteAtomExt = "Atom" ZygoteColorsExt = "Colors" ZygoteDistancesExt = "Distances" ZygoteTrackerExt = "Tracker" + [deps.Zygote.weakdeps] + Atom = "c52e3926-4ff0-5f6e-af25-54175e0327b1" + Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" + Distances = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + [[deps.ZygoteRules]] deps = ["ChainRulesCore", "MacroTools"] git-tree-sha1 = "434b3de333c75fc446aa0d19fc394edafd07ab08" @@ -4041,9 +4044,9 @@ version = "1.28.1+0" [[deps.libpng_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "002748401f7b520273e2b506f61cab95d4701ccf" +git-tree-sha1 = "cd155272a3738da6db765745b89e466fa64d0830" uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.48+0" +version = "1.6.49+0" [[deps.libvorbis_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] @@ -4086,7 +4089,7 @@ uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" version = "3.5.0+0" [[deps.xkbcommon_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] -git-tree-sha1 = "c950ae0a3577aec97bfccf3381f66666bc416729" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] +git-tree-sha1 = "fbf139bce07a534df0e699dbb5f5cc9346f95cc1" uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" -version = "1.8.1+0" +version = "1.9.2+0" diff --git a/Project.toml b/Project.toml index 103705a87..6489bd760 100644 --- a/Project.toml +++ b/Project.toml @@ -54,7 +54,6 @@ StatsFuns = "4c63d2b9-4356-54db-8cca-17b64c39e42c" StatsPlots = "f3b207a7-027a-5e70-b257-86293d7955fd" Turing = "fce5fe82-541a-59a6-adf8-730c64b5f9a0" UnPack = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" -Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" [compat] Turing = "0.39" diff --git a/_quarto.yml b/_quarto.yml index 1c3bbdda8..fbb6b868c 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -169,23 +169,23 @@ include-in-header: # Note that you don't need to prepend `../../` to the link, Quarto will figure # it out automatically. -get-started: tutorials/docs-00-getting-started -tutorials-intro: tutorials/00-introduction -gaussian-mixture-model: tutorials/01-gaussian-mixture-model -logistic-regression: tutorials/02-logistic-regression -bayesian-neural-network: tutorials/03-bayesian-neural-network -hidden-markov-model: tutorials/04-hidden-markov-model -linear-regression: tutorials/05-linear-regression -infinite-mixture-model: tutorials/06-infinite-mixture-model -poisson-regression: tutorials/07-poisson-regression -multinomial-logistic-regression: tutorials/08-multinomial-logistic-regression -variational-inference: tutorials/09-variational-inference -bayesian-differential-equations: tutorials/10-bayesian-differential-equations -probabilistic-pca: tutorials/11-probabilistic-pca -gplvm: tutorials/12-gplvm -seasonal-time-series: tutorials/13-seasonal-time-series -using-turing-advanced: tutorials/docs-09-using-turing-advanced -using-turing: tutorials/docs-12-using-turing-guide +core-functionality: core-functionality +get-started: getting-started + +tutorials-intro: tutorials/coin-flipping +gaussian-mixture-model: tutorials/gaussian-mixture-models +logistic-regression: tutorials/bayesian-logistic-regression +bayesian-neural-network: tutorials/bayesian-neural-networks +hidden-markov-model: tutorials/hidden-markov-models +linear-regression: tutorials/bayesian-linear-regression +infinite-mixture-model: tutorials/infinite-mixture-models +poisson-regression: tutorials/bayesian-poisson-regression +multinomial-logistic-regression: tutorials/multinomial-logistic-regression +variational-inference: tutorials/variational-inference +bayesian-differential-equations: tutorials/bayesian-differential-equations +probabilistic-pca: tutorials/probabilistic-pca +gplvm: tutorials/gaussian-process-latent-variable-models +seasonal-time-series: tutorials/bayesian-time-series-analysis usage-automatic-differentiation: usage/automatic-differentiation usage-custom-distribution: usage/custom-distribution @@ -204,7 +204,7 @@ dev-model-manual: developers/compiler/model-manual contexts: developers/compiler/minituring-contexts minituring: developers/compiler/minituring-compiler using-turing-compiler: developers/compiler/design-overview -using-turing-variational-inference: developers/inference/variational-inference +dev-variational-inference: developers/inference/variational-inference using-turing-implementing-samplers: developers/inference/implementing-samplers dev-transforms-distributions: developers/transforms/distributions dev-transforms-bijectors: developers/transforms/bijectors diff --git a/getting-started/index.qmd b/getting-started/index.qmd index d9c41ba3d..3f0c4483d 100644 --- a/getting-started/index.qmd +++ b/getting-started/index.qmd @@ -92,5 +92,5 @@ The underlying theory of Bayesian machine learning is not explained in detail in A thorough introduction to the field is [*Pattern Recognition and Machine Learning*](https://www.springer.com/us/book/9780387310732) (Bishop, 2006); an online version is available [here (PDF, 18.1 MB)](https://www.microsoft.com/en-us/research/uploads/prod/2006/01/Bishop-Pattern-Recognition-and-Machine-Learning-2006.pdf). ::: -The next page on [Turing's core functionality]({{}}) explains the basic features of the Turing language. +The next page on [Turing's core functionality]({{}}) explains the basic features of the Turing language. From there, you can either look at [worked examples of how different models are implemented in Turing]({{}}), or [specific tips and tricks that can help you get the most out of Turing]({{}}). diff --git a/tutorials/bayesian-differential-equations/index.qmd b/tutorials/bayesian-differential-equations/index.qmd index e43eafee2..6da7f9eef 100755 --- a/tutorials/bayesian-differential-equations/index.qmd +++ b/tutorials/bayesian-differential-equations/index.qmd @@ -344,7 +344,7 @@ import Mooncake import SciMLSensitivity # Define the AD backend to use -adtype = AutoMooncake(; config=nothing) +adtype = AutoMooncake() # Sample a single chain with 1000 samples using Mooncake sample(model, NUTS(; adtype=adtype), 1000; progress=false) diff --git a/tutorials/bayesian-neural-networks/index.qmd b/tutorials/bayesian-neural-networks/index.qmd index 68b67f439..c5652c057 100755 --- a/tutorials/bayesian-neural-networks/index.qmd +++ b/tutorials/bayesian-neural-networks/index.qmd @@ -210,7 +210,7 @@ setprogress!(false) ```{julia} # Perform inference. n_iters = 2_000 -ch = sample(bayes_nn(reduce(hcat, xs), ts), NUTS(; adtype=AutoMooncake(; config=nothing)), n_iters); +ch = sample(bayes_nn(reduce(hcat, xs), ts), NUTS(; adtype=AutoMooncake()), n_iters); ``` Now we extract the parameter samples from the sampled chain as `θ` (this is of size `5000 x 20` where `5000` is the number of iterations and `20` is the number of parameters). diff --git a/tutorials/gaussian-mixture-models/index.qmd b/tutorials/gaussian-mixture-models/index.qmd index 36449824c..99db86bc2 100755 --- a/tutorials/gaussian-mixture-models/index.qmd +++ b/tutorials/gaussian-mixture-models/index.qmd @@ -74,9 +74,9 @@ and then drawing the datum accordingly, i.e., in our example drawing $$ x_i \sim \mathcal{N}([\mu_{z_i}, \mu_{z_i}]^\mathsf{T}, I) \qquad (i=1,\ldots,N). $$ -For more details on Gaussian mixture models, we refer to Christopher M. Bishop, *Pattern Recognition and Machine Learning*, Section 9. +For more details on Gaussian mixture models, refer to Chapter 9 of Christopher M. Bishop, *Pattern Recognition and Machine Learning*. -We specify the model with Turing. +We specify the model in Turing: ```{julia} using Turing @@ -130,10 +130,11 @@ burn = 10 chains = sample(model, sampler, MCMCThreads(), nsamples, nchains, discard_initial = burn); ``` -::: {.callout-warning collapse="true"} +::: {.callout-warning} ## Sampling With Multiple Threads -The `sample()` call above assumes that you have at least `nchains` threads available in your Julia instance. If you do not, the multiple chains -will run sequentially, and you may notice a warning. For more information, see [the Turing documentation on sampling multiple chains.](https://turinglang.org/dev/docs/using-turing/guide/#sampling-multiple-chains) +The `sample()` call above assumes that you have at least two threads available in your Julia instance. +If you do not, the multiple chains will run sequentially, and you may notice a warning. +For more information, see [the Turing documentation on sampling multiple chains.]({{}}#sampling-multiple-chains) ::: ```{julia} @@ -159,12 +160,14 @@ We consider the samples of the location parameters $\mu_1$ and $\mu_2$ for the t plot(chains[["μ[1]", "μ[2]"]]; legend=true) ``` -It can happen that the modes of $\mu_1$ and $\mu_2$ switch between chains. -For more information see the [Stan documentation](https://mc-stan.org/users/documentation/case-studies/identifying_mixture_models.html). This is because it's possible for either model parameter $\mu_k$ to be assigned to either of the corresponding true means, and this assignment need not be consistent between chains. +From the plots above, we can see that the chains have converged to seemingly different values for the parameters $\mu_1$ and $\mu_2$. +However, these actually represent the same solution: it does not matter whether we assign $\mu_1$ to the first cluster and $\mu_2$ to the second, or vice versa, since the resulting sum is the same. +(In principle it is also possible for the parameters to swap places _within_ a single chain, although this does not happen in this example.) +For more information see the [Stan documentation](https://mc-stan.org/users/documentation/case-studies/identifying_mixture_models.html), or Bishop's book, where the concept of _identifiability_ is discussed. -That is, the posterior is fundamentally multimodal, and different chains can end up in different modes, complicating inference. -One solution here is to enforce an ordering on our $\mu$ vector, requiring $\mu_k > \mu_{k-1}$ for all $k$. -`Bijectors.jl` [provides](https://turinglang.org/Bijectors.jl/dev/transforms/#Bijectors.OrderedBijector) an easy transformation (`ordered()`) for this purpose: +Having $\mu_1$ and $\mu_2$ swap can complicate the interpretation of the results, especially when different chains converge to different assignments. +One solution here is to enforce an ordering on our $\mu$ vector, requiring $\mu_k \geq \mu_{k-1}$ for all $k$. +`Bijectors.jl` [provides](https://turinglang.org/Bijectors.jl/stable/transforms/#Bijectors.OrderedBijector) a convenient function, `ordered()`, which can be applied to a (continuous multivariate) distribution to enforce this: ```{julia} using Bijectors: ordered @@ -194,15 +197,13 @@ end model = gaussian_mixture_model_ordered(x); ``` - -Now, re-running our model, we can see that the assigned means are consistent across chains: +Now, re-running our model, we can see that the assigned means are consistent between chains: ```{julia} #| output: false chains = sample(model, sampler, MCMCThreads(), nsamples, nchains, discard_initial = burn); ``` - ```{julia} #| echo: false let @@ -243,6 +244,7 @@ scatter!(x[1, :], x[2, :]; legend=false, title="Synthetic Dataset") ``` ## Inferred Assignments + Finally, we can inspect the assignments of the data points inferred using Turing. As we can see, the dataset is partitioned into two distinct groups. @@ -259,23 +261,23 @@ scatter( ## Marginalizing Out The Assignments -We can write out the marginal posterior of (continuous) $w, \mu$ by summing out the influence of our (discrete) assignments $z_i$ from -our likelihood: -$$ -p(y \mid w, \mu ) = \sum_{k=1}^K w_k p_k(y \mid \mu_k) -$$ + +We can write out the marginal posterior of (continuous) $w, \mu$ by summing out the influence of our (discrete) assignments $z_i$ from our likelihood: + +$$p(y \mid w, \mu ) = \sum_{k=1}^K w_k p_k(y \mid \mu_k)$$ + In our case, this gives us: -$$ -p(y \mid w, \mu) = \sum_{k=1}^K w_k \cdot \operatorname{MvNormal}(y \mid \mu_k, I) -$$ + +$$p(y \mid w, \mu) = \sum_{k=1}^K w_k \cdot \operatorname{MvNormal}(y \mid \mu_k, I)$$ ### Marginalizing By Hand -We could implement the above version of the Gaussian mixture model in Turing as follows: + +We could implement the above version of the Gaussian mixture model in Turing as follows. + First, Turing uses log-probabilities, so the likelihood above must be converted into log-space: -$$ -\log \left( p(y \mid w, \mu) \right) = \text{logsumexp} \left[\log (w_k) + \log(\operatorname{MvNormal}(y \mid \mu_k, I)) \right] -$$ + +$$\log \left( p(y \mid w, \mu) \right) = \text{logsumexp} \left[\log (w_k) + \log(\operatorname{MvNormal}(y \mid \mu_k, I)) \right]$$ Where we sum the components with `logsumexp` from the [`LogExpFunctions.jl` package](https://juliastats.org/LogExpFunctions.jl/stable/). The manually incremented likelihood can be added to the log-probability with `@addlogprob!`, giving us the following model: @@ -300,27 +302,25 @@ using LogExpFunctions end ``` -::: {.callout-warning collapse="false"} +::: {.callout-warning} ## Manually Incrementing Probablity -When possible, use of `@addlogprob!` should be avoided, as it exists outside the -usual structure of a Turing model. In most cases, a custom distribution should be used instead. +When possible, use of `@addlogprob!` should be avoided, as it exists outside the usual structure of a Turing model. +In most cases, a custom distribution should be used instead. -Here, the next section demonstrates the preferred method --- using the `MixtureModel` distribution we have seen already to -perform the marginalization automatically. +The next section demonstrates the preferred method: using the `MixtureModel` distribution we have seen already to perform the marginalization automatically. ::: +### Marginalizing For Free With Distribution.jl's `MixtureModel` Implementation -### Marginalizing For Free With Distribution.jl's MixtureModel Implementation - -We can use Turing's `~` syntax with anything that `Distributions.jl` provides `logpdf` and `rand` methods for. It turns out that the -`MixtureModel` distribution it provides has, as its `logpdf` method, `logpdf(MixtureModel([Component_Distributions], weight_vector), Y)`, where `Y` can be either a single observation or vector of observations. +We can use Turing's `~` syntax with anything that `Distributions.jl` provides `logpdf` and `rand` methods for. +It turns out that the `MixtureModel` distribution it provides has, as its `logpdf` method, `logpdf(MixtureModel([Component_Distributions], weight_vector), Y)`, where `Y` can be either a single observation or vector of observations. In fact, `Distributions.jl` provides [many convenient constructors](https://juliastats.org/Distributions.jl/stable/mixture/) for mixture models, allowing further simplification in common special cases. For example, when mixtures distributions are of the same type, one can write: `~ MixtureModel(Normal, [(μ1, σ1), (μ2, σ2)], w)`, or when the weight vector is known to allocate probability equally, it can be ommited. -The `logpdf` implementation for a `MixtureModel` distribution is exactly the marginalization defined above, and so our model becomes simply: +The `logpdf` implementation for a `MixtureModel` distribution is exactly the marginalization defined above, and so our model can be simplified to: ```{julia} #| output: false @@ -334,7 +334,7 @@ end model = gmm_marginalized(x); ``` -As we've summed out the discrete components, we can perform inference using `NUTS()` alone. +As we have summed out the discrete components, we can perform inference using `NUTS()` alone. ```{julia} #| output: false @@ -342,7 +342,6 @@ sampler = NUTS() chains = sample(model, sampler, MCMCThreads(), nsamples, nchains; discard_initial = burn); ``` - ```{julia} #| echo: false let @@ -356,23 +355,22 @@ let end ``` -`NUTS()` significantly outperforms our compositional Gibbs sampler, in large part because our model is now Rao-Blackwellized thanks to -the marginalization of our assignment parameter. +`NUTS()` significantly outperforms our compositional Gibbs sampler, in large part because our model is now Rao-Blackwellized thanks to the marginalization of our assignment parameter. ```{julia} plot(chains[["μ[1]", "μ[2]"]], legend=true) ``` -## Inferred Assignments - Marginalized Model -As we've summed over possible assignments, the associated parameter is no longer available in our chain. -This is not a problem, however, as given any fixed sample $(\mu, w)$, the assignment probability — $p(z_i \mid y_i)$ — can be recovered using Bayes rule: -$$ -p(z_i \mid y_i) = \frac{p(y_i \mid z_i) p(z_i)}{\sum_{k = 1}^K \left(p(y_i \mid z_i) p(z_i) \right)} -$$ +## Inferred Assignments With The Marginalized Model + +As we have summed over possible assignments, the latent parameter representing the assignments is no longer available in our chain. +This is not a problem, however, as given any fixed sample $(\mu, w)$, the assignment probability $p(z_i \mid y_i)$ can be recovered using Bayes's theorme: -This quantity can be computed for every $p(z = z_i \mid y_i)$, resulting in a probability vector, which is then used to sample -posterior predictive assignments from a categorial distribution. +$$p(z_i \mid y_i) = \frac{p(y_i \mid z_i) p(z_i)}{\sum_{k = 1}^K \left(p(y_i \mid z_i) p(z_i) \right)}$$ + +This quantity can be computed for every $p(z = z_i \mid y_i)$, resulting in a probability vector, which is then used to sample posterior predictive assignments from a categorial distribution. For details on the mathematics here, see [the Stan documentation on latent discrete parameters](https://mc-stan.org/docs/stan-users-guide/latent-discrete.html). + ```{julia} #| output: false function sample_class(xi, dists, w) diff --git a/tutorials/multinomial-logistic-regression/index.qmd b/tutorials/multinomial-logistic-regression/index.qmd index 94c964bd1..e788475e8 100755 --- a/tutorials/multinomial-logistic-regression/index.qmd +++ b/tutorials/multinomial-logistic-regression/index.qmd @@ -147,7 +147,7 @@ chain ::: {.callout-warning collapse="true"} ## Sampling With Multiple Threads The `sample()` call above assumes that you have at least `nchains` threads available in your Julia instance. If you do not, the multiple chains -will run sequentially, and you may notice a warning. For more information, see [the Turing documentation on sampling multiple chains.]({{}}#sampling-multiple-chains) +will run sequentially, and you may notice a warning. For more information, see [the Turing documentation on sampling multiple chains.]({{}}#sampling-multiple-chains) ::: Since we ran multiple chains, we may as well do a spot check to make sure each chain converges around similar points. diff --git a/tutorials/probabilistic-pca/index.qmd b/tutorials/probabilistic-pca/index.qmd index 106bb965f..6f8982923 100755 --- a/tutorials/probabilistic-pca/index.qmd +++ b/tutorials/probabilistic-pca/index.qmd @@ -206,7 +206,7 @@ setprogress!(false) ```{julia} k = 2 # k is the dimension of the projected space, i.e. the number of principal components/axes of choice ppca = pPCA(mat_exp', k) # instantiate the probabilistic model -chain_ppca = sample(ppca, NUTS(; adtype=AutoMooncake(; config=nothing)), 500); +chain_ppca = sample(ppca, NUTS(; adtype=AutoMooncake()), 500); ``` The samples are saved in `chain_ppca`, which is an `MCMCChains.Chains` object. @@ -320,7 +320,7 @@ We instantiate the model and ask Turing to sample from it using NUTS sampler. Th ```{julia} ppca_ARD = pPCA_ARD(mat_exp') # instantiate the probabilistic model -chain_ppcaARD = sample(ppca_ARD, NUTS(; adtype=AutoMooncake(; config=nothing)), 500) # sampling +chain_ppcaARD = sample(ppca_ARD, NUTS(; adtype=AutoMooncake()), 500) # sampling plot(group(chain_ppcaARD, :α); margin=6.0mm) ``` diff --git a/tutorials/variational-inference/index.qmd b/tutorials/variational-inference/index.qmd index 1e6da47c1..3ad3be5de 100755 --- a/tutorials/variational-inference/index.qmd +++ b/tutorials/variational-inference/index.qmd @@ -14,7 +14,7 @@ Pkg.instantiate(); This post will look at **variational inference (VI)**, an optimization approach to _approximate_ Bayesian inference, and how to use it in Turing.jl as an alternative to other approaches such as MCMC. This post will focus on the usage of VI in Turing rather than the principles and theory underlying VI. -If you are interested in understanding the mathematics you can checkout [our write-up]({{}}) or any other resource online (there are a lot of great ones). +If you are interested in understanding the mathematics you can checkout [our write-up]({{}}) or any other resource online (there are a lot of great ones). Let's start with a minimal example. Consider a `Turing.Model`, which we denote as `model`. diff --git a/usage/automatic-differentiation/index.qmd b/usage/automatic-differentiation/index.qmd index c3fcc6e9a..768845942 100755 --- a/usage/automatic-differentiation/index.qmd +++ b/usage/automatic-differentiation/index.qmd @@ -37,7 +37,7 @@ import Mooncake # Rest of your model here end -sample(f(), HMC(0.1, 5; adtype=AutoMooncake(; config=nothing)), 100) +sample(f(), HMC(0.1, 5; adtype=AutoMooncake()), 100) ``` By default, if you do not specify a backend, Turing will default to [ForwardDiff.jl](https://github.com/JuliaDiff/ForwardDiff.jl). diff --git a/usage/mode-estimation/index.qmd b/usage/mode-estimation/index.qmd index 9e1e9d9a6..a592a83dd 100755 --- a/usage/mode-estimation/index.qmd +++ b/usage/mode-estimation/index.qmd @@ -74,7 +74,7 @@ We can also help the optimisation by giving it a starting point we know is close import Mooncake maximum_likelihood( - model, NelderMead(); initial_params=[0.1, 2], adtype=AutoMooncake(; config=nothing) + model, NelderMead(); initial_params=[0.1, 2], adtype=AutoMooncake() ) ``` diff --git a/usage/performance-tips/index.qmd b/usage/performance-tips/index.qmd index 4bbab345a..2445b58b5 100755 --- a/usage/performance-tips/index.qmd +++ b/usage/performance-tips/index.qmd @@ -25,7 +25,7 @@ The following example: using Turing @model function gmodel(x) m ~ Normal() - for i in 1:length(x) + for i in eachindex(x) x[i] ~ Normal(m, 0.2) end end @@ -44,34 +44,23 @@ end ## Choose your AD backend -Automatic differentiation (AD) makes it possible to use modern, efficient gradient-based samplers like NUTS and HMC, and that means a good AD system is incredibly important. Turing currently -supports several AD backends, including [ForwardDiff](https://github.com/JuliaDiff/ForwardDiff.jl) (the default), -[Mooncake](https://github.com/compintell/Mooncake.jl), -[Zygote](https://github.com/FluxML/Zygote.jl), and -[ReverseDiff](https://github.com/JuliaDiff/ReverseDiff.jl). +Automatic differentiation (AD) makes it possible to use modern, efficient gradient-based samplers like NUTS and HMC. +This, however, also means that using a performant AD system is incredibly important. +Turing currently supports several AD backends, including [ForwardDiff](https://github.com/JuliaDiff/ForwardDiff.jl) (the default), [Mooncake](https://github.com/chalk-lab/Mooncake.jl), and [ReverseDiff](https://github.com/JuliaDiff/ReverseDiff.jl). -For many common types of models, the default ForwardDiff backend performs great, and there is no need to worry about changing it. However, if you need more speed, you can try -different backends via the standard [ADTypes](https://github.com/SciML/ADTypes.jl) interface by passing an `AbstractADType` to the sampler with the optional `adtype` argument, e.g. -`NUTS(adtype = AutoZygote())`. See [Automatic Differentiation]({{}}) for details. Generally, `adtype = AutoForwardDiff()` is likely to be the fastest and most reliable for models with -few parameters (say, less than 20 or so), while reverse-mode backends such as `AutoZygote()` or `AutoReverseDiff()` will perform better for models with many parameters or linear algebra -operations. If in doubt, it's easy to try a few different backends to see how they compare. +For many common types of models, the default ForwardDiff backend performs well, and there is no need to worry about changing it. +However, if you need more speed, you can try different backends via the standard [ADTypes](https://github.com/SciML/ADTypes.jl) interface by passing an `AbstractADType` to the sampler with the optional `adtype` argument, e.g. `NUTS(; adtype = AutoMooncake())`. -### Special care for Zygote - -Note that Zygote will not perform well if your model contains `for`-loops, due to the way reverse-mode AD is implemented in these packages. Zygote also cannot differentiate code -that contains mutating operations. If you can't implement your model without `for`-loops or mutation, `ReverseDiff` will be a better, more performant option. In general, though, -vectorized operations are still likely to perform best. - -Avoiding loops can be done using `filldist(dist, N)` and `arraydist(dists)`. `filldist(dist, N)` creates a multivariate distribution that is composed of `N` identical and independent -copies of the univariate distribution `dist` if `dist` is univariate, or it creates a matrix-variate distribution composed of `N` identical and independent copies of the multivariate -distribution `dist` if `dist` is multivariate. `filldist(dist, N, M)` can also be used to create a matrix-variate distribution from a univariate distribution `dist`. `arraydist(dists)` -is similar to `filldist` but it takes an array of distributions `dists` as input. Writing a [custom distribution](advanced) with a custom adjoint is another option to avoid loops. +Generally, `adtype = AutoForwardDiff()` is likely to be the fastest and most reliable for models with few parameters (say, less than 20 or so), while reverse-mode backends such as `AutoMooncake()` or `AutoReverseDiff()` will perform better for models with many parameters or linear algebra operations. +If in doubt, you can benchmark your model with different backends to see which one performs best. +See the [Automatic Differentiation]({{}}) page for details. ### Special care for ReverseDiff with a compiled tape -For large models, the fastest option is often ReverseDiff with a compiled tape, specified as `adtype=AutoReverseDiff(true)`. However, it is important to note that if your model contains any -branching code, such as `if`-`else` statements, **the gradients from a compiled tape may be inaccurate, leading to erroneous results**. If you use this option for the (considerable) speedup it -can provide, make sure to check your code. It's also a good idea to verify your gradients with another backend. +For large models, the fastest option is often ReverseDiff with a compiled tape, specified as `adtype=AutoReverseDiff(; compile=true)`. +However, it is important to note that if your model contains any branching code, such as `if`-`else` statements, **the gradients from a compiled tape may be inaccurate, leading to erroneous results**. +If you use this option for the (considerable) speedup it can provide, make sure to check your code for branching and ensure that it does not affect the gradients. +It is also a good idea to verify your gradients with another backend. ## Ensure that types in your model can be inferred @@ -117,10 +106,10 @@ Alternatively, you could use `filldist` in this example: end ``` -Note that you can use `@code_warntype` to find types in your model definition that the compiler cannot infer. -They are marked in red in the Julia REPL. +You can use DynamicPPL's debugging utilities to find types in your model definition that the compiler cannot infer. +These will be marked in red in the Julia REPL (much like when using the `@code_warntype` macro). -For example, consider the following simple program: +For example, consider the following model: ```{julia} @model function tmodel(x) @@ -131,22 +120,22 @@ For example, consider the following simple program: end ``` -We can use +Because the element type of `p` is an abstract type (`Real`), the compiler cannot infer a concrete type for `p[1]`. +To detect this, we can use ```{julia} #| eval: false -using Random - model = tmodel(1.0) -@code_warntype model.f( - model, - Turing.VarInfo(model), - Turing.SamplingContext( - Random.default_rng(), Turing.SampleFromPrior(), Turing.DefaultContext() - ), - model.args..., -) +using DynamicPPL +DynamicPPL.DebugUtils.model_warntype(model) ``` -to inspect type inference in the model. +In this particular model, the following call to `getindex` should be highlighted in red (the exact numbers may vary): + +``` +[...] +│ %120 = p::AbstractVector +│ %121 = Base.getindex(%120, 1)::Any +[...] +```