From 28af83ed0afba99e372043befd3c7701efadaaff Mon Sep 17 00:00:00 2001 From: KDr2 Date: Thu, 27 Jun 2019 11:27:34 +0800 Subject: [PATCH 01/14] add Dummy benchmarks --- benchmarks/Dummy.run.jl | 19 +++++++++++++++++++ benchmarks/benchmark_list.jl | 5 +++++ benchmarks/runbenchmarks.jl | 5 ++++- 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 benchmarks/Dummy.run.jl create mode 100644 benchmarks/benchmark_list.jl diff --git a/benchmarks/Dummy.run.jl b/benchmarks/Dummy.run.jl new file mode 100644 index 0000000000..6b3ea84bb0 --- /dev/null +++ b/benchmarks/Dummy.run.jl @@ -0,0 +1,19 @@ +using Turing, TuringBenchmarks + +data = [0, 1, 0, 1, 1, 1, 1, 1, 1, 1] + +@model constrained_test(obs) = begin + p ~ Beta(2,2) + for i = 1:length(obs) + obs[i] ~ Bernoulli(p) + end + p +end + +bench_res = @tbenchmark(HMC(1000, 1.5, 3), constrained_test, data) + +# bench_res[4].names = ["phi[1]", "phi[2]", "phi[3]", "phi[4]"] +logd = build_logd("Dummy-Benchmark", bench_res...) + +print_log(logd) +send_log(logd) diff --git a/benchmarks/benchmark_list.jl b/benchmarks/benchmark_list.jl new file mode 100644 index 0000000000..cfd1bb7e1f --- /dev/null +++ b/benchmarks/benchmark_list.jl @@ -0,0 +1,5 @@ +BENCHMARK_FILES = [ + "Dummy.run.jl", +] + +BENCHMARK_FILES = map(BENCHMARK_FILES) do x joinpath(@__DIR__, x) end diff --git a/benchmarks/runbenchmarks.jl b/benchmarks/runbenchmarks.jl index 0febe413e3..e59f439d70 100644 --- a/benchmarks/runbenchmarks.jl +++ b/benchmarks/runbenchmarks.jl @@ -22,6 +22,7 @@ run(`git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'`) run(`git fetch --all --unshallow`) run(`git clone https://github.com/TuringLang/TuringBenchmarks.git ../TuringBenchmarks`) +run(`git -C ../TuringBenchmarks checkout -b external-bm origin/external-bm`) # remove this! delete!(ENV, "JULIA_PROJECT") @@ -37,7 +38,9 @@ pkg"add SpecialFunctions" using TuringBenchmarks """ -code_run = """using TuringBenchmarks.Runner +code_run = """using TuringBenchmarks +using TuringBenchmarks.Runner +TuringBenchmarks.set_benchmark_files("./benchmarks/benchmark_list.jl") Runner.run_bm_on_travis("$BM_JOB_NAME", ("master", "$CURRENT_BRANCH"), "$COMMIT_SHA") """ From dee69584be3f9b79d9ba66b5cc375f67d9639bd6 Mon Sep 17 00:00:00 2001 From: KDr2 Date: Thu, 27 Jun 2019 13:58:09 +0800 Subject: [PATCH 02/14] new benchmark: gdemo --- benchmarks/benchmark_list.jl | 3 ++- benchmarks/{Dummy.run.jl => dummy.run.jl} | 0 benchmarks/gdemo.run.jl | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) rename benchmarks/{Dummy.run.jl => dummy.run.jl} (100%) create mode 100644 benchmarks/gdemo.run.jl diff --git a/benchmarks/benchmark_list.jl b/benchmarks/benchmark_list.jl index cfd1bb7e1f..5806e81abb 100644 --- a/benchmarks/benchmark_list.jl +++ b/benchmarks/benchmark_list.jl @@ -1,5 +1,6 @@ BENCHMARK_FILES = [ - "Dummy.run.jl", + "dummy.run.jl", + "gdemo.run.jl", ] BENCHMARK_FILES = map(BENCHMARK_FILES) do x joinpath(@__DIR__, x) end diff --git a/benchmarks/Dummy.run.jl b/benchmarks/dummy.run.jl similarity index 100% rename from benchmarks/Dummy.run.jl rename to benchmarks/dummy.run.jl diff --git a/benchmarks/gdemo.run.jl b/benchmarks/gdemo.run.jl new file mode 100644 index 0000000000..a6fa4e0ddd --- /dev/null +++ b/benchmarks/gdemo.run.jl @@ -0,0 +1,18 @@ +using Turing, TuringBenchmarks + +@model gdemo(x, y) = begin + s ~ InverseGamma(2,3) + m ~ Normal(0,sqrt(s)) + x ~ Normal(m, sqrt(s)) + y ~ Normal(m, sqrt(s)) + return s, m +end + +data = (1.5, 2.0) + +bench_res = @tbenchmark(Turing.NUTS(2000000, 0.65), gdemo, data...) + +logd = build_logd("GDemo-Benchmark", bench_res...) + +print_log(logd) +send_log(logd) From ee9c28f79d1890f264e377a63a75fa32af1b17b6 Mon Sep 17 00:00:00 2001 From: KDr2 Date: Thu, 27 Jun 2019 15:49:36 +0800 Subject: [PATCH 03/14] new benchmark: MvNormal --- benchmarks/benchmark_list.jl | 3 ++- benchmarks/gdemo.run.jl | 1 + benchmarks/mvnormal.run.jl | 34 ++++++++++++++++++++++++++++++++++ benchmarks/runbenchmarks.jl | 35 +++++++++++++++-------------------- 4 files changed, 52 insertions(+), 21 deletions(-) create mode 100644 benchmarks/mvnormal.run.jl diff --git a/benchmarks/benchmark_list.jl b/benchmarks/benchmark_list.jl index 5806e81abb..ff7ab86d5c 100644 --- a/benchmarks/benchmark_list.jl +++ b/benchmarks/benchmark_list.jl @@ -1,6 +1,7 @@ BENCHMARK_FILES = [ "dummy.run.jl", - "gdemo.run.jl", + "gdemo.run.jl", + "mvnormal.run.jl", ] BENCHMARK_FILES = map(BENCHMARK_FILES) do x joinpath(@__DIR__, x) end diff --git a/benchmarks/gdemo.run.jl b/benchmarks/gdemo.run.jl index a6fa4e0ddd..b9e6f4660a 100644 --- a/benchmarks/gdemo.run.jl +++ b/benchmarks/gdemo.run.jl @@ -10,6 +10,7 @@ end data = (1.5, 2.0) +# sample(gdemo(1.5, 2.0), Turing.NUTS(2000000, 0.65)); bench_res = @tbenchmark(Turing.NUTS(2000000, 0.65), gdemo, data...) logd = build_logd("GDemo-Benchmark", bench_res...) diff --git a/benchmarks/mvnormal.run.jl b/benchmarks/mvnormal.run.jl new file mode 100644 index 0000000000..8fa2b75de4 --- /dev/null +++ b/benchmarks/mvnormal.run.jl @@ -0,0 +1,34 @@ +using Distributions: MvNormal, logpdf +using ForwardDiff: gradient +using AdvancedHMC + +# Define the target distribution and its gradient +const D = 10 +const target = MvNormal(zeros(D), ones(D)) +logπ(θ::AbstractVector{<:Real}) = logpdf(target, θ) +∂logπ∂θ(θ::AbstractVector{<:Real}) = gradient(logπ, θ) + +# Sampling parameter settings +n_samples = 100_000 +n_adapts = 2_000 + +# Initial points +θ_init = randn(D) + +# Define metric space, Hamiltonian and sampling method +metric = DenseEuclideanMetric(D) +h = Hamiltonian(metric, logπ, ∂logπ∂θ) +prop = NUTS(Leapfrog(find_good_eps(h, θ_init))) +adaptor = StanHMCAdaptor( + n_adapts, Preconditioner(metric), NesterovDualAveraging(0.8, prop.integrator.ϵ)) + +# Sampling +# samples = sample(h, prop, θ_init, n_samples, adaptor, n_adapts) +bench_res = @tbenchmark_expr("NUTS(Leapfrog(...))", + sample(h, prop, θ_init, n_samples, adaptor, n_adapts)) + +# bench_res[4].names = ["phi[1]", "phi[2]", "phi[3]", "phi[4]"] +logd = build_logd("MvNormal-Benchmark", bench_res...) + +print_log(logd) +send_log(logd) diff --git a/benchmarks/runbenchmarks.jl b/benchmarks/runbenchmarks.jl index e59f439d70..1fa675665c 100644 --- a/benchmarks/runbenchmarks.jl +++ b/benchmarks/runbenchmarks.jl @@ -1,5 +1,16 @@ +using Pkg using Dates +BENCHMARK_REV = "master" +BENCHMARK_REV = "external-bm" + +try pkg"develop ." catch end +try pkg"develop ." catch end +try pkg"build Turing" catch end + +Pkg.add(PackageSpec(url="https://github.com/TuringLang/TuringBenchmarks.git", rev=BENCHMARK_REV)) +Pkg.build("TuringBenchmarks") + BASE_BRANCH = "master" CURRENT_BRANCH = strip(read(`git rev-parse --abbrev-ref HEAD`, String)) @@ -18,25 +29,10 @@ COMMIT_SHA_7 = COMMIT_SHA[1:7] TIME = Dates.format(now(), "YYYYmmddHHMM") BM_JOB_NAME="BMCI-$(SANTI_BR_NAME)-$(COMMIT_SHA_7)-$(TIME)" -run(`git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'`) -run(`git fetch --all --unshallow`) - -run(`git clone https://github.com/TuringLang/TuringBenchmarks.git ../TuringBenchmarks`) -run(`git -C ../TuringBenchmarks checkout -b external-bm origin/external-bm`) # remove this! - -delete!(ENV, "JULIA_PROJECT") - -code_pre = """using Pkg -# Pkg.instantiate() -try pkg"develop ." catch end -try pkg"develop ." catch end -try pkg"build Turing" catch end -using Turing -try pkg"develop ../TuringBenchmarks" catch end -try pkg"develop ../TuringBenchmarks" catch end -pkg"add SpecialFunctions" -using TuringBenchmarks -""" +if get(ENV, "TRAVIS", "false") == "true" + run(`git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'`) + run(`git fetch --all --unshallow`) +end code_run = """using TuringBenchmarks using TuringBenchmarks.Runner @@ -44,5 +40,4 @@ TuringBenchmarks.set_benchmark_files("./benchmarks/benchmark_list.jl") Runner.run_bm_on_travis("$BM_JOB_NAME", ("master", "$CURRENT_BRANCH"), "$COMMIT_SHA") """ -run(`julia -e $code_pre`) run(`julia -e $code_run`) From 129c31b5e3f6fbd536810984995cacef1132ef3b Mon Sep 17 00:00:00 2001 From: KDr2 Date: Thu, 27 Jun 2019 17:26:43 +0800 Subject: [PATCH 04/14] test benchmarks --- benchmarks/runbenchmarks.jl | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/benchmarks/runbenchmarks.jl b/benchmarks/runbenchmarks.jl index 1fa675665c..497a39feb9 100644 --- a/benchmarks/runbenchmarks.jl +++ b/benchmarks/runbenchmarks.jl @@ -1,17 +1,19 @@ using Pkg using Dates -BENCHMARK_REV = "master" -BENCHMARK_REV = "external-bm" +# prepare packages try pkg"develop ." catch end try pkg"develop ." catch end try pkg"build Turing" catch end +BENCHMARK_REV = "master" +BENCHMARK_REV = "external-bm" Pkg.add(PackageSpec(url="https://github.com/TuringLang/TuringBenchmarks.git", rev=BENCHMARK_REV)) Pkg.build("TuringBenchmarks") -BASE_BRANCH = "master" +# prepare BenchMark information +BASE_BRANCH = "bm-test" # should be master CURRENT_BRANCH = strip(read(`git rev-parse --abbrev-ref HEAD`, String)) if get(ENV, "TRAVIS", "false") == "true" @@ -34,10 +36,11 @@ if get(ENV, "TRAVIS", "false") == "true" run(`git fetch --all --unshallow`) end +# run code_run = """using TuringBenchmarks using TuringBenchmarks.Runner TuringBenchmarks.set_benchmark_files("./benchmarks/benchmark_list.jl") -Runner.run_bm_on_travis("$BM_JOB_NAME", ("master", "$CURRENT_BRANCH"), "$COMMIT_SHA") +Runner.run_bm_on_travis("$BM_JOB_NAME", ("$BASE_BRANCH", "$CURRENT_BRANCH"), "$COMMIT_SHA") """ run(`julia -e $code_run`) From 3f14582c0c910184b8076e80f9fed328dfc998e7 Mon Sep 17 00:00:00 2001 From: KDr2 Date: Thu, 27 Jun 2019 19:04:02 +0800 Subject: [PATCH 05/14] use abspath for benchmark info file --- benchmarks/runbenchmarks.jl | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/benchmarks/runbenchmarks.jl b/benchmarks/runbenchmarks.jl index 497a39feb9..0abc5be8fa 100644 --- a/benchmarks/runbenchmarks.jl +++ b/benchmarks/runbenchmarks.jl @@ -1,6 +1,7 @@ using Pkg using Dates +PROJECT_DIR = abspath(@__DIR__) |> dirname # prepare packages try pkg"develop ." catch end @@ -39,8 +40,8 @@ end # run code_run = """using TuringBenchmarks using TuringBenchmarks.Runner -TuringBenchmarks.set_benchmark_files("./benchmarks/benchmark_list.jl") +TuringBenchmarks.set_benchmark_files(joinpath("$PROJECT_DIR", "benchmarks/benchmark_list.jl")) Runner.run_bm_on_travis("$BM_JOB_NAME", ("$BASE_BRANCH", "$CURRENT_BRANCH"), "$COMMIT_SHA") """ - -run(`julia -e $code_run`) +cd(PROJECT_DIR) +run(`julia --project=. -e $code_run`) From eb1aaa7f849c105d89161df93f968beff7d7461c Mon Sep 17 00:00:00 2001 From: KDr2 Date: Fri, 28 Jun 2019 11:28:47 +0800 Subject: [PATCH 06/14] use project path to run benchmarks --- benchmarks/runbenchmarks.jl | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/benchmarks/runbenchmarks.jl b/benchmarks/runbenchmarks.jl index 0abc5be8fa..12bbd89808 100644 --- a/benchmarks/runbenchmarks.jl +++ b/benchmarks/runbenchmarks.jl @@ -4,9 +4,10 @@ using Dates PROJECT_DIR = abspath(@__DIR__) |> dirname # prepare packages -try pkg"develop ." catch end -try pkg"develop ." catch end -try pkg"build Turing" catch end +Pkg.build("Turing") + +Pkg.add("CmdStan") +Pkg.add("JSON") BENCHMARK_REV = "master" BENCHMARK_REV = "external-bm" @@ -40,8 +41,8 @@ end # run code_run = """using TuringBenchmarks using TuringBenchmarks.Runner +TuringBenchmarks.set_project_path("$PROJECT_DIR") TuringBenchmarks.set_benchmark_files(joinpath("$PROJECT_DIR", "benchmarks/benchmark_list.jl")) Runner.run_bm_on_travis("$BM_JOB_NAME", ("$BASE_BRANCH", "$CURRENT_BRANCH"), "$COMMIT_SHA") """ -cd(PROJECT_DIR) -run(`julia --project=. -e $code_run`) +run(`julia --project=$PROJECT_DIR -e $code_run`) From a4a318db25f8b795e4eb159a322dbe68aeaac601 Mon Sep 17 00:00:00 2001 From: KDr2 Date: Fri, 28 Jun 2019 13:30:17 +0800 Subject: [PATCH 07/14] use Pkg.resovle to prepare packages --- benchmarks/runbenchmarks.jl | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/benchmarks/runbenchmarks.jl b/benchmarks/runbenchmarks.jl index 12bbd89808..49833cfd13 100644 --- a/benchmarks/runbenchmarks.jl +++ b/benchmarks/runbenchmarks.jl @@ -6,16 +6,15 @@ PROJECT_DIR = abspath(@__DIR__) |> dirname # prepare packages Pkg.build("Turing") -Pkg.add("CmdStan") -Pkg.add("JSON") - BENCHMARK_REV = "master" -BENCHMARK_REV = "external-bm" +BENCHMARK_REV = "external-bm" # TODO: delete this line Pkg.add(PackageSpec(url="https://github.com/TuringLang/TuringBenchmarks.git", rev=BENCHMARK_REV)) Pkg.build("TuringBenchmarks") +Pkg.resolve() # prepare BenchMark information -BASE_BRANCH = "bm-test" # should be master +BASE_BRANCH = "master" +BASE_BRANCH = "bm-test" # TODO: delete this line (should be master) CURRENT_BRANCH = strip(read(`git rev-parse --abbrev-ref HEAD`, String)) if get(ENV, "TRAVIS", "false") == "true" From 3d7a6191a6ba173b9e831e94a2b9ff68c7dbddc2 Mon Sep 17 00:00:00 2001 From: KDr2 Date: Fri, 28 Jun 2019 14:59:54 +0800 Subject: [PATCH 08/14] update bnechmarks --- benchmarks/dummy.run.jl | 8 +++----- benchmarks/gdemo.run.jl | 8 +++----- benchmarks/mvnormal.run.jl | 6 +++--- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/benchmarks/dummy.run.jl b/benchmarks/dummy.run.jl index 6b3ea84bb0..fd3f50d692 100644 --- a/benchmarks/dummy.run.jl +++ b/benchmarks/dummy.run.jl @@ -1,4 +1,4 @@ -using Turing, TuringBenchmarks +using Turing, TuringBenchmarks.TuringTools data = [0, 1, 0, 1, 1, 1, 1, 1, 1, 1] @@ -13,7 +13,5 @@ end bench_res = @tbenchmark(HMC(1000, 1.5, 3), constrained_test, data) # bench_res[4].names = ["phi[1]", "phi[2]", "phi[3]", "phi[4]"] -logd = build_logd("Dummy-Benchmark", bench_res...) - -print_log(logd) -send_log(logd) +LOG_DATA = build_log_data("Dummy-Benchmark", bench_res...) +print_log(LOG_DATA) diff --git a/benchmarks/gdemo.run.jl b/benchmarks/gdemo.run.jl index b9e6f4660a..275371067f 100644 --- a/benchmarks/gdemo.run.jl +++ b/benchmarks/gdemo.run.jl @@ -1,4 +1,4 @@ -using Turing, TuringBenchmarks +using Turing, TuringBenchmarks.TuringTools @model gdemo(x, y) = begin s ~ InverseGamma(2,3) @@ -13,7 +13,5 @@ data = (1.5, 2.0) # sample(gdemo(1.5, 2.0), Turing.NUTS(2000000, 0.65)); bench_res = @tbenchmark(Turing.NUTS(2000000, 0.65), gdemo, data...) -logd = build_logd("GDemo-Benchmark", bench_res...) - -print_log(logd) -send_log(logd) +LOG_DATA = build_log_data("GDemo-Benchmark", bench_res...) +print_log(LOG_DATA) diff --git a/benchmarks/mvnormal.run.jl b/benchmarks/mvnormal.run.jl index 8fa2b75de4..439c0238ab 100644 --- a/benchmarks/mvnormal.run.jl +++ b/benchmarks/mvnormal.run.jl @@ -1,3 +1,5 @@ +using Turing, TuringBenchmarks.TuringTools + using Distributions: MvNormal, logpdf using ForwardDiff: gradient using AdvancedHMC @@ -28,7 +30,5 @@ bench_res = @tbenchmark_expr("NUTS(Leapfrog(...))", sample(h, prop, θ_init, n_samples, adaptor, n_adapts)) # bench_res[4].names = ["phi[1]", "phi[2]", "phi[3]", "phi[4]"] -logd = build_logd("MvNormal-Benchmark", bench_res...) - +LOG_DATA = build_log_data("MvNormal-Benchmark", bench_res...) print_log(logd) -send_log(logd) From eecde9d61d53df9f56436ef8fa645d46da984372 Mon Sep 17 00:00:00 2001 From: KDr2 Date: Fri, 28 Jun 2019 16:22:24 +0800 Subject: [PATCH 09/14] Fix and disable MvNormal benchmark --- benchmarks/benchmark_list.jl | 2 +- benchmarks/mvnormal.run.jl | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/benchmarks/benchmark_list.jl b/benchmarks/benchmark_list.jl index ff7ab86d5c..569211e0c6 100644 --- a/benchmarks/benchmark_list.jl +++ b/benchmarks/benchmark_list.jl @@ -1,7 +1,7 @@ BENCHMARK_FILES = [ "dummy.run.jl", "gdemo.run.jl", - "mvnormal.run.jl", + # "mvnormal.run.jl", ] BENCHMARK_FILES = map(BENCHMARK_FILES) do x joinpath(@__DIR__, x) end diff --git a/benchmarks/mvnormal.run.jl b/benchmarks/mvnormal.run.jl index 439c0238ab..f1efd9e392 100644 --- a/benchmarks/mvnormal.run.jl +++ b/benchmarks/mvnormal.run.jl @@ -20,7 +20,7 @@ n_adapts = 2_000 # Define metric space, Hamiltonian and sampling method metric = DenseEuclideanMetric(D) h = Hamiltonian(metric, logπ, ∂logπ∂θ) -prop = NUTS(Leapfrog(find_good_eps(h, θ_init))) +prop = Turing.NUTS(Leapfrog(find_good_eps(h, θ_init))) adaptor = StanHMCAdaptor( n_adapts, Preconditioner(metric), NesterovDualAveraging(0.8, prop.integrator.ϵ)) @@ -31,4 +31,4 @@ bench_res = @tbenchmark_expr("NUTS(Leapfrog(...))", # bench_res[4].names = ["phi[1]", "phi[2]", "phi[3]", "phi[4]"] LOG_DATA = build_log_data("MvNormal-Benchmark", bench_res...) -print_log(logd) +print_log(LOG_DATA) From d13d376e19ff01f86ab9bfd0eaa9f20271a77b80 Mon Sep 17 00:00:00 2001 From: KDr2 Date: Mon, 1 Jul 2019 16:51:14 +0800 Subject: [PATCH 10/14] update benchmark list --- benchmarks/benchmark_list.jl | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/benchmarks/benchmark_list.jl b/benchmarks/benchmark_list.jl index 569211e0c6..edbda82062 100644 --- a/benchmarks/benchmark_list.jl +++ b/benchmarks/benchmark_list.jl @@ -1,7 +1,17 @@ -BENCHMARK_FILES = [ - "dummy.run.jl", - "gdemo.run.jl", - # "mvnormal.run.jl", -] +ON_TRAVIS = get(ENV, "TRAVIS", "false") == "true" + +if ON_TRAVIS + BENCHMARK_FILES = [ + "dummy.run.jl", + "gdemo.run.jl", + # "mvnormal.run.jl", + ] +else + BENCHMARK_FILES = [ + "dummy.run.jl", + "gdemo.run.jl", + "mvnormal.run.jl", + ] +end BENCHMARK_FILES = map(BENCHMARK_FILES) do x joinpath(@__DIR__, x) end From 15a1c69f0b889597821398267cdf96ae1be5ca52 Mon Sep 17 00:00:00 2001 From: Hong Ge Date: Tue, 2 Jul 2019 17:33:23 +0100 Subject: [PATCH 11/14] Fix MvNormal --- benchmarks/mvnormal.run.jl | 26 ++++++-------------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/benchmarks/mvnormal.run.jl b/benchmarks/mvnormal.run.jl index f1efd9e392..a17a6b020c 100644 --- a/benchmarks/mvnormal.run.jl +++ b/benchmarks/mvnormal.run.jl @@ -1,34 +1,20 @@ using Turing, TuringBenchmarks.TuringTools -using Distributions: MvNormal, logpdf -using ForwardDiff: gradient -using AdvancedHMC - # Define the target distribution and its gradient const D = 10 -const target = MvNormal(zeros(D), ones(D)) -logπ(θ::AbstractVector{<:Real}) = logpdf(target, θ) -∂logπ∂θ(θ::AbstractVector{<:Real}) = gradient(logπ, θ) + +@model target(dim) = begin + Θ = Vector{Real}(undef, dim) + θ ~ MvNormal(zeros(D), ones(dim)) +end # Sampling parameter settings n_samples = 100_000 n_adapts = 2_000 -# Initial points -θ_init = randn(D) - -# Define metric space, Hamiltonian and sampling method -metric = DenseEuclideanMetric(D) -h = Hamiltonian(metric, logπ, ∂logπ∂θ) -prop = Turing.NUTS(Leapfrog(find_good_eps(h, θ_init))) -adaptor = StanHMCAdaptor( - n_adapts, Preconditioner(metric), NesterovDualAveraging(0.8, prop.integrator.ϵ)) - # Sampling -# samples = sample(h, prop, θ_init, n_samples, adaptor, n_adapts) bench_res = @tbenchmark_expr("NUTS(Leapfrog(...))", - sample(h, prop, θ_init, n_samples, adaptor, n_adapts)) + sample(target(D), HMC(n_samples, 0.1, 5))); -# bench_res[4].names = ["phi[1]", "phi[2]", "phi[3]", "phi[4]"] LOG_DATA = build_log_data("MvNormal-Benchmark", bench_res...) print_log(LOG_DATA) From 492b8575d38279cd556d82595c394c0d209c5f6f Mon Sep 17 00:00:00 2001 From: Hong Ge Date: Tue, 2 Jul 2019 17:33:48 +0100 Subject: [PATCH 12/14] Update benchmark_list.jl --- benchmarks/benchmark_list.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmarks/benchmark_list.jl b/benchmarks/benchmark_list.jl index edbda82062..c4d1552998 100644 --- a/benchmarks/benchmark_list.jl +++ b/benchmarks/benchmark_list.jl @@ -4,7 +4,7 @@ if ON_TRAVIS BENCHMARK_FILES = [ "dummy.run.jl", "gdemo.run.jl", - # "mvnormal.run.jl", + "mvnormal.run.jl", ] else BENCHMARK_FILES = [ From 62717c62ccff5a29f545c63e6620b4c0162f4718 Mon Sep 17 00:00:00 2001 From: KDr2 Date: Wed, 3 Jul 2019 05:50:52 +0800 Subject: [PATCH 13/14] use Turingbenchmarks#master --- benchmarks/runbenchmarks.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/benchmarks/runbenchmarks.jl b/benchmarks/runbenchmarks.jl index 49833cfd13..ccac9380f2 100644 --- a/benchmarks/runbenchmarks.jl +++ b/benchmarks/runbenchmarks.jl @@ -7,7 +7,6 @@ PROJECT_DIR = abspath(@__DIR__) |> dirname Pkg.build("Turing") BENCHMARK_REV = "master" -BENCHMARK_REV = "external-bm" # TODO: delete this line Pkg.add(PackageSpec(url="https://github.com/TuringLang/TuringBenchmarks.git", rev=BENCHMARK_REV)) Pkg.build("TuringBenchmarks") Pkg.resolve() From bd45b07a7702404d8316deaacd817f48e109af45 Mon Sep 17 00:00:00 2001 From: KDr2 Date: Wed, 3 Jul 2019 09:31:53 +0800 Subject: [PATCH 14/14] run benchmark against master branch --- benchmarks/runbenchmarks.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/benchmarks/runbenchmarks.jl b/benchmarks/runbenchmarks.jl index ccac9380f2..4414bdbad4 100644 --- a/benchmarks/runbenchmarks.jl +++ b/benchmarks/runbenchmarks.jl @@ -13,7 +13,6 @@ Pkg.resolve() # prepare BenchMark information BASE_BRANCH = "master" -BASE_BRANCH = "bm-test" # TODO: delete this line (should be master) CURRENT_BRANCH = strip(read(`git rev-parse --abbrev-ref HEAD`, String)) if get(ENV, "TRAVIS", "false") == "true"