From 4cc7d3826f84abe8f127b7cd1595c00f5e8bb9fe Mon Sep 17 00:00:00 2001 From: Bronzila Date: Mon, 15 Apr 2024 19:19:31 +0200 Subject: [PATCH 01/32] Add first version of benchmarking script --- hpobench_benchmark.py | 188 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 hpobench_benchmark.py diff --git a/hpobench_benchmark.py b/hpobench_benchmark.py new file mode 100644 index 0000000..c3e2cc8 --- /dev/null +++ b/hpobench_benchmark.py @@ -0,0 +1,188 @@ +import argparse + +import matplotlib.pyplot as plt +import numpy as np +from hpobench.benchmarks.ml.tabular_benchmark import TabularBenchmark as Benchmark +from markdown_table_generator import generate_markdown, table_from_string_list +from pathlib import Path +from src.dehb import DEHB + + +def objective_function(config, fidelity, b): + result_dict = b.objective_function(config, fidelity={"iter": int(fidelity)}) + return { + "fitness": result_dict["function_value"], + "cost": result_dict["cost"], + "info": {"fidelity": fidelity}, + } + +def input_arguments(): + parser = argparse.ArgumentParser(description="Optimizing HPOBench using DEHB.") + parser.add_argument( + "--seeds", + type=int, + nargs="*", + default=[1], + metavar="S", + help="Random seeds to benchmark DEHB on (default: 1)", + ) + parser.add_argument( + "--benchmarks", + type=str, + nargs="*", + default=["german_credit"], + help="Benchmarks to run DEHB on.", + choices=["german_credit"], + ) + parser.add_argument( + "--min_fidelity", + type=float, + default=3, + help="Minimum fidelity (epoch length)", + ) + parser.add_argument( + "--max_fidelity", + type=float, + default=27, + help="Maximum fidelity (epoch length)", + ) + parser.add_argument( + "--eta", + type=int, + default=3, + help="Parameter for Hyperband controlling early stopping aggressiveness", + ) + parser.add_argument( + "--output_path", + type=str, + default="./hpobench_dehb", + help="Directory for DEHB to write logs and outputs", + ) + parser.add_argument( + "--n_workers", + type=int, + default=1, + help="Number of CPU workers for DEHB to distribute function evaluations to", + ), + parser.add_argument( + "--verbose", + action=argparse.BooleanOptionalAction, + default=True, + help="Decides verbosity of DEHB optimization", + ) + parser.add_argument( + "--brackets", + type=int, + default=None, + help="Total number of brackets as fidelity to run DEHB", + ) + parser.add_argument( + "--fevals", + type=int, + default=None, + help="Total number of fevals as fidelity to run DEHB", + ) + parser.add_argument( + "--ask_tell", + action=argparse.BooleanOptionalAction, + default=False, + help="Use ask and tell interface", + ) + parser.add_argument( + "--restart", + action=argparse.BooleanOptionalAction, + default=False, + help="Use ask and tell interface", + ) + return parser.parse_args() + +def get_benchmark(benchmark, seed): + if benchmark == "german_credit": + return Benchmark(rng=seed, task_id=31, model="nn") + raise ValueError(f"No benchmark '{benchmark}' found.") + +def run_for(dehb, benchmark, brackets=None, fevals=None, ask_tell=False, verbose=True): + if brackets: + traj, runtime, history = dehb.run(brackets=brackets, verbose=verbose, b=benchmark) + elif ask_tell: + for _i in range(fevals): + job_info = dehb.ask() + res = objective_function(job_info["config"], job_info["fidelity"], benchmark) + dehb.tell(job_info, res) + traj = dehb.traj + # Log the incumbent + config = dehb.vector_to_configspace(dehb.inc_config) + dehb.logger.info("Incumbent score: {}".format(dehb.inc_score)) + for k, v in config.get_dictionary().items(): + dehb.logger.info("{}: {}".format(k, v)) + else: + traj, runtime, history = dehb.run(fevals=fevals, verbose=verbose, b=benchmark) + + return traj + +def main(): + args = input_arguments() + scores = {} + table = [["Benchmark", "Score (mean ± std)"]] + for benchmark in args.benchmarks: + scores[benchmark] = [] + for seed in args.seeds: + b = get_benchmark(benchmark, seed) + cs = b.get_configuration_space(seed=seed) + dimensions = len(cs.get_hyperparameters()) + + ########################### + # DEHB optimization block # + ########################### + dehb = DEHB( + f=objective_function, + cs=cs, + dimensions=dimensions, + min_fidelity=args.min_fidelity, + max_fidelity=args.max_fidelity, + eta=args.eta, + output_path=args.output_path, + n_workers=args.n_workers, + save_freq="incumbent", + seed=seed, + ) + + traj = run_for(dehb, b, args.brackets, args.fevals, args.ask_tell, args.verbose) + + if args.restart: + dehb = DEHB( + f=objective_function, + cs=cs, + dimensions=dimensions, + min_fidelity=args.min_fidelity, + max_fidelity=args.max_fidelity, + eta=args.eta, + output_path=args.output_path, + n_workers=args.n_workers, + save_freq="incumbent", + seed=seed, + resume=True, + ) + traj = run_for(dehb, b, args.brackets, args.fevals, args.ask_tell, args.verbose) + + inc_config, inc_value = dehb.get_incumbents() + scores[benchmark].append(inc_value) + mean_score = np.mean(scores[benchmark]) + std_score = np.std(scores[benchmark]) + table.append([benchmark, f"{mean_score:.3e} ± {std_score:.3e}"]) + + markdown_path = Path(args.output_path) / "benchmark_results.md" + md_table = table_from_string_list(table) + markdown = generate_markdown(md_table) + with markdown_path.open("w") as f: + f.write(markdown) + + # Plot incumbent trajectory + fig, ax = plt.subplots() + ax.plot(range(len(traj)), traj) + ax.set(ylabel="Incumbent score", xlabel="Step") + + plt.savefig("hpobench_optim.png") + +if __name__ == "__main__": + main() From 9ce8d2302baa64929c62db265753aa59ff203dc8 Mon Sep 17 00:00:00 2001 From: Bronzila Date: Wed, 17 Apr 2024 09:48:58 +0200 Subject: [PATCH 02/32] [WIP] Add initial HPOBench benchmark --- hpobench_benchmark.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/hpobench_benchmark.py b/hpobench_benchmark.py index c3e2cc8..6ba9e5a 100644 --- a/hpobench_benchmark.py +++ b/hpobench_benchmark.py @@ -1,10 +1,12 @@ import argparse +from pathlib import Path import matplotlib.pyplot as plt import numpy as np -from hpobench.benchmarks.ml.tabular_benchmark import TabularBenchmark as Benchmark +from hpobench.benchmarks.rl.cartpole import CartpoleReduced +from hpobench.benchmarks.ml.tabular_benchmark import TabularBenchmark +from hpobench.benchmarks.nas.nasbench_201 import Cifar10ValidNasBench201BenchmarkOriginal from markdown_table_generator import generate_markdown, table_from_string_list -from pathlib import Path from src.dehb import DEHB @@ -30,9 +32,9 @@ def input_arguments(): "--benchmarks", type=str, nargs="*", - default=["german_credit"], + default=["ml"], help="Benchmarks to run DEHB on.", - choices=["german_credit"], + choices=["ml", "rl", "nas"], ) parser.add_argument( "--min_fidelity", @@ -97,8 +99,12 @@ def input_arguments(): return parser.parse_args() def get_benchmark(benchmark, seed): - if benchmark == "german_credit": - return Benchmark(rng=seed, task_id=31, model="nn") + if benchmark == "ml": + return TabularBenchmark(rng=seed, task_id=31, model="nn") + elif benchmark == "rl": + return CartpoleReduced(rng=seed) + elif benchmark == "nas": + return Cifar10ValidNasBench201BenchmarkOriginal(rng=seed) raise ValueError(f"No benchmark '{benchmark}' found.") def run_for(dehb, benchmark, brackets=None, fevals=None, ask_tell=False, verbose=True): From a87652035a74394bdfe12780101ec281d619e5e5 Mon Sep 17 00:00:00 2001 From: Janis Fix Date: Wed, 17 Apr 2024 11:12:09 +0200 Subject: [PATCH 03/32] Add OD and surrogate benchmark --- hpobench_benchmark.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/hpobench_benchmark.py b/hpobench_benchmark.py index 6ba9e5a..f504889 100644 --- a/hpobench_benchmark.py +++ b/hpobench_benchmark.py @@ -3,9 +3,11 @@ import matplotlib.pyplot as plt import numpy as np -from hpobench.benchmarks.rl.cartpole import CartpoleReduced from hpobench.benchmarks.ml.tabular_benchmark import TabularBenchmark from hpobench.benchmarks.nas.nasbench_201 import Cifar10ValidNasBench201BenchmarkOriginal +from hpobench.benchmarks.od.od_ae import ODAutoencoder +from hpobench.benchmarks.rl.cartpole import CartpoleReduced +from hpobench.benchmarks.surrogates.paramnet_benchmark import ParamNetReducedAdultOnTimeBenchmark from markdown_table_generator import generate_markdown, table_from_string_list from src.dehb import DEHB @@ -105,6 +107,10 @@ def get_benchmark(benchmark, seed): return CartpoleReduced(rng=seed) elif benchmark == "nas": return Cifar10ValidNasBench201BenchmarkOriginal(rng=seed) + elif benchmark == "surrogate": + return ParamNetReducedAdultOnTimeBenchmark(rng=seed) + elif benchmark == "od": + return ODAutoencoder(dataset_name="cardio", rng=seed) raise ValueError(f"No benchmark '{benchmark}' found.") def run_for(dehb, benchmark, brackets=None, fevals=None, ask_tell=False, verbose=True): From 946912330bee0f0d584d5e5aaf9e8a96e01fa868 Mon Sep 17 00:00:00 2001 From: Janis Fix Date: Wed, 17 Apr 2024 16:21:31 +0200 Subject: [PATCH 04/32] [WIP] Add proper min/max fidelity loading --- hpobench_benchmark.py | 101 +++++++++++++++++++++++------------------- 1 file changed, 56 insertions(+), 45 deletions(-) diff --git a/hpobench_benchmark.py b/hpobench_benchmark.py index f504889..f601c0a 100644 --- a/hpobench_benchmark.py +++ b/hpobench_benchmark.py @@ -3,7 +3,7 @@ import matplotlib.pyplot as plt import numpy as np -from hpobench.benchmarks.ml.tabular_benchmark import TabularBenchmark +from hpobench.benchmarks.ml.nn_benchmark import NNBenchmark from hpobench.benchmarks.nas.nasbench_201 import Cifar10ValidNasBench201BenchmarkOriginal from hpobench.benchmarks.od.od_ae import ODAutoencoder from hpobench.benchmarks.rl.cartpole import CartpoleReduced @@ -12,8 +12,8 @@ from src.dehb import DEHB -def objective_function(config, fidelity, b): - result_dict = b.objective_function(config, fidelity={"iter": int(fidelity)}) +def objective_function(config, fidelity, b, fidelity_name): + result_dict = b.objective_function(config, fidelity={fidelity_name: int(fidelity)}) return { "fitness": result_dict["function_value"], "cost": result_dict["cost"], @@ -38,18 +38,6 @@ def input_arguments(): help="Benchmarks to run DEHB on.", choices=["ml", "rl", "nas"], ) - parser.add_argument( - "--min_fidelity", - type=float, - default=3, - help="Minimum fidelity (epoch length)", - ) - parser.add_argument( - "--max_fidelity", - type=float, - default=27, - help="Maximum fidelity (epoch length)", - ) parser.add_argument( "--eta", type=int, @@ -100,26 +88,44 @@ def input_arguments(): ) return parser.parse_args() -def get_benchmark(benchmark, seed): - if benchmark == "ml": - return TabularBenchmark(rng=seed, task_id=31, model="nn") - elif benchmark == "rl": - return CartpoleReduced(rng=seed) - elif benchmark == "nas": - return Cifar10ValidNasBench201BenchmarkOriginal(rng=seed) - elif benchmark == "surrogate": - return ParamNetReducedAdultOnTimeBenchmark(rng=seed) - elif benchmark == "od": - return ODAutoencoder(dataset_name="cardio", rng=seed) - raise ValueError(f"No benchmark '{benchmark}' found.") - -def run_for(dehb, benchmark, brackets=None, fevals=None, ask_tell=False, verbose=True): +def get_fidelity_range(benchmark, fidelity_name, seed): + fidelity_space = benchmark.get_fidelity_space(seed) + iter_fidelity_param = fidelity_space.get_hyperparameter(fidelity_name) + min_fidelity = iter_fidelity_param.lower + max_fidelity = iter_fidelity_param.upper + return min_fidelity, max_fidelity + +def get_benchmark_and_fidelities(benchmark_name, seed): + if benchmark_name == "ml": + benchmark = NNBenchmark(rng=seed, task_id=31) + fidelity_name = "iter" + elif benchmark_name == "rl": + benchmark = CartpoleReduced(rng=seed) + fidelity_name = "budget" + elif benchmark_name == "nas": + benchmark = Cifar10ValidNasBench201BenchmarkOriginal(rng=seed) + fidelity_name = "epoch" + elif benchmark_name == "surrogate": + benchmark = ParamNetReducedAdultOnTimeBenchmark(rng=seed) + fidelity_name = "budget" + elif benchmark_name == "od": + fidelity_name = "epochs" + benchmark = ODAutoencoder(dataset_name="cardio", rng=seed) + else: + raise ValueError(f"No benchmark '{benchmark_name}' found.") + + min_fidelity, max_fidelity = get_fidelity_range(benchmark, fidelity_name, seed) + return benchmark, fidelity_name, (min_fidelity, max_fidelity) + +def run_for(dehb, benchmark, fidelity_name, brackets=None, fevals=None, ask_tell=False, verbose=True): if brackets: - traj, runtime, history = dehb.run(brackets=brackets, verbose=verbose, b=benchmark) + traj, runtime, history = dehb.run(brackets=brackets, verbose=verbose, b=benchmark, + fidelity_name=fidelity_name) elif ask_tell: for _i in range(fevals): job_info = dehb.ask() - res = objective_function(job_info["config"], job_info["fidelity"], benchmark) + res = objective_function(job_info["config"], job_info["fidelity"], b=benchmark, + fidelity_name=fidelity_name) dehb.tell(job_info, res) traj = dehb.traj # Log the incumbent @@ -128,7 +134,8 @@ def run_for(dehb, benchmark, brackets=None, fevals=None, ask_tell=False, verbose for k, v in config.get_dictionary().items(): dehb.logger.info("{}: {}".format(k, v)) else: - traj, runtime, history = dehb.run(fevals=fevals, verbose=verbose, b=benchmark) + traj, runtime, history = dehb.run(fevals=fevals, verbose=verbose, b=benchmark, + fidelity_name=fidelity_name) return traj @@ -136,11 +143,12 @@ def main(): args = input_arguments() scores = {} table = [["Benchmark", "Score (mean ± std)"]] - for benchmark in args.benchmarks: - scores[benchmark] = [] + for benchmark_name in args.benchmarks: + scores[benchmark_name] = [] for seed in args.seeds: - b = get_benchmark(benchmark, seed) - cs = b.get_configuration_space(seed=seed) + benchmark, fid_name, (min_fidelity, max_fidelity) = get_benchmark_and_fidelities( + benchmark_name, seed) + cs = benchmark.get_configuration_space(seed=seed) dimensions = len(cs.get_hyperparameters()) ########################### @@ -150,16 +158,17 @@ def main(): f=objective_function, cs=cs, dimensions=dimensions, - min_fidelity=args.min_fidelity, - max_fidelity=args.max_fidelity, + min_fidelity=min_fidelity, + max_fidelity=max_fidelity, eta=args.eta, output_path=args.output_path, n_workers=args.n_workers, save_freq="incumbent", seed=seed, ) - - traj = run_for(dehb, b, args.brackets, args.fevals, args.ask_tell, args.verbose) + traj = run_for(dehb, brackets=args.brackets, fevals=args.fevals, ask_tell=args.ask_tell, + verbose=args.verbose, + benchmark=benchmark, fidelity_name=fid_name) if args.restart: dehb = DEHB( @@ -175,13 +184,15 @@ def main(): seed=seed, resume=True, ) - traj = run_for(dehb, b, args.brackets, args.fevals, args.ask_tell, args.verbose) + traj = run_for(dehb, brackets=args.brackets, fevals=args.fevals, ask_tell=args.ask_tell, + verbose=args.verbose, + benchmark=benchmark, fidelity_name=fid_name) inc_config, inc_value = dehb.get_incumbents() - scores[benchmark].append(inc_value) - mean_score = np.mean(scores[benchmark]) - std_score = np.std(scores[benchmark]) - table.append([benchmark, f"{mean_score:.3e} ± {std_score:.3e}"]) + scores[benchmark_name].append(inc_value) + mean_score = np.mean(scores[benchmark_name]) + std_score = np.std(scores[benchmark_name]) + table.append([benchmark_name, f"{mean_score:.3e} ± {std_score:.3e}"]) markdown_path = Path(args.output_path) / "benchmark_results.md" md_table = table_from_string_list(table) From 7f7778fd3df7d7b5c35328696078f61522cd171a Mon Sep 17 00:00:00 2001 From: Janis Fix Date: Thu, 18 Apr 2024 16:39:36 +0200 Subject: [PATCH 05/32] Adjust args --- hpobench_benchmark.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hpobench_benchmark.py b/hpobench_benchmark.py index f601c0a..6501e4f 100644 --- a/hpobench_benchmark.py +++ b/hpobench_benchmark.py @@ -36,7 +36,7 @@ def input_arguments(): nargs="*", default=["ml"], help="Benchmarks to run DEHB on.", - choices=["ml", "rl", "nas"], + choices=["ml", "rl", "nas", "surrogate", "od"], ) parser.add_argument( "--eta", From 0100e3a4cd756d9a6e4befc92a10a0b9a9b73648 Mon Sep 17 00:00:00 2001 From: Janis Fix Date: Tue, 23 Apr 2024 16:15:18 +0200 Subject: [PATCH 06/32] Add benchmarking setup script --- BENCHMARKING.md | 33 +++++++++++++++++++++++++++++++++ hpobench_benchmark.py | 28 ++++++++-------------------- pyproject.toml | 4 ++++ 3 files changed, 45 insertions(+), 20 deletions(-) create mode 100644 BENCHMARKING.md diff --git a/BENCHMARKING.md b/BENCHMARKING.md new file mode 100644 index 0000000..454cc65 --- /dev/null +++ b/BENCHMARKING.md @@ -0,0 +1,33 @@ +# Benchmarking DEHB +Benchmarking DEHB is crucial for ensuring consistent performance across different setups and configurations. We aim to benchmark DEHB on multiple HPOBench-benchmarks with different run setups: + +1. Using `dehb.run`, +2. Using the Ask & Tell interface and +3. Restarting the optimization run after half the budget. + +In the end, the results for the 3 different execution setups should be the same. With this setup guide, we encourage the developers of DEHB to continually benchmark their changes in order ensure, that + +- the inner workings of DEHB are not corrupted by checking the different execution setup results and +- that overall performance either remains the same, if no algortihmic changes have been made or is still comparable/better, if algorithmic changes have been made. + +Please follow the installtion guide below, to benchmark your changes. + +## Installation Guide +The following guide walks you throuh on how to install hpobench and run the benchmarking script. Here, we assume that you execute the commands in your cloned DEHB repository. +### Installing HPOBench +``` +git clone https://github.com/automl/HPOBench.git +cd HPOBench +pip install .[ml_tabular_benchmarks] +cd .. +``` +### Installing DEHB +There are some additional dependencies needed for plotting and table generation, therefore please install DEHB with the benchmarking option: +``` +pip install -e .[benchmarks] +``` +### Running the Benchmarking Script +The benchmarking script is highly configurable and lets you choose between the budget types (`fevals`, `brackets` and `total_cost`), the execution setup (`run`(default), `ask_tell` and `restart`), the benchmarks used (`ml`, `nas`) and the seeds used for each benchmark run (default: [0]). +``` +python3.9 hpobench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks ml nas --seeds 1 2 3 4 5 --output_path logs/hpobench_benchmarking +``` \ No newline at end of file diff --git a/hpobench_benchmark.py b/hpobench_benchmark.py index 6501e4f..bb41b39 100644 --- a/hpobench_benchmark.py +++ b/hpobench_benchmark.py @@ -5,9 +5,6 @@ import numpy as np from hpobench.benchmarks.ml.nn_benchmark import NNBenchmark from hpobench.benchmarks.nas.nasbench_201 import Cifar10ValidNasBench201BenchmarkOriginal -from hpobench.benchmarks.od.od_ae import ODAutoencoder -from hpobench.benchmarks.rl.cartpole import CartpoleReduced -from hpobench.benchmarks.surrogates.paramnet_benchmark import ParamNetReducedAdultOnTimeBenchmark from markdown_table_generator import generate_markdown, table_from_string_list from src.dehb import DEHB @@ -36,7 +33,7 @@ def input_arguments(): nargs="*", default=["ml"], help="Benchmarks to run DEHB on.", - choices=["ml", "rl", "nas", "surrogate", "od"], + choices=["ml", "nas"], ) parser.add_argument( "--eta", @@ -48,43 +45,43 @@ def input_arguments(): "--output_path", type=str, default="./hpobench_dehb", - help="Directory for DEHB to write logs and outputs", + help="Directory for DEHB to write logs and outputs.", ) parser.add_argument( "--n_workers", type=int, default=1, - help="Number of CPU workers for DEHB to distribute function evaluations to", + help="Number of CPU workers for DEHB to distribute function evaluations to.", ), parser.add_argument( "--verbose", action=argparse.BooleanOptionalAction, default=True, - help="Decides verbosity of DEHB optimization", + help="Decides verbosity of DEHB optimization.", ) parser.add_argument( "--brackets", type=int, default=None, - help="Total number of brackets as fidelity to run DEHB", + help="Total number of brackets as fidelity to run DEHB.", ) parser.add_argument( "--fevals", type=int, default=None, - help="Total number of fevals as fidelity to run DEHB", + help="Total number of fevals as fidelity to run DEHB.", ) parser.add_argument( "--ask_tell", action=argparse.BooleanOptionalAction, default=False, - help="Use ask and tell interface", + help="Use the ask and tell interface.", ) parser.add_argument( "--restart", action=argparse.BooleanOptionalAction, default=False, - help="Use ask and tell interface", + help="Restart the training and run again for the same budget.", ) return parser.parse_args() @@ -99,18 +96,9 @@ def get_benchmark_and_fidelities(benchmark_name, seed): if benchmark_name == "ml": benchmark = NNBenchmark(rng=seed, task_id=31) fidelity_name = "iter" - elif benchmark_name == "rl": - benchmark = CartpoleReduced(rng=seed) - fidelity_name = "budget" elif benchmark_name == "nas": benchmark = Cifar10ValidNasBench201BenchmarkOriginal(rng=seed) fidelity_name = "epoch" - elif benchmark_name == "surrogate": - benchmark = ParamNetReducedAdultOnTimeBenchmark(rng=seed) - fidelity_name = "budget" - elif benchmark_name == "od": - fidelity_name = "epochs" - benchmark = ODAutoencoder(dataset_name="cardio", rng=seed) else: raise ValueError(f"No benchmark '{benchmark_name}' found.") diff --git a/pyproject.toml b/pyproject.toml index 1001230..f48f036 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -56,6 +56,10 @@ dev = [ examples = [ "scikit-learn" ] +benchmarks = [ + "matplotlib", + "markdown_table_generator" +] [tool.pytest.ini_options] testpaths = ["tests"] # path to the test directory From 5253f3ecc5159ad76aeb97cc9aeba38e335540c5 Mon Sep 17 00:00:00 2001 From: Janis Fix Date: Mon, 29 Apr 2024 17:05:20 +0200 Subject: [PATCH 07/32] Sort out dependencies and clean up benchmarking script --- hpobench_benchmark.py | 259 ++++++++++++++++++++++++++---------------- pyproject.toml | 7 +- 2 files changed, 167 insertions(+), 99 deletions(-) diff --git a/hpobench_benchmark.py b/hpobench_benchmark.py index bb41b39..cb879ce 100644 --- a/hpobench_benchmark.py +++ b/hpobench_benchmark.py @@ -3,19 +3,142 @@ import matplotlib.pyplot as plt import numpy as np +from hpobench.benchmarks.ml.lr_benchmark import LRBenchmark from hpobench.benchmarks.ml.nn_benchmark import NNBenchmark +from hpobench.benchmarks.ml.rf_benchmark import RandomForestBenchmark +from hpobench.benchmarks.ml.svm_benchmark import SVMBenchmark from hpobench.benchmarks.nas.nasbench_201 import Cifar10ValidNasBench201BenchmarkOriginal +from hpobench.benchmarks.surrogates.paramnet_benchmark import ParamNetReducedAdultOnStepsBenchmark from markdown_table_generator import generate_markdown, table_from_string_list from src.dehb import DEHB -def objective_function(config, fidelity, b, fidelity_name): - result_dict = b.objective_function(config, fidelity={fidelity_name: int(fidelity)}) - return { - "fitness": result_dict["function_value"], - "cost": result_dict["cost"], - "info": {"fidelity": fidelity}, - } +def get_fidelity_range(benchmark, fidelity_name, seed): + fidelity_space = benchmark.get_fidelity_space(seed) + fidelity_param = fidelity_space.get_hyperparameter(fidelity_name) + min_fidelity = fidelity_param.lower + max_fidelity = fidelity_param.upper + return min_fidelity, max_fidelity + +def get_benchmark_and_fidelities(benchmark_name, seed): + if benchmark_name == "tab_nn": + benchmark = NNBenchmark(rng=seed, task_id=31) + fidelity_name = "iter" + fidelity_type = int + elif benchmark_name == "tab_lr": + benchmark = LRBenchmark(rng=seed, task_id=31) + fidelity_name = "iter" + fidelity_type = int + elif benchmark_name == "tab_rf": + benchmark = RandomForestBenchmark(rng=seed, task_id=31) + fidelity_name = "n_estimators" + fidelity_type = int + elif benchmark_name == "tab_svm": + benchmark = SVMBenchmark(rng=seed, task_id=31) + fidelity_name = "subsample" + fidelity_type = float + elif benchmark_name == "nas": + benchmark = Cifar10ValidNasBench201BenchmarkOriginal(rng=seed) + fidelity_name = "epoch" + fidelity_type = int + elif benchmark_name == "surrogate": + benchmark = ParamNetReducedAdultOnStepsBenchmark(rng=seed) + fidelity_name = "step" + fidelity_type = int + else: + raise ValueError(f"No benchmark '{benchmark_name}' found.") + + min_fidelity, max_fidelity = get_fidelity_range(benchmark, fidelity_name, seed) + return benchmark, fidelity_name, (min_fidelity, max_fidelity), fidelity_type + +class DEHBOptimizer(): + def __init__(self, dehb_params, fevals, brackets, walltime, use_ask_tell, use_restart, + benchmark_name, verbose) -> None: + self.verbose = verbose + self.fevals = fevals + self.brackets = brackets + self.walltime = walltime + self.use_ask_tell = use_ask_tell + self.use_restart = use_restart + b, fid_name, (min_fid, max_fid), fid_type = get_benchmark_and_fidelities(benchmark_name, + dehb_params["seed"]) + self.benchmark = b + self.config_space = self.benchmark.get_configuration_space(seed=dehb_params["seed"]) + dehb_params["dimensions"] = len(self.config_space.get_hyperparameters()) + self.fidelity_name = fid_name + self.fidelity_type = fid_type + dehb_params["min_fidelity"] = min_fid + dehb_params["max_fidelity"] = max_fid + self.dehb_params = dehb_params + self.dehb = self._initialize_dehb() + + def _initialize_dehb(self, resume=False): + return DEHB( + f=self._objective_function, + cs=self.config_space, + dimensions=self.dehb_params["dimensions"], + min_fidelity=self.dehb_params["min_fidelity"], + max_fidelity=self.dehb_params["max_fidelity"], + eta=self.dehb_params["eta"], + output_path=self.dehb_params["output_path"], + n_workers=self.dehb_params["n_workers"], + save_freq="incumbent", + seed=self.dehb_params["seed"], + resume=resume, + ) + + def _objective_function(self, config, fidelity): + res = self.benchmark.objective_function(config, + fidelity= + { + self.fidelity_name: self.fidelity_type(fidelity), + }) + return { + "fitness": res["function_value"], + "cost": res["cost"], + "info": {"fidelity": fidelity}, + } + + def _run_for(self, fevals=None, brackets=None, walltime=None): + if self.use_ask_tell: + for _i in range(fevals): + job_info = self.dehb.ask() + res = self._objective_function(job_info["config"], job_info["fidelity"]) + self.dehb.tell(job_info, res) + return self.dehb.traj + + traj,_ ,_ = self.dehb.run(fevals=fevals, brackets=brackets, + total_cost=walltime, verbose=self.verbose) + return traj + def _run_with_restart(self): + pre_restart_brackets, post_restart_brackets = None, None + pre_restart_fevals, post_restart_fevals = None, None + pre_restart_walltime, post_restart_walltime = None, None + if self.brackets: + pre_restart_brackets = self.brackets // 2 + post_restart_brackets = self.brackets - pre_restart_brackets + elif self.fevals: + pre_restart_fevals = self.fevals // 2 + post_restart_fevals = self.fevals - pre_restart_fevals + elif self.walltime: + pre_restart_walltime = self.walltime / 2 + post_restart_walltime = self.walltime / 2 + + # Run for half the budget + self._run_for(fevals=pre_restart_fevals, brackets=pre_restart_brackets, + walltime=pre_restart_walltime) + # Reinitialize DEHB (resume) + self.dehb = self._initialize_dehb(resume=True) + # Run for remaining budget + return self._run_for(fevals=post_restart_fevals, brackets=post_restart_brackets, + walltime=post_restart_walltime) + + def run(self): + if self.use_restart: + return self._run_with_restart() + + return self._run_for(self.fevals, self.brackets, self.walltime) + def input_arguments(): parser = argparse.ArgumentParser(description="Optimizing HPOBench using DEHB.") @@ -31,9 +154,9 @@ def input_arguments(): "--benchmarks", type=str, nargs="*", - default=["ml"], + default=["tab_nn"], help="Benchmarks to run DEHB on.", - choices=["ml", "nas"], + choices=["tab_nn", "tab_lr", "tab_rf", "tab_svm", "surrogate", "nas"], ) parser.add_argument( "--eta", @@ -55,7 +178,7 @@ def input_arguments(): ), parser.add_argument( "--verbose", - action=argparse.BooleanOptionalAction, + action="store_true", default=True, help="Decides verbosity of DEHB optimization.", ) @@ -63,120 +186,60 @@ def input_arguments(): "--brackets", type=int, default=None, - help="Total number of brackets as fidelity to run DEHB.", + help="Total number of brackets as budget to run DEHB.", ) parser.add_argument( "--fevals", type=int, default=None, - help="Total number of fevals as fidelity to run DEHB.", + help="Total number of fevals as budget to run DEHB.", + ) + parser.add_argument( + "--walltime", + type=int, + default=None, + help="Maxmimum walltime budget to run DEHB.", ) parser.add_argument( "--ask_tell", - action=argparse.BooleanOptionalAction, + action="store_true", default=False, help="Use the ask and tell interface.", ) parser.add_argument( "--restart", - action=argparse.BooleanOptionalAction, + action="store_true", default=False, help="Restart the training and run again for the same budget.", ) return parser.parse_args() -def get_fidelity_range(benchmark, fidelity_name, seed): - fidelity_space = benchmark.get_fidelity_space(seed) - iter_fidelity_param = fidelity_space.get_hyperparameter(fidelity_name) - min_fidelity = iter_fidelity_param.lower - max_fidelity = iter_fidelity_param.upper - return min_fidelity, max_fidelity - -def get_benchmark_and_fidelities(benchmark_name, seed): - if benchmark_name == "ml": - benchmark = NNBenchmark(rng=seed, task_id=31) - fidelity_name = "iter" - elif benchmark_name == "nas": - benchmark = Cifar10ValidNasBench201BenchmarkOriginal(rng=seed) - fidelity_name = "epoch" - else: - raise ValueError(f"No benchmark '{benchmark_name}' found.") - - min_fidelity, max_fidelity = get_fidelity_range(benchmark, fidelity_name, seed) - return benchmark, fidelity_name, (min_fidelity, max_fidelity) - -def run_for(dehb, benchmark, fidelity_name, brackets=None, fevals=None, ask_tell=False, verbose=True): - if brackets: - traj, runtime, history = dehb.run(brackets=brackets, verbose=verbose, b=benchmark, - fidelity_name=fidelity_name) - elif ask_tell: - for _i in range(fevals): - job_info = dehb.ask() - res = objective_function(job_info["config"], job_info["fidelity"], b=benchmark, - fidelity_name=fidelity_name) - dehb.tell(job_info, res) - traj = dehb.traj - # Log the incumbent - config = dehb.vector_to_configspace(dehb.inc_config) - dehb.logger.info("Incumbent score: {}".format(dehb.inc_score)) - for k, v in config.get_dictionary().items(): - dehb.logger.info("{}: {}".format(k, v)) - else: - traj, runtime, history = dehb.run(fevals=fevals, verbose=verbose, b=benchmark, - fidelity_name=fidelity_name) - - return traj - def main(): args = input_arguments() + dehb_params = { + "eta": args.eta, + "output_path": args.output_path, + "n_workers": args.n_workers, + } scores = {} table = [["Benchmark", "Score (mean ± std)"]] for benchmark_name in args.benchmarks: scores[benchmark_name] = [] for seed in args.seeds: - benchmark, fid_name, (min_fidelity, max_fidelity) = get_benchmark_and_fidelities( - benchmark_name, seed) - cs = benchmark.get_configuration_space(seed=seed) - dimensions = len(cs.get_hyperparameters()) - - ########################### - # DEHB optimization block # - ########################### - dehb = DEHB( - f=objective_function, - cs=cs, - dimensions=dimensions, - min_fidelity=min_fidelity, - max_fidelity=max_fidelity, - eta=args.eta, - output_path=args.output_path, - n_workers=args.n_workers, - save_freq="incumbent", - seed=seed, + print(f"Running benchmark {benchmark_name} on seed {seed}") + dehb_params["seed"] = seed + dehb_optimizer = DEHBOptimizer( + dehb_params=dehb_params, + fevals=args.fevals, + brackets=args.brackets, + walltime=args.walltime, + use_ask_tell=args.ask_tell, + use_restart=args.restart, + benchmark_name=benchmark_name, + verbose=args.verbose ) - traj = run_for(dehb, brackets=args.brackets, fevals=args.fevals, ask_tell=args.ask_tell, - verbose=args.verbose, - benchmark=benchmark, fidelity_name=fid_name) - - if args.restart: - dehb = DEHB( - f=objective_function, - cs=cs, - dimensions=dimensions, - min_fidelity=args.min_fidelity, - max_fidelity=args.max_fidelity, - eta=args.eta, - output_path=args.output_path, - n_workers=args.n_workers, - save_freq="incumbent", - seed=seed, - resume=True, - ) - traj = run_for(dehb, brackets=args.brackets, fevals=args.fevals, ask_tell=args.ask_tell, - verbose=args.verbose, - benchmark=benchmark, fidelity_name=fid_name) - - inc_config, inc_value = dehb.get_incumbents() + traj = dehb_optimizer.run() + inc_config, inc_value = dehb_optimizer.dehb.get_incumbents() scores[benchmark_name].append(inc_value) mean_score = np.mean(scores[benchmark_name]) std_score = np.std(scores[benchmark_name]) diff --git a/pyproject.toml b/pyproject.toml index f48f036..299f209 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -58,7 +58,12 @@ examples = [ ] benchmarks = [ "matplotlib", - "markdown_table_generator" + "markdown_table_generator", + "scikit-learn==0.23.2", + "numpy==1.20.0", + "tqdm", + "pandas==1.2.4", + "openml==0.12.2", ] [tool.pytest.ini_options] From 23c327409a149cf411d1e3e651e1229a4bf3438a Mon Sep 17 00:00:00 2001 From: Bronzila Date: Tue, 7 May 2024 21:00:34 +0200 Subject: [PATCH 08/32] Adjust folder structure and implement mfpbench benchmark --- .../BENCHMARKING.md | 0 benchmarking/hpobench_benchmark.py | 184 ++++++++++++ benchmarking/mfpbench_benchmark.py | 149 ++++++++++ benchmarking/utils.py | 113 ++++++++ hpobench_benchmark.py | 262 ------------------ pyproject.toml | 4 +- 6 files changed, 449 insertions(+), 263 deletions(-) rename BENCHMARKING.md => benchmarking/BENCHMARKING.md (100%) create mode 100644 benchmarking/hpobench_benchmark.py create mode 100644 benchmarking/mfpbench_benchmark.py create mode 100644 benchmarking/utils.py delete mode 100644 hpobench_benchmark.py diff --git a/BENCHMARKING.md b/benchmarking/BENCHMARKING.md similarity index 100% rename from BENCHMARKING.md rename to benchmarking/BENCHMARKING.md diff --git a/benchmarking/hpobench_benchmark.py b/benchmarking/hpobench_benchmark.py new file mode 100644 index 0000000..c185310 --- /dev/null +++ b/benchmarking/hpobench_benchmark.py @@ -0,0 +1,184 @@ +import argparse +from pathlib import Path + +import numpy as np +from hpobench.benchmarks.ml.lr_benchmark import LRBenchmark +from hpobench.benchmarks.ml.nn_benchmark import NNBenchmark +from hpobench.benchmarks.ml.rf_benchmark import RandomForestBenchmark +from hpobench.benchmarks.ml.svm_benchmark import SVMBenchmark +from hpobench.benchmarks.nas.nasbench_201 import Cifar10ValidNasBench201BenchmarkOriginal +from hpobench.benchmarks.surrogates.paramnet_benchmark import ParamNetReducedAdultOnStepsBenchmark +from markdown_table_generator import generate_markdown, table_from_string_list +from utils import DEHBOptimizerBase, plot_incumbent_traj + + +class DEHBOptimizerHPOBench(DEHBOptimizerBase): + def _objective_function(self, config, fidelity): + res = self.benchmark.objective_function(config, + fidelity= + { + self.fidelity_name: self.fidelity_type(fidelity), + }) + return { + "fitness": res["function_value"], + "cost": res["cost"], + "info": {"fidelity": fidelity}, + } + + def _get_config_space(self, seed): + return self.benchmark.get_configuration_space(seed=seed) + + def _get_fidelity_range(self, benchmark, fidelity_name, seed): + fidelity_space = benchmark.get_fidelity_space(seed) + fidelity_param = fidelity_space.get_hyperparameter(fidelity_name) + min_fidelity = fidelity_param.lower + max_fidelity = fidelity_param.upper + return min_fidelity, max_fidelity + + def _get_benchmark_and_fidelities(self, benchmark_name, seed): + if benchmark_name == "tab_nn": + benchmark = NNBenchmark(rng=seed, task_id=31) + fidelity_name = "iter" + fidelity_type = int + elif benchmark_name == "tab_lr": + benchmark = LRBenchmark(rng=seed, task_id=31) + fidelity_name = "iter" + fidelity_type = int + elif benchmark_name == "tab_rf": + benchmark = RandomForestBenchmark(rng=seed, task_id=31) + fidelity_name = "n_estimators" + fidelity_type = int + elif benchmark_name == "tab_svm": + benchmark = SVMBenchmark(rng=seed, task_id=31) + fidelity_name = "subsample" + fidelity_type = float + elif benchmark_name == "nas": + benchmark = Cifar10ValidNasBench201BenchmarkOriginal(rng=seed) + fidelity_name = "epoch" + fidelity_type = int + elif benchmark_name == "surrogate": + benchmark = ParamNetReducedAdultOnStepsBenchmark(rng=seed) + fidelity_name = "step" + fidelity_type = int + else: + raise ValueError(f"No benchmark '{benchmark_name}' found.") + + min_fidelity, max_fidelity = self._get_fidelity_range(benchmark, fidelity_name, seed) + return benchmark, fidelity_name, (min_fidelity, max_fidelity), fidelity_type + +def input_arguments(): + parser = argparse.ArgumentParser(description="Optimizing HPOBench using DEHB.") + parser.add_argument( + "--seeds", + type=int, + nargs="*", + default=[1], + metavar="S", + help="Random seeds to benchmark DEHB on (default: 1)", + ) + parser.add_argument( + "--benchmarks", + type=str, + nargs="*", + default=["tab_nn"], + help="Benchmarks to run DEHB on.", + choices=["tab_nn", "tab_lr", "tab_rf", "tab_svm", "surrogate", "nas"], + ) + parser.add_argument( + "--eta", + type=int, + default=3, + help="Parameter for Hyperband controlling early stopping aggressiveness", + ) + parser.add_argument( + "--output_path", + type=str, + default="./hpobench_dehb", + help="Directory for DEHB to write logs and outputs.", + ) + parser.add_argument( + "--n_workers", + type=int, + default=1, + help="Number of CPU workers for DEHB to distribute function evaluations to.", + ), + parser.add_argument( + "--verbose", + action="store_true", + default=True, + help="Decides verbosity of DEHB optimization.", + ) + parser.add_argument( + "--brackets", + type=int, + default=None, + help="Total number of brackets as budget to run DEHB.", + ) + parser.add_argument( + "--fevals", + type=int, + default=None, + help="Total number of fevals as budget to run DEHB.", + ) + parser.add_argument( + "--walltime", + type=int, + default=None, + help="Maxmimum walltime budget to run DEHB.", + ) + parser.add_argument( + "--ask_tell", + action="store_true", + default=False, + help="Use the ask and tell interface.", + ) + parser.add_argument( + "--restart", + action="store_true", + default=False, + help="Restart the training and run again for the same budget.", + ) + return parser.parse_args() + +def main(): + args = input_arguments() + dehb_params = { + "eta": args.eta, + "output_path": args.output_path, + "n_workers": args.n_workers, + } + scores = {} + table = [["Benchmark", "Score (mean ± std)"]] + for benchmark_name in args.benchmarks: + scores[benchmark_name] = [] + trajectories = [] + for seed in args.seeds: + print(f"Running benchmark {benchmark_name} on seed {seed}") + dehb_params["seed"] = seed + dehb_optimizer = DEHBOptimizerHPOBench( + dehb_params=dehb_params, + fevals=args.fevals, + brackets=args.brackets, + walltime=args.walltime, + use_ask_tell=args.ask_tell, + use_restart=args.restart, + benchmark_name=benchmark_name, + verbose=args.verbose + ) + traj = dehb_optimizer.run() + trajectories.append(traj) + _, inc_value = dehb_optimizer.dehb.get_incumbents() + scores[benchmark_name].append(inc_value) + plot_incumbent_traj(trajectories, Path(args.output_path) / f"{benchmark_name}_traj.png", benchmark_name) + mean_score = np.mean(scores[benchmark_name]) + std_score = np.std(scores[benchmark_name]) + table.append([benchmark_name, f"{mean_score:.3e} ± {std_score:.3e}"]) + + markdown_path = Path(args.output_path) / "benchmark_results.md" + md_table = table_from_string_list(table) + markdown = generate_markdown(md_table) + with markdown_path.open("w") as f: + f.write(markdown) + +if __name__ == "__main__": + main() diff --git a/benchmarking/mfpbench_benchmark.py b/benchmarking/mfpbench_benchmark.py new file mode 100644 index 0000000..f521a30 --- /dev/null +++ b/benchmarking/mfpbench_benchmark.py @@ -0,0 +1,149 @@ +import argparse +from pathlib import Path + +import numpy as np +from markdown_table_generator import generate_markdown, table_from_string_list +import mfpbench +from utils import DEHBOptimizerBase, plot_incumbent_traj + + +class DEHBOptimizerMFPBench(DEHBOptimizerBase): + def _objective_function(self, config, fidelity): + res = self.benchmark.query(config, at=fidelity) + return { + "fitness": res["valid_acc"], + "cost": res["runtime"].value, + } + + def _get_config_space(self, seed): + return self.benchmark.space + def _get_fidelity_range(self, benchmark): + return benchmark.start, benchmark.end + + def _get_benchmark_and_fidelities(self, benchmark_name, seed): + if benchmark_name == "jahs": + benchmark = mfpbench.get(name="jahs", task_id="CIFAR10", seed=seed) + fidelity_name = benchmark.fidelity_name + fidelity_type = int + else: + raise ValueError(f"No benchmark '{benchmark_name}' found.") + + min_fidelity, max_fidelity = self._get_fidelity_range(benchmark) + return benchmark, fidelity_name, (min_fidelity, max_fidelity), fidelity_type + +def input_arguments(): + parser = argparse.ArgumentParser(description="Optimizing HPOBench using DEHB.") + parser.add_argument( + "--seeds", + type=int, + nargs="*", + default=[1], + metavar="S", + help="Random seeds to benchmark DEHB on (default: 1)", + ) + parser.add_argument( + "--benchmarks", + type=str, + nargs="*", + default=["jahs"], + help="Benchmarks to run DEHB on.", + choices=["jahs"], + ) + parser.add_argument( + "--eta", + type=int, + default=3, + help="Parameter for Hyperband controlling early stopping aggressiveness", + ) + parser.add_argument( + "--output_path", + type=str, + default="./hpobench_dehb", + help="Directory for DEHB to write logs and outputs.", + ) + parser.add_argument( + "--n_workers", + type=int, + default=1, + help="Number of CPU workers for DEHB to distribute function evaluations to.", + ), + parser.add_argument( + "--verbose", + action="store_true", + default=True, + help="Decides verbosity of DEHB optimization.", + ) + parser.add_argument( + "--brackets", + type=int, + default=None, + help="Total number of brackets as budget to run DEHB.", + ) + parser.add_argument( + "--fevals", + type=int, + default=None, + help="Total number of fevals as budget to run DEHB.", + ) + parser.add_argument( + "--walltime", + type=int, + default=None, + help="Maxmimum walltime budget to run DEHB.", + ) + parser.add_argument( + "--ask_tell", + action="store_true", + default=False, + help="Use the ask and tell interface.", + ) + parser.add_argument( + "--restart", + action="store_true", + default=False, + help="Restart the training and run again for the same budget.", + ) + return parser.parse_args() + +def main(): + args = input_arguments() + dehb_params = { + "eta": args.eta, + "output_path": args.output_path, + "n_workers": args.n_workers, + } + scores = {} + table = [["Benchmark", "Score (mean ± std)"]] + for benchmark_name in args.benchmarks: + scores[benchmark_name] = [] + trajectories = [] + for seed in args.seeds: + print(f"Running benchmark {benchmark_name} on seed {seed}") + dehb_params["seed"] = seed + dehb_optimizer = DEHBOptimizerMFPBench( + dehb_params=dehb_params, + fevals=args.fevals, + brackets=args.brackets, + walltime=args.walltime, + use_ask_tell=args.ask_tell, + use_restart=args.restart, + benchmark_name=benchmark_name, + verbose=args.verbose + ) + traj = dehb_optimizer.run() + trajectories.append(traj) + _, inc_value = dehb_optimizer.dehb.get_incumbents() + scores[benchmark_name].append(inc_value) + plot_incumbent_traj(trajectories, Path(args.output_path) / f"{benchmark_name}_traj.png", benchmark_name) + mean_score = np.mean(scores[benchmark_name]) + std_score = np.std(scores[benchmark_name]) + table.append([benchmark_name, f"{mean_score:.3e} ± {std_score:.3e}"]) + + markdown_path = Path(args.output_path) / "benchmark_results.md" + md_table = table_from_string_list(table) + markdown = generate_markdown(md_table) + with markdown_path.open("w") as f: + f.write(markdown) + +if __name__ == "__main__": + main() diff --git a/benchmarking/utils.py b/benchmarking/utils.py new file mode 100644 index 0000000..42cc8b6 --- /dev/null +++ b/benchmarking/utils.py @@ -0,0 +1,113 @@ +from pathlib import Path + +import matplotlib.pyplot as plt +import numpy as np + +from dehb import DEHB + + +def plot_incumbent_traj(trajectories: list, output_path: Path, benchmark_name: str): + plt.clf() + trajectories = np.array(trajectories) + traj_length = len(trajectories[0]) + mean_trajectory = np.mean(trajectories, axis=0) + std_trajectory = np.std(trajectories, axis=0) + x_fevals = np.arange(traj_length) + plt.plot(x_fevals, mean_trajectory, label="Mean incumbent trajectory") + plt.fill_between(x_fevals, mean_trajectory - std_trajectory, mean_trajectory + std_trajectory, alpha=0.3) + + plt.xlabel("Function evaluation") + plt.ylabel("Incumbent score") + plt.title(f"Mean and Standard Deviation of Incumbent Trajectories on {benchmark_name}") + plt.legend() + plt.grid(True, which="both", linestyle="--", linewidth=0.5) + plt.savefig(output_path) + +class DEHBOptimizerBase(): + def __init__(self, dehb_params, fevals, brackets, walltime, use_ask_tell, use_restart, + benchmark_name, verbose) -> None: + self.verbose = verbose + self.fevals = fevals + self.brackets = brackets + self.walltime = walltime + self.use_ask_tell = use_ask_tell + self.use_restart = use_restart + b, fid_name, (min_fid, max_fid), fid_type = self._get_benchmark_and_fidelities(benchmark_name, + dehb_params["seed"]) + self.benchmark = b + self.config_space = self._get_config_space(dehb_params["seed"]) + dehb_params["dimensions"] = len(self.config_space.get_hyperparameters()) + self.fidelity_name = fid_name + self.fidelity_type = fid_type + dehb_params["min_fidelity"] = min_fid + dehb_params["max_fidelity"] = max_fid + self.dehb_params = dehb_params + self.dehb = self._initialize_dehb() + + def _get_benchmark_and_fidelities(self, benchmark_name, seed): + # Implement in subclass + raise NotImplementedError() + + def _get_config_space(self, seed): + # Implement int subclass + raise NotImplementedError() + + def _objective_function(self, config, fidelity): + # Implement in subclass + raise NotImplementedError() + + def _initialize_dehb(self, resume=False): + return DEHB( + f=self._objective_function, + cs=self.config_space, + dimensions=self.dehb_params["dimensions"], + min_fidelity=self.dehb_params["min_fidelity"], + max_fidelity=self.dehb_params["max_fidelity"], + eta=self.dehb_params["eta"], + output_path=self.dehb_params["output_path"], + n_workers=self.dehb_params["n_workers"], + save_freq="incumbent", + seed=self.dehb_params["seed"], + resume=resume, + ) + + def _run_for(self, fevals=None, brackets=None, walltime=None): + if self.use_ask_tell: + for _i in range(fevals): + job_info = self.dehb.ask() + res = self._objective_function(job_info["config"], job_info["fidelity"]) + self.dehb.tell(job_info, res) + self.dehb.save() + return self.dehb.traj + + traj,_ ,_ = self.dehb.run(fevals=fevals, brackets=brackets, + total_cost=walltime, verbose=self.verbose) + return traj + def _run_with_restart(self): + pre_restart_brackets, post_restart_brackets = None, None + pre_restart_fevals, post_restart_fevals = None, None + pre_restart_walltime, post_restart_walltime = None, None + if self.brackets: + pre_restart_brackets = self.brackets // 2 + post_restart_brackets = self.brackets - pre_restart_brackets + elif self.fevals: + pre_restart_fevals = self.fevals // 2 + post_restart_fevals = self.fevals - pre_restart_fevals + elif self.walltime: + pre_restart_walltime = self.walltime / 2 + post_restart_walltime = self.walltime / 2 + + # Run for half the budget + self._run_for(fevals=pre_restart_fevals, brackets=pre_restart_brackets, + walltime=pre_restart_walltime) + # Reinitialize DEHB (resume) + self.dehb = self._initialize_dehb(resume=True) + # Run for remaining budget + return self._run_for(fevals=post_restart_fevals, brackets=post_restart_brackets, + walltime=post_restart_walltime) + + def run(self): + if self.use_restart: + return self._run_with_restart() + + return self._run_for(self.fevals, self.brackets, self.walltime) \ No newline at end of file diff --git a/hpobench_benchmark.py b/hpobench_benchmark.py deleted file mode 100644 index cb879ce..0000000 --- a/hpobench_benchmark.py +++ /dev/null @@ -1,262 +0,0 @@ -import argparse -from pathlib import Path - -import matplotlib.pyplot as plt -import numpy as np -from hpobench.benchmarks.ml.lr_benchmark import LRBenchmark -from hpobench.benchmarks.ml.nn_benchmark import NNBenchmark -from hpobench.benchmarks.ml.rf_benchmark import RandomForestBenchmark -from hpobench.benchmarks.ml.svm_benchmark import SVMBenchmark -from hpobench.benchmarks.nas.nasbench_201 import Cifar10ValidNasBench201BenchmarkOriginal -from hpobench.benchmarks.surrogates.paramnet_benchmark import ParamNetReducedAdultOnStepsBenchmark -from markdown_table_generator import generate_markdown, table_from_string_list -from src.dehb import DEHB - - -def get_fidelity_range(benchmark, fidelity_name, seed): - fidelity_space = benchmark.get_fidelity_space(seed) - fidelity_param = fidelity_space.get_hyperparameter(fidelity_name) - min_fidelity = fidelity_param.lower - max_fidelity = fidelity_param.upper - return min_fidelity, max_fidelity - -def get_benchmark_and_fidelities(benchmark_name, seed): - if benchmark_name == "tab_nn": - benchmark = NNBenchmark(rng=seed, task_id=31) - fidelity_name = "iter" - fidelity_type = int - elif benchmark_name == "tab_lr": - benchmark = LRBenchmark(rng=seed, task_id=31) - fidelity_name = "iter" - fidelity_type = int - elif benchmark_name == "tab_rf": - benchmark = RandomForestBenchmark(rng=seed, task_id=31) - fidelity_name = "n_estimators" - fidelity_type = int - elif benchmark_name == "tab_svm": - benchmark = SVMBenchmark(rng=seed, task_id=31) - fidelity_name = "subsample" - fidelity_type = float - elif benchmark_name == "nas": - benchmark = Cifar10ValidNasBench201BenchmarkOriginal(rng=seed) - fidelity_name = "epoch" - fidelity_type = int - elif benchmark_name == "surrogate": - benchmark = ParamNetReducedAdultOnStepsBenchmark(rng=seed) - fidelity_name = "step" - fidelity_type = int - else: - raise ValueError(f"No benchmark '{benchmark_name}' found.") - - min_fidelity, max_fidelity = get_fidelity_range(benchmark, fidelity_name, seed) - return benchmark, fidelity_name, (min_fidelity, max_fidelity), fidelity_type - -class DEHBOptimizer(): - def __init__(self, dehb_params, fevals, brackets, walltime, use_ask_tell, use_restart, - benchmark_name, verbose) -> None: - self.verbose = verbose - self.fevals = fevals - self.brackets = brackets - self.walltime = walltime - self.use_ask_tell = use_ask_tell - self.use_restart = use_restart - b, fid_name, (min_fid, max_fid), fid_type = get_benchmark_and_fidelities(benchmark_name, - dehb_params["seed"]) - self.benchmark = b - self.config_space = self.benchmark.get_configuration_space(seed=dehb_params["seed"]) - dehb_params["dimensions"] = len(self.config_space.get_hyperparameters()) - self.fidelity_name = fid_name - self.fidelity_type = fid_type - dehb_params["min_fidelity"] = min_fid - dehb_params["max_fidelity"] = max_fid - self.dehb_params = dehb_params - self.dehb = self._initialize_dehb() - - def _initialize_dehb(self, resume=False): - return DEHB( - f=self._objective_function, - cs=self.config_space, - dimensions=self.dehb_params["dimensions"], - min_fidelity=self.dehb_params["min_fidelity"], - max_fidelity=self.dehb_params["max_fidelity"], - eta=self.dehb_params["eta"], - output_path=self.dehb_params["output_path"], - n_workers=self.dehb_params["n_workers"], - save_freq="incumbent", - seed=self.dehb_params["seed"], - resume=resume, - ) - - def _objective_function(self, config, fidelity): - res = self.benchmark.objective_function(config, - fidelity= - { - self.fidelity_name: self.fidelity_type(fidelity), - }) - return { - "fitness": res["function_value"], - "cost": res["cost"], - "info": {"fidelity": fidelity}, - } - - def _run_for(self, fevals=None, brackets=None, walltime=None): - if self.use_ask_tell: - for _i in range(fevals): - job_info = self.dehb.ask() - res = self._objective_function(job_info["config"], job_info["fidelity"]) - self.dehb.tell(job_info, res) - return self.dehb.traj - - traj,_ ,_ = self.dehb.run(fevals=fevals, brackets=brackets, - total_cost=walltime, verbose=self.verbose) - return traj - def _run_with_restart(self): - pre_restart_brackets, post_restart_brackets = None, None - pre_restart_fevals, post_restart_fevals = None, None - pre_restart_walltime, post_restart_walltime = None, None - if self.brackets: - pre_restart_brackets = self.brackets // 2 - post_restart_brackets = self.brackets - pre_restart_brackets - elif self.fevals: - pre_restart_fevals = self.fevals // 2 - post_restart_fevals = self.fevals - pre_restart_fevals - elif self.walltime: - pre_restart_walltime = self.walltime / 2 - post_restart_walltime = self.walltime / 2 - - # Run for half the budget - self._run_for(fevals=pre_restart_fevals, brackets=pre_restart_brackets, - walltime=pre_restart_walltime) - # Reinitialize DEHB (resume) - self.dehb = self._initialize_dehb(resume=True) - # Run for remaining budget - return self._run_for(fevals=post_restart_fevals, brackets=post_restart_brackets, - walltime=post_restart_walltime) - - def run(self): - if self.use_restart: - return self._run_with_restart() - - return self._run_for(self.fevals, self.brackets, self.walltime) - - -def input_arguments(): - parser = argparse.ArgumentParser(description="Optimizing HPOBench using DEHB.") - parser.add_argument( - "--seeds", - type=int, - nargs="*", - default=[1], - metavar="S", - help="Random seeds to benchmark DEHB on (default: 1)", - ) - parser.add_argument( - "--benchmarks", - type=str, - nargs="*", - default=["tab_nn"], - help="Benchmarks to run DEHB on.", - choices=["tab_nn", "tab_lr", "tab_rf", "tab_svm", "surrogate", "nas"], - ) - parser.add_argument( - "--eta", - type=int, - default=3, - help="Parameter for Hyperband controlling early stopping aggressiveness", - ) - parser.add_argument( - "--output_path", - type=str, - default="./hpobench_dehb", - help="Directory for DEHB to write logs and outputs.", - ) - parser.add_argument( - "--n_workers", - type=int, - default=1, - help="Number of CPU workers for DEHB to distribute function evaluations to.", - ), - parser.add_argument( - "--verbose", - action="store_true", - default=True, - help="Decides verbosity of DEHB optimization.", - ) - parser.add_argument( - "--brackets", - type=int, - default=None, - help="Total number of brackets as budget to run DEHB.", - ) - parser.add_argument( - "--fevals", - type=int, - default=None, - help="Total number of fevals as budget to run DEHB.", - ) - parser.add_argument( - "--walltime", - type=int, - default=None, - help="Maxmimum walltime budget to run DEHB.", - ) - parser.add_argument( - "--ask_tell", - action="store_true", - default=False, - help="Use the ask and tell interface.", - ) - parser.add_argument( - "--restart", - action="store_true", - default=False, - help="Restart the training and run again for the same budget.", - ) - return parser.parse_args() - -def main(): - args = input_arguments() - dehb_params = { - "eta": args.eta, - "output_path": args.output_path, - "n_workers": args.n_workers, - } - scores = {} - table = [["Benchmark", "Score (mean ± std)"]] - for benchmark_name in args.benchmarks: - scores[benchmark_name] = [] - for seed in args.seeds: - print(f"Running benchmark {benchmark_name} on seed {seed}") - dehb_params["seed"] = seed - dehb_optimizer = DEHBOptimizer( - dehb_params=dehb_params, - fevals=args.fevals, - brackets=args.brackets, - walltime=args.walltime, - use_ask_tell=args.ask_tell, - use_restart=args.restart, - benchmark_name=benchmark_name, - verbose=args.verbose - ) - traj = dehb_optimizer.run() - inc_config, inc_value = dehb_optimizer.dehb.get_incumbents() - scores[benchmark_name].append(inc_value) - mean_score = np.mean(scores[benchmark_name]) - std_score = np.std(scores[benchmark_name]) - table.append([benchmark_name, f"{mean_score:.3e} ± {std_score:.3e}"]) - - markdown_path = Path(args.output_path) / "benchmark_results.md" - md_table = table_from_string_list(table) - markdown = generate_markdown(md_table) - with markdown_path.open("w") as f: - f.write(markdown) - - # Plot incumbent trajectory - fig, ax = plt.subplots() - ax.plot(range(len(traj)), traj) - ax.set(ylabel="Incumbent score", xlabel="Step") - - plt.savefig("hpobench_optim.png") - -if __name__ == "__main__": - main() diff --git a/pyproject.toml b/pyproject.toml index 299f209..d2fb90e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -56,9 +56,11 @@ dev = [ examples = [ "scikit-learn" ] -benchmarks = [ +benchmarking = [ "matplotlib", "markdown_table_generator", +] +hpobench_benchmark = [ "scikit-learn==0.23.2", "numpy==1.20.0", "tqdm", From 3f3c67ba601c4ca8e300d127f8f083c73b90af96 Mon Sep 17 00:00:00 2001 From: Bronzila Date: Wed, 8 May 2024 14:51:15 +0200 Subject: [PATCH 09/32] Add setup guide --- benchmarking/BENCHMARKING.md | 34 +++++++++++++++++++++++++++------- pyproject.toml | 5 +++++ 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/benchmarking/BENCHMARKING.md b/benchmarking/BENCHMARKING.md index 454cc65..394726c 100644 --- a/benchmarking/BENCHMARKING.md +++ b/benchmarking/BENCHMARKING.md @@ -1,5 +1,5 @@ # Benchmarking DEHB -Benchmarking DEHB is crucial for ensuring consistent performance across different setups and configurations. We aim to benchmark DEHB on multiple HPOBench-benchmarks with different run setups: +Benchmarking DEHB is crucial for ensuring consistent performance across different setups and configurations. We aim to benchmark DEHB on multiple HPOBench-benchmarks and MFPBench-benchmarks with different run setups: 1. Using `dehb.run`, 2. Using the Ask & Tell interface and @@ -12,8 +12,8 @@ In the end, the results for the 3 different execution setups should be the same. Please follow the installtion guide below, to benchmark your changes. -## Installation Guide -The following guide walks you throuh on how to install hpobench and run the benchmarking script. Here, we assume that you execute the commands in your cloned DEHB repository. +## Installation Guide HPOBench +The following guide walks you throuh installing hpobench and running the benchmarking script. Here, we assume that you execute the commands in your cloned DEHB repository and you have a clean (virtual) python 3.8 environment. ### Installing HPOBench ``` git clone https://github.com/automl/HPOBench.git @@ -22,12 +22,32 @@ pip install .[ml_tabular_benchmarks] cd .. ``` ### Installing DEHB -There are some additional dependencies needed for plotting and table generation, therefore please install DEHB with the benchmarking option: +There are some additional dependencies needed for plotting and table generation, therefore please install DEHB with the benchmarking options: ``` -pip install -e .[benchmarks] +pip install -e .[benchmarking,hpobench_benchmark] ``` ### Running the Benchmarking Script -The benchmarking script is highly configurable and lets you choose between the budget types (`fevals`, `brackets` and `total_cost`), the execution setup (`run`(default), `ask_tell` and `restart`), the benchmarks used (`ml`, `nas`) and the seeds used for each benchmark run (default: [0]). +The benchmarking script is highly configurable and lets you choose between the budget types (`fevals`, `brackets` and `total_cost`), the execution setup (`run`(default), `ask_tell` and `restart`), the benchmarks used (`tab_nn`, `tab_rf`, `tab_svm`, `tab_lr`, `surrogate`, `nas`) and the seeds used for each benchmark run (default: [0]). ``` -python3.9 hpobench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks ml nas --seeds 1 2 3 4 5 --output_path logs/hpobench_benchmarking +python3.8 benchmarking/hpobench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks tab_nn --seeds 1 2 3 4 5 --output_path logs/hpobench_benchmarking +``` + +## Installation Guide MFPBench +The following guide walks you trough instaling mfpbench and running the benchmarking script. Here, we assume that you execute the commands in your cloned DEHB repository and you have a clean (virtual) python 3.8 environment. + +### Installing DEHB with MFPBench +There are some additional dependencies needed for plotting and table generation, therefore please install DEHB with the benchmarking options: +``` +pip install -e .[benchmarking,mfpbench_benchmark] +``` + +### Downloading Benchmark Data +In order to run the benchmark, first we need to download the benchmark data: +``` +python -m mfpbench download --benchmark jahs +``` +### Running the Benchmarking Script +The setup is similar as in the HPOBench section, however currently the only available benchmark is `jahs` (joint architecture and hyperparameter search). +``` +python3.8 benchmarking/mfpbench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks jahs --seeds 1 2 3 4 5 --output_path logs/mfpbench_benchmarking ``` \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index d2fb90e..c58ad91 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -68,6 +68,11 @@ hpobench_benchmark = [ "openml==0.12.2", ] +mfpbench_benchmark = [ + "typing_extensions", # Keep this in for now, until it is properly integrated in mf-prior-bench + "mf-prior-bench[jahs-bench]" +] + [tool.pytest.ini_options] testpaths = ["tests"] # path to the test directory minversion = "3.8" From 4097ab473a29ab0d7848e5747e0859f1dd663c6a Mon Sep 17 00:00:00 2001 From: Janis Fix Date: Fri, 10 May 2024 15:35:03 +0200 Subject: [PATCH 10/32] Add virtual env creation section to benchmarking script --- benchmarking/BENCHMARKING.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/benchmarking/BENCHMARKING.md b/benchmarking/BENCHMARKING.md index 394726c..9dfa1b5 100644 --- a/benchmarking/BENCHMARKING.md +++ b/benchmarking/BENCHMARKING.md @@ -13,7 +13,13 @@ In the end, the results for the 3 different execution setups should be the same. Please follow the installtion guide below, to benchmark your changes. ## Installation Guide HPOBench -The following guide walks you throuh installing hpobench and running the benchmarking script. Here, we assume that you execute the commands in your cloned DEHB repository and you have a clean (virtual) python 3.8 environment. +The following guide walks you through installing hpobench and running the benchmarking script. Here, we assume that you execute the commands in your cloned DEHB repository. +### Create Virtual Environment +Before starting, please make sure you have clean virtual environment using python 3.8 ready. The following commands walk you through on how to do this with conda. +``` +conda create --name dehb_benchmark python=3.8 +conda activate dehb_benchmark +``` ### Installing HPOBench ``` git clone https://github.com/automl/HPOBench.git From f0ef67fdb9ebb443a5effe802e8f810370eba096 Mon Sep 17 00:00:00 2001 From: Janis Fix Date: Mon, 13 May 2024 10:30:37 +0200 Subject: [PATCH 11/32] Adjust benchmarking setup --- benchmarking/BENCHMARKING.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/benchmarking/BENCHMARKING.md b/benchmarking/BENCHMARKING.md index 9dfa1b5..a3adbf0 100644 --- a/benchmarking/BENCHMARKING.md +++ b/benchmarking/BENCHMARKING.md @@ -17,8 +17,8 @@ The following guide walks you through installing hpobench and running the benchm ### Create Virtual Environment Before starting, please make sure you have clean virtual environment using python 3.8 ready. The following commands walk you through on how to do this with conda. ``` -conda create --name dehb_benchmark python=3.8 -conda activate dehb_benchmark +conda create --name dehb_hpobench python=3.8 +conda activate dehb_hpobench ``` ### Installing HPOBench ``` @@ -39,7 +39,14 @@ python3.8 benchmarking/hpobench_benchmark.py --fevals 300 --ask_tell --restart - ``` ## Installation Guide MFPBench -The following guide walks you trough instaling mfpbench and running the benchmarking script. Here, we assume that you execute the commands in your cloned DEHB repository and you have a clean (virtual) python 3.8 environment. +The following guide walks you trough instaling mfpbench and running the benchmarking script. Here, we assume that you execute the commands in your cloned DEHB repository. + +### Create Virtual Environment +Before starting, please make sure you have clean virtual environment using python 3.8 ready. The following commands walk you through on how to do this with conda. +``` +conda create --name dehb_mfpbench python=3.8 +conda activate dehb_mfpbench +``` ### Installing DEHB with MFPBench There are some additional dependencies needed for plotting and table generation, therefore please install DEHB with the benchmarking options: From 59ffbc38f1874fadf4e3a3366c90e1091e1a2bcd Mon Sep 17 00:00:00 2001 From: Bronzila Date: Wed, 15 May 2024 10:09:18 +0200 Subject: [PATCH 12/32] Fix version for MFPbench and commit for HPOBench --- benchmarking/BENCHMARKING.md | 15 ++++++++------- pyproject.toml | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/benchmarking/BENCHMARKING.md b/benchmarking/BENCHMARKING.md index 394726c..ede941a 100644 --- a/benchmarking/BENCHMARKING.md +++ b/benchmarking/BENCHMARKING.md @@ -15,20 +15,21 @@ Please follow the installtion guide below, to benchmark your changes. ## Installation Guide HPOBench The following guide walks you throuh installing hpobench and running the benchmarking script. Here, we assume that you execute the commands in your cloned DEHB repository and you have a clean (virtual) python 3.8 environment. ### Installing HPOBench -``` +```shell git clone https://github.com/automl/HPOBench.git -cd HPOBench +cd HPOBench +git checkout 47bf141 # Checkout specific commit pip install .[ml_tabular_benchmarks] cd .. ``` ### Installing DEHB There are some additional dependencies needed for plotting and table generation, therefore please install DEHB with the benchmarking options: -``` +```shell pip install -e .[benchmarking,hpobench_benchmark] ``` ### Running the Benchmarking Script The benchmarking script is highly configurable and lets you choose between the budget types (`fevals`, `brackets` and `total_cost`), the execution setup (`run`(default), `ask_tell` and `restart`), the benchmarks used (`tab_nn`, `tab_rf`, `tab_svm`, `tab_lr`, `surrogate`, `nas`) and the seeds used for each benchmark run (default: [0]). -``` +```shell python3.8 benchmarking/hpobench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks tab_nn --seeds 1 2 3 4 5 --output_path logs/hpobench_benchmarking ``` @@ -37,17 +38,17 @@ The following guide walks you trough instaling mfpbench and running the benchmar ### Installing DEHB with MFPBench There are some additional dependencies needed for plotting and table generation, therefore please install DEHB with the benchmarking options: -``` +```shell pip install -e .[benchmarking,mfpbench_benchmark] ``` ### Downloading Benchmark Data In order to run the benchmark, first we need to download the benchmark data: -``` +```shell python -m mfpbench download --benchmark jahs ``` ### Running the Benchmarking Script The setup is similar as in the HPOBench section, however currently the only available benchmark is `jahs` (joint architecture and hyperparameter search). -``` +```shell python3.8 benchmarking/mfpbench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks jahs --seeds 1 2 3 4 5 --output_path logs/mfpbench_benchmarking ``` \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index c58ad91..e1c91fb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -70,7 +70,7 @@ hpobench_benchmark = [ mfpbench_benchmark = [ "typing_extensions", # Keep this in for now, until it is properly integrated in mf-prior-bench - "mf-prior-bench[jahs-bench]" + "mf-prior-bench[jahs-bench]==1.8.1" ] [tool.pytest.ini_options] From 3b9ab0bd1e517ea68cdfd56038e931b01a459c38 Mon Sep 17 00:00:00 2001 From: Janis Fix Date: Tue, 21 May 2024 18:56:05 +0200 Subject: [PATCH 13/32] Integrate more MFPBench benchmarks + [WIP] MFPBench benchmarking setup --- benchmarking/BENCHMARKING.md | 33 ++++++++++++++++++++++++++---- benchmarking/mfpbench_benchmark.py | 20 ++++++++++-------- pyproject.toml | 6 +++++- 3 files changed, 45 insertions(+), 14 deletions(-) diff --git a/benchmarking/BENCHMARKING.md b/benchmarking/BENCHMARKING.md index c6f6e9e..54d6c79 100644 --- a/benchmarking/BENCHMARKING.md +++ b/benchmarking/BENCHMARKING.md @@ -40,19 +40,20 @@ python3.8 benchmarking/hpobench_benchmark.py --fevals 300 --ask_tell --restart - ``` ## Installation Guide MFPBench -The following guide walks you trough instaling mfpbench and running the benchmarking script. Here, we assume that you execute the commands in your cloned DEHB repository. +The following guide walks you trough instaling mfpbench and running the benchmarking script. Here, we assume that you execute the commands in your cloned DEHB repository. Depending on the choice of benchmark, different requirements have to be installed, thus we divide the setup into two sections, one for installing JAHSBench and one for the PD1 benchmark. +### JAHS benchmark ### Create Virtual Environment Before starting, please make sure you have clean virtual environment using python 3.8 ready. The following commands walk you through on how to do this with conda. ``` -conda create --name dehb_mfpbench python=3.8 -conda activate dehb_mfpbench +conda create --name dehb_jahs python=3.8 +conda activate dehb_jahs ``` ### Installing DEHB with MFPBench There are some additional dependencies needed for plotting and table generation, therefore please install DEHB with the benchmarking options: ```shell -pip install -e .[benchmarking,mfpbench_benchmark] +pip install -e .[benchmarking,jahs_benchmark] ``` ### Downloading Benchmark Data @@ -64,4 +65,28 @@ python -m mfpbench download --benchmark jahs The setup is similar as in the HPOBench section, however currently the only available benchmark is `jahs` (joint architecture and hyperparameter search). ```shell python3.8 benchmarking/mfpbench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks jahs --seeds 1 2 3 4 5 --output_path logs/mfpbench_benchmarking +``` + +### PD1 benchmark +### Create Virtual Environment +Before starting, please make sure you have clean virtual environment using python 3.8 ready. The following commands walk you through on how to do this with conda. +``` +conda create --name dehb_pd1 python=3.8 +conda activate dehb_pd1 +``` + +### Installing DEHB with MFPBench +There are some additional dependencies needed for plotting and table generation, therefore please install DEHB with the benchmarking options: +```shell +pip install -e .[benchmarking,pd1_benchmark] +``` + +### Downloading Benchmark Data +In order to run the benchmark, first we need to download the benchmark data: +```shell +python -m mfpbench download --benchmark pd1 +``` +### Running the Benchmarking Script +```shell +python3.8 benchmarking/mfpbench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks lm1b_transformer_2048 --seeds 1 2 3 4 5 --output_path logs/mfpbench_benchmarking ``` \ No newline at end of file diff --git a/benchmarking/mfpbench_benchmark.py b/benchmarking/mfpbench_benchmark.py index f521a30..02a0039 100644 --- a/benchmarking/mfpbench_benchmark.py +++ b/benchmarking/mfpbench_benchmark.py @@ -1,18 +1,18 @@ import argparse from pathlib import Path +import mfpbench import numpy as np from markdown_table_generator import generate_markdown, table_from_string_list -import mfpbench from utils import DEHBOptimizerBase, plot_incumbent_traj class DEHBOptimizerMFPBench(DEHBOptimizerBase): def _objective_function(self, config, fidelity): - res = self.benchmark.query(config, at=fidelity) + res = self.benchmark.query(config, at=self.fidelity_type(fidelity)) return { - "fitness": res["valid_acc"], - "cost": res["runtime"].value, + "fitness": res.error, + "cost": res.cost, } def _get_config_space(self, seed): @@ -23,10 +23,11 @@ def _get_fidelity_range(self, benchmark): def _get_benchmark_and_fidelities(self, benchmark_name, seed): if benchmark_name == "jahs": benchmark = mfpbench.get(name="jahs", task_id="CIFAR10", seed=seed) - fidelity_name = benchmark.fidelity_name - fidelity_type = int else: - raise ValueError(f"No benchmark '{benchmark_name}' found.") + benchmark = mfpbench.get(name=benchmark_name, seed=seed) + + fidelity_name = benchmark.fidelity_name + fidelity_type = int min_fidelity, max_fidelity = self._get_fidelity_range(benchmark) return benchmark, fidelity_name, (min_fidelity, max_fidelity), fidelity_type @@ -47,7 +48,8 @@ def input_arguments(): nargs="*", default=["jahs"], help="Benchmarks to run DEHB on.", - choices=["jahs"], + choices=["jahs", "mfh3", "mfh6", "cifar100_wideresnet_2048", "imagenet_resnet_512", + "lm1b_transformer_2048", "translatewmt_xformer_64"], ) parser.add_argument( "--eta", @@ -58,7 +60,7 @@ def input_arguments(): parser.add_argument( "--output_path", type=str, - default="./hpobench_dehb", + default="./mfpbench_dehb", help="Directory for DEHB to write logs and outputs.", ) parser.add_argument( diff --git a/pyproject.toml b/pyproject.toml index e1c91fb..1af3a8d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -68,11 +68,15 @@ hpobench_benchmark = [ "openml==0.12.2", ] -mfpbench_benchmark = [ +jahs_benchmark = [ "typing_extensions", # Keep this in for now, until it is properly integrated in mf-prior-bench "mf-prior-bench[jahs-bench]==1.8.1" ] +pd1_benchmark = [ + "mf-prior-bench[pd1]==1.8.1" +] + [tool.pytest.ini_options] testpaths = ["tests"] # path to the test directory minversion = "3.8" From 11662aaf582b7e7095606e8d3f21160a1ca30439 Mon Sep 17 00:00:00 2001 From: Janis Fix Date: Wed, 22 May 2024 16:28:39 +0200 Subject: [PATCH 14/32] Add PD1, MFH benchmarks and result table/plot generation --- benchmarking/BENCHMARKING.md | 17 +++++----- benchmarking/generate_summary.py | 51 ++++++++++++++++++++++++++++++ benchmarking/hpobench_benchmark.py | 45 +++++++++++++++----------- benchmarking/mfpbench_benchmark.py | 44 +++++++++++++++----------- benchmarking/utils.py | 43 ++++++++++++++++++------- 5 files changed, 144 insertions(+), 56 deletions(-) create mode 100644 benchmarking/generate_summary.py diff --git a/benchmarking/BENCHMARKING.md b/benchmarking/BENCHMARKING.md index 54d6c79..d887591 100644 --- a/benchmarking/BENCHMARKING.md +++ b/benchmarking/BENCHMARKING.md @@ -34,15 +34,15 @@ There are some additional dependencies needed for plotting and table generation, pip install -e .[benchmarking,hpobench_benchmark] ``` ### Running the Benchmarking Script -The benchmarking script is highly configurable and lets you choose between the budget types (`fevals`, `brackets` and `total_cost`), the execution setup (`run`(default), `ask_tell` and `restart`), the benchmarks used (`tab_nn`, `tab_rf`, `tab_svm`, `tab_lr`, `surrogate`, `nas`) and the seeds used for each benchmark run (default: [0]). +The benchmarking script is highly configurable and lets you choose between the budget types (`fevals`, `brackets` and `total_cost`), the execution setup (`run`(default), `ask_tell` and `restart`), the benchmarks used (`tab_nn`, `tab_rf`, `tab_svm`, `tab_lr`, `surrogate`, `nasbench201`) and the seeds used for each benchmark run (default: [0]). ```shell -python3.8 benchmarking/hpobench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks tab_nn --seeds 1 2 3 4 5 --output_path logs/hpobench_benchmarking +python3.8 benchmarking/hpobench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks tab_nn tab_rf tab_svm tab_lr surrogate nasbench201 --seeds 1 2 3 4 5 --output_path logs/hpobench_benchmarking ``` ## Installation Guide MFPBench -The following guide walks you trough instaling mfpbench and running the benchmarking script. Here, we assume that you execute the commands in your cloned DEHB repository. Depending on the choice of benchmark, different requirements have to be installed, thus we divide the setup into two sections, one for installing JAHSBench and one for the PD1 benchmark. +The following guide walks you trough instaling mfpbench and running the benchmarking script. Here, we assume that you execute the commands in your cloned DEHB repository. Depending on the choice of benchmark, different requirements have to be installed, which are not compatible with one another. Thus we divide the setup into two sections, one for installing the JAHS benchmark and one for the PD1 benchmark. The MFHartmann benchmarks are work with both installations. -### JAHS benchmark +## JAHS benchmark ### Create Virtual Environment Before starting, please make sure you have clean virtual environment using python 3.8 ready. The following commands walk you through on how to do this with conda. ``` @@ -62,12 +62,12 @@ In order to run the benchmark, first we need to download the benchmark data: python -m mfpbench download --benchmark jahs ``` ### Running the Benchmarking Script -The setup is similar as in the HPOBench section, however currently the only available benchmark is `jahs` (joint architecture and hyperparameter search). +The setup is similar as in the HPOBench section, however under this installation only the `jahs` (joint architecture and hyperparameter search), `mfh3` and `mfh6` benchmarks are available. ```shell -python3.8 benchmarking/mfpbench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks jahs --seeds 1 2 3 4 5 --output_path logs/mfpbench_benchmarking +python3.8 benchmarking/mfpbench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks jahs mfh3 mfh6 --seeds 1 2 3 4 5 --output_path logs/jahs_benchmarking ``` -### PD1 benchmark +## PD1 benchmark ### Create Virtual Environment Before starting, please make sure you have clean virtual environment using python 3.8 ready. The following commands walk you through on how to do this with conda. ``` @@ -87,6 +87,7 @@ In order to run the benchmark, first we need to download the benchmark data: python -m mfpbench download --benchmark pd1 ``` ### Running the Benchmarking Script +We currently support and use the PD1 benchmarks `cifar100_wideresnet_2048`, `imagenet_resnet_512`, `lm1b_transformer_2048` and `translatewmt_xformer_64`. Moreover, the `mfh3` and `mfh6` benchmarks are available. ```shell -python3.8 benchmarking/mfpbench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks lm1b_transformer_2048 --seeds 1 2 3 4 5 --output_path logs/mfpbench_benchmarking +python3.8 benchmarking/mfpbench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks cifar100_wideresnet_2048 imagenet_resnet_512 lm1b_transformer_2048 translatewmt_xformer_64 mfh3 mfh6 --seeds 1 2 3 4 5 --output_path logs/pd1_benchmarks ``` \ No newline at end of file diff --git a/benchmarking/generate_summary.py b/benchmarking/generate_summary.py new file mode 100644 index 0000000..b6b84bb --- /dev/null +++ b/benchmarking/generate_summary.py @@ -0,0 +1,51 @@ +from collections import defaultdict +from pathlib import Path + +import numpy as np +import pandas as pd +from markdown_table_generator import generate_markdown, table_from_string_list +from utils import create_plot_for_benchmark, create_table_for_benchmark + +# Read mean/std and trajectories + + +# Create table via utils +# Save table +# Plot trajectories via utils +# Save traj + +def create_table(results: dict) -> str: + md_file = "" + for benchmark in results: + md_file += f"## {benchmark}\n" + table = create_table_for_benchmark(results[benchmark]) + table = table_from_string_list(table) + md_table = generate_markdown(table) + md_file += md_table + "\n" + return md_file + +def main(): + results_dict = defaultdict(lambda: defaultdict(pd.DataFrame)) + base_result_path = Path("benchmarking/results") + for file_path in base_result_path.glob("**/traj.parquet.gzip"): + version = file_path.parts[-3] + benchmark = file_path.parts[-2] + + result_df = pd.read_parquet(file_path) + + results_dict[benchmark][version] = result_df + + # Convert defaultdict to dict + results_dict = {k: dict(v) for k, v in results_dict.items()} + + md_table = create_table(results_dict) + markdown_path = base_result_path / "benchmark_results.md" + with markdown_path.open("w") as f: + f.write(md_table) + + for benchmark, data in results_dict.items(): + create_plot_for_benchmark(data, base_result_path, benchmark) + + +if __name__ == "__main__": + main() diff --git a/benchmarking/hpobench_benchmark.py b/benchmarking/hpobench_benchmark.py index c185310..e44e587 100644 --- a/benchmarking/hpobench_benchmark.py +++ b/benchmarking/hpobench_benchmark.py @@ -2,14 +2,14 @@ from pathlib import Path import numpy as np +import pandas as pd from hpobench.benchmarks.ml.lr_benchmark import LRBenchmark from hpobench.benchmarks.ml.nn_benchmark import NNBenchmark from hpobench.benchmarks.ml.rf_benchmark import RandomForestBenchmark from hpobench.benchmarks.ml.svm_benchmark import SVMBenchmark from hpobench.benchmarks.nas.nasbench_201 import Cifar10ValidNasBench201BenchmarkOriginal from hpobench.benchmarks.surrogates.paramnet_benchmark import ParamNetReducedAdultOnStepsBenchmark -from markdown_table_generator import generate_markdown, table_from_string_list -from utils import DEHBOptimizerBase, plot_incumbent_traj +from utils import DEHBOptimizerBase class DEHBOptimizerHPOBench(DEHBOptimizerBase): @@ -52,7 +52,7 @@ def _get_benchmark_and_fidelities(self, benchmark_name, seed): benchmark = SVMBenchmark(rng=seed, task_id=31) fidelity_name = "subsample" fidelity_type = float - elif benchmark_name == "nas": + elif benchmark_name == "nasbench201": benchmark = Cifar10ValidNasBench201BenchmarkOriginal(rng=seed) fidelity_name = "epoch" fidelity_type = int @@ -82,7 +82,7 @@ def input_arguments(): nargs="*", default=["tab_nn"], help="Benchmarks to run DEHB on.", - choices=["tab_nn", "tab_lr", "tab_rf", "tab_svm", "surrogate", "nas"], + choices=["tab_nn", "tab_lr", "tab_rf", "tab_svm", "surrogate", "nasbench201"], ) parser.add_argument( "--eta", @@ -147,10 +147,8 @@ def main(): "output_path": args.output_path, "n_workers": args.n_workers, } - scores = {} - table = [["Benchmark", "Score (mean ± std)"]] + results = {} for benchmark_name in args.benchmarks: - scores[benchmark_name] = [] trajectories = [] for seed in args.seeds: print(f"Running benchmark {benchmark_name} on seed {seed}") @@ -163,22 +161,31 @@ def main(): use_ask_tell=args.ask_tell, use_restart=args.restart, benchmark_name=benchmark_name, - verbose=args.verbose + verbose=args.verbose, ) traj = dehb_optimizer.run() trajectories.append(traj) - _, inc_value = dehb_optimizer.dehb.get_incumbents() - scores[benchmark_name].append(inc_value) - plot_incumbent_traj(trajectories, Path(args.output_path) / f"{benchmark_name}_traj.png", benchmark_name) - mean_score = np.mean(scores[benchmark_name]) - std_score = np.std(scores[benchmark_name]) - table.append([benchmark_name, f"{mean_score:.3e} ± {std_score:.3e}"]) - markdown_path = Path(args.output_path) / "benchmark_results.md" - md_table = table_from_string_list(table) - markdown = generate_markdown(md_table) - with markdown_path.open("w") as f: - f.write(markdown) + # Explicitly delete dehb_optimizer to free space + del dehb_optimizer + + trajectories = np.array(trajectories) + mean_trajectory = np.mean(trajectories, axis=0) + std_trajectory = np.std(trajectories, axis=0) + + results[benchmark_name] = { + "mean_trajectory": mean_trajectory, + "std_trajectory": std_trajectory, + } + # Save benchmarking results to disc + results_path = Path("benchmarking", "results", "current") + for benchmark_name, result in results.items(): + base_path = results_path / benchmark_name + base_path.mkdir(parents=True, exist_ok=True) + + traj_save_path = base_path / "traj.parquet.gzip" + df_traj = pd.DataFrame.from_dict(result) + df_traj.to_parquet(traj_save_path, compression="gzip") if __name__ == "__main__": main() diff --git a/benchmarking/mfpbench_benchmark.py b/benchmarking/mfpbench_benchmark.py index 02a0039..6b10a45 100644 --- a/benchmarking/mfpbench_benchmark.py +++ b/benchmarking/mfpbench_benchmark.py @@ -3,8 +3,8 @@ import mfpbench import numpy as np -from markdown_table_generator import generate_markdown, table_from_string_list -from utils import DEHBOptimizerBase, plot_incumbent_traj +import pandas as pd +from utils import DEHBOptimizerBase class DEHBOptimizerMFPBench(DEHBOptimizerBase): @@ -33,7 +33,7 @@ def _get_benchmark_and_fidelities(self, benchmark_name, seed): return benchmark, fidelity_name, (min_fidelity, max_fidelity), fidelity_type def input_arguments(): - parser = argparse.ArgumentParser(description="Optimizing HPOBench using DEHB.") + parser = argparse.ArgumentParser(description="Optimizing MFPBench using DEHB.") parser.add_argument( "--seeds", type=int, @@ -114,10 +114,8 @@ def main(): "output_path": args.output_path, "n_workers": args.n_workers, } - scores = {} - table = [["Benchmark", "Score (mean ± std)"]] + results = {} for benchmark_name in args.benchmarks: - scores[benchmark_name] = [] trajectories = [] for seed in args.seeds: print(f"Running benchmark {benchmark_name} on seed {seed}") @@ -130,22 +128,32 @@ def main(): use_ask_tell=args.ask_tell, use_restart=args.restart, benchmark_name=benchmark_name, - verbose=args.verbose + verbose=args.verbose, ) traj = dehb_optimizer.run() trajectories.append(traj) - _, inc_value = dehb_optimizer.dehb.get_incumbents() - scores[benchmark_name].append(inc_value) - plot_incumbent_traj(trajectories, Path(args.output_path) / f"{benchmark_name}_traj.png", benchmark_name) - mean_score = np.mean(scores[benchmark_name]) - std_score = np.std(scores[benchmark_name]) - table.append([benchmark_name, f"{mean_score:.3e} ± {std_score:.3e}"]) - markdown_path = Path(args.output_path) / "benchmark_results.md" - md_table = table_from_string_list(table) - markdown = generate_markdown(md_table) - with markdown_path.open("w") as f: - f.write(markdown) + # Explicitly delete dehb_optimizer to free space + del dehb_optimizer + + trajectories = np.array(trajectories) + mean_trajectory = np.mean(trajectories, axis=0) + std_trajectory = np.std(trajectories, axis=0) + + results[benchmark_name] = { + "mean_trajectory": mean_trajectory, + "std_trajectory": std_trajectory, + } + # Save benchmarking results to disc + results_path = Path("benchmarking", "results", "current") + for benchmark_name, result in results.items(): + base_path = results_path / benchmark_name + base_path.mkdir(parents=True, exist_ok=True) + + traj_save_path = base_path / "traj.parquet.gzip" + df_traj = pd.DataFrame.from_dict(result) + df_traj.to_parquet(traj_save_path, compression="gzip") + if __name__ == "__main__": main() diff --git a/benchmarking/utils.py b/benchmarking/utils.py index 42cc8b6..aeef0fb 100644 --- a/benchmarking/utils.py +++ b/benchmarking/utils.py @@ -6,22 +6,43 @@ from dehb import DEHB -def plot_incumbent_traj(trajectories: list, output_path: Path, benchmark_name: str): +def create_plot_for_benchmark(results: dict, output_path: Path, + benchmark_name: str): plt.clf() - trajectories = np.array(trajectories) - traj_length = len(trajectories[0]) - mean_trajectory = np.mean(trajectories, axis=0) - std_trajectory = np.std(trajectories, axis=0) - x_fevals = np.arange(traj_length) - plt.plot(x_fevals, mean_trajectory, label="Mean incumbent trajectory") - plt.fill_between(x_fevals, mean_trajectory - std_trajectory, mean_trajectory + std_trajectory, alpha=0.3) + for version, data in results.items(): + mean_trajectory = data["mean_trajectory"] + std_trajectory = data["std_trajectory"] + traj_length = len(mean_trajectory) + x_fevals = np.arange(traj_length) + plt.plot(x_fevals, mean_trajectory, label=version) + plt.fill_between(x_fevals, mean_trajectory - std_trajectory, mean_trajectory + std_trajectory, + alpha=0.3) plt.xlabel("Function evaluation") plt.ylabel("Incumbent score") - plt.title(f"Mean and Standard Deviation of Incumbent Trajectories on {benchmark_name}") + plt.title(f"Incumbent Trajectories on {benchmark_name}") plt.legend() plt.grid(True, which="both", linestyle="--", linewidth=0.5) - plt.savefig(output_path) + plt.savefig(output_path / f"{benchmark_name}_traj.png") + +def create_table_for_benchmark(results: dict) -> list: + table = [] + header = ["DEHB Version"] + for budget in [.2, .4, .6, .8, 1]: + arbitrary_key = list(results.keys())[0] + traj_length = len(results[arbitrary_key]["mean_trajectory"]) + header.append(str(int(budget * traj_length))) + table.append(header) + for version in results: + row = [version] + mean_traj = results[version]["mean_trajectory"] + std_traj = results[version]["std_trajectory"] + for budget in [.2, .4, .6, .8, 1]: + traj_idx = int(budget * len(mean_traj)) - 1 + row.append(f"{mean_traj[traj_idx]:.3e} ± {std_traj[traj_idx]:.3e}") + table.append(row) + + return table class DEHBOptimizerBase(): def __init__(self, dehb_params, fevals, brackets, walltime, use_ask_tell, use_restart, @@ -49,7 +70,7 @@ def _get_benchmark_and_fidelities(self, benchmark_name, seed): raise NotImplementedError() def _get_config_space(self, seed): - # Implement int subclass + # Implement in subclass raise NotImplementedError() def _objective_function(self, config, fidelity): From f240ef0f004673b8af0eaae227f6f28995eda88a Mon Sep 17 00:00:00 2001 From: Bronzila Date: Thu, 23 May 2024 09:57:09 +0200 Subject: [PATCH 15/32] bump up mfpbench version --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 1af3a8d..9467f4b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -70,11 +70,11 @@ hpobench_benchmark = [ jahs_benchmark = [ "typing_extensions", # Keep this in for now, until it is properly integrated in mf-prior-bench - "mf-prior-bench[jahs-bench]==1.8.1" + "mf-prior-bench[jahs-bench]==1.9.0" ] pd1_benchmark = [ - "mf-prior-bench[pd1]==1.8.1" + "mf-prior-bench[pd1]==1.9.0" ] [tool.pytest.ini_options] From ef88faa78e8b6a9fbe74b465f66db8f5fdf26d1e Mon Sep 17 00:00:00 2001 From: Janis Fix Date: Tue, 28 May 2024 23:50:19 +0200 Subject: [PATCH 16/32] Make summary generation parametrizable --- benchmarking/generate_summary.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/benchmarking/generate_summary.py b/benchmarking/generate_summary.py index b6b84bb..9ca8d9f 100644 --- a/benchmarking/generate_summary.py +++ b/benchmarking/generate_summary.py @@ -1,18 +1,23 @@ +import argparse from collections import defaultdict from pathlib import Path -import numpy as np import pandas as pd from markdown_table_generator import generate_markdown, table_from_string_list from utils import create_plot_for_benchmark, create_table_for_benchmark -# Read mean/std and trajectories - -# Create table via utils -# Save table -# Plot trajectories via utils -# Save traj +def input_arguments(): + parser = argparse.ArgumentParser(description="Optimizing HPOBench using DEHB.") + parser.add_argument( + "--benchmarks", + type=str, + nargs="*", + default=["tab_nn"], + help="Benchmarks to run DEHB on.", + choices=["tab_nn", "tab_lr", "tab_rf", "tab_svm", "surrogate", "nasbench201"], + ) + return parser.parse_args() def create_table(results: dict) -> str: md_file = "" @@ -25,15 +30,17 @@ def create_table(results: dict) -> str: return md_file def main(): + args = input_arguments() results_dict = defaultdict(lambda: defaultdict(pd.DataFrame)) base_result_path = Path("benchmarking/results") for file_path in base_result_path.glob("**/traj.parquet.gzip"): version = file_path.parts[-3] benchmark = file_path.parts[-2] - result_df = pd.read_parquet(file_path) + if benchmark in args.benchmarks: + result_df = pd.read_parquet(file_path) - results_dict[benchmark][version] = result_df + results_dict[benchmark][version] = result_df # Convert defaultdict to dict results_dict = {k: dict(v) for k, v in results_dict.items()} @@ -48,4 +55,5 @@ def main(): if __name__ == "__main__": + args = input_arguments() main() From 8e510ebf6bc334fbe8db13b65c3a9f37a6238a2e Mon Sep 17 00:00:00 2001 From: Bronzila Date: Thu, 30 May 2024 11:47:01 +0200 Subject: [PATCH 17/32] Adjust seeding and add CountingOnes benchmark --- benchmarking/counting_ones/counting_ones.py | 193 ++++++++++++++++++++ benchmarking/countingones_benchmark.py | 179 ++++++++++++++++++ benchmarking/generate_summary.py | 4 +- benchmarking/hpobench_benchmark.py | 21 ++- benchmarking/mfpbench_benchmark.py | 21 ++- 5 files changed, 405 insertions(+), 13 deletions(-) create mode 100644 benchmarking/counting_ones/counting_ones.py create mode 100644 benchmarking/countingones_benchmark.py diff --git a/benchmarking/counting_ones/counting_ones.py b/benchmarking/counting_ones/counting_ones.py new file mode 100644 index 0000000..df333ea --- /dev/null +++ b/benchmarking/counting_ones/counting_ones.py @@ -0,0 +1,193 @@ +### NOTE +### This code is used from HPOlib1.5 (https://github.com/automl/HPOlib1.5). Since HPOlib1.5 is not a +### proper package and HPOBench does not feature the CountingOnes benchmark, we include it this way. +### + +import abc + +import ConfigSpace as CS +import numpy as np + + +class AbstractBenchmark(metaclass=abc.ABCMeta): + + def __init__(self, rng=None): + """Interface for benchmarks. + + A benchmark contains of two building blocks, the target function and + the configuration space. Furthermore it can contain additional + benchmark-specific information such as the location and the function + value of the global optima. New benchmarks should be derived from + this base class or one of its child classes. + """ + + self.rng = np.random.default_rng(rng) + self.configuration_space = self.get_configuration_space() + + @abc.abstractmethod + def objective_function(self, configuration, **kwargs): + """Objective function. + + Override this function to provide your benchmark function. This + function will be called by one of the evaluate functions. For + flexibility you have to return a dictionary with the only mandatory + key being `function_value`, the objective function value for the + configuration which was passed. By convention, all benchmarks are + minimization problems. + + Parameters + ---------- + configuration : dict-like + + Returns + ------- + dict + Must contain at least the key `function_value`. + """ + pass + + @abc.abstractmethod + def objective_function_test(self, configuration, **kwargs): + """If there is a different objective function for offline testing, e.g + testing a machine learning on a hold extra test set instead + on a validation set override this function here. + + Parameters + ---------- + configuration : dict-like + + Returns + ------- + dict + Must contain at least the key `function_value`. + """ + pass + + def _check_configuration(foo): + """ Decorator to enable checking the input configuration + + Uses the check_configuration of the ConfigSpace class to ensure + that all specified values are valid, and no conditionals are violated + + Can be combined with the _configuration_as_array decorator. + """ + def wrapper(self, configuration, **kwargs): + if not isinstance(configuration, CS.Configuration): + try: + squirtle = {k: configuration[i] for (i,k) in enumerate(self.configuration_space)} + wartortle = CS.Configuration(self.configuration_space, squirtle) + except Exception as e: + raise Exception('Error during the conversion of the provided ' + 'into a ConfigSpace.Configuration object') from e + else: + wartortle = configuration + self.configuration_space.check_configuration(wartortle) + return(foo(self, configuration, **kwargs)) + return(wrapper) + + def _configuration_as_array(foo, data_type=np.float64): + """ Decorator to allow the first input argument to 'objective_function' to be an array. + + For all continuous benchmarks it is often required that the input to the benchmark + can be a (NumPy) array. By adding this to the objective function, both inputs types, + ConfigSpace.Configuration and array, are possible. + + Can be combined with the _check_configuration decorator. + """ + def wrapper(self, configuration, **kwargs): + if isinstance(configuration, ConfigSpace.Configuration): + blastoise = np.array( + [ configuration[k] for k in configuration], + dtype=data_type + ) + + else: + blastoise = configuration + return( foo(self, blastoise, **kwargs) ) + return(wrapper) + + def __call__ (self, configuration, **kwargs): + """ Provides interface to use, e.g., SciPy optimizers """ + return(self.objective_function(configuration, **kwargs)['function_value']) + + + def test(self, n_runs=5, *args, **kwargs): + """ Draws some random configuration and call objective_fucntion(_test). + + Parameters + ---------- + n_runs : int + number of random configurations to draw and evaluate + """ + train_rvals = [] + test_rvals = [] + + for _ in range(n_runs): + configuration = self.configuration_space.sample_configuration() + train_rvals.append(self.objective_function( + configuration, *args, **kwargs)) + test_rvals.append(self.objective_function_test( + configuration, *args, **kwargs)) + + return train_rvals, test_rvals + + @staticmethod + @abc.abstractmethod + def get_configuration_space(): + """ Defines the configuration space for each benchmark. + + Returns + ------- + ConfigSpace.ConfigurationSpace + A valid configuration space for the benchmark's parameters + """ + raise NotImplementedError() + + @staticmethod + @abc.abstractmethod + def get_meta_information(): + """ Provides some meta information about the benchmark. + + Returns + ------- + dict + some human-readable information + + """ + raise NotImplementedError() + +class CountingOnes(AbstractBenchmark): + + @AbstractBenchmark._check_configuration + def objective_function(self, config, budget=100, **kwargs): + + y = 0 + for h in config: + if 'float' in h: + samples = np.random.binomial(1, config[h], int(budget)) + y += np.mean(samples) + else: + y += config[h] + + return {'function_value': -y} + + def objective_function_test(self, x, **kwargs): + return self.objective_function(x) + + + @AbstractBenchmark._check_configuration + def objective_function_test(self, config, **kwargs): + return {'function_value': -np.sum(config.get_array())} + + @staticmethod + def get_configuration_space(n_categorical=1, n_continuous=1, seed=0): + cs = CS.ConfigurationSpace(seed=seed) + for i in range(n_categorical): + cs.add_hyperparameter(CS.CategoricalHyperparameter("cat_%d" % i, [0, 1])) + for i in range(n_continuous): + cs.add_hyperparameter(CS.UniformFloatHyperparameter('float_%d' % i, lower=0, upper=1)) + return cs + + @staticmethod + def get_meta_information(): + return {'name': 'Counting Ones'} \ No newline at end of file diff --git a/benchmarking/countingones_benchmark.py b/benchmarking/countingones_benchmark.py new file mode 100644 index 0000000..5d147e3 --- /dev/null +++ b/benchmarking/countingones_benchmark.py @@ -0,0 +1,179 @@ +import argparse +from pathlib import Path + +import numpy as np +import pandas as pd +from counting_ones.counting_ones import CountingOnes +from utils import DEHBOptimizerBase + + +class DEHBOptimizerCountingOnes(DEHBOptimizerBase): + def __init__(self, dehb_params, fevals, brackets, walltime, use_ask_tell, use_restart, + benchmark_name, verbose, n_continuous, n_categorical) -> None: + self.n_continuous = n_continuous + self.n_categorical = n_categorical + super().__init__(dehb_params=dehb_params, fevals=fevals, brackets=brackets, + walltime=walltime, use_ask_tell=use_ask_tell, use_restart=use_restart, + benchmark_name=benchmark_name, verbose=verbose) + + def _objective_function(self, config, fidelity): + res = self.benchmark.objective_function(config, + budget=self.fidelity_type(fidelity)) + return { + "fitness": res["function_value"], + "cost": fidelity, + "info": {"fidelity": fidelity}, + } + + def _get_config_space(self, seed): + return self.benchmark.get_configuration_space(n_continuous=self.n_continuous, + n_categorical=self.n_categorical, + seed=seed) + + def _get_benchmark_and_fidelities(self, benchmark_name, seed): + self.benchmark = CountingOnes() + cs = self._get_config_space(seed) + dimensions = len(cs.get_hyperparameters()) + min_fidelity = 576 / dimensions + max_fidelity = 93312 / dimensions + return self.benchmark, None, (min_fidelity, max_fidelity), int + +def input_arguments(): + parser = argparse.ArgumentParser(description="Optimizing HPOBench using DEHB.") + parser.add_argument( + "--seed", + type=int, + default=0, + help="Seed used to create random seeds for experiments to run. Defaults to 0.", + ) + parser.add_argument( + "--n_seeds", + type=int, + default=5, + help="Number of random seeds to run. Defaults to 5.", + ) + parser.add_argument( + "--n_continuous", + type=int, + default=100, + help="Number of continuous hyperparameters. Defaults to 100.", + ) + parser.add_argument( + "--n_categorical", + type=int, + default=100, + help="Number of categorical hyperparameters. Defaults to 100.", + ) + parser.add_argument( + "--eta", + type=int, + default=3, + help="Parameter for Hyperband controlling early stopping aggressiveness", + ) + parser.add_argument( + "--output_path", + type=str, + default="./countingones", + help="Directory for DEHB to write logs and outputs.", + ) + parser.add_argument( + "--n_workers", + type=int, + default=1, + help="Number of CPU workers for DEHB to distribute function evaluations to.", + ), + parser.add_argument( + "--verbose", + action="store_true", + default=True, + help="Decides verbosity of DEHB optimization.", + ) + parser.add_argument( + "--brackets", + type=int, + default=None, + help="Total number of brackets as budget to run DEHB.", + ) + parser.add_argument( + "--fevals", + type=int, + default=None, + help="Total number of fevals as budget to run DEHB.", + ) + parser.add_argument( + "--walltime", + type=int, + default=None, + help="Maxmimum walltime budget to run DEHB.", + ) + parser.add_argument( + "--ask_tell", + action="store_true", + default=False, + help="Use the ask and tell interface.", + ) + parser.add_argument( + "--restart", + action="store_true", + default=False, + help="Restart the training and run again for the same budget.", + ) + return parser.parse_args() + +def main(): + args = input_arguments() + dehb_params = { + "eta": args.eta, + "output_path": args.output_path, + "n_workers": args.n_workers, + } + + # Create random seeds from original seed + rng = np.random.default_rng(args.seed) + seeds = rng.integers(0, 2**32 - 1, size=args.n_seeds) + + benchmark_name = "counting_ones" + results = {} + trajectories = [] + for seed in seeds: + print(f"Running benchmark {benchmark_name} on seed {seed}") + dehb_params["seed"] = seed + dehb_optimizer = DEHBOptimizerCountingOnes( + dehb_params=dehb_params, + fevals=args.fevals, + brackets=args.brackets, + walltime=args.walltime, + use_ask_tell=args.ask_tell, + use_restart=args.restart, + benchmark_name=benchmark_name, + verbose=args.verbose, + n_continuous=args.n_continuous, + n_categorical=args.n_categorical, + ) + traj = dehb_optimizer.run() + trajectories.append(traj) + + # Explicitly delete dehb_optimizer to free space + del dehb_optimizer + + trajectories = np.array(trajectories) + # Calculate normalized regret + mean_trajectory = np.mean(trajectories, axis=0) / (args.n_continuous + args.n_categorical) + std_trajectory = np.std(trajectories, axis=0) + + results[benchmark_name] = { + "mean_trajectory": mean_trajectory, + "std_trajectory": std_trajectory, + } + # Save benchmarking results to disc + results_path = Path("benchmarking", "results", "current") + for benchmark_name, result in results.items(): + base_path = results_path / benchmark_name + base_path.mkdir(parents=True, exist_ok=True) + + traj_save_path = base_path / "traj.parquet.gzip" + df_traj = pd.DataFrame.from_dict(result) + df_traj.to_parquet(traj_save_path, compression="gzip") + +if __name__ == "__main__": + main() diff --git a/benchmarking/generate_summary.py b/benchmarking/generate_summary.py index 9ca8d9f..54c0a8b 100644 --- a/benchmarking/generate_summary.py +++ b/benchmarking/generate_summary.py @@ -15,7 +15,9 @@ def input_arguments(): nargs="*", default=["tab_nn"], help="Benchmarks to run DEHB on.", - choices=["tab_nn", "tab_lr", "tab_rf", "tab_svm", "surrogate", "nasbench201"], + choices=["tab_nn", "tab_lr", "tab_rf", "tab_svm", "surrogate", "nasbench201", + "jahs", "mfh3", "mfh6", "cifar100_wideresnet_2048", "imagenet_resnet_512", + "lm1b_transformer_2048", "translatewmt_xformer_64", "counting_ones"], ) return parser.parse_args() diff --git a/benchmarking/hpobench_benchmark.py b/benchmarking/hpobench_benchmark.py index e44e587..4c92739 100644 --- a/benchmarking/hpobench_benchmark.py +++ b/benchmarking/hpobench_benchmark.py @@ -69,12 +69,16 @@ def _get_benchmark_and_fidelities(self, benchmark_name, seed): def input_arguments(): parser = argparse.ArgumentParser(description="Optimizing HPOBench using DEHB.") parser.add_argument( - "--seeds", + "--seed", type=int, - nargs="*", - default=[1], - metavar="S", - help="Random seeds to benchmark DEHB on (default: 1)", + default=0, + help="Seed used to create random seeds for experiments to run. Defaults to 0.", + ) + parser.add_argument( + "--n_seeds", + type=int, + default=5, + help="Number of random seeds to run. Defaults to 5.", ) parser.add_argument( "--benchmarks", @@ -147,10 +151,15 @@ def main(): "output_path": args.output_path, "n_workers": args.n_workers, } + + # Create random seeds from original seed + rng = np.random.default_rng(args.seed) + seeds = rng.integers(0, 2**32 - 1, size=args.n_seeds) + results = {} for benchmark_name in args.benchmarks: trajectories = [] - for seed in args.seeds: + for seed in seeds: print(f"Running benchmark {benchmark_name} on seed {seed}") dehb_params["seed"] = seed dehb_optimizer = DEHBOptimizerHPOBench( diff --git a/benchmarking/mfpbench_benchmark.py b/benchmarking/mfpbench_benchmark.py index 6b10a45..33786d2 100644 --- a/benchmarking/mfpbench_benchmark.py +++ b/benchmarking/mfpbench_benchmark.py @@ -35,12 +35,16 @@ def _get_benchmark_and_fidelities(self, benchmark_name, seed): def input_arguments(): parser = argparse.ArgumentParser(description="Optimizing MFPBench using DEHB.") parser.add_argument( - "--seeds", + "--seed", type=int, - nargs="*", - default=[1], - metavar="S", - help="Random seeds to benchmark DEHB on (default: 1)", + default=0, + help="Seed used to create random seeds for experiments to run. Defaults to 0.", + ) + parser.add_argument( + "--n_seeds", + type=int, + default=5, + help="Number of random seeds to run. Defaults to 5.", ) parser.add_argument( "--benchmarks", @@ -114,10 +118,15 @@ def main(): "output_path": args.output_path, "n_workers": args.n_workers, } + + # Create random seeds from original seed + rng = np.random.default_rng(args.seed) + seeds = rng.integers(0, 2**32 - 1, size=args.n_seeds) + results = {} for benchmark_name in args.benchmarks: trajectories = [] - for seed in args.seeds: + for seed in seeds: print(f"Running benchmark {benchmark_name} on seed {seed}") dehb_params["seed"] = seed dehb_optimizer = DEHBOptimizerMFPBench( From c00946bd9a343c62b49dd82db04ecde9f8c022fa Mon Sep 17 00:00:00 2001 From: Janis Fix Date: Fri, 31 May 2024 21:11:23 +0200 Subject: [PATCH 18/32] Add version sorting for result table --- benchmarking/utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/benchmarking/utils.py b/benchmarking/utils.py index aeef0fb..88931a2 100644 --- a/benchmarking/utils.py +++ b/benchmarking/utils.py @@ -33,6 +33,7 @@ def create_table_for_benchmark(results: dict) -> list: traj_length = len(results[arbitrary_key]["mean_trajectory"]) header.append(str(int(budget * traj_length))) table.append(header) + results = dict(sorted(results.items())) for version in results: row = [version] mean_traj = results[version]["mean_trajectory"] From 6ece84f3aaa98fa7db2fa4f1636c77afd54ff9e2 Mon Sep 17 00:00:00 2001 From: Janis Fix Date: Wed, 5 Jun 2024 13:10:52 +0200 Subject: [PATCH 19/32] Add benchmarking script for cluster --- benchmarking/BENCHMARKING.md | 18 +++++++---- benchmarking/benchmarking.sh | 51 ++++++++++++++++++++++++++++++++ benchmarking/generate_summary.py | 4 ++- 3 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 benchmarking/benchmarking.sh diff --git a/benchmarking/BENCHMARKING.md b/benchmarking/BENCHMARKING.md index d887591..e7a02ef 100644 --- a/benchmarking/BENCHMARKING.md +++ b/benchmarking/BENCHMARKING.md @@ -36,13 +36,13 @@ pip install -e .[benchmarking,hpobench_benchmark] ### Running the Benchmarking Script The benchmarking script is highly configurable and lets you choose between the budget types (`fevals`, `brackets` and `total_cost`), the execution setup (`run`(default), `ask_tell` and `restart`), the benchmarks used (`tab_nn`, `tab_rf`, `tab_svm`, `tab_lr`, `surrogate`, `nasbench201`) and the seeds used for each benchmark run (default: [0]). ```shell -python3.8 benchmarking/hpobench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks tab_nn tab_rf tab_svm tab_lr surrogate nasbench201 --seeds 1 2 3 4 5 --output_path logs/hpobench_benchmarking +python3.8 benchmarking/hpobench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks tab_nn tab_rf tab_svm tab_lr surrogate nasbench201 --seed 0 --n_seeds 10 --output_path logs/hpobench_benchmarking ``` ## Installation Guide MFPBench The following guide walks you trough instaling mfpbench and running the benchmarking script. Here, we assume that you execute the commands in your cloned DEHB repository. Depending on the choice of benchmark, different requirements have to be installed, which are not compatible with one another. Thus we divide the setup into two sections, one for installing the JAHS benchmark and one for the PD1 benchmark. The MFHartmann benchmarks are work with both installations. -## JAHS benchmark +## JAHS Benchmark ### Create Virtual Environment Before starting, please make sure you have clean virtual environment using python 3.8 ready. The following commands walk you through on how to do this with conda. ``` @@ -64,10 +64,10 @@ python -m mfpbench download --benchmark jahs ### Running the Benchmarking Script The setup is similar as in the HPOBench section, however under this installation only the `jahs` (joint architecture and hyperparameter search), `mfh3` and `mfh6` benchmarks are available. ```shell -python3.8 benchmarking/mfpbench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks jahs mfh3 mfh6 --seeds 1 2 3 4 5 --output_path logs/jahs_benchmarking +python3.8 benchmarking/mfpbench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks jahs mfh3 mfh6 --seed 0 --n_seeds 10 --output_path logs/jahs_benchmarking ``` -## PD1 benchmark +## PD1 Benchmark ### Create Virtual Environment Before starting, please make sure you have clean virtual environment using python 3.8 ready. The following commands walk you through on how to do this with conda. ``` @@ -89,5 +89,13 @@ python -m mfpbench download --benchmark pd1 ### Running the Benchmarking Script We currently support and use the PD1 benchmarks `cifar100_wideresnet_2048`, `imagenet_resnet_512`, `lm1b_transformer_2048` and `translatewmt_xformer_64`. Moreover, the `mfh3` and `mfh6` benchmarks are available. ```shell -python3.8 benchmarking/mfpbench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks cifar100_wideresnet_2048 imagenet_resnet_512 lm1b_transformer_2048 translatewmt_xformer_64 mfh3 mfh6 --seeds 1 2 3 4 5 --output_path logs/pd1_benchmarks +python3.8 benchmarking/mfpbench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks cifar100_wideresnet_2048 imagenet_resnet_512 lm1b_transformer_2048 translatewmt_xformer_64 mfh3 mfh6 --seed 0 --n_seeds 10 --output_path logs/pd1_benchmarks +``` + +## CountingOnes Benchmark +The CountingOnes benchmark is a synthetical benchmark and only depends on numpy, thus it can be used directly without any special setup. + +### Running the Benchmarking Script +```shell +python benchmarking/countingones_benchmark.py --seed 0 --n_seeds 10 --fevals 300 --output_path logs/countingones --n_continuous 50 --n_categorical 50 ``` \ No newline at end of file diff --git a/benchmarking/benchmarking.sh b/benchmarking/benchmarking.sh new file mode 100644 index 0000000..5b3cc67 --- /dev/null +++ b/benchmarking/benchmarking.sh @@ -0,0 +1,51 @@ +#!/bin/bash +#SBATCH -p +#SBATCH -o logs/%A[%a].%N.out # STDOUT (the folder log has to exist) %A will be replaced by the SLURM_ARRAY_JOB_ID value +#SBATCH -e logs/%A[%a].%N.err # STDERR (the folder log has to exist) %A will be replaced by the SLURM_ARRAY_JOB_ID value +#SBATCH -J DEHB_benchmarking # sets the job name. +#SBATCH -a 1-4 # array size +#SBATCH -t 0-10:00:00 +#SBATCH --mem 16GB + +BUDGET=300 + +# Print some information about the job to STDOUT +echo "Workingdir: $(pwd)"; +echo "Started at $(date)"; +echo "Benchmarking DEHB on multiple benchmarks"; +echo "Running job $SLURM_JOB_NAME using $SLURM_JOB_CPUS_PER_NODE cpus per node with given JID $SLURM_JOB_ID on queue $SLURM_JOB_PARTITION"; + + +if [ 1 -eq $SLURM_ARRAY_TASK_ID ] +then + source activate dehb_mfp_pd1 + + python benchmarking/mfpbench_benchmark.py --seed 0 --n_seeds 10 --fevals $BUDGET --benchmarks mfh3 mfh6 cifar100_wideresnet_2048 imagenet_resnet_512 lm1b_transformer_2048 translatewmt_xformer_64 --output_path logs/pd1 + + python generate_summary.py +elif [ 2 -eq $SLURM_ARRAY_TASK_ID ] +then + source activate dehb_mfp_jahs + + python benchmarking/mfpbench_benchmark.py --seed 0 --n_seeds 10 --fevals $BUDGET --benchmarks jahs --output_path logs/jahs + + python generate_summary.py +elif [ 3 -eq $SLURM_ARRAY_TASK_ID ] +then + source activate dehb_hpo + + python benchmarking/hpobench_benchmark.py --seed 0 --n_seeds 10 --fevals $BUDGET --benchmarks tab_nn tab_rf tab_svm tab_lr surrogate nasbench201 --output_path logs/hpob + + python generate_summary.py +elif [ 4 -eq $SLURM_ARRAY_TASK_ID ] +then + source activate dehb_mfp_pd1 # CountingOnes works with any dependencies, since it is only dependent on numpy + + python benchmarking/countingones_benchmark.py --seed 0 --n_seeds 10 --fevals $BUDGET --output_path logs/countingones --n_continuous 50 --n_categorical 50 + + python generate_summary.py +fi + +# Print some Information about the end-time to STDOUT +echo "DONE"; +echo "Finished at $(date)"; diff --git a/benchmarking/generate_summary.py b/benchmarking/generate_summary.py index 54c0a8b..e432479 100644 --- a/benchmarking/generate_summary.py +++ b/benchmarking/generate_summary.py @@ -13,7 +13,9 @@ def input_arguments(): "--benchmarks", type=str, nargs="*", - default=["tab_nn"], + default=["tab_nn", "tab_lr", "tab_rf", "tab_svm", "surrogate", "nasbench201", + "jahs", "mfh3", "mfh6", "cifar100_wideresnet_2048", "imagenet_resnet_512", + "lm1b_transformer_2048", "translatewmt_xformer_64", "counting_ones"], help="Benchmarks to run DEHB on.", choices=["tab_nn", "tab_lr", "tab_rf", "tab_svm", "surrogate", "nasbench201", "jahs", "mfh3", "mfh6", "cifar100_wideresnet_2048", "imagenet_resnet_512", From 21d863307e9fa1361bf8d12fdd287256f2bdab84 Mon Sep 17 00:00:00 2001 From: Janis Fix Date: Wed, 5 Jun 2024 13:18:17 +0200 Subject: [PATCH 20/32] Adjust script to fit benchmarking doc names --- benchmarking/BENCHMARKING.md | 48 +++++++++++++++++++++++++++++++----- benchmarking/benchmarking.sh | 6 ++--- 2 files changed, 45 insertions(+), 9 deletions(-) diff --git a/benchmarking/BENCHMARKING.md b/benchmarking/BENCHMARKING.md index e7a02ef..2b30935 100644 --- a/benchmarking/BENCHMARKING.md +++ b/benchmarking/BENCHMARKING.md @@ -1,4 +1,5 @@ # Benchmarking DEHB + Benchmarking DEHB is crucial for ensuring consistent performance across different setups and configurations. We aim to benchmark DEHB on multiple HPOBench-benchmarks and MFPBench-benchmarks with different run setups: 1. Using `dehb.run`, @@ -13,14 +14,20 @@ In the end, the results for the 3 different execution setups should be the same. Please follow the installtion guide below, to benchmark your changes. ## Installation Guide HPOBench + The following guide walks you through installing hpobench and running the benchmarking script. Here, we assume that you execute the commands in your cloned DEHB repository. + ### Create Virtual Environment + Before starting, please make sure you have clean virtual environment using python 3.8 ready. The following commands walk you through on how to do this with conda. -``` -conda create --name dehb_hpobench python=3.8 + +```shell +conda create --name dehb_hpo python=3.8 conda activate dehb_hpobench ``` + ### Installing HPOBench + ```shell git clone https://github.com/automl/HPOBench.git cd HPOBench @@ -28,74 +35,103 @@ git checkout 47bf141 # Checkout specific commit pip install .[ml_tabular_benchmarks] cd .. ``` + ### Installing DEHB + There are some additional dependencies needed for plotting and table generation, therefore please install DEHB with the benchmarking options: + ```shell pip install -e .[benchmarking,hpobench_benchmark] ``` + ### Running the Benchmarking Script -The benchmarking script is highly configurable and lets you choose between the budget types (`fevals`, `brackets` and `total_cost`), the execution setup (`run`(default), `ask_tell` and `restart`), the benchmarks used (`tab_nn`, `tab_rf`, `tab_svm`, `tab_lr`, `surrogate`, `nasbench201`) and the seeds used for each benchmark run (default: [0]). + +The benchmarking script is highly configurable and lets you choose between the budget types (`fevals`, `brackets` and `total_cost`), the execution setup (`run`(default), `ask_tell` and `restart`), the benchmarks used (`tab_nn`, `tab_rf`, `tab_svm`, `tab_lr`, `surrogate`, `nasbench201`) and the seeds used for each benchmark run (default: [0]). + ```shell python3.8 benchmarking/hpobench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks tab_nn tab_rf tab_svm tab_lr surrogate nasbench201 --seed 0 --n_seeds 10 --output_path logs/hpobench_benchmarking ``` ## Installation Guide MFPBench + The following guide walks you trough instaling mfpbench and running the benchmarking script. Here, we assume that you execute the commands in your cloned DEHB repository. Depending on the choice of benchmark, different requirements have to be installed, which are not compatible with one another. Thus we divide the setup into two sections, one for installing the JAHS benchmark and one for the PD1 benchmark. The MFHartmann benchmarks are work with both installations. ## JAHS Benchmark + ### Create Virtual Environment + Before starting, please make sure you have clean virtual environment using python 3.8 ready. The following commands walk you through on how to do this with conda. -``` + +```shell conda create --name dehb_jahs python=3.8 conda activate dehb_jahs ``` ### Installing DEHB with MFPBench + There are some additional dependencies needed for plotting and table generation, therefore please install DEHB with the benchmarking options: + ```shell pip install -e .[benchmarking,jahs_benchmark] ``` ### Downloading Benchmark Data + In order to run the benchmark, first we need to download the benchmark data: + ```shell python -m mfpbench download --benchmark jahs ``` + ### Running the Benchmarking Script + The setup is similar as in the HPOBench section, however under this installation only the `jahs` (joint architecture and hyperparameter search), `mfh3` and `mfh6` benchmarks are available. + ```shell python3.8 benchmarking/mfpbench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks jahs mfh3 mfh6 --seed 0 --n_seeds 10 --output_path logs/jahs_benchmarking ``` ## PD1 Benchmark + ### Create Virtual Environment + Before starting, please make sure you have clean virtual environment using python 3.8 ready. The following commands walk you through on how to do this with conda. -``` + +```shell conda create --name dehb_pd1 python=3.8 conda activate dehb_pd1 ``` ### Installing DEHB with MFPBench + There are some additional dependencies needed for plotting and table generation, therefore please install DEHB with the benchmarking options: + ```shell pip install -e .[benchmarking,pd1_benchmark] ``` ### Downloading Benchmark Data + In order to run the benchmark, first we need to download the benchmark data: + ```shell python -m mfpbench download --benchmark pd1 ``` + ### Running the Benchmarking Script + We currently support and use the PD1 benchmarks `cifar100_wideresnet_2048`, `imagenet_resnet_512`, `lm1b_transformer_2048` and `translatewmt_xformer_64`. Moreover, the `mfh3` and `mfh6` benchmarks are available. + ```shell python3.8 benchmarking/mfpbench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks cifar100_wideresnet_2048 imagenet_resnet_512 lm1b_transformer_2048 translatewmt_xformer_64 mfh3 mfh6 --seed 0 --n_seeds 10 --output_path logs/pd1_benchmarks ``` ## CountingOnes Benchmark + The CountingOnes benchmark is a synthetical benchmark and only depends on numpy, thus it can be used directly without any special setup. ### Running the Benchmarking Script + ```shell python benchmarking/countingones_benchmark.py --seed 0 --n_seeds 10 --fevals 300 --output_path logs/countingones --n_continuous 50 --n_categorical 50 -``` \ No newline at end of file +``` diff --git a/benchmarking/benchmarking.sh b/benchmarking/benchmarking.sh index 5b3cc67..340c0a9 100644 --- a/benchmarking/benchmarking.sh +++ b/benchmarking/benchmarking.sh @@ -18,14 +18,14 @@ echo "Running job $SLURM_JOB_NAME using $SLURM_JOB_CPUS_PER_NODE cpus per node w if [ 1 -eq $SLURM_ARRAY_TASK_ID ] then - source activate dehb_mfp_pd1 + source activate dehb_pd1 python benchmarking/mfpbench_benchmark.py --seed 0 --n_seeds 10 --fevals $BUDGET --benchmarks mfh3 mfh6 cifar100_wideresnet_2048 imagenet_resnet_512 lm1b_transformer_2048 translatewmt_xformer_64 --output_path logs/pd1 python generate_summary.py elif [ 2 -eq $SLURM_ARRAY_TASK_ID ] then - source activate dehb_mfp_jahs + source activate dehb_jahs python benchmarking/mfpbench_benchmark.py --seed 0 --n_seeds 10 --fevals $BUDGET --benchmarks jahs --output_path logs/jahs @@ -39,7 +39,7 @@ then python generate_summary.py elif [ 4 -eq $SLURM_ARRAY_TASK_ID ] then - source activate dehb_mfp_pd1 # CountingOnes works with any dependencies, since it is only dependent on numpy + source activate dehb_pd1 # CountingOnes works with any dependencies, since it is only dependent on numpy python benchmarking/countingones_benchmark.py --seed 0 --n_seeds 10 --fevals $BUDGET --output_path logs/countingones --n_continuous 50 --n_categorical 50 From 83a78961f12103dae73e4333bca4714f099d49d6 Mon Sep 17 00:00:00 2001 From: Janis Fix Date: Wed, 5 Jun 2024 13:20:17 +0200 Subject: [PATCH 21/32] Minor adjustments --- benchmarking/BENCHMARKING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/benchmarking/BENCHMARKING.md b/benchmarking/BENCHMARKING.md index 2b30935..329237d 100644 --- a/benchmarking/BENCHMARKING.md +++ b/benchmarking/BENCHMARKING.md @@ -6,7 +6,7 @@ Benchmarking DEHB is crucial for ensuring consistent performance across differen 2. Using the Ask & Tell interface and 3. Restarting the optimization run after half the budget. -In the end, the results for the 3 different execution setups should be the same. With this setup guide, we encourage the developers of DEHB to continually benchmark their changes in order ensure, that +In the end, the results for the 3 different execution setups should be the same. With this setup guide, we encourage the developers of DEHB to continually benchmark their changes in order to ensure, that - the inner workings of DEHB are not corrupted by checking the different execution setup results and - that overall performance either remains the same, if no algortihmic changes have been made or is still comparable/better, if algorithmic changes have been made. @@ -23,7 +23,7 @@ Before starting, please make sure you have clean virtual environment using pytho ```shell conda create --name dehb_hpo python=3.8 -conda activate dehb_hpobench +conda activate dehb_hpo ``` ### Installing HPOBench From ec64e5e6443688bc706d7d37bac910d48493c109 Mon Sep 17 00:00:00 2001 From: Bronzila Date: Wed, 5 Jun 2024 17:04:48 +0200 Subject: [PATCH 22/32] Add benchmarking files to gitignore and adjust benchmarking script --- .gitignore | 3 +++ benchmarking/benchmarking.sh | 21 +++++++++++---------- benchmarking/mfpbench_benchmark.py | 2 +- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index fe00081..4e4f23a 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,9 @@ dask-worker-space/ dehb/examples/*/results dehb/examples/*/*/results .ipynb_checkpoints/ +data/ +benchmarking/results +*.err # automl_template .gitignore diff --git a/benchmarking/benchmarking.sh b/benchmarking/benchmarking.sh index 340c0a9..c3e762d 100644 --- a/benchmarking/benchmarking.sh +++ b/benchmarking/benchmarking.sh @@ -1,10 +1,10 @@ #!/bin/bash -#SBATCH -p +#SBATCH -p bosch_cpu-cascadelake #SBATCH -o logs/%A[%a].%N.out # STDOUT (the folder log has to exist) %A will be replaced by the SLURM_ARRAY_JOB_ID value #SBATCH -e logs/%A[%a].%N.err # STDERR (the folder log has to exist) %A will be replaced by the SLURM_ARRAY_JOB_ID value #SBATCH -J DEHB_benchmarking # sets the job name. #SBATCH -a 1-4 # array size -#SBATCH -t 0-10:00:00 +#SBATCH -t 0-00:30:00 #SBATCH --mem 16GB BUDGET=300 @@ -15,35 +15,36 @@ echo "Started at $(date)"; echo "Benchmarking DEHB on multiple benchmarks"; echo "Running job $SLURM_JOB_NAME using $SLURM_JOB_CPUS_PER_NODE cpus per node with given JID $SLURM_JOB_ID on queue $SLURM_JOB_PARTITION"; +source ~/.bashrc if [ 1 -eq $SLURM_ARRAY_TASK_ID ] then - source activate dehb_pd1 + conda activate dehb_pd1 python benchmarking/mfpbench_benchmark.py --seed 0 --n_seeds 10 --fevals $BUDGET --benchmarks mfh3 mfh6 cifar100_wideresnet_2048 imagenet_resnet_512 lm1b_transformer_2048 translatewmt_xformer_64 --output_path logs/pd1 - python generate_summary.py + python benchmarking/generate_summary.py elif [ 2 -eq $SLURM_ARRAY_TASK_ID ] then - source activate dehb_jahs + conda activate dehb_jahs python benchmarking/mfpbench_benchmark.py --seed 0 --n_seeds 10 --fevals $BUDGET --benchmarks jahs --output_path logs/jahs - python generate_summary.py + python benchmarking/generate_summary.py elif [ 3 -eq $SLURM_ARRAY_TASK_ID ] then - source activate dehb_hpo + conda activate dehb_hpo python benchmarking/hpobench_benchmark.py --seed 0 --n_seeds 10 --fevals $BUDGET --benchmarks tab_nn tab_rf tab_svm tab_lr surrogate nasbench201 --output_path logs/hpob - python generate_summary.py + python benchmarking/generate_summary.py elif [ 4 -eq $SLURM_ARRAY_TASK_ID ] then - source activate dehb_pd1 # CountingOnes works with any dependencies, since it is only dependent on numpy + conda activate dehb_pd1 # CountingOnes works with any dependencies, since it is only dependent on numpy python benchmarking/countingones_benchmark.py --seed 0 --n_seeds 10 --fevals $BUDGET --output_path logs/countingones --n_continuous 50 --n_categorical 50 - python generate_summary.py + python benchmarking/generate_summary.py fi # Print some Information about the end-time to STDOUT diff --git a/benchmarking/mfpbench_benchmark.py b/benchmarking/mfpbench_benchmark.py index 33786d2..298aaef 100644 --- a/benchmarking/mfpbench_benchmark.py +++ b/benchmarking/mfpbench_benchmark.py @@ -76,7 +76,7 @@ def input_arguments(): parser.add_argument( "--verbose", action="store_true", - default=True, + default=False, help="Decides verbosity of DEHB optimization.", ) parser.add_argument( From 69cdc88c4c284b3592674d72e8d008c0f6022721 Mon Sep 17 00:00:00 2001 From: Janis Fix Date: Tue, 18 Jun 2024 17:15:36 +0200 Subject: [PATCH 23/32] Remove jahs from benchmarking script --- benchmarking/benchmarking.sh | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/benchmarking/benchmarking.sh b/benchmarking/benchmarking.sh index c3e762d..fe027a2 100644 --- a/benchmarking/benchmarking.sh +++ b/benchmarking/benchmarking.sh @@ -3,7 +3,7 @@ #SBATCH -o logs/%A[%a].%N.out # STDOUT (the folder log has to exist) %A will be replaced by the SLURM_ARRAY_JOB_ID value #SBATCH -e logs/%A[%a].%N.err # STDERR (the folder log has to exist) %A will be replaced by the SLURM_ARRAY_JOB_ID value #SBATCH -J DEHB_benchmarking # sets the job name. -#SBATCH -a 1-4 # array size +#SBATCH -a 1-3 # array size #SBATCH -t 0-00:30:00 #SBATCH --mem 16GB @@ -25,20 +25,13 @@ then python benchmarking/generate_summary.py elif [ 2 -eq $SLURM_ARRAY_TASK_ID ] -then - conda activate dehb_jahs - - python benchmarking/mfpbench_benchmark.py --seed 0 --n_seeds 10 --fevals $BUDGET --benchmarks jahs --output_path logs/jahs - - python benchmarking/generate_summary.py -elif [ 3 -eq $SLURM_ARRAY_TASK_ID ] then conda activate dehb_hpo python benchmarking/hpobench_benchmark.py --seed 0 --n_seeds 10 --fevals $BUDGET --benchmarks tab_nn tab_rf tab_svm tab_lr surrogate nasbench201 --output_path logs/hpob python benchmarking/generate_summary.py -elif [ 4 -eq $SLURM_ARRAY_TASK_ID ] +elif [ 3 -eq $SLURM_ARRAY_TASK_ID ] then conda activate dehb_pd1 # CountingOnes works with any dependencies, since it is only dependent on numpy From e1f38f5fd71ab2ef97f9c6ba1828e2789ce775fa Mon Sep 17 00:00:00 2001 From: Janis Fix Date: Thu, 20 Jun 2024 14:21:36 +0200 Subject: [PATCH 24/32] Remove JAHS from default choice for MFPBench --- benchmarking/mfpbench_benchmark.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmarking/mfpbench_benchmark.py b/benchmarking/mfpbench_benchmark.py index 298aaef..754bee7 100644 --- a/benchmarking/mfpbench_benchmark.py +++ b/benchmarking/mfpbench_benchmark.py @@ -50,7 +50,7 @@ def input_arguments(): "--benchmarks", type=str, nargs="*", - default=["jahs"], + default=["mfh3", "mfh6", "cifar100_wideresnet_2048"], help="Benchmarks to run DEHB on.", choices=["jahs", "mfh3", "mfh6", "cifar100_wideresnet_2048", "imagenet_resnet_512", "lm1b_transformer_2048", "translatewmt_xformer_64"], From cba4eee41bc4657a4bf8d6973710683b35df8fbc Mon Sep 17 00:00:00 2001 From: Janis Fix Date: Wed, 3 Jul 2024 11:13:53 +0200 Subject: [PATCH 25/32] Add extra picky dependenciesfor hpobench setup --- benchmarking/BENCHMARKING.md | 1 + pyproject.toml | 2 ++ 2 files changed, 3 insertions(+) diff --git a/benchmarking/BENCHMARKING.md b/benchmarking/BENCHMARKING.md index 329237d..dfb267d 100644 --- a/benchmarking/BENCHMARKING.md +++ b/benchmarking/BENCHMARKING.md @@ -41,6 +41,7 @@ cd .. There are some additional dependencies needed for plotting and table generation, therefore please install DEHB with the benchmarking options: ```shell +cd DEHB pip install -e .[benchmarking,hpobench_benchmark] ``` diff --git a/pyproject.toml b/pyproject.toml index 9467f4b..be930eb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -66,6 +66,8 @@ hpobench_benchmark = [ "tqdm", "pandas==1.2.4", "openml==0.12.2", + "ConfigSpace<0.7.1", # ConfigSpace>0.7 is not backward compatible regarding json loading + "pillow==10.3.0", # matplotlib would otherwise throw an error related to numpy ] jahs_benchmark = [ From 0a7f79f5c47d69f7b5c054cd043d6829a24df03b Mon Sep 17 00:00:00 2001 From: Janis Fix Date: Wed, 3 Jul 2024 11:52:55 +0200 Subject: [PATCH 26/32] Refactor HPOBench benchmark to use tabular ml benchmarks --- benchmarking/BENCHMARKING.md | 6 +++--- benchmarking/hpobench_benchmark.py | 28 ++++++++++++++++------------ 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/benchmarking/BENCHMARKING.md b/benchmarking/BENCHMARKING.md index dfb267d..6082a1a 100644 --- a/benchmarking/BENCHMARKING.md +++ b/benchmarking/BENCHMARKING.md @@ -50,7 +50,7 @@ pip install -e .[benchmarking,hpobench_benchmark] The benchmarking script is highly configurable and lets you choose between the budget types (`fevals`, `brackets` and `total_cost`), the execution setup (`run`(default), `ask_tell` and `restart`), the benchmarks used (`tab_nn`, `tab_rf`, `tab_svm`, `tab_lr`, `surrogate`, `nasbench201`) and the seeds used for each benchmark run (default: [0]). ```shell -python3.8 benchmarking/hpobench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks tab_nn tab_rf tab_svm tab_lr surrogate nasbench201 --seed 0 --n_seeds 10 --output_path logs/hpobench_benchmarking +python3.8 benchmarking/hpobench_benchmark.py --fevals 300 --benchmarks tab_nn tab_rf tab_svm tab_lr surrogate nasbench201 --seed 0 --n_seeds 10 --output_path logs/hpobench_benchmarking ``` ## Installation Guide MFPBench @@ -89,7 +89,7 @@ python -m mfpbench download --benchmark jahs The setup is similar as in the HPOBench section, however under this installation only the `jahs` (joint architecture and hyperparameter search), `mfh3` and `mfh6` benchmarks are available. ```shell -python3.8 benchmarking/mfpbench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks jahs mfh3 mfh6 --seed 0 --n_seeds 10 --output_path logs/jahs_benchmarking +python3.8 benchmarking/mfpbench_benchmark.py --fevals 300 --benchmarks jahs mfh3 mfh6 --seed 0 --n_seeds 10 --output_path logs/jahs_benchmarking ``` ## PD1 Benchmark @@ -124,7 +124,7 @@ python -m mfpbench download --benchmark pd1 We currently support and use the PD1 benchmarks `cifar100_wideresnet_2048`, `imagenet_resnet_512`, `lm1b_transformer_2048` and `translatewmt_xformer_64`. Moreover, the `mfh3` and `mfh6` benchmarks are available. ```shell -python3.8 benchmarking/mfpbench_benchmark.py --fevals 300 --ask_tell --restart --benchmarks cifar100_wideresnet_2048 imagenet_resnet_512 lm1b_transformer_2048 translatewmt_xformer_64 mfh3 mfh6 --seed 0 --n_seeds 10 --output_path logs/pd1_benchmarks +python3.8 benchmarking/mfpbench_benchmark.py --fevals 300 --benchmarks cifar100_wideresnet_2048 imagenet_resnet_512 lm1b_transformer_2048 translatewmt_xformer_64 mfh3 mfh6 --seed 0 --n_seeds 10 --output_path logs/pd1_benchmarks ``` ## CountingOnes Benchmark diff --git a/benchmarking/hpobench_benchmark.py b/benchmarking/hpobench_benchmark.py index 4c92739..171dab9 100644 --- a/benchmarking/hpobench_benchmark.py +++ b/benchmarking/hpobench_benchmark.py @@ -3,10 +3,7 @@ import numpy as np import pandas as pd -from hpobench.benchmarks.ml.lr_benchmark import LRBenchmark -from hpobench.benchmarks.ml.nn_benchmark import NNBenchmark -from hpobench.benchmarks.ml.rf_benchmark import RandomForestBenchmark -from hpobench.benchmarks.ml.svm_benchmark import SVMBenchmark +from hpobench.benchmarks.ml.tabular_benchmark import TabularBenchmark from hpobench.benchmarks.nas.nasbench_201 import Cifar10ValidNasBench201BenchmarkOriginal from hpobench.benchmarks.surrogates.paramnet_benchmark import ParamNetReducedAdultOnStepsBenchmark from utils import DEHBOptimizerBase @@ -28,42 +25,49 @@ def _objective_function(self, config, fidelity): def _get_config_space(self, seed): return self.benchmark.get_configuration_space(seed=seed) - def _get_fidelity_range(self, benchmark, fidelity_name, seed): + def _get_fidelity_range(self, benchmark, fidelity_name, seed, tabular): fidelity_space = benchmark.get_fidelity_space(seed) fidelity_param = fidelity_space.get_hyperparameter(fidelity_name) - min_fidelity = fidelity_param.lower - max_fidelity = fidelity_param.upper + if tabular: + min_fidelity = fidelity_param.sequence[0] + max_fidelity = fidelity_param.sequence[-1] + else: + min_fidelity = fidelity_param.lower + max_fidelity = fidelity_param.upper return min_fidelity, max_fidelity def _get_benchmark_and_fidelities(self, benchmark_name, seed): + tabular = True if benchmark_name == "tab_nn": - benchmark = NNBenchmark(rng=seed, task_id=31) + benchmark = TabularBenchmark(model="nn", rng=seed, task_id=31) fidelity_name = "iter" fidelity_type = int elif benchmark_name == "tab_lr": - benchmark = LRBenchmark(rng=seed, task_id=31) + benchmark = TabularBenchmark(model="lr", rng=seed, task_id=31) fidelity_name = "iter" fidelity_type = int elif benchmark_name == "tab_rf": - benchmark = RandomForestBenchmark(rng=seed, task_id=31) + benchmark = TabularBenchmark(model="rf", rng=seed, task_id=31) fidelity_name = "n_estimators" fidelity_type = int elif benchmark_name == "tab_svm": - benchmark = SVMBenchmark(rng=seed, task_id=31) + benchmark = TabularBenchmark(model="svm", rng=seed, task_id=31) fidelity_name = "subsample" fidelity_type = float elif benchmark_name == "nasbench201": benchmark = Cifar10ValidNasBench201BenchmarkOriginal(rng=seed) fidelity_name = "epoch" fidelity_type = int + tabular = False elif benchmark_name == "surrogate": benchmark = ParamNetReducedAdultOnStepsBenchmark(rng=seed) fidelity_name = "step" fidelity_type = int + tabular = False else: raise ValueError(f"No benchmark '{benchmark_name}' found.") - min_fidelity, max_fidelity = self._get_fidelity_range(benchmark, fidelity_name, seed) + min_fidelity, max_fidelity = self._get_fidelity_range(benchmark, fidelity_name, seed, tabular) return benchmark, fidelity_name, (min_fidelity, max_fidelity), fidelity_type def input_arguments(): From 957410eedb24d008d3ce48bcb1f50b086c446792 Mon Sep 17 00:00:00 2001 From: Janis Fix Date: Wed, 3 Jul 2024 11:56:14 +0200 Subject: [PATCH 27/32] Remove unnecessary cd command --- benchmarking/BENCHMARKING.md | 1 - 1 file changed, 1 deletion(-) diff --git a/benchmarking/BENCHMARKING.md b/benchmarking/BENCHMARKING.md index 6082a1a..9b40f58 100644 --- a/benchmarking/BENCHMARKING.md +++ b/benchmarking/BENCHMARKING.md @@ -41,7 +41,6 @@ cd .. There are some additional dependencies needed for plotting and table generation, therefore please install DEHB with the benchmarking options: ```shell -cd DEHB pip install -e .[benchmarking,hpobench_benchmark] ``` From 39afd7f0e5c1cf5ba3e8da5c01e1598cf8c6bf2a Mon Sep 17 00:00:00 2001 From: Janis Fix Date: Wed, 3 Jul 2024 14:57:46 +0200 Subject: [PATCH 28/32] Add PR template and benchmark instructions for PRs to CONTRIBUTING --- .github/PULL_REQUEST_TEMPLATE.md | 23 +++++++++++++++++++++++ CONTRIBUTING.md | 10 ++++++++++ 2 files changed, 33 insertions(+) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..9711518 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,23 @@ +## Pull Request Checklist + +Thank you for your contribution! Before submitting this PR, please make sure you have completed the following steps: + +### 1. Unit Tests / Normal PR Workflow + +- [ ] Ensure all existing unit tests pass. +- [ ] Add new unit tests to cover the changes. +- [ ] Verify that your code follows the project's coding standards. +- [ ] Add documentation for your code if necessary. +- [ ] Check below, if your changes require you to run benchmarks + +#### When Do I Need To Run Benchmarks? + +Depending on your changes, we ask you to run some benchmarks: + +1. Style changes. + + If your changes only consist of style modifications, such as renaming or adding docstrings, and do not interfere with DEHB's interface, functionality, or algorithm, it is sufficient for all test cases to pass. + +2. Changes to DEHB's interface and functionality or the algorithm itself. + + If your changes affect the interface, functionality, or algorithm of DEHB, please also run the synthetic benchmarks (MFH3, MFH6 of MFPBench, and the CountingOnes benchmark). This will help determine whether any changes introduced bugs or significantly altered DEHB's performance. However, at the reviewer's discretion, you may also be asked to run your changes on real-world benchmarks if deemed necessary. For instructions on how to install and run the benchmarks, please have a look at our [benchmarking instructions](../benchmarking/BENCHMARKING.md). Please use the same budget for your benchmark runs as we specified in the instructions. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 10dc4de..10d7dab 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -66,6 +66,16 @@ When submitting a pull request, please ensure the following: - Ensure your code follows the project's code style and guidelines. - Be responsive to any feedback or questions during the review process. +Additonally, we ask you to run specific benchmarks, depending on the depth of your changes: + +1. Style changes. + + If your changes only consist of style modifications, such as renaming or adding docstrings, and do not interfere with DEHB's interface, functionality, or algorithm, it is sufficient for all test cases to pass. + +2. Changes to DEHB's interface and functionality or the algorithm itself. + + If your changes affect the interface, functionality, or algorithm of DEHB, please also run the synthetic benchmarks (MFH3, MFH6 of MFPBench, and the CountingOnes benchmark). This will help determine whether any changes introduced bugs or significantly altered DEHB's performance. However, at the reviewer's discretion, you may also be asked to run your changes on real-world benchmarks if deemed necessary. For instructions on how to install and run the benchmarks, please have a look at our [benchmarking instructions](./benchmarking/BENCHMARKING.md). Please use the same budget for your benchmark runs as we specified in the instructions. + ## Code Style and Guidelines To maintain consistency and readability, we follow a set of code style and guidelines. Please make sure that your code adheres to these standards: From 6f49cd0bea804187bc5edd1fdb16db1ecc539db7 Mon Sep 17 00:00:00 2001 From: Janis Fix Date: Wed, 3 Jul 2024 15:38:59 +0200 Subject: [PATCH 29/32] Update benchmarking markdown --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- benchmarking/BENCHMARKING.md | 45 ++++---------------------------- 2 files changed, 6 insertions(+), 41 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 9711518..feb6efe 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -8,7 +8,7 @@ Thank you for your contribution! Before submitting this PR, please make sure you - [ ] Add new unit tests to cover the changes. - [ ] Verify that your code follows the project's coding standards. - [ ] Add documentation for your code if necessary. -- [ ] Check below, if your changes require you to run benchmarks +- [ ] Check below, if your changes require you to run benchmarks. #### When Do I Need To Run Benchmarks? diff --git a/benchmarking/BENCHMARKING.md b/benchmarking/BENCHMARKING.md index 9b40f58..3db87ea 100644 --- a/benchmarking/BENCHMARKING.md +++ b/benchmarking/BENCHMARKING.md @@ -49,49 +49,14 @@ pip install -e .[benchmarking,hpobench_benchmark] The benchmarking script is highly configurable and lets you choose between the budget types (`fevals`, `brackets` and `total_cost`), the execution setup (`run`(default), `ask_tell` and `restart`), the benchmarks used (`tab_nn`, `tab_rf`, `tab_svm`, `tab_lr`, `surrogate`, `nasbench201`) and the seeds used for each benchmark run (default: [0]). ```shell -python3.8 benchmarking/hpobench_benchmark.py --fevals 300 --benchmarks tab_nn tab_rf tab_svm tab_lr surrogate nasbench201 --seed 0 --n_seeds 10 --output_path logs/hpobench_benchmarking +python3.8 benchmarking/hpobench_benchmark.py --fevals 300 --benchmarks tab_nn tab_rf tab_svm tab_lr surrogate nasbench201 --seed 0 --n_seeds 5 --output_path logs/hpobench_benchmarking ``` ## Installation Guide MFPBench -The following guide walks you trough instaling mfpbench and running the benchmarking script. Here, we assume that you execute the commands in your cloned DEHB repository. Depending on the choice of benchmark, different requirements have to be installed, which are not compatible with one another. Thus we divide the setup into two sections, one for installing the JAHS benchmark and one for the PD1 benchmark. The MFHartmann benchmarks are work with both installations. +The following guide walks you trough instaling mfpbench and running the benchmarking script. Here, we assume that you execute the commands in your cloned DEHB repository. -## JAHS Benchmark - -### Create Virtual Environment - -Before starting, please make sure you have clean virtual environment using python 3.8 ready. The following commands walk you through on how to do this with conda. - -```shell -conda create --name dehb_jahs python=3.8 -conda activate dehb_jahs -``` - -### Installing DEHB with MFPBench - -There are some additional dependencies needed for plotting and table generation, therefore please install DEHB with the benchmarking options: - -```shell -pip install -e .[benchmarking,jahs_benchmark] -``` - -### Downloading Benchmark Data - -In order to run the benchmark, first we need to download the benchmark data: - -```shell -python -m mfpbench download --benchmark jahs -``` - -### Running the Benchmarking Script - -The setup is similar as in the HPOBench section, however under this installation only the `jahs` (joint architecture and hyperparameter search), `mfh3` and `mfh6` benchmarks are available. - -```shell -python3.8 benchmarking/mfpbench_benchmark.py --fevals 300 --benchmarks jahs mfh3 mfh6 --seed 0 --n_seeds 10 --output_path logs/jahs_benchmarking -``` - -## PD1 Benchmark +## PD1 Benchmark and MFHartmann ### Create Virtual Environment @@ -123,7 +88,7 @@ python -m mfpbench download --benchmark pd1 We currently support and use the PD1 benchmarks `cifar100_wideresnet_2048`, `imagenet_resnet_512`, `lm1b_transformer_2048` and `translatewmt_xformer_64`. Moreover, the `mfh3` and `mfh6` benchmarks are available. ```shell -python3.8 benchmarking/mfpbench_benchmark.py --fevals 300 --benchmarks cifar100_wideresnet_2048 imagenet_resnet_512 lm1b_transformer_2048 translatewmt_xformer_64 mfh3 mfh6 --seed 0 --n_seeds 10 --output_path logs/pd1_benchmarks +python3.8 benchmarking/mfpbench_benchmark.py --fevals 300 --benchmarks mfh3 mfh6 cifar100_wideresnet_2048 imagenet_resnet_512 lm1b_transformer_2048 translatewmt_xformer_64 mfh3 mfh6 --seed 0 --n_seeds 5 --output_path logs/pd1_benchmarks ``` ## CountingOnes Benchmark @@ -133,5 +98,5 @@ The CountingOnes benchmark is a synthetical benchmark and only depends on numpy, ### Running the Benchmarking Script ```shell -python benchmarking/countingones_benchmark.py --seed 0 --n_seeds 10 --fevals 300 --output_path logs/countingones --n_continuous 50 --n_categorical 50 +python benchmarking/countingones_benchmark.py --seed 0 --n_seeds 5 --fevals 300 --output_path logs/countingones --n_continuous 50 --n_categorical 50 ``` From 2c23bf304ae995559913304eee996da2d6650eeb Mon Sep 17 00:00:00 2001 From: Janis Fix Date: Wed, 3 Jul 2024 16:08:24 +0200 Subject: [PATCH 30/32] Run all benchmarks per default --- benchmarking/hpobench_benchmark.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmarking/hpobench_benchmark.py b/benchmarking/hpobench_benchmark.py index 171dab9..b5468e4 100644 --- a/benchmarking/hpobench_benchmark.py +++ b/benchmarking/hpobench_benchmark.py @@ -88,7 +88,7 @@ def input_arguments(): "--benchmarks", type=str, nargs="*", - default=["tab_nn"], + default=["tab_nn", "tab_lr", "tab_rf", "tab_svm", "surrogate", "nasbench201"], help="Benchmarks to run DEHB on.", choices=["tab_nn", "tab_lr", "tab_rf", "tab_svm", "surrogate", "nasbench201"], ) From 1bee014b3f4d4c772113e7829b61539d4a5fcfdd Mon Sep 17 00:00:00 2001 From: Bronzila Date: Wed, 3 Jul 2024 20:05:13 +0200 Subject: [PATCH 31/32] Adjust benchmark scripts to final version --- .gitignore | 5 ++--- benchmarking/benchmarking.sh | 13 +++++++++---- benchmarking/hpobench_benchmark.py | 2 +- benchmarking/utils.py | 3 ++- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 4e4f23a..49b0147 100644 --- a/.gitignore +++ b/.gitignore @@ -14,9 +14,8 @@ __pycache__/ */*/__pycache__/ -# folders as artefacts +# folders as artifacts .idea/ -results/ plots/ workflow/ dask-worker-space/ @@ -24,7 +23,7 @@ dehb/examples/*/results dehb/examples/*/*/results .ipynb_checkpoints/ data/ -benchmarking/results +logs/ *.err diff --git a/benchmarking/benchmarking.sh b/benchmarking/benchmarking.sh index fe027a2..8caa8e8 100644 --- a/benchmarking/benchmarking.sh +++ b/benchmarking/benchmarking.sh @@ -20,26 +20,31 @@ source ~/.bashrc if [ 1 -eq $SLURM_ARRAY_TASK_ID ] then conda activate dehb_pd1 + pip install . - python benchmarking/mfpbench_benchmark.py --seed 0 --n_seeds 10 --fevals $BUDGET --benchmarks mfh3 mfh6 cifar100_wideresnet_2048 imagenet_resnet_512 lm1b_transformer_2048 translatewmt_xformer_64 --output_path logs/pd1 + python benchmarking/mfpbench_benchmark.py --seed 0 --n_seeds 5 --fevals $BUDGET --benchmarks mfh3 mfh6 cifar100_wideresnet_2048 imagenet_resnet_512 lm1b_transformer_2048 --output_path logs/pd1 + # Due to memory problems + python benchmarking/mfpbench_benchmark.py --seed 0 --n_seeds 5 --fevals $BUDGET --benchmarks translatewmt_xformer_64 --output_path logs/pd1 python benchmarking/generate_summary.py elif [ 2 -eq $SLURM_ARRAY_TASK_ID ] then conda activate dehb_hpo + pip install . - python benchmarking/hpobench_benchmark.py --seed 0 --n_seeds 10 --fevals $BUDGET --benchmarks tab_nn tab_rf tab_svm tab_lr surrogate nasbench201 --output_path logs/hpob + python benchmarking/hpobench_benchmark.py --seed 0 --n_seeds 5 --fevals $BUDGET --benchmarks tab_nn tab_rf tab_svm tab_lr surrogate nasbench201 --output_path logs/hpob python benchmarking/generate_summary.py elif [ 3 -eq $SLURM_ARRAY_TASK_ID ] then + sleep 60 # Wait for dehb_pd1 to install dehb properly conda activate dehb_pd1 # CountingOnes works with any dependencies, since it is only dependent on numpy - python benchmarking/countingones_benchmark.py --seed 0 --n_seeds 10 --fevals $BUDGET --output_path logs/countingones --n_continuous 50 --n_categorical 50 + python benchmarking/countingones_benchmark.py --seed 0 --n_seeds 5 --fevals $BUDGET --output_path logs/countingones --n_continuous 50 --n_categorical 50 python benchmarking/generate_summary.py fi # Print some Information about the end-time to STDOUT echo "DONE"; -echo "Finished at $(date)"; +echo "Finished at $(date)"; \ No newline at end of file diff --git a/benchmarking/hpobench_benchmark.py b/benchmarking/hpobench_benchmark.py index 171dab9..b5468e4 100644 --- a/benchmarking/hpobench_benchmark.py +++ b/benchmarking/hpobench_benchmark.py @@ -88,7 +88,7 @@ def input_arguments(): "--benchmarks", type=str, nargs="*", - default=["tab_nn"], + default=["tab_nn", "tab_lr", "tab_rf", "tab_svm", "surrogate", "nasbench201"], help="Benchmarks to run DEHB on.", choices=["tab_nn", "tab_lr", "tab_rf", "tab_svm", "surrogate", "nasbench201"], ) diff --git a/benchmarking/utils.py b/benchmarking/utils.py index 88931a2..fb7ceb0 100644 --- a/benchmarking/utils.py +++ b/benchmarking/utils.py @@ -9,6 +9,7 @@ def create_plot_for_benchmark(results: dict, output_path: Path, benchmark_name: str): plt.clf() + results = dict(reversed(sorted(results.items()))) for version, data in results.items(): mean_trajectory = data["mean_trajectory"] std_trajectory = data["std_trajectory"] @@ -33,7 +34,7 @@ def create_table_for_benchmark(results: dict) -> list: traj_length = len(results[arbitrary_key]["mean_trajectory"]) header.append(str(int(budget * traj_length))) table.append(header) - results = dict(sorted(results.items())) + results = dict(reversed(sorted(results.items()))) for version in results: row = [version] mean_traj = results[version]["mean_trajectory"] From bfadd8ba295d83c4d2586a5023b408e2c09fde9e Mon Sep 17 00:00:00 2001 From: Bronzila Date: Wed, 3 Jul 2024 20:05:33 +0200 Subject: [PATCH 32/32] Add benchmark results for all dehb versions --- .../traj.parquet.gzip | Bin 0 -> 2947 bytes .../0.0.1/counting_ones/traj.parquet.gzip | Bin 0 -> 3133 bytes .../imagenet_resnet_512/traj.parquet.gzip | Bin 0 -> 3181 bytes .../lm1b_transformer_2048/traj.parquet.gzip | Bin 0 -> 3257 bytes .../results/0.0.1/mfh3/traj.parquet.gzip | Bin 0 -> 3157 bytes .../results/0.0.1/mfh6/traj.parquet.gzip | Bin 0 -> 3205 bytes .../0.0.1/nasbench201/traj.parquet.gzip | Bin 0 -> 3039 bytes .../results/0.0.1/surrogate/traj.parquet.gzip | Bin 0 -> 3265 bytes .../results/0.0.1/tab_lr/traj.parquet.gzip | Bin 0 -> 3238 bytes .../results/0.0.1/tab_nn/traj.parquet.gzip | Bin 0 -> 3214 bytes .../results/0.0.1/tab_rf/traj.parquet.gzip | Bin 0 -> 3425 bytes .../results/0.0.1/tab_svm/traj.parquet.gzip | Bin 0 -> 3172 bytes .../translatewmt_xformer_64/traj.parquet.gzip | Bin 0 -> 3232 bytes .../traj.parquet.gzip | Bin 0 -> 2947 bytes .../0.0.2/counting_ones/traj.parquet.gzip | Bin 0 -> 3133 bytes .../imagenet_resnet_512/traj.parquet.gzip | Bin 0 -> 3181 bytes .../lm1b_transformer_2048/traj.parquet.gzip | Bin 0 -> 3257 bytes .../results/0.0.2/mfh3/traj.parquet.gzip | Bin 0 -> 3157 bytes .../results/0.0.2/mfh6/traj.parquet.gzip | Bin 0 -> 3205 bytes .../0.0.2/nasbench201/traj.parquet.gzip | Bin 0 -> 3039 bytes .../results/0.0.2/surrogate/traj.parquet.gzip | Bin 0 -> 3265 bytes .../results/0.0.2/tab_lr/traj.parquet.gzip | Bin 0 -> 3238 bytes .../results/0.0.2/tab_nn/traj.parquet.gzip | Bin 0 -> 3214 bytes .../results/0.0.2/tab_rf/traj.parquet.gzip | Bin 0 -> 3425 bytes .../results/0.0.2/tab_svm/traj.parquet.gzip | Bin 0 -> 3172 bytes .../translatewmt_xformer_64/traj.parquet.gzip | Bin 0 -> 3232 bytes .../traj.parquet.gzip | Bin 0 -> 2947 bytes .../0.0.3/counting_ones/traj.parquet.gzip | Bin 0 -> 3133 bytes .../imagenet_resnet_512/traj.parquet.gzip | Bin 0 -> 3181 bytes .../lm1b_transformer_2048/traj.parquet.gzip | Bin 0 -> 3257 bytes .../results/0.0.3/mfh3/traj.parquet.gzip | Bin 0 -> 3157 bytes .../results/0.0.3/mfh6/traj.parquet.gzip | Bin 0 -> 3205 bytes .../0.0.3/nasbench201/traj.parquet.gzip | Bin 0 -> 3039 bytes .../results/0.0.3/surrogate/traj.parquet.gzip | Bin 0 -> 3265 bytes .../results/0.0.3/tab_lr/traj.parquet.gzip | Bin 0 -> 3238 bytes .../results/0.0.3/tab_nn/traj.parquet.gzip | Bin 0 -> 3214 bytes .../results/0.0.3/tab_rf/traj.parquet.gzip | Bin 0 -> 3425 bytes .../results/0.0.3/tab_svm/traj.parquet.gzip | Bin 0 -> 3172 bytes .../translatewmt_xformer_64/traj.parquet.gzip | Bin 0 -> 3232 bytes .../traj.parquet.gzip | Bin 0 -> 2947 bytes .../0.0.4/counting_ones/traj.parquet.gzip | Bin 0 -> 3133 bytes .../imagenet_resnet_512/traj.parquet.gzip | Bin 0 -> 3181 bytes .../lm1b_transformer_2048/traj.parquet.gzip | Bin 0 -> 3257 bytes .../results/0.0.4/mfh3/traj.parquet.gzip | Bin 0 -> 3157 bytes .../results/0.0.4/mfh6/traj.parquet.gzip | Bin 0 -> 3205 bytes .../0.0.4/nasbench201/traj.parquet.gzip | Bin 0 -> 3039 bytes .../results/0.0.4/surrogate/traj.parquet.gzip | Bin 0 -> 3265 bytes .../results/0.0.4/tab_lr/traj.parquet.gzip | Bin 0 -> 3238 bytes .../results/0.0.4/tab_nn/traj.parquet.gzip | Bin 0 -> 3214 bytes .../results/0.0.4/tab_rf/traj.parquet.gzip | Bin 0 -> 3425 bytes .../results/0.0.4/tab_svm/traj.parquet.gzip | Bin 0 -> 3172 bytes .../translatewmt_xformer_64/traj.parquet.gzip | Bin 0 -> 3232 bytes .../traj.parquet.gzip | Bin 0 -> 2947 bytes .../0.0.5/counting_ones/traj.parquet.gzip | Bin 0 -> 3133 bytes .../imagenet_resnet_512/traj.parquet.gzip | Bin 0 -> 3181 bytes .../lm1b_transformer_2048/traj.parquet.gzip | Bin 0 -> 3257 bytes .../results/0.0.5/mfh3/traj.parquet.gzip | Bin 0 -> 3157 bytes .../results/0.0.5/mfh6/traj.parquet.gzip | Bin 0 -> 3205 bytes .../0.0.5/nasbench201/traj.parquet.gzip | Bin 0 -> 3039 bytes .../results/0.0.5/surrogate/traj.parquet.gzip | Bin 0 -> 3265 bytes .../results/0.0.5/tab_lr/traj.parquet.gzip | Bin 0 -> 3238 bytes .../results/0.0.5/tab_nn/traj.parquet.gzip | Bin 0 -> 3214 bytes .../results/0.0.5/tab_rf/traj.parquet.gzip | Bin 0 -> 3425 bytes .../results/0.0.5/tab_svm/traj.parquet.gzip | Bin 0 -> 3172 bytes .../translatewmt_xformer_64/traj.parquet.gzip | Bin 0 -> 3232 bytes .../traj.parquet.gzip | Bin 0 -> 2947 bytes .../0.0.6/counting_ones/traj.parquet.gzip | Bin 0 -> 3133 bytes .../imagenet_resnet_512/traj.parquet.gzip | Bin 0 -> 3181 bytes .../lm1b_transformer_2048/traj.parquet.gzip | Bin 0 -> 3257 bytes .../results/0.0.6/mfh3/traj.parquet.gzip | Bin 0 -> 3157 bytes .../results/0.0.6/mfh6/traj.parquet.gzip | Bin 0 -> 3205 bytes .../0.0.6/nasbench201/traj.parquet.gzip | Bin 0 -> 3039 bytes .../results/0.0.6/surrogate/traj.parquet.gzip | Bin 0 -> 3265 bytes .../results/0.0.6/tab_lr/traj.parquet.gzip | Bin 0 -> 3238 bytes .../results/0.0.6/tab_nn/traj.parquet.gzip | Bin 0 -> 3214 bytes .../results/0.0.6/tab_rf/traj.parquet.gzip | Bin 0 -> 3425 bytes .../results/0.0.6/tab_svm/traj.parquet.gzip | Bin 0 -> 3172 bytes .../translatewmt_xformer_64/traj.parquet.gzip | Bin 0 -> 3232 bytes .../traj.parquet.gzip | Bin 0 -> 2947 bytes .../0.0.7/counting_ones/traj.parquet.gzip | Bin 0 -> 3133 bytes .../imagenet_resnet_512/traj.parquet.gzip | Bin 0 -> 3181 bytes .../lm1b_transformer_2048/traj.parquet.gzip | Bin 0 -> 3257 bytes .../results/0.0.7/mfh3/traj.parquet.gzip | Bin 0 -> 3157 bytes .../results/0.0.7/mfh6/traj.parquet.gzip | Bin 0 -> 3205 bytes .../0.0.7/nasbench201/traj.parquet.gzip | Bin 0 -> 3039 bytes .../results/0.0.7/surrogate/traj.parquet.gzip | Bin 0 -> 3265 bytes .../results/0.0.7/tab_lr/traj.parquet.gzip | Bin 0 -> 3238 bytes .../results/0.0.7/tab_nn/traj.parquet.gzip | Bin 0 -> 3214 bytes .../results/0.0.7/tab_rf/traj.parquet.gzip | Bin 0 -> 3425 bytes .../results/0.0.7/tab_svm/traj.parquet.gzip | Bin 0 -> 3172 bytes .../translatewmt_xformer_64/traj.parquet.gzip | Bin 0 -> 3232 bytes .../traj.parquet.gzip | Bin 0 -> 2963 bytes .../0.1.0/counting_ones/traj.parquet.gzip | Bin 0 -> 3093 bytes .../imagenet_resnet_512/traj.parquet.gzip | Bin 0 -> 3277 bytes .../lm1b_transformer_2048/traj.parquet.gzip | Bin 0 -> 3102 bytes .../results/0.1.0/mfh3/traj.parquet.gzip | Bin 0 -> 3191 bytes .../results/0.1.0/mfh6/traj.parquet.gzip | Bin 0 -> 3169 bytes .../0.1.0/nasbench201/traj.parquet.gzip | Bin 0 -> 3189 bytes .../results/0.1.0/surrogate/traj.parquet.gzip | Bin 0 -> 3133 bytes .../results/0.1.0/tab_lr/traj.parquet.gzip | Bin 0 -> 3051 bytes .../results/0.1.0/tab_nn/traj.parquet.gzip | Bin 0 -> 3313 bytes .../results/0.1.0/tab_rf/traj.parquet.gzip | Bin 0 -> 3342 bytes .../results/0.1.0/tab_svm/traj.parquet.gzip | Bin 0 -> 3099 bytes .../translatewmt_xformer_64/traj.parquet.gzip | Bin 0 -> 3274 bytes .../traj.parquet.gzip | Bin 0 -> 2975 bytes .../0.1.1/counting_ones/traj.parquet.gzip | Bin 0 -> 3301 bytes .../imagenet_resnet_512/traj.parquet.gzip | Bin 0 -> 3181 bytes .../lm1b_transformer_2048/traj.parquet.gzip | Bin 0 -> 3222 bytes .../results/0.1.1/mfh3/traj.parquet.gzip | Bin 0 -> 3089 bytes .../results/0.1.1/mfh6/traj.parquet.gzip | Bin 0 -> 3389 bytes .../0.1.1/nasbench201/traj.parquet.gzip | Bin 0 -> 3205 bytes .../results/0.1.1/surrogate/traj.parquet.gzip | Bin 0 -> 3237 bytes .../results/0.1.1/tab_lr/traj.parquet.gzip | Bin 0 -> 3017 bytes .../results/0.1.1/tab_nn/traj.parquet.gzip | Bin 0 -> 3273 bytes .../results/0.1.1/tab_rf/traj.parquet.gzip | Bin 0 -> 3447 bytes .../results/0.1.1/tab_svm/traj.parquet.gzip | Bin 0 -> 3040 bytes .../translatewmt_xformer_64/traj.parquet.gzip | Bin 0 -> 3261 bytes benchmarking/results/benchmark_results.md | 156 ++++++++++++++++++ .../results/cifar100_wideresnet_2048_traj.png | Bin 0 -> 54500 bytes benchmarking/results/counting_ones_traj.png | Bin 0 -> 50260 bytes .../results/imagenet_resnet_512_traj.png | Bin 0 -> 54207 bytes .../results/lm1b_transformer_2048_traj.png | Bin 0 -> 53907 bytes benchmarking/results/mfh3_traj.png | Bin 0 -> 54912 bytes benchmarking/results/mfh6_traj.png | Bin 0 -> 59960 bytes benchmarking/results/nasbench201_traj.png | Bin 0 -> 41825 bytes benchmarking/results/surrogate_traj.png | Bin 0 -> 41457 bytes benchmarking/results/tab_lr_traj.png | Bin 0 -> 46664 bytes benchmarking/results/tab_nn_traj.png | Bin 0 -> 48319 bytes benchmarking/results/tab_rf_traj.png | Bin 0 -> 53723 bytes benchmarking/results/tab_svm_traj.png | Bin 0 -> 55473 bytes .../results/translatewmt_xformer_64_traj.png | Bin 0 -> 52286 bytes 131 files changed, 156 insertions(+) create mode 100644 benchmarking/results/0.0.1/cifar100_wideresnet_2048/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.1/counting_ones/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.1/imagenet_resnet_512/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.1/lm1b_transformer_2048/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.1/mfh3/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.1/mfh6/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.1/nasbench201/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.1/surrogate/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.1/tab_lr/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.1/tab_nn/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.1/tab_rf/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.1/tab_svm/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.1/translatewmt_xformer_64/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.2/cifar100_wideresnet_2048/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.2/counting_ones/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.2/imagenet_resnet_512/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.2/lm1b_transformer_2048/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.2/mfh3/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.2/mfh6/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.2/nasbench201/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.2/surrogate/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.2/tab_lr/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.2/tab_nn/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.2/tab_rf/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.2/tab_svm/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.2/translatewmt_xformer_64/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.3/cifar100_wideresnet_2048/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.3/counting_ones/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.3/imagenet_resnet_512/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.3/lm1b_transformer_2048/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.3/mfh3/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.3/mfh6/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.3/nasbench201/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.3/surrogate/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.3/tab_lr/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.3/tab_nn/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.3/tab_rf/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.3/tab_svm/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.3/translatewmt_xformer_64/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.4/cifar100_wideresnet_2048/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.4/counting_ones/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.4/imagenet_resnet_512/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.4/lm1b_transformer_2048/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.4/mfh3/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.4/mfh6/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.4/nasbench201/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.4/surrogate/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.4/tab_lr/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.4/tab_nn/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.4/tab_rf/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.4/tab_svm/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.4/translatewmt_xformer_64/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.5/cifar100_wideresnet_2048/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.5/counting_ones/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.5/imagenet_resnet_512/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.5/lm1b_transformer_2048/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.5/mfh3/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.5/mfh6/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.5/nasbench201/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.5/surrogate/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.5/tab_lr/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.5/tab_nn/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.5/tab_rf/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.5/tab_svm/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.5/translatewmt_xformer_64/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.6/cifar100_wideresnet_2048/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.6/counting_ones/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.6/imagenet_resnet_512/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.6/lm1b_transformer_2048/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.6/mfh3/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.6/mfh6/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.6/nasbench201/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.6/surrogate/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.6/tab_lr/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.6/tab_nn/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.6/tab_rf/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.6/tab_svm/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.6/translatewmt_xformer_64/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.7/cifar100_wideresnet_2048/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.7/counting_ones/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.7/imagenet_resnet_512/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.7/lm1b_transformer_2048/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.7/mfh3/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.7/mfh6/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.7/nasbench201/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.7/surrogate/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.7/tab_lr/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.7/tab_nn/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.7/tab_rf/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.7/tab_svm/traj.parquet.gzip create mode 100644 benchmarking/results/0.0.7/translatewmt_xformer_64/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.0/cifar100_wideresnet_2048/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.0/counting_ones/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.0/imagenet_resnet_512/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.0/lm1b_transformer_2048/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.0/mfh3/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.0/mfh6/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.0/nasbench201/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.0/surrogate/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.0/tab_lr/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.0/tab_nn/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.0/tab_rf/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.0/tab_svm/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.0/translatewmt_xformer_64/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.1/cifar100_wideresnet_2048/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.1/counting_ones/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.1/imagenet_resnet_512/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.1/lm1b_transformer_2048/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.1/mfh3/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.1/mfh6/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.1/nasbench201/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.1/surrogate/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.1/tab_lr/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.1/tab_nn/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.1/tab_rf/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.1/tab_svm/traj.parquet.gzip create mode 100644 benchmarking/results/0.1.1/translatewmt_xformer_64/traj.parquet.gzip create mode 100644 benchmarking/results/benchmark_results.md create mode 100644 benchmarking/results/cifar100_wideresnet_2048_traj.png create mode 100644 benchmarking/results/counting_ones_traj.png create mode 100644 benchmarking/results/imagenet_resnet_512_traj.png create mode 100644 benchmarking/results/lm1b_transformer_2048_traj.png create mode 100644 benchmarking/results/mfh3_traj.png create mode 100644 benchmarking/results/mfh6_traj.png create mode 100644 benchmarking/results/nasbench201_traj.png create mode 100644 benchmarking/results/surrogate_traj.png create mode 100644 benchmarking/results/tab_lr_traj.png create mode 100644 benchmarking/results/tab_nn_traj.png create mode 100644 benchmarking/results/tab_rf_traj.png create mode 100644 benchmarking/results/tab_svm_traj.png create mode 100644 benchmarking/results/translatewmt_xformer_64_traj.png diff --git a/benchmarking/results/0.0.1/cifar100_wideresnet_2048/traj.parquet.gzip b/benchmarking/results/0.0.1/cifar100_wideresnet_2048/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..a71c3cf11d3a316eb3b94480d414db8cf8d3efa6 GIT binary patch literal 2947 zcmcgueQZ-z6n|`Gb`xbAyrm5zG!-kFZS-RujIYOQw|4Eejuq$^F5|t|*RQ?zTH4pI zjUhx$ME^m-83K&JkPJZ+7K5M&ariNu$P|!ijL{IP0ud!daVU82Yd1DFOiYlQ_Pu-0 zx#!&9Ilpsm-ZI>(LPh967J4kJ4t)wm3K3-1OJYPA*_w)q&Z9r~YHm6;-tXL3+Vb{Z z)a@LcF=NKUA4?PB-CMmgldE@jbfk)sx0k%Y)!vGq?%c3}z*k*v+Vq$AiM^|2t=FcX z+a~)hn~=}Da=Nqf%(N40vuCeMetqz=?A;rdRCLpgZIuP*@zkPze)5@5mK-}erLdX0 zeZ8=6UB9vOwWTS^w->U`%!;X>?s*8=cYSDXH^7A=s1JQ*QVBXJLi5oaG^bc1)@U@F zdj?XN1S0?S2=XOXgv^;h3bc2kqdcouAO4`X@6&w)KMc|*4~9-|kWrm{4_HS=L2 zKvR4$oJ2)MgQB9ZL`A=d6satQ_`hJ3mHc>*EdyG{TeV9^QaCWEaW9)m~iS9#}da;X0f%@9~UhLYA)Xc>7cd%X0KXTl%^av&@ zysAlv-ot8|qSh_WUD%6L3u@0D=*D*RA2F{8?7?zxzW?l==en@o>UrWf0$tepvW*}9 zJ+vL`*m^G1JY@%#U;6oij~?5GX>zY_{$lcetVua^`0d`^Sl`j!Ip6f}!d_(}$ET{h zu>CJv#2wjP*xE%4efMH;I0lJ$*ehgky!5^@IP~xx1|N;^?uiI|YqH`}uHrLTW#iG@ z1LH&tN*8GnNlt|F(JX zB+OYTNrc0}I0O=-!x4XwgHlyRnW{`F2gv1_<3}mgWy&&*yd9BD!L8N?`+{`$Ne0Dp z;b`?%;W*w1{&3XdcsZ`~;szY|;(D(j)9J?O<4{;VqBr6C^cp+`FM{5L<8d6=fw$lU zyaglhbb`Mw?zC%LoQ`@RYytMVc_x;Lx{S7RhuRV&YivBp)%zR#I+9MB!vxrC3Ix3- z&g>&uH)Hb0y(U)cBke2Uo~YZNh}7wEKc%tyD6SF6@OWk&qx7Za#)wZ z;a~PrMg!o)&^j8ki%rCwjz+abZ-Q}y+^gcWtx`!lbd10e>xz(SgVGXc6wV{U z^|_7JBV2iw$6QC$BU)=ZsH ztPR9anapq#A?)U)(*bY_b*a;Wd6LvnLdJW&_G{V;A5rvo(% z>Qq&!b~((gguOB<_z0My_4@Kw6Q_i&0(%Ny0UttBRn@~*1q&UX5QIWgf&LmE4R8YL z|L)x2cwHD+&Iei(Y}%EuA3=ZD!2SfI5jJUhR968#I9YHlOw)2`tDC5vpxT)62j0Q} txEC)*B(e|@UK6GHQYsWG6)r4U=0cLCuPSLtF@k^}G7WsIE(4$6{{UGS#nk`+ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.1/counting_ones/traj.parquet.gzip b/benchmarking/results/0.0.1/counting_ones/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..41d820050aebcdc8ccb73f357c2d9882df9ccc34 GIT binary patch literal 3133 zcmcgv3v3f*9KUVdEE9wXH`}^yDMAAy3uQ^X53wG?X7p$(sws7 zYQWb_d?PWS;uJB#7aAZwa*-IF(*#u1YLv&-iAE#xRujQ%G%K;6uA~bYKGK^vdT(w$c=wqH~jMx`mw{(+jHxmz3RRr(s1kU zQ|AvJkw#`!rk4J3M0zuD{M&9^o*HNkM-dnpKmyb%WjqPtWUN1`u+aOC# za_{^L7Fp`KYuSR4ZdrO)z2EzePnOQdXUFRUvb3kXewKTKEFEu29X@@JEak>N|8f2! zvc%-S82#{3S=zeg+{{~d%F@%rS08+Pk1XNrrg;b7lqF*C_Q!{h%hHDBvp3y$N|sc< zng>QSdFjz(!;5+s<)wLF-WHNqZb^G|0c}e>1>-ZWjFAYD*_vApFD1vS;K}Sm( z(3}dLgI1sw)f)A9&>Ho)conj68Y&nQq{u?m$H~TB)@l6?3$j*#b+6y@?pr&oYTfEQ_kDa;mDc53~-94j6uv#*>d#Cd^?4u{{S8e>`9CmKa zoF8_*|2wwOKt~R|cos8%a6?u<{|xp}?$g&E-g*X0z1Lm-{>!Ja&?n~aFWU~|L2K0G zZecr2rCzai_~n|v+u@pcB5;{*cy4ChcGwP6kzNM>bnT#BWZQUVJIVv^^ z+W@Cvu~#wA77b6f)5o!Vpm#E@0IWBWjY5aIq{uOmKmkKih-NP`A~d{FAU1(bPys4I z0r5c{D*|y&3_{)2J@&;*bn7R8nT!HxPP&_*u}P4o6SxFlA0MF-O=cxWlkiPoOaKTI zxV{14ECvlyIdLAQBACkm4*)3DiLn&8kd>tI937)#S(vkEmWst9X$U06#^PK=gj7RQ zqoGl+1ITqn_Y;`LMt!46w;s{V#NF;ra%o}uG&%K6a18`oa2)Rff4ElSxEZ$waXXF& zaa&NKS*?@!X-I6n$R}`H;S8RN6@^dWcp3+K;H?+|Z$$|_ec*3R`$$XJ=j{N*FwnQ& zObC3^@9>ztMpue%^CW1ogX`q1G@EtCC?HGpM}mat4ADY>C%ANw5G)~@Tn%NC0WuSB zx8WRPa)%hP3()X%@tk68L=(}{k?ybo9nq!tdvVCm^m+7g!shI!jTr+?TKb?5zc<7) zSs-su06bIe`vsn-9qv9_uqXW8K+a(?(2g{;Q;f&e7iikx|}fa;F$E%)y*YiQyk)8HXLz#6B<)vtP)heBLgj%SOPs zLGBG{*3+zKy;feSk>HQhM!VkC-=+AYNsrz~x&062b*Eu`Ngrt_=)k(zoAr!f zSMoudoR&gP{82xd344v>wNPpto-VHc4QsJa7{LQ#XwDXE6Q@XL*5?H{mAEfe&SN#S5vn Va8+p=su2YIkh$RdU={dq_zS)vMppm; literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.1/imagenet_resnet_512/traj.parquet.gzip b/benchmarking/results/0.0.1/imagenet_resnet_512/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..f5ee42d53d918ffb3ed2a7c4989d023cb6c254a6 GIT binary patch literal 3181 zcmcgv3vd(H6smAvxqO4eU8 zh7<-!hL$>^q~HW&z#XTplhSw+Od%bEn}#;VW(b{eNDE9ujWfk5lmy5SNZ(t@#Kul% zI+O55+I{cd`|dmU-gDo~F2^luRDw21&_7HnL-i;!6G0x^CPTzA>6wPXvhAyHtiILh z>ASh+(8f~_Y1e+FMUMTn)potp-S_2(AKacf|IT3L>|NK1&IIY>xHTRAPl}%Jzvli= zuqm;5*Op7!_4M06xs=^l*uP-up~_{;8WwGx)qDQ%&3Cm;>#n@l)Bo&0yer<{`{R?Z zv|W|;9=f&HynEu z*;M6zQkI4wD1vsSp=ZWDZF)yQDdTlX7JLPaKLoP<8}Ohv~=w zFOZic4J6}fkS0sJap%g3$m4Hs>cr-pDVx!L@J;N&eOta)e7Y0c+CT8ug3RAxO+$Y< znDgiXY=$aQvg9|fV(O1SjKHlDpsnqiw~`d|z?3oomLkuA&tf({)RXvqLE^W4v|ZPbS=Y^s02YLKaoC;x=HChNDx40 zMV2D(K9WA?{v{^!)HD!Zjx6)awAl!v$dgO`q~Ich@;^%&l&s)lV%4;d3-dxy`E>T` z24x+PftfNu3LZw8m#q{?o&f?O%yD2943U8lSgORi&kv?rRdT_=g}U)aK$G-XExKn? zj>r0Ovkd2|9xF=%s}9Be@IYl)U}>K#i6PAU<98K43f@Ez8_$GD7a1afd4rM>fH^C8 z;NDd$jSCkm8%Kc|ivsK%bEiRPV<1gra1TB==OaUl3d9_Z!8b}V3Ls2iV;;bn3L2zx zbU%zoFkb&H01&GaU`TM0i%H{HDnJI}FlYWa83_2I5J-dx1X-T|rRqib>U@+=wTxt8Kx9Kl9C1h1>5Y^$J6*ky|a%M3V6Yb~|3 zPz7XoG_{V<24WFWTpleqfIUKm%4x@;KIXQnf`q~Br8F@$Wz)Ig8BTjGN5_G^F$D08 z_wVF6jxt%?6mJYUR{%ScPEDDj&`&C!3b(72i;6mfSxxaA@NXHxtETLFon33u(I$u+ zXDN-j-f62)CF4LacG!L~(s*SW`Tqc`JyaD4wcKkhGcO4m-dp@=~t@^EjoY#h6{Z zHBM`|2*tv>5wQxkAXetZSr|7V=mCcTPt`>lr`?<&ZAD?xhnEPK8wwJHpn|OedkS9( zA7WD#m%~;C3q2kag0B} zih&-SEV>q_NjcoBpNLOTZA$qAZ*c(JOP3<@Y(E*O4>O^KwBNr_ys)xU7gBces#4@- QAqe;(v%vSna`2(?U(9+@PXGV_ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.1/lm1b_transformer_2048/traj.parquet.gzip b/benchmarking/results/0.0.1/lm1b_transformer_2048/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..4f7775371abcefd602c55eab018264a3cb82b602 GIT binary patch literal 3257 zcmcgv3vd(H6l$=SF%3V zhdAJb#EvNmkYL9d7|ieqgoGKA@(oGcO!%c~D1|0Y!0p6o-3gRTCm1L+xP5PB6B|37 z=}gNTY4^Q*-@WhLbMJjKTZ5aFVv%_DRPm)L72+B(mWg4HtWCv)F-2WmJpAV2>j&Q3 zzrV?UZim?sA9$zh`m|}&(jT5N?~3QQn@i6vN&lqUaq-573kwRkFIN0%rXxlySG4qm zJ`ZN}*Ypov9R6Fkdj99bVCq@lXA4%PseEsL`PS=>+r?ZpK6v{WhwX~o@~%GqllaZv z(3CS<^K;^@XD{bF!fl71`DP0!DNA~{@oKrk{@se{<^BCBiYxwiljU}HQ`)ZlxhHk! z4f=&iM`jx|L-(KRKY8h?-dnTtwkbxgMB^w6Rt3=?DGx0A$uNpf+YNSq-~5vOEJQq^kp)!er( z14*je?H-&h`ZLJF=1d}mZ2dr*)9r8^{`H5aPF(5f{W^2b+0Hq^V>QojCyoa*GnmZ_ zUA@7+o*VBxyB@n-F1CO5yHm{0{WE@}TDs$-9o_W4t`jTft=lNx;C%ngAAeP|eQp)8 zs9U<5V+N05VeI{X&9qqIS$UUIvc+jq4VIE2l}zVolDCHfq?dMve1Vu)l+`E7`u%-b z11WhMMR}?JO&C%+tOZP*jM&J4FG!0}8~dhCtc|2aNgoVL=e|nYXB+@sZ+J@f9o`R& zn>UJDpWO{Uwe5SlMX?Q}RXoytWAzqrJ0ffJZ0!M8$-?%%f9L__vzEW|Eqv$dvro?7 z+Xdd-@Q<>Jb!)+lYI$pO@{8d6q6Zz16|M($t=GJrKU)uu^t=@43U2}>>VxGk=dJ>j zQltF-)mE@~=kU3|fASpIrg-g8_Y)o9(TCpXk2ZCHfd`@`HvdL2kiPwwZEH4wzMZq; zTc{U+WB1NgxkuUn-*Itf-ST!2S!mh)&w=N_w}bD6>VDn^hPUte;%H|(_~1a^!3#g_ z0Lwlayt)1_?ckN_v@f?EeICR=%?v$YZv&SN^pzLbHQ>oJrW+T0ZD5(PU}$Jv2e6!f z`s8h22bhBI&3b)p2e|L!Szn3vw1LOYUwb$+eGT~9D|bFwy9Q9}4wcwnY6ZzKi3jk~$hTs=kTRdtH5l89!8CdNAagtoU}N=DnDn*NdueBH$khW3uX#mT53aO3>Lr zbEH^=iPIiUo>1`#>0L-L*agyTsr(-HO5VLACTquZ7++p$R{QjaFia|!r1(kRMFu6O zMJr_t@1mo2r;iPDd{8z&XZcE5Bb33JEI{%eS|-nt@gzq>0Uu^rxC(~IKnN}s!rbSF zQ?(+opwU9v@(ZX*c(e=d=@G}{{kR#Lb=k+u62R=Cm>(S|3-gTA=SpA*bN<*Jg^xlP z7{bQUA<{*LNVt8ajOO8XhW8-bx@G!;$7L;Jz>G%$EyrDj$k{kZlWn*QpPTiOq2eNe zqjC7gD8>Lp1h&W_&XJ%Ym1Fy1B7%wf{{a9YI{})6_rE|I%TNI_5JQ~#V`L!Uiy$D) zbRfw1cqCO87b*)CGKgF@a{L&js!&m=mbGA#X}HN$ZJwX#K1pBdJT&5-avaBN;UA4B zaJ&fDdT>3CdvKjckZHB!^bsUnd`C~ z8Ypue+7ot}qrnOt&N$Vk1}9$&Wq4#{-R#s6#YA~!q*4cM_$r0Xf+Ky@U9SidI-{3T zMU|9U<3?xLEDfwP2KVbj5YI&aHjZT}gUL;C`jBlY+-J}zDMJML8HuOL?OMV{1f9;P zq&OD(H;v*|QWmYoqBd!q280`DD3!6vX0B2s;!(0LgC25XYCy5VxLJy;YPK05F9?&) zSYN-`8miVAOYg!SNBhm{Aae(o&KRMVqabT2+;fKygFvl@YqWR6$#`tdJwl7Nk^qMU}T!IFB;dE39TygUhh^POjWb zBPhPG)vQd|puFfy6;4hs@Ik4Kngk~{zs($Nw5UdNA>_Dmvbg?lSV!u_$<@OcN@F9r z36f@G%xZx+g}T&g;5_B{_o}n$14KR z@^PpoP}A0-euVwK1obBzwWvuGV{tju!;=Nq!ZaaAw%W<+38@Vu{@_~}5ch%wm?Xzf m2AaZjsKDv>7YG+t&d7z7lens+@@x!)KkPyHZBhe2TK)}=302?# literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.1/mfh3/traj.parquet.gzip b/benchmarking/results/0.0.1/mfh3/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..14d9408446bf510ba996d0ad3274bc155e01a41b GIT binary patch literal 3157 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 KU+@dy)BX<(^6W(b literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.1/surrogate/traj.parquet.gzip b/benchmarking/results/0.0.1/surrogate/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..eb8a5899160955e10047b25a5d711114da5026be GIT binary patch literal 3265 zcmc&%eQ*=U6+atAQJE6kfpg_CbsYg}(#S@VEwCZ5oFq#~wq+#SI!P4dyVFTJ`|c#` zTQW{a3F9P9h9-P887TFnDSxC%Lqlc=`6L!4BxzHZ(n7}#ZHLd2bTWa2gy5vzJ;}tz zCNrIB(;Z1~_r14ofA6>N?TpqCE*&nzhh_LXvNqg|W4B`1cYdhAq%o_cyySx~a7V=J zJa-hNmY2W%qbH7lU;gd(Z2{sCcx_Wm)w%o-c&Wu_esIwtuw~0w_t3>W$kdPR-FiL` z&RqI)#fEcvaPQXNjjfF4fq&U~^Ej0UFPZ)s9qP#gaPsJ`PnP9DHv8W2h#K1WELYYq z$b%>2ecLbLdC<4#V(8S|Ja|jHX4T8L=D{;d@BUK>l=YqWjIm{T@LaCx_gm-Wfp%j~ zctM^A_U_#e&w+CJj(zV8-;@U{t3Ub$4dtnDZs?~ad9Zu)k@G`X9ys(1FO+^h0%oOt z{M^e|N5D~%^W6qzP2HZh;HM+t2Ulk8T?(b|{-=}YJ{SSpYkKbcHk7RWek}I>2spNB zzrVZ$!*C3LwFEy|qQOtd@N!&^%jYW<6J#kB6YiDR?K5a0zhBbK1bcd3czxu^;S0kD z`;V+TXmCDJ=QKX_lQHH|%W>7iokMM()vVn(8mhj#@(m34R~$b$Iy$=0S)x1p-ZKw8 z@(0(tg+G7N6N$XNy?MRDc>K;4r@Kx+jyG*Q{QTxSO0km%$g_TUoch?!^YPhL225UF zr7ROzO7tgUR4>aUBC#wkt2`mA{6b#&o14{_WopHLl1Y^Y77&J)B0|ccfXsY#LH+uQ zrQ+3pya?u&{p;*2O+N$lh(&ZJ3)1F?}7^rUEtEC_se_!>IALazQs?icY+Vg#`ytj7r5tRdCh{qcK~+9 zhF$J~Hn7u#-Bq{rCbS(0pru|L1QIVBRqHy@w7E;OVt1&n$Y@2ugGBZu{+q7dn0bJwytDnwZ z1r9j(t*?+bfq9SLcJ+n@H9?kAG2xC1YP$CSP*9i4zbvR*;)%cw>glmt)K7f_7Swdi zH^^kBf~va9fGOp1Cd>*HF2nHIi%O>zaY1_>5)2l0)%+^W*I54QuaB6@@i{O*wW9K| zvUwO*rBTYGlo+7m$~R>LDozZr89x)@lY$smEvsESpz4Dxo*E~}v3$TkRaXG!Ph_L$Kvh!Y zm`I?2At^+&*9;LFy-5h0z$T~wm7t*efQl8NJ12(F-tI0-U6X2X5}2td;La(p8wxfB z(o7E5;S2H+DzT(d;%ExKNrp)P5rKmmh_je9q;hgUOh+)?{$Btf-A;_9;FB(q#&dLx zie(XJ(JU25!ss=ITHwl-kgIreVKII9; zVl;9gGeHne_(h|YAQ}l{h_Dbuh%kjDozXbOo<_=+Yjzu9Dy-qJ6h*Sz2qI0ueNak4 zpp-VjUoZR`(_Yfh=k>HhWgpycTxt{eq|fSZ^ynQadbK-2i|t$oXQbJzJw`!aTW=&} z6YXJI2=F#89kL0AFimzNpJaf{#M?{+$27RYjOc_qB3)dk7?W*@&D@@DH^DukL+kSp z$eszhwQ-xt-b?ED(HTBZm}j!k-;#iMrpNaQJWpF)L0YgRe4WtGYS7WvG>TKq z#}N#y=F^hRWY^IG597Ng@akxf(co!t85k?VO>nf{-tQwF+Cn}$K47&#PF!J>E6kgx z1xLzfg}fk4CcE3+;!Sjz?9JC<&mn)ZAT7zHyN`}$fUd;r`}<*p}ZmYx-{!<*0LTWFWr&gi_?0G*3s*f&Z9}U)=Rp= z0c*>(y9#!uQGQ7;sVnS3_hM<*GJ-|ogKn@J3Y_?&J~Gqi(NElkbjN)&<@GMK&j;7`-jYcCJxt6Sb&SP)`wE=tpWQb31BPxG)kKNhviI?5~N@fhMs2 zujhs!+G22L6SUe;({`hNg#Eo5^(P!o)TD*cVup5jvJ_gH7W8PZai)4gW@|AXl+u8> tSFFI4wNWb8pJWqtOf*_2Jy^BH2dTF3R8?u_V;KBkbK!rKHSo{NzX8rHSF8X4 literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.1/tab_lr/traj.parquet.gzip b/benchmarking/results/0.0.1/tab_lr/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..e51684bd3c293b5335f0b49a4899a53624c333c1 GIT binary patch literal 3238 zcmcgv4OCO-8NMkoL{}VYZwwQa&b`@Y}%J@5NI?|05E#B~ysiyr5qUEDlWi6S!*WPURrVMh!{$mxA3S>Lwxi=SV| z0>3*;{3<7r+= zdt1a{y%#>!G$t|Fui7>@CL}VLcD}!}8fCB@Uurh4;xm}Jr?>rj41@i&blHu490r@y z`P?A&Z3KJuowL>*LlG>w<*Sb_3`DRiQ*S-Fpf`fGZj`D%yA{C-2j=cA?22Ib3{yWp zaU+7AQXgKt`g#PLdpPYa>~aK4p^AZvMqvrx(>UR_L~Uy!HunV{&6gV z{krha(>husSZ;sAK_Lf0Pz1fiLGN->(M~QJkMdAnqL4q5G$DV)T!5rZA_aN=F5P5# zS=rm~UAUb5_xxADOHpDWR;>L=GWXKLNo{(9QkU32r${S&#L*!K*! z(A=D7Vsf9!<(d|8w(t6C(;?-$C0k2o%zm+K-|5!Ep6VlwZ#E?k)(suzZaG!=eA5aI z(&Xs$lHlCrq1Z%pT7nGW#U}`VNZTx~Qoq+yX(Rn^Zy4nYI=O-!v4T6X$(yDm^Z%QW z5>f%95cDyanRxI5DdM8_T=Zc~9-2LlVY5nK`QTutGlZrWeBX z-`w07*)J7gHIK&OuzK7 zclWK)ff|U$9;557oSy!tM!sFtS@q-_( zZ`c)kAa1~Y_AeWX1M9cOA?dUG_(+s7Z*b6$$1-O2QODz=-3Krs|K`BCj)g6?Dzl4w{Mwq*OfhIL1GNBICK9jXI|?3>1+FcPz*_OKK?tB zO!xV%6F732C-{<=+#i?x{!~DciFp4_6qAu8VWkWa@_b~4jkcg%1f90oNN`H@u5p>0Y_>%d8?&(h;NJ6TR=drk~7N77B+!_((vf4tWq}v&wT|Uu@ zq@UG@96$zUBCo||w~11dL@o<$0|HmT=>#jE-{SRyrI?+&Jz$z4jxKC)A*ovnG*OSG ztb5zA{BZ=m4q}TAq=u|c!t?n z;UvSrUg-yTCi*wiPA8$#l@qkmZ+;rssbmsD6@-3<1&kHM?IdVzm01Py0x>BxdVQ|RU!c%r zjl*6I?F|_|>Jcu5#&0$#1K_N%$>4FCGIUj>%R#}MOo-t>*pezGsEM+AG-fj$sxldi zq*{d<#tm{W3EK2oVw+L!WNSp5eS}mg)>am==Me_I*ksUESXH@?YE}Mp5XKiU86?p? zurA6hF-a@gd=MELSu`hRkJ%7%7^Ne%U~BA{EUy0>)?uEIv>wEe6&|jQ&tlMoO-6u| z<)vH(=3yd(WMj6{`YwVWGDCTlI0fTYyX1hwfTxlysoAKhwivPktdGjv zKt7czR=dQoRbWry#qhy4RZc!^Rj`obAy&vX73i;#Q2-}^|KoFm<9S}Nb2-qeVbhkt zegyr!8ulj`MX*VuBR2==!O5&^b{dt#z4FQU1l6ixf8fmyfP2*{M405Uc%Kc}{7XrX fXDNGOB@JIlNztn+AvF;}zz>-PK12$^7s|f?G3ag? literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.1/tab_nn/traj.parquet.gzip b/benchmarking/results/0.0.1/tab_nn/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..e30aca8e3475b7280052cb4d62ae6ed8639a2661 GIT binary patch literal 3214 zcmcgv4QvzF9lt<`tqwv;bHU!i8ksc(mIT|00W;dyvtv6pjzb*qSJozX=dZKx&W^tw znz5125m^QsRC)VD1o&F>Ut2iW*wA8X$Kt|+gMB4(159fX78OHnvks0 zq^?i)-FyG9_xu0f@BgIRKv)%cA^z<`{6L`@e+0)CVc7jU#F#MV7GMPvpA6g|_;}yI zDERsc^|sUhI1O&zvWttEQ{dqb*Ga#2ISZ;k9(;Gno-BB^-?s9F?krgQXjmuvY8D)O z-SUa%^4bd=ot*7B+ z(~TjZ<+rLIzcK{QUw9$pIz9ycIiFney3|lsf6xQ?8veMr6_Mzh^PL3Qnwl8HSFZb=O(IzS`?>~0x zxmRus)<;IO!9zW&e>vyvUbE}PQc;?z*;L}W{p?vfRden7`Kvb{@1N&(Jn_$uu1j>2jBf`M+dpW!L_Y~SOGIa1 z&u#^sqoVMipJsve{rSbEt6A`?d73|6Uls)KoY9}y|D+#0=4uT5?E(XKUU_+u@Anj3m(@dKW4mea_x!tgZpl+6lE=W? z!S_B`OtpgX@oMMj(stl@{_x2>X$A}M-%cmZWN{?oNjF5AnbOaTG|J6a&IKQ~e)!JS zo8Q`U_~yS~{lkTc+oG)x_Fltw*sky2h?w(C$*0UIj>g2Y>%k&*n-Myh&eOC z{+ASHV~%v43X>E?X}^af@j?v0=Ycsh*qW2xg#?2PmX=GazCfOTfrTmSSpf5^6qo&? zxD>;rRg$7G$-Bv@hwvF6F{J6o%7Ud2ZoB3q{wXP?L+;CWQCo15c0RWjw6AZMrN6tSy!fqYY(o zo}okT9ELa-PTx_4D0KNCY@8=Xy2%&`%{R+DJTzx`AM)L_QD41A)-?spbQI8Y+BJrP zO@lO>!Cm;gY>14lsuOB74c`>S6o9CJT~!cgK51CWsr@h$!A$+<06;jMh=+uCw@@^e zp(11?jcOK7laWX$iGUJg#Mb86fH8M$`kyH68`zB-)ciU4@vzB1!TC1Pto1u(I=GO^YYg}clZ%j67p$~77 zyBq}4r@S_K)TlKDC}m1P*;QV&hs)t-=`^(0#~_}W@m(CtQUa0=jr3Qztj_a?~oQr-+T{Av9HeBWhK+&=4s>C^Qx9ugTGb zCXoMk*M=a>5$L%FYK^FAH=%xn{oR226OLxoq`9H1hkCfP5L%e#i_@% literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.1/tab_rf/traj.parquet.gzip b/benchmarking/results/0.0.1/tab_rf/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..436387ca335793903835dcab02f6940065044a9a GIT binary patch literal 3425 zcmd5<3s4m29bfPy7n`vtE_3HVgO`LcBaeG<25iaSy^}lcgaZ!Y9!BwYZx0r3kK-O3 zhe4Auqp9(Y6+FZV7;JGgX^k<87~UjWXVMZ=X~y zwqJt(5_Sz8p3^jb5ndcgJNc`%7ob(;yZon{AHvqYxPghWVbH((^9L_q8HUf+tuKf^ zKMY5oxtrL+4#B5mqV!{D2I0v5=k*8M2Z50+o;Q|02qSrUYk&6D0PKvrkhyoq09<<~ zZs<5W04FM*z1CtHfchoM2iu7O$c`IPEXf`KY;Lvl{mcO1W0_w~WDw4u(yGkwrGakWQX+y{xHuiaw))e9Y_g*S-T zdtvxE+n86}3!S%U?^ohph`xULi^}mHpe81+Y|rU|f0%^x8F3FR^<8PYH1YvpQD5eM zP;(x3CJcT=?C6Hqciy`Vedl0)jm+UZa}My%QQyE=7yQ7TXG*x(1t(;J9V??S49D=h zQTXBL6ns>G$Ko+~OoB)_8C;QYQam18Itvx$v`R)M|2%kdt+i-uiAUPza6}HQuk--dz<1v#1?$KI;~C9e(4h<^-k09_8%)& zpX$&UR^$8Zhu=%RclY#5N=7Dr(jv>6c<{Tb-#_=+_#%3L^V4f@XP<6<_O1S>)|^f8 z9%u}OR$%qii|=kkaFTBe6YzOrB^DDa7JZ+kZLTt($5u&GzG_bp7sQVW;tvSpZwQlr zGdEfIpLi-xK?RB7(Oke{(S#!R?FD+RA+KI?zYY4~=$E(NJP7;pmh73oIh%i6AsyIbK+d8jf= z)CvjG^W>(=L$LXUj+efUJ_MU0^J_6nJ}>KTfs(IBZFal`&LtY|jJrZ`Ygxzsy8I9b zj*yAFQbW*naqY^b3q$aW&L}!#K{J#;^RZH`IRGnt_s9Ntvl)I^lKcFzrVuPjeWhD3 zXo0=!)8{J8AvpV&&#yW5G{N|*$I?$du^+lC)~KYiMj+F2mls{x2W(||t72Ot7|EMe zyYDwb?Wd-*heD08;c(Yt#ihNFHUg?;>$bwnoBuAj!)}JHsaap7F4+S83B&!Tp4=?h3*wYTMvr3v@ELBH^SsSD-Vg|Az&7I_{eSo$vM8A5)*rvB?+b zp#q)h(_=iHtw6;;QevVQFI7RaHe7(=^PY>I(G+3oBSi%Hm~S{V55X_+3C76s@myiU0%tGq_rC*RfvXG5|7PQPD@gf zBrY3EBZABCbfTTtXY=^bR?4rd-Ds(hhBq{~ku|JCoUp|*-aH*KJl&3ip`G@!>9jDg zGGEZm9Vqd;7^>PH#^7h&!H0}$lDp$LY%J}w*=;@>65lAHT}Yg9m28oDQu};5LTbf~(8*0hiQXlEc zX9^efmsd^OT>8KhP-!SU-HrBbg>t*<2Ibu!YVbZ}=_%@s~6h~zasglDFGE9-QU zTBCzxH9l)GlG7?>q&C3WiTGo1*mIo$o~PE!NY;t$8z=F~NV7_5Rv49(mcvajq+DNP zH5sH~e`HR(R)b<;qs=dGcXx-d6fji`K@!QPz|Fxm1W7TW_`WQl;!7bROa~enGC7UCFNR$>nUOl z_u`vsRX*3MXrm(Pcp~3asJ|vh0k=T)|7dIoBF}>~GZ9zEHEjvkkEp+Mx&B0>h-=dD z$XSK>=w#kBzYNnkUDa&$#IdyzduZkd!kwLsiIUtlPmQ1UrBZHpDt}=mMJ}YI@Kq&F RNx(4l!{X34R3ZAf`Zse{vP=K~ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.1/tab_svm/traj.parquet.gzip b/benchmarking/results/0.0.1/tab_svm/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..e5aa055b7d1072c60a9be7d0cfbe2584d23ab204 GIT binary patch literal 3172 zcmcgv4Qw0L9ls==6`-Mka;d$gYvy(tpd|HYNCM?_c4F6F;t)6S+1}RV?tK18?#{+O z$9BAwrmNa9Rx%<13rj0eARQHd_h$xf?-NKar0}BQIwHS^2e(oVosL z`DyI^w;$Uvs5*_cgy@k!UL3>LOt1O__w*R%y5o?kSs25foVvchuy_osyjJzwReRIe zuBM|(bRdo8y=vXN?5Q+1HF?LNx;u>>9CGX#z|+|1gEfBp57XG0TxgKS5?uf8e0du4 zT>8gbr}NU-R((Mac~!(-*{Zc%`MZd9J!qoNpA@kd9uM5h9uYCe;bX0(dqoT#^8S8g zkBB|@yWO{a+Am@`lcmpIcv8f+i*5M@+ePfHPp%Jt=@l`RaqGjMxkW7Zu;_V%5V1SA z)~;V}7O?}D*Y$-l5u16F8kzukqX_y+4l3r9q2n^N5S63yVnzOJ5fu5e=0(W8OGttL zH|3*!ZEbHJedoQ=AyIYV-H+cR6ZIcY3|x#pbE;?C3xk)OkF!78^g;BQk9x+At?f&_ zE9?K&S0nmoZNFBBc8+d3++wb87;xvlSk=&1{m&ccugr96YzL1cNbb(iq!a8@IxR0o zZ&w-+d7)CVoMTA7Rfv%73@wBrNmN!eE-M<47fs1a2W6%C|4RzWGQbD~&4raH1TRn$ z8G0cP{R%MTp#=<~+qP`cubG)?l)ZC#UBylv?b|neXwz9$Tan0rT{UrY?313M>D0F7 zlUJ%g=-9tvg|p+l8VUISIzt%c_ zKsff3OZTUSCYv^HJMn|dR|fi@yA*!@|*#7#B8*RPa`zq1t zCp=wiFnh)8z2_2Fx1ae;`>$(+u7A^!`w#dl>RV11hci-d#?)OJi9lHXdzSZAEd4eKB72e0j1C{qMG9B_e60&o zWMug_6uC1hco#8bSYGtGymVq&=?O@Y#c=;a5=&7;`H%ro$fIc?e(n|^?Fi)u% z9+(GtKlE*BHkVhay61qIj{8&^($AKSsOF_U}asp2`_!{GG!qDM%H2`4;@HakS<=B|V z;?%pe_D*VpQ=s^UU}MloF-cp51h&@pkl)JN0u<+Et--k8${7L_(E@E^ULp~#H{n5A z=Lpbz6OiHY?7EXSSu3rz4eT89E@lsx=ybc9w04sf<_&7E zi8Ib>HRCd}(iw4{D5W*4?d?s{eiY$Uy9r0YYpJ_+R=$mKm|x6IXfi(VT+G#KnlnrF zpma7vrY4@She&j|w6kX+opHxfd3|eGvpk_WC&-~XnLV2*N!XHZ7r-g;(r5tlB&DOJ zoV}bgNo(0oDhSWbny?4;iTZXt2=lh`M!;dfQ%$wjA5v4*Ho#T|3nQM8gi=$1{+b<)a02+hur@ee9|4|KKx>6f+XDL$^!EnXpI|h> zCe4hxTA&9zOQEG{Mh<c{r~^~ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.1/translatewmt_xformer_64/traj.parquet.gzip b/benchmarking/results/0.0.1/translatewmt_xformer_64/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..6facf08419d3edd15d7411a5554a0bd8267e9cb7 GIT binary patch literal 3232 zcmd5<4NP0t6@Gx@c%cw4%*1Y;l(?FkE{6ICr;seVdp5DL2Tm}J|F#z1v!9Kz-?QU? zo3f3ROwk5uXqqNdX_iQgCTeNBF4}0-QAjtMbTr-4EkD!hQgtOrkRXzVv>l0d@3ToE z&`FiHYFGAq_nvdlx!*bGJ6HC0+^i6A1V=c6{=6DNl>l3XVfX%=hp{7XbIVxAnOFXL ze#Y}|_p9}rr`PQ{{F~1&=e2OTKh3|kVd%uJb5}Rd3=a>VoZKCseDCbpz4Slxu08bN z-(&eBQ=|RM%m?@V`l@tKtp7WOy{k_!{W<62E$a@I9qtR|^$gH&-k4|%Z<%RWe(|~c zHvVf<_3XtVd*k%7S=0H;o_D%G3%|DZ&y>$1UH&o*n)%!kIr=NMT?ea=T{@4w% zqwwjMemKCZd3RR%4cXzM9X~3V9H{+cUpMzlnOpwkI?8%i0E^q{V0aw5k3wiI1jL3Sa2_Qsq|72w1Z=e`kzl0QOzsQZ# z-PqVabn?{jm6E};uE96O>xa@kqpwz9`b4_sJ|<`FSo*Ev)+b8;@adt??BZoM@y8r7 z=NI=MPneX`2UfX@cNW}L(D@YKIq>M+8`4j&mkx<5OQYvrsZl?m_PRw!Mz5O{_OX@^ zd{aMu>A=48+ef!^uIy&%(s8a>utKE9xO|atB~1}bLnK5rQ_e^rloW7^FK~(v zFE1YDN=Nggysr|TNCv5Z335@E`0xeO#Zu!8XE8N$_&HOzN`BciSW$WmB*W^pft`I| zMS3c|=E_m?r2p`v z{Q4dcn6i)X+Iqq9_RgYDJG;T5o)^<2lTU(z{L$+-#rr|3W_9l1ssrGSTSqj5^ML58Yz3zR)L4!r4ubb+ALs&)foD?J`0qd3 z2Hq~6t}t=h!6V+jH6Q-zad5ru*lVe^?O?i-Kf0QF9Q3`d`{q4eZD4Z3w0pqV4vsyW z{(Z>=eBVlq7wz2*-g|cX%)Y<0gC|>)$G4o`1>#p`HQjr6fqr#Q&yAy9;QVsZ_oXbG zOOlW`2M@7qvGo6iWheMwu&gi~aV6jE9oQN+b+HQ&7M}{eHL#M~F}aF6Hbz5QI~e zJhPzCLecsN)MPw1u3^ZQ{jg2np(0syu;A&P+aJexGXmkbf1B+6MZNrXayI06!* zLSb)!K~lxWGDVqO0+CCy$InwL%j9J$Nh>D23pbm$SvO_6Pk4d%AQ~x86^`R|@QcRx zal9PYcyJw#dvL9Xm1#5!^l>EIdRuS6wV5@1vR+ud0mtJww1aQf34F6g@M(u%P26r( z`|P$_DD**l%|iy-A9d(09cWL~Wle-@w7A!)GB-JyIw-^A*>%jRHEc9g)y8YJ(1tO|9X1^46K;z4hR&$d}zx8&l z-1Tu3U({|@WNc7fbd_=^tz+{+s*LJPP8>mpHQ}=<=W4;$*tb+%|1+#vo;Ya>jG;1_ ztxcG)8k2S##L4nfqlWV&sdBP0yJ$<&sr1K4FRGg%Ve*zIYMOB`irc_wAcrAO6_rYd z&6pyrl~LA5vmsimEl(L3IcgQuQ~1N^!8TP@EoxP`(BKJH$Tk)1ueq@eO(6g8%ngp$ zgrH>w)EZFJ?m+zr`@0(TCmeOCNi$<>71YC%S=a0|BS*HHrTB!@`m8_rW(UN*WeX-O o2@;{5Q7TgE3(LPh967J4kJ4t)wm3K3-1OJYPA*_w)q&Z9r~YHm6;-tXL3+Vb{Z z)a@LcF=NKUA4?PB-CMmgldE@jbfk)sx0k%Y)!vGq?%c3}z*k*v+Vq$AiM^|2t=FcX z+a~)hn~=}Da=Nqf%(N40vuCeMetqz=?A;rdRCLpgZIuP*@zkPze)5@5mK-}erLdX0 zeZ8=6UB9vOwWTS^w->U`%!;X>?s*8=cYSDXH^7A=s1JQ*QVBXJLi5oaG^bc1)@U@F zdj?XN1S0?S2=XOXgv^;h3bc2kqdcouAO4`X@6&w)KMc|*4~9-|kWrm{4_HS=L2 zKvR4$oJ2)MgQB9ZL`A=d6satQ_`hJ3mHc>*EdyG{TeV9^QaCWEaW9)m~iS9#}da;X0f%@9~UhLYA)Xc>7cd%X0KXTl%^av&@ zysAlv-ot8|qSh_WUD%6L3u@0D=*D*RA2F{8?7?zxzW?l==en@o>UrWf0$tepvW*}9 zJ+vL`*m^G1JY@%#U;6oij~?5GX>zY_{$lcetVua^`0d`^Sl`j!Ip6f}!d_(}$ET{h zu>CJv#2wjP*xE%4efMH;I0lJ$*ehgky!5^@IP~xx1|N;^?uiI|YqH`}uHrLTW#iG@ z1LH&tN*8GnNlt|F(JX zB+OYTNrc0}I0O=-!x4XwgHlyRnW{`F2gv1_<3}mgWy&&*yd9BD!L8N?`+{`$Ne0Dp z;b`?%;W*w1{&3XdcsZ`~;szY|;(D(j)9J?O<4{;VqBr6C^cp+`FM{5L<8d6=fw$lU zyaglhbb`Mw?zC%LoQ`@RYytMVc_x;Lx{S7RhuRV&YivBp)%zR#I+9MB!vxrC3Ix3- z&g>&uH)Hb0y(U)cBke2Uo~YZNh}7wEKc%tyD6SF6@OWk&qx7Za#)wZ z;a~PrMg!o)&^j8ki%rCwjz+abZ-Q}y+^gcWtx`!lbd10e>xz(SgVGXc6wV{U z^|_7JBV2iw$6QC$BU)=ZsH ztPR9anapq#A?)U)(*bY_b*a;Wd6LvnLdJW&_G{V;A5rvo(% z>Qq&!b~((gguOB<_z0My_4@Kw6Q_i&0(%Ny0UttBRn@~*1q&UX5QIWgf&LmE4R8YL z|L)x2cwHD+&Iei(Y}%EuA3=ZD!2SfI5jJUhR968#I9YHlOw)2`tDC5vpxT)62j0Q} txEC)*B(e|@UK6GHQYsWG6)r4U=0cLCuPSLtF@k^}G7WsIE(4$6{{UGS#nk`+ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.2/counting_ones/traj.parquet.gzip b/benchmarking/results/0.0.2/counting_ones/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..41d820050aebcdc8ccb73f357c2d9882df9ccc34 GIT binary patch literal 3133 zcmcgv3v3f*9KUVdEE9wXH`}^yDMAAy3uQ^X53wG?X7p$(sws7 zYQWb_d?PWS;uJB#7aAZwa*-IF(*#u1YLv&-iAE#xRujQ%G%K;6uA~bYKGK^vdT(w$c=wqH~jMx`mw{(+jHxmz3RRr(s1kU zQ|AvJkw#`!rk4J3M0zuD{M&9^o*HNkM-dnpKmyb%WjqPtWUN1`u+aOC# za_{^L7Fp`KYuSR4ZdrO)z2EzePnOQdXUFRUvb3kXewKTKEFEu29X@@JEak>N|8f2! zvc%-S82#{3S=zeg+{{~d%F@%rS08+Pk1XNrrg;b7lqF*C_Q!{h%hHDBvp3y$N|sc< zng>QSdFjz(!;5+s<)wLF-WHNqZb^G|0c}e>1>-ZWjFAYD*_vApFD1vS;K}Sm( z(3}dLgI1sw)f)A9&>Ho)conj68Y&nQq{u?m$H~TB)@l6?3$j*#b+6y@?pr&oYTfEQ_kDa;mDc53~-94j6uv#*>d#Cd^?4u{{S8e>`9CmKa zoF8_*|2wwOKt~R|cos8%a6?u<{|xp}?$g&E-g*X0z1Lm-{>!Ja&?n~aFWU~|L2K0G zZecr2rCzai_~n|v+u@pcB5;{*cy4ChcGwP6kzNM>bnT#BWZQUVJIVv^^ z+W@Cvu~#wA77b6f)5o!Vpm#E@0IWBWjY5aIq{uOmKmkKih-NP`A~d{FAU1(bPys4I z0r5c{D*|y&3_{)2J@&;*bn7R8nT!HxPP&_*u}P4o6SxFlA0MF-O=cxWlkiPoOaKTI zxV{14ECvlyIdLAQBACkm4*)3DiLn&8kd>tI937)#S(vkEmWst9X$U06#^PK=gj7RQ zqoGl+1ITqn_Y;`LMt!46w;s{V#NF;ra%o}uG&%K6a18`oa2)Rff4ElSxEZ$waXXF& zaa&NKS*?@!X-I6n$R}`H;S8RN6@^dWcp3+K;H?+|Z$$|_ec*3R`$$XJ=j{N*FwnQ& zObC3^@9>ztMpue%^CW1ogX`q1G@EtCC?HGpM}mat4ADY>C%ANw5G)~@Tn%NC0WuSB zx8WRPa)%hP3()X%@tk68L=(}{k?ybo9nq!tdvVCm^m+7g!shI!jTr+?TKb?5zc<7) zSs-su06bIe`vsn-9qv9_uqXW8K+a(?(2g{;Q;f&e7iikx|}fa;F$E%)y*YiQyk)8HXLz#6B<)vtP)heBLgj%SOPs zLGBG{*3+zKy;feSk>HQhM!VkC-=+AYNsrz~x&062b*Eu`Ngrt_=)k(zoAr!f zSMoudoR&gP{82xd344v>wNPpto-VHc4QsJa7{LQ#XwDXE6Q@XL*5?H{mAEfe&SN#S5vn Va8+p=su2YIkh$RdU={dq_zS)vMppm; literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.2/imagenet_resnet_512/traj.parquet.gzip b/benchmarking/results/0.0.2/imagenet_resnet_512/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..f5ee42d53d918ffb3ed2a7c4989d023cb6c254a6 GIT binary patch literal 3181 zcmcgv3vd(H6smAvxqO4eU8 zh7<-!hL$>^q~HW&z#XTplhSw+Od%bEn}#;VW(b{eNDE9ujWfk5lmy5SNZ(t@#Kul% zI+O55+I{cd`|dmU-gDo~F2^luRDw21&_7HnL-i;!6G0x^CPTzA>6wPXvhAyHtiILh z>ASh+(8f~_Y1e+FMUMTn)potp-S_2(AKacf|IT3L>|NK1&IIY>xHTRAPl}%Jzvli= zuqm;5*Op7!_4M06xs=^l*uP-up~_{;8WwGx)qDQ%&3Cm;>#n@l)Bo&0yer<{`{R?Z zv|W|;9=f&HynEu z*;M6zQkI4wD1vsSp=ZWDZF)yQDdTlX7JLPaKLoP<8}Ohv~=w zFOZic4J6}fkS0sJap%g3$m4Hs>cr-pDVx!L@J;N&eOta)e7Y0c+CT8ug3RAxO+$Y< znDgiXY=$aQvg9|fV(O1SjKHlDpsnqiw~`d|z?3oomLkuA&tf({)RXvqLE^W4v|ZPbS=Y^s02YLKaoC;x=HChNDx40 zMV2D(K9WA?{v{^!)HD!Zjx6)awAl!v$dgO`q~Ich@;^%&l&s)lV%4;d3-dxy`E>T` z24x+PftfNu3LZw8m#q{?o&f?O%yD2943U8lSgORi&kv?rRdT_=g}U)aK$G-XExKn? zj>r0Ovkd2|9xF=%s}9Be@IYl)U}>K#i6PAU<98K43f@Ez8_$GD7a1afd4rM>fH^C8 z;NDd$jSCkm8%Kc|ivsK%bEiRPV<1gra1TB==OaUl3d9_Z!8b}V3Ls2iV;;bn3L2zx zbU%zoFkb&H01&GaU`TM0i%H{HDnJI}FlYWa83_2I5J-dx1X-T|rRqib>U@+=wTxt8Kx9Kl9C1h1>5Y^$J6*ky|a%M3V6Yb~|3 zPz7XoG_{V<24WFWTpleqfIUKm%4x@;KIXQnf`q~Br8F@$Wz)Ig8BTjGN5_G^F$D08 z_wVF6jxt%?6mJYUR{%ScPEDDj&`&C!3b(72i;6mfSxxaA@NXHxtETLFon33u(I$u+ zXDN-j-f62)CF4LacG!L~(s*SW`Tqc`JyaD4wcKkhGcO4m-dp@=~t@^EjoY#h6{Z zHBM`|2*tv>5wQxkAXetZSr|7V=mCcTPt`>lr`?<&ZAD?xhnEPK8wwJHpn|OedkS9( zA7WD#m%~;C3q2kag0B} zih&-SEV>q_NjcoBpNLOTZA$qAZ*c(JOP3<@Y(E*O4>O^KwBNr_ys)xU7gBces#4@- QAqe;(v%vSna`2(?U(9+@PXGV_ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.2/lm1b_transformer_2048/traj.parquet.gzip b/benchmarking/results/0.0.2/lm1b_transformer_2048/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..4f7775371abcefd602c55eab018264a3cb82b602 GIT binary patch literal 3257 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 literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.2/mfh3/traj.parquet.gzip b/benchmarking/results/0.0.2/mfh3/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..14d9408446bf510ba996d0ad3274bc155e01a41b GIT binary patch literal 3157 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 KU+@dy)BX<(^6W(b literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.2/surrogate/traj.parquet.gzip b/benchmarking/results/0.0.2/surrogate/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..eb8a5899160955e10047b25a5d711114da5026be GIT binary patch literal 3265 zcmc&%eQ*=U6+atAQJE6kfpg_CbsYg}(#S@VEwCZ5oFq#~wq+#SI!P4dyVFTJ`|c#` zTQW{a3F9P9h9-P887TFnDSxC%Lqlc=`6L!4BxzHZ(n7}#ZHLd2bTWa2gy5vzJ;}tz zCNrIB(;Z1~_r14ofA6>N?TpqCE*&nzhh_LXvNqg|W4B`1cYdhAq%o_cyySx~a7V=J zJa-hNmY2W%qbH7lU;gd(Z2{sCcx_Wm)w%o-c&Wu_esIwtuw~0w_t3>W$kdPR-FiL` z&RqI)#fEcvaPQXNjjfF4fq&U~^Ej0UFPZ)s9qP#gaPsJ`PnP9DHv8W2h#K1WELYYq z$b%>2ecLbLdC<4#V(8S|Ja|jHX4T8L=D{;d@BUK>l=YqWjIm{T@LaCx_gm-Wfp%j~ zctM^A_U_#e&w+CJj(zV8-;@U{t3Ub$4dtnDZs?~ad9Zu)k@G`X9ys(1FO+^h0%oOt z{M^e|N5D~%^W6qzP2HZh;HM+t2Ulk8T?(b|{-=}YJ{SSpYkKbcHk7RWek}I>2spNB zzrVZ$!*C3LwFEy|qQOtd@N!&^%jYW<6J#kB6YiDR?K5a0zhBbK1bcd3czxu^;S0kD z`;V+TXmCDJ=QKX_lQHH|%W>7iokMM()vVn(8mhj#@(m34R~$b$Iy$=0S)x1p-ZKw8 z@(0(tg+G7N6N$XNy?MRDc>K;4r@Kx+jyG*Q{QTxSO0km%$g_TUoch?!^YPhL225UF zr7ROzO7tgUR4>aUBC#wkt2`mA{6b#&o14{_WopHLl1Y^Y77&J)B0|ccfXsY#LH+uQ zrQ+3pya?u&{p;*2O+N$lh(&ZJ3)1F?}7^rUEtEC_se_!>IALazQs?icY+Vg#`ytj7r5tRdCh{qcK~+9 zhF$J~Hn7u#-Bq{rCbS(0pru|L1QIVBRqHy@w7E;OVt1&n$Y@2ugGBZu{+q7dn0bJwytDnwZ z1r9j(t*?+bfq9SLcJ+n@H9?kAG2xC1YP$CSP*9i4zbvR*;)%cw>glmt)K7f_7Swdi zH^^kBf~va9fGOp1Cd>*HF2nHIi%O>zaY1_>5)2l0)%+^W*I54QuaB6@@i{O*wW9K| zvUwO*rBTYGlo+7m$~R>LDozZr89x)@lY$smEvsESpz4Dxo*E~}v3$TkRaXG!Ph_L$Kvh!Y zm`I?2At^+&*9;LFy-5h0z$T~wm7t*efQl8NJ12(F-tI0-U6X2X5}2td;La(p8wxfB z(o7E5;S2H+DzT(d;%ExKNrp)P5rKmmh_je9q;hgUOh+)?{$Btf-A;_9;FB(q#&dLx zie(XJ(JU25!ss=ITHwl-kgIreVKII9; zVl;9gGeHne_(h|YAQ}l{h_Dbuh%kjDozXbOo<_=+Yjzu9Dy-qJ6h*Sz2qI0ueNak4 zpp-VjUoZR`(_Yfh=k>HhWgpycTxt{eq|fSZ^ynQadbK-2i|t$oXQbJzJw`!aTW=&} z6YXJI2=F#89kL0AFimzNpJaf{#M?{+$27RYjOc_qB3)dk7?W*@&D@@DH^DukL+kSp z$eszhwQ-xt-b?ED(HTBZm}j!k-;#iMrpNaQJWpF)L0YgRe4WtGYS7WvG>TKq z#}N#y=F^hRWY^IG597Ng@akxf(co!t85k?VO>nf{-tQwF+Cn}$K47&#PF!J>E6kgx z1xLzfg}fk4CcE3+;!Sjz?9JC<&mn)ZAT7zHyN`}$fUd;r`}<*p}ZmYx-{!<*0LTWFWr&gi_?0G*3s*f&Z9}U)=Rp= z0c*>(y9#!uQGQ7;sVnS3_hM<*GJ-|ogKn@J3Y_?&J~Gqi(NElkbjN)&<@GMK&j;7`-jYcCJxt6Sb&SP)`wE=tpWQb31BPxG)kKNhviI?5~N@fhMs2 zujhs!+G22L6SUe;({`hNg#Eo5^(P!o)TD*cVup5jvJ_gH7W8PZai)4gW@|AXl+u8> tSFFI4wNWb8pJWqtOf*_2Jy^BH2dTF3R8?u_V;KBkbK!rKHSo{NzX8rHSF8X4 literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.2/tab_lr/traj.parquet.gzip b/benchmarking/results/0.0.2/tab_lr/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..e51684bd3c293b5335f0b49a4899a53624c333c1 GIT binary patch literal 3238 zcmcgv4OCO-8NMkoL{}VYZwwQa&b`@Y}%J@5NI?|05E#B~ysiyr5qUEDlWi6S!*WPURrVMh!{$mxA3S>Lwxi=SV| z0>3*;{3<7r+= zdt1a{y%#>!G$t|Fui7>@CL}VLcD}!}8fCB@Uurh4;xm}Jr?>rj41@i&blHu490r@y z`P?A&Z3KJuowL>*LlG>w<*Sb_3`DRiQ*S-Fpf`fGZj`D%yA{C-2j=cA?22Ib3{yWp zaU+7AQXgKt`g#PLdpPYa>~aK4p^AZvMqvrx(>UR_L~Uy!HunV{&6gV z{krha(>husSZ;sAK_Lf0Pz1fiLGN->(M~QJkMdAnqL4q5G$DV)T!5rZA_aN=F5P5# zS=rm~UAUb5_xxADOHpDWR;>L=GWXKLNo{(9QkU32r${S&#L*!K*! z(A=D7Vsf9!<(d|8w(t6C(;?-$C0k2o%zm+K-|5!Ep6VlwZ#E?k)(suzZaG!=eA5aI z(&Xs$lHlCrq1Z%pT7nGW#U}`VNZTx~Qoq+yX(Rn^Zy4nYI=O-!v4T6X$(yDm^Z%QW z5>f%95cDyanRxI5DdM8_T=Zc~9-2LlVY5nK`QTutGlZrWeBX z-`w07*)J7gHIK&OuzK7 zclWK)ff|U$9;557oSy!tM!sFtS@q-_( zZ`c)kAa1~Y_AeWX1M9cOA?dUG_(+s7Z*b6$$1-O2QODz=-3Krs|K`BCj)g6?Dzl4w{Mwq*OfhIL1GNBICK9jXI|?3>1+FcPz*_OKK?tB zO!xV%6F732C-{<=+#i?x{!~DciFp4_6qAu8VWkWa@_b~4jkcg%1f90oNN`H@u5p>0Y_>%d8?&(h;NJ6TR=drk~7N77B+!_((vf4tWq}v&wT|Uu@ zq@UG@96$zUBCo||w~11dL@o<$0|HmT=>#jE-{SRyrI?+&Jz$z4jxKC)A*ovnG*OSG ztb5zA{BZ=m4q}TAq=u|c!t?n z;UvSrUg-yTCi*wiPA8$#l@qkmZ+;rssbmsD6@-3<1&kHM?IdVzm01Py0x>BxdVQ|RU!c%r zjl*6I?F|_|>Jcu5#&0$#1K_N%$>4FCGIUj>%R#}MOo-t>*pezGsEM+AG-fj$sxldi zq*{d<#tm{W3EK2oVw+L!WNSp5eS}mg)>am==Me_I*ksUESXH@?YE}Mp5XKiU86?p? zurA6hF-a@gd=MELSu`hRkJ%7%7^Ne%U~BA{EUy0>)?uEIv>wEe6&|jQ&tlMoO-6u| z<)vH(=3yd(WMj6{`YwVWGDCTlI0fTYyX1hwfTxlysoAKhwivPktdGjv zKt7czR=dQoRbWry#qhy4RZc!^Rj`obAy&vX73i;#Q2-}^|KoFm<9S}Nb2-qeVbhkt zegyr!8ulj`MX*VuBR2==!O5&^b{dt#z4FQU1l6ixf8fmyfP2*{M405Uc%Kc}{7XrX fXDNGOB@JIlNztn+AvF;}zz>-PK12$^7s|f?G3ag? literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.2/tab_nn/traj.parquet.gzip b/benchmarking/results/0.0.2/tab_nn/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..e30aca8e3475b7280052cb4d62ae6ed8639a2661 GIT binary patch literal 3214 zcmcgv4QvzF9lt<`tqwv;bHU!i8ksc(mIT|00W;dyvtv6pjzb*qSJozX=dZKx&W^tw znz5125m^QsRC)VD1o&F>Ut2iW*wA8X$Kt|+gMB4(159fX78OHnvks0 zq^?i)-FyG9_xu0f@BgIRKv)%cA^z<`{6L`@e+0)CVc7jU#F#MV7GMPvpA6g|_;}yI zDERsc^|sUhI1O&zvWttEQ{dqb*Ga#2ISZ;k9(;Gno-BB^-?s9F?krgQXjmuvY8D)O z-SUa%^4bd=ot*7B+ z(~TjZ<+rLIzcK{QUw9$pIz9ycIiFney3|lsf6xQ?8veMr6_Mzh^PL3Qnwl8HSFZb=O(IzS`?>~0x zxmRus)<;IO!9zW&e>vyvUbE}PQc;?z*;L}W{p?vfRden7`Kvb{@1N&(Jn_$uu1j>2jBf`M+dpW!L_Y~SOGIa1 z&u#^sqoVMipJsve{rSbEt6A`?d73|6Uls)KoY9}y|D+#0=4uT5?E(XKUU_+u@Anj3m(@dKW4mea_x!tgZpl+6lE=W? z!S_B`OtpgX@oMMj(stl@{_x2>X$A}M-%cmZWN{?oNjF5AnbOaTG|J6a&IKQ~e)!JS zo8Q`U_~yS~{lkTc+oG)x_Fltw*sky2h?w(C$*0UIj>g2Y>%k&*n-Myh&eOC z{+ASHV~%v43X>E?X}^af@j?v0=Ycsh*qW2xg#?2PmX=GazCfOTfrTmSSpf5^6qo&? zxD>;rRg$7G$-Bv@hwvF6F{J6o%7Ud2ZoB3q{wXP?L+;CWQCo15c0RWjw6AZMrN6tSy!fqYY(o zo}okT9ELa-PTx_4D0KNCY@8=Xy2%&`%{R+DJTzx`AM)L_QD41A)-?spbQI8Y+BJrP zO@lO>!Cm;gY>14lsuOB74c`>S6o9CJT~!cgK51CWsr@h$!A$+<06;jMh=+uCw@@^e zp(11?jcOK7laWX$iGUJg#Mb86fH8M$`kyH68`zB-)ciU4@vzB1!TC1Pto1u(I=GO^YYg}clZ%j67p$~77 zyBq}4r@S_K)TlKDC}m1P*;QV&hs)t-=`^(0#~_}W@m(CtQUa0=jr3Qztj_a?~oQr-+T{Av9HeBWhK+&=4s>C^Qx9ugTGb zCXoMk*M=a>5$L%FYK^FAH=%xn{oR226OLxoq`9H1hkCfP5L%e#i_@% literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.2/tab_rf/traj.parquet.gzip b/benchmarking/results/0.0.2/tab_rf/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..436387ca335793903835dcab02f6940065044a9a GIT binary patch literal 3425 zcmd5<3s4m29bfPy7n`vtE_3HVgO`LcBaeG<25iaSy^}lcgaZ!Y9!BwYZx0r3kK-O3 zhe4Auqp9(Y6+FZV7;JGgX^k<87~UjWXVMZ=X~y zwqJt(5_Sz8p3^jb5ndcgJNc`%7ob(;yZon{AHvqYxPghWVbH((^9L_q8HUf+tuKf^ zKMY5oxtrL+4#B5mqV!{D2I0v5=k*8M2Z50+o;Q|02qSrUYk&6D0PKvrkhyoq09<<~ zZs<5W04FM*z1CtHfchoM2iu7O$c`IPEXf`KY;Lvl{mcO1W0_w~WDw4u(yGkwrGakWQX+y{xHuiaw))e9Y_g*S-T zdtvxE+n86}3!S%U?^ohph`xULi^}mHpe81+Y|rU|f0%^x8F3FR^<8PYH1YvpQD5eM zP;(x3CJcT=?C6Hqciy`Vedl0)jm+UZa}My%QQyE=7yQ7TXG*x(1t(;J9V??S49D=h zQTXBL6ns>G$Ko+~OoB)_8C;QYQam18Itvx$v`R)M|2%kdt+i-uiAUPza6}HQuk--dz<1v#1?$KI;~C9e(4h<^-k09_8%)& zpX$&UR^$8Zhu=%RclY#5N=7Dr(jv>6c<{Tb-#_=+_#%3L^V4f@XP<6<_O1S>)|^f8 z9%u}OR$%qii|=kkaFTBe6YzOrB^DDa7JZ+kZLTt($5u&GzG_bp7sQVW;tvSpZwQlr zGdEfIpLi-xK?RB7(Oke{(S#!R?FD+RA+KI?zYY4~=$E(NJP7;pmh73oIh%i6AsyIbK+d8jf= z)CvjG^W>(=L$LXUj+efUJ_MU0^J_6nJ}>KTfs(IBZFal`&LtY|jJrZ`Ygxzsy8I9b zj*yAFQbW*naqY^b3q$aW&L}!#K{J#;^RZH`IRGnt_s9Ntvl)I^lKcFzrVuPjeWhD3 zXo0=!)8{J8AvpV&&#yW5G{N|*$I?$du^+lC)~KYiMj+F2mls{x2W(||t72Ot7|EMe zyYDwb?Wd-*heD08;c(Yt#ihNFHUg?;>$bwnoBuAj!)}JHsaap7F4+S83B&!Tp4=?h3*wYTMvr3v@ELBH^SsSD-Vg|Az&7I_{eSo$vM8A5)*rvB?+b zp#q)h(_=iHtw6;;QevVQFI7RaHe7(=^PY>I(G+3oBSi%Hm~S{V55X_+3C76s@myiU0%tGq_rC*RfvXG5|7PQPD@gf zBrY3EBZABCbfTTtXY=^bR?4rd-Ds(hhBq{~ku|JCoUp|*-aH*KJl&3ip`G@!>9jDg zGGEZm9Vqd;7^>PH#^7h&!H0}$lDp$LY%J}w*=;@>65lAHT}Yg9m28oDQu};5LTbf~(8*0hiQXlEc zX9^efmsd^OT>8KhP-!SU-HrBbg>t*<2Ibu!YVbZ}=_%@s~6h~zasglDFGE9-QU zTBCzxH9l)GlG7?>q&C3WiTGo1*mIo$o~PE!NY;t$8z=F~NV7_5Rv49(mcvajq+DNP zH5sH~e`HR(R)b<;qs=dGcXx-d6fji`K@!QPz|Fxm1W7TW_`WQl;!7bROa~enGC7UCFNR$>nUOl z_u`vsRX*3MXrm(Pcp~3asJ|vh0k=T)|7dIoBF}>~GZ9zEHEjvkkEp+Mx&B0>h-=dD z$XSK>=w#kBzYNnkUDa&$#IdyzduZkd!kwLsiIUtlPmQ1UrBZHpDt}=mMJ}YI@Kq&F RNx(4l!{X34R3ZAf`Zse{vP=K~ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.2/tab_svm/traj.parquet.gzip b/benchmarking/results/0.0.2/tab_svm/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..e5aa055b7d1072c60a9be7d0cfbe2584d23ab204 GIT binary patch literal 3172 zcmcgv4Qw0L9ls==6`-Mka;d$gYvy(tpd|HYNCM?_c4F6F;t)6S+1}RV?tK18?#{+O z$9BAwrmNa9Rx%<13rj0eARQHd_h$xf?-NKar0}BQIwHS^2e(oVosL z`DyI^w;$Uvs5*_cgy@k!UL3>LOt1O__w*R%y5o?kSs25foVvchuy_osyjJzwReRIe zuBM|(bRdo8y=vXN?5Q+1HF?LNx;u>>9CGX#z|+|1gEfBp57XG0TxgKS5?uf8e0du4 zT>8gbr}NU-R((Mac~!(-*{Zc%`MZd9J!qoNpA@kd9uM5h9uYCe;bX0(dqoT#^8S8g zkBB|@yWO{a+Am@`lcmpIcv8f+i*5M@+ePfHPp%Jt=@l`RaqGjMxkW7Zu;_V%5V1SA z)~;V}7O?}D*Y$-l5u16F8kzukqX_y+4l3r9q2n^N5S63yVnzOJ5fu5e=0(W8OGttL zH|3*!ZEbHJedoQ=AyIYV-H+cR6ZIcY3|x#pbE;?C3xk)OkF!78^g;BQk9x+At?f&_ zE9?K&S0nmoZNFBBc8+d3++wb87;xvlSk=&1{m&ccugr96YzL1cNbb(iq!a8@IxR0o zZ&w-+d7)CVoMTA7Rfv%73@wBrNmN!eE-M<47fs1a2W6%C|4RzWGQbD~&4raH1TRn$ z8G0cP{R%MTp#=<~+qP`cubG)?l)ZC#UBylv?b|neXwz9$Tan0rT{UrY?313M>D0F7 zlUJ%g=-9tvg|p+l8VUISIzt%c_ zKsff3OZTUSCYv^HJMn|dR|fi@yA*!@|*#7#B8*RPa`zq1t zCp=wiFnh)8z2_2Fx1ae;`>$(+u7A^!`w#dl>RV11hci-d#?)OJi9lHXdzSZAEd4eKB72e0j1C{qMG9B_e60&o zWMug_6uC1hco#8bSYGtGymVq&=?O@Y#c=;a5=&7;`H%ro$fIc?e(n|^?Fi)u% z9+(GtKlE*BHkVhay61qIj{8&^($AKSsOF_U}asp2`_!{GG!qDM%H2`4;@HakS<=B|V z;?%pe_D*VpQ=s^UU}MloF-cp51h&@pkl)JN0u<+Et--k8${7L_(E@E^ULp~#H{n5A z=Lpbz6OiHY?7EXSSu3rz4eT89E@lsx=ybc9w04sf<_&7E zi8Ib>HRCd}(iw4{D5W*4?d?s{eiY$Uy9r0YYpJ_+R=$mKm|x6IXfi(VT+G#KnlnrF zpma7vrY4@She&j|w6kX+opHxfd3|eGvpk_WC&-~XnLV2*N!XHZ7r-g;(r5tlB&DOJ zoV}bgNo(0oDhSWbny?4;iTZXt2=lh`M!;dfQ%$wjA5v4*Ho#T|3nQM8gi=$1{+b<)a02+hur@ee9|4|KKx>6f+XDL$^!EnXpI|h> zCe4hxTA&9zOQEG{Mh<c{r~^~ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.2/translatewmt_xformer_64/traj.parquet.gzip b/benchmarking/results/0.0.2/translatewmt_xformer_64/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..6facf08419d3edd15d7411a5554a0bd8267e9cb7 GIT binary patch literal 3232 zcmd5<4NP0t6@Gx@c%cw4%*1Y;l(?FkE{6ICr;seVdp5DL2Tm}J|F#z1v!9Kz-?QU? zo3f3ROwk5uXqqNdX_iQgCTeNBF4}0-QAjtMbTr-4EkD!hQgtOrkRXzVv>l0d@3ToE z&`FiHYFGAq_nvdlx!*bGJ6HC0+^i6A1V=c6{=6DNl>l3XVfX%=hp{7XbIVxAnOFXL ze#Y}|_p9}rr`PQ{{F~1&=e2OTKh3|kVd%uJb5}Rd3=a>VoZKCseDCbpz4Slxu08bN z-(&eBQ=|RM%m?@V`l@tKtp7WOy{k_!{W<62E$a@I9qtR|^$gH&-k4|%Z<%RWe(|~c zHvVf<_3XtVd*k%7S=0H;o_D%G3%|DZ&y>$1UH&o*n)%!kIr=NMT?ea=T{@4w% zqwwjMemKCZd3RR%4cXzM9X~3V9H{+cUpMzlnOpwkI?8%i0E^q{V0aw5k3wiI1jL3Sa2_Qsq|72w1Z=e`kzl0QOzsQZ# z-PqVabn?{jm6E};uE96O>xa@kqpwz9`b4_sJ|<`FSo*Ev)+b8;@adt??BZoM@y8r7 z=NI=MPneX`2UfX@cNW}L(D@YKIq>M+8`4j&mkx<5OQYvrsZl?m_PRw!Mz5O{_OX@^ zd{aMu>A=48+ef!^uIy&%(s8a>utKE9xO|atB~1}bLnK5rQ_e^rloW7^FK~(v zFE1YDN=Nggysr|TNCv5Z335@E`0xeO#Zu!8XE8N$_&HOzN`BciSW$WmB*W^pft`I| zMS3c|=E_m?r2p`v z{Q4dcn6i)X+Iqq9_RgYDJG;T5o)^<2lTU(z{L$+-#rr|3W_9l1ssrGSTSqj5^ML58Yz3zR)L4!r4ubb+ALs&)foD?J`0qd3 z2Hq~6t}t=h!6V+jH6Q-zad5ru*lVe^?O?i-Kf0QF9Q3`d`{q4eZD4Z3w0pqV4vsyW z{(Z>=eBVlq7wz2*-g|cX%)Y<0gC|>)$G4o`1>#p`HQjr6fqr#Q&yAy9;QVsZ_oXbG zOOlW`2M@7qvGo6iWheMwu&gi~aV6jE9oQN+b+HQ&7M}{eHL#M~F}aF6Hbz5QI~e zJhPzCLecsN)MPw1u3^ZQ{jg2np(0syu;A&P+aJexGXmkbf1B+6MZNrXayI06!* zLSb)!K~lxWGDVqO0+CCy$InwL%j9J$Nh>D23pbm$SvO_6Pk4d%AQ~x86^`R|@QcRx zal9PYcyJw#dvL9Xm1#5!^l>EIdRuS6wV5@1vR+ud0mtJww1aQf34F6g@M(u%P26r( z`|P$_DD**l%|iy-A9d(09cWL~Wle-@w7A!)GB-JyIw-^A*>%jRHEc9g)y8YJ(1tO|9X1^46K;z4hR&$d}zx8&l z-1Tu3U({|@WNc7fbd_=^tz+{+s*LJPP8>mpHQ}=<=W4;$*tb+%|1+#vo;Ya>jG;1_ ztxcG)8k2S##L4nfqlWV&sdBP0yJ$<&sr1K4FRGg%Ve*zIYMOB`irc_wAcrAO6_rYd z&6pyrl~LA5vmsimEl(L3IcgQuQ~1N^!8TP@EoxP`(BKJH$Tk)1ueq@eO(6g8%ngp$ zgrH>w)EZFJ?m+zr`@0(TCmeOCNi$<>71YC%S=a0|BS*HHrTB!@`m8_rW(UN*WeX-O o2@;{5Q7TgE3(LPh967J4kJ4t)wm3K3-1OJYPA*_w)q&Z9r~YHm6;-tXL3+Vb{Z z)a@LcF=NKUA4?PB-CMmgldE@jbfk)sx0k%Y)!vGq?%c3}z*k*v+Vq$AiM^|2t=FcX z+a~)hn~=}Da=Nqf%(N40vuCeMetqz=?A;rdRCLpgZIuP*@zkPze)5@5mK-}erLdX0 zeZ8=6UB9vOwWTS^w->U`%!;X>?s*8=cYSDXH^7A=s1JQ*QVBXJLi5oaG^bc1)@U@F zdj?XN1S0?S2=XOXgv^;h3bc2kqdcouAO4`X@6&w)KMc|*4~9-|kWrm{4_HS=L2 zKvR4$oJ2)MgQB9ZL`A=d6satQ_`hJ3mHc>*EdyG{TeV9^QaCWEaW9)m~iS9#}da;X0f%@9~UhLYA)Xc>7cd%X0KXTl%^av&@ zysAlv-ot8|qSh_WUD%6L3u@0D=*D*RA2F{8?7?zxzW?l==en@o>UrWf0$tepvW*}9 zJ+vL`*m^G1JY@%#U;6oij~?5GX>zY_{$lcetVua^`0d`^Sl`j!Ip6f}!d_(}$ET{h zu>CJv#2wjP*xE%4efMH;I0lJ$*ehgky!5^@IP~xx1|N;^?uiI|YqH`}uHrLTW#iG@ z1LH&tN*8GnNlt|F(JX zB+OYTNrc0}I0O=-!x4XwgHlyRnW{`F2gv1_<3}mgWy&&*yd9BD!L8N?`+{`$Ne0Dp z;b`?%;W*w1{&3XdcsZ`~;szY|;(D(j)9J?O<4{;VqBr6C^cp+`FM{5L<8d6=fw$lU zyaglhbb`Mw?zC%LoQ`@RYytMVc_x;Lx{S7RhuRV&YivBp)%zR#I+9MB!vxrC3Ix3- z&g>&uH)Hb0y(U)cBke2Uo~YZNh}7wEKc%tyD6SF6@OWk&qx7Za#)wZ z;a~PrMg!o)&^j8ki%rCwjz+abZ-Q}y+^gcWtx`!lbd10e>xz(SgVGXc6wV{U z^|_7JBV2iw$6QC$BU)=ZsH ztPR9anapq#A?)U)(*bY_b*a;Wd6LvnLdJW&_G{V;A5rvo(% z>Qq&!b~((gguOB<_z0My_4@Kw6Q_i&0(%Ny0UttBRn@~*1q&UX5QIWgf&LmE4R8YL z|L)x2cwHD+&Iei(Y}%EuA3=ZD!2SfI5jJUhR968#I9YHlOw)2`tDC5vpxT)62j0Q} txEC)*B(e|@UK6GHQYsWG6)r4U=0cLCuPSLtF@k^}G7WsIE(4$6{{UGS#nk`+ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.3/counting_ones/traj.parquet.gzip b/benchmarking/results/0.0.3/counting_ones/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..41d820050aebcdc8ccb73f357c2d9882df9ccc34 GIT binary patch literal 3133 zcmcgv3v3f*9KUVdEE9wXH`}^yDMAAy3uQ^X53wG?X7p$(sws7 zYQWb_d?PWS;uJB#7aAZwa*-IF(*#u1YLv&-iAE#xRujQ%G%K;6uA~bYKGK^vdT(w$c=wqH~jMx`mw{(+jHxmz3RRr(s1kU zQ|AvJkw#`!rk4J3M0zuD{M&9^o*HNkM-dnpKmyb%WjqPtWUN1`u+aOC# za_{^L7Fp`KYuSR4ZdrO)z2EzePnOQdXUFRUvb3kXewKTKEFEu29X@@JEak>N|8f2! zvc%-S82#{3S=zeg+{{~d%F@%rS08+Pk1XNrrg;b7lqF*C_Q!{h%hHDBvp3y$N|sc< zng>QSdFjz(!;5+s<)wLF-WHNqZb^G|0c}e>1>-ZWjFAYD*_vApFD1vS;K}Sm( z(3}dLgI1sw)f)A9&>Ho)conj68Y&nQq{u?m$H~TB)@l6?3$j*#b+6y@?pr&oYTfEQ_kDa;mDc53~-94j6uv#*>d#Cd^?4u{{S8e>`9CmKa zoF8_*|2wwOKt~R|cos8%a6?u<{|xp}?$g&E-g*X0z1Lm-{>!Ja&?n~aFWU~|L2K0G zZecr2rCzai_~n|v+u@pcB5;{*cy4ChcGwP6kzNM>bnT#BWZQUVJIVv^^ z+W@Cvu~#wA77b6f)5o!Vpm#E@0IWBWjY5aIq{uOmKmkKih-NP`A~d{FAU1(bPys4I z0r5c{D*|y&3_{)2J@&;*bn7R8nT!HxPP&_*u}P4o6SxFlA0MF-O=cxWlkiPoOaKTI zxV{14ECvlyIdLAQBACkm4*)3DiLn&8kd>tI937)#S(vkEmWst9X$U06#^PK=gj7RQ zqoGl+1ITqn_Y;`LMt!46w;s{V#NF;ra%o}uG&%K6a18`oa2)Rff4ElSxEZ$waXXF& zaa&NKS*?@!X-I6n$R}`H;S8RN6@^dWcp3+K;H?+|Z$$|_ec*3R`$$XJ=j{N*FwnQ& zObC3^@9>ztMpue%^CW1ogX`q1G@EtCC?HGpM}mat4ADY>C%ANw5G)~@Tn%NC0WuSB zx8WRPa)%hP3()X%@tk68L=(}{k?ybo9nq!tdvVCm^m+7g!shI!jTr+?TKb?5zc<7) zSs-su06bIe`vsn-9qv9_uqXW8K+a(?(2g{;Q;f&e7iikx|}fa;F$E%)y*YiQyk)8HXLz#6B<)vtP)heBLgj%SOPs zLGBG{*3+zKy;feSk>HQhM!VkC-=+AYNsrz~x&062b*Eu`Ngrt_=)k(zoAr!f zSMoudoR&gP{82xd344v>wNPpto-VHc4QsJa7{LQ#XwDXE6Q@XL*5?H{mAEfe&SN#S5vn Va8+p=su2YIkh$RdU={dq_zS)vMppm; literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.3/imagenet_resnet_512/traj.parquet.gzip b/benchmarking/results/0.0.3/imagenet_resnet_512/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..f5ee42d53d918ffb3ed2a7c4989d023cb6c254a6 GIT binary patch literal 3181 zcmcgv3vd(H6smAvxqO4eU8 zh7<-!hL$>^q~HW&z#XTplhSw+Od%bEn}#;VW(b{eNDE9ujWfk5lmy5SNZ(t@#Kul% zI+O55+I{cd`|dmU-gDo~F2^luRDw21&_7HnL-i;!6G0x^CPTzA>6wPXvhAyHtiILh z>ASh+(8f~_Y1e+FMUMTn)potp-S_2(AKacf|IT3L>|NK1&IIY>xHTRAPl}%Jzvli= zuqm;5*Op7!_4M06xs=^l*uP-up~_{;8WwGx)qDQ%&3Cm;>#n@l)Bo&0yer<{`{R?Z zv|W|;9=f&HynEu z*;M6zQkI4wD1vsSp=ZWDZF)yQDdTlX7JLPaKLoP<8}Ohv~=w zFOZic4J6}fkS0sJap%g3$m4Hs>cr-pDVx!L@J;N&eOta)e7Y0c+CT8ug3RAxO+$Y< znDgiXY=$aQvg9|fV(O1SjKHlDpsnqiw~`d|z?3oomLkuA&tf({)RXvqLE^W4v|ZPbS=Y^s02YLKaoC;x=HChNDx40 zMV2D(K9WA?{v{^!)HD!Zjx6)awAl!v$dgO`q~Ich@;^%&l&s)lV%4;d3-dxy`E>T` z24x+PftfNu3LZw8m#q{?o&f?O%yD2943U8lSgORi&kv?rRdT_=g}U)aK$G-XExKn? zj>r0Ovkd2|9xF=%s}9Be@IYl)U}>K#i6PAU<98K43f@Ez8_$GD7a1afd4rM>fH^C8 z;NDd$jSCkm8%Kc|ivsK%bEiRPV<1gra1TB==OaUl3d9_Z!8b}V3Ls2iV;;bn3L2zx zbU%zoFkb&H01&GaU`TM0i%H{HDnJI}FlYWa83_2I5J-dx1X-T|rRqib>U@+=wTxt8Kx9Kl9C1h1>5Y^$J6*ky|a%M3V6Yb~|3 zPz7XoG_{V<24WFWTpleqfIUKm%4x@;KIXQnf`q~Br8F@$Wz)Ig8BTjGN5_G^F$D08 z_wVF6jxt%?6mJYUR{%ScPEDDj&`&C!3b(72i;6mfSxxaA@NXHxtETLFon33u(I$u+ zXDN-j-f62)CF4LacG!L~(s*SW`Tqc`JyaD4wcKkhGcO4m-dp@=~t@^EjoY#h6{Z zHBM`|2*tv>5wQxkAXetZSr|7V=mCcTPt`>lr`?<&ZAD?xhnEPK8wwJHpn|OedkS9( zA7WD#m%~;C3q2kag0B} zih&-SEV>q_NjcoBpNLOTZA$qAZ*c(JOP3<@Y(E*O4>O^KwBNr_ys)xU7gBces#4@- QAqe;(v%vSna`2(?U(9+@PXGV_ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.3/lm1b_transformer_2048/traj.parquet.gzip b/benchmarking/results/0.0.3/lm1b_transformer_2048/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..4f7775371abcefd602c55eab018264a3cb82b602 GIT binary patch literal 3257 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 literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.3/mfh3/traj.parquet.gzip b/benchmarking/results/0.0.3/mfh3/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..14d9408446bf510ba996d0ad3274bc155e01a41b GIT binary patch literal 3157 zcmcgv4Qw0L9ltn^=ebQ%XfN0(1IsK{>5|kRaoPmX>FmVrxrx)b)MvY}aCg2qm)xD5 z^Z7GNVI52x>sIkyprjNbIywnK*N+sj=2FBcsEA5MTP6krwtzFl8dzIRE2Dew?3AQQ zk&w1N*>~^#zuxcvd;kBFZWA7~qgwP-CHhrm7ut>@*CNP`ztAJ^Y>kQM)(U8+rMv%Qkn{-SS?>SbWMe_>vMeN{br3~ zxR`l+SF=W;3I+3D-_t0rTbutRO;;+P1oyA0ENYeNko3a_qDr~2tr&B>RHb;gtkJZ6 zN2eTk|MgHas#89lp888%&?!$gJ^z|`RHtlQ?_Bw7qh9%HymOziUavgEec^Z<(<|eZ zt+jg8pj^0~JXv2{rlik~TAee?6hrD!zf-POKH6Z+ZJn)F4v*X!3z}<`vBV86KOe18 zHr;Z^@%=k$l%Ixw75wti8s&@OU!E_5yio+*U4b62Xhf&9=n7Pa>gtX9ITDQeIrBPX z^%7Fx|22I~|6O;DPaZ$<<_o7jJh6Am(J-@n`kz&sw{L%VeCoH=JBiqyLqFQK@8AD< z|BTdR(4747zQ#Ro_pYqFmO55gwz_C-ZkRNzy7^e$Bem~jcJ}I!;%|;T762Pqi@JK$ zU~(b46((b?z*1tLEK!3jBPXOhs;!&S*6q;MeW0^Gr?u+84R%u_CshfLe1H2KY03Gta9Dz9*y)a zcK+;4|;*ZlJ2N$gzq){=N z$>WDG)2p?c0)}zS`rw-lE#f%#z;w;%_g+`9e@u0aEjy}Ux|ieLKc1SzzHGgz-N_up zZmx-Wm#;aD?c8|HeJ`yY!zP%mn&^jnG3M^3$ENkqU_IacwEc>uF-L+?Kj#ihW3lwA zl*U-?*QHUDl4Dn>j6W~89)qQ^808hPFI5_*TV04zmtqE3fkL$iYG}|bD#w!aG9(Bn zQB%FC@hTRw_39B*w`)1b&#JFes#hV1snMuQQeuos8Q;*3SU54p=K7cfpBBWFrQN)B z#4-eAU}ljhG0s{V%@&aoSRfG7JP%eWnUZ9%w5jt%5=@=8(t?Ex`{@fO@2$Gtcn$31aX=5{a8XQ8n3 zlAgdlr8Rh}QB*yF<5?W|fwvk2yj3UgjDWv88zEgok#IK<4gr7nIzr&nQD3Mf>;*DB zTV7`v57A0=bZ5Igz()+&qG25BbNwM(itzXcX-CdZldgWaM>IUZGkIX|l>wf`@uLFI z)4pIoEqLYVW?<)Y*=b)E#wq6$=#OpSv#QSHx6=X-;s@vO+Uc;{6?O()j1S_*IojbL zj*=pgrkKahGs;{Bo4^ zromqM2$|#~&R~WShd9W|q8z@#mhpMPnRpBHF-L`5CKB#-1Uv-H8*p#WvY|E`8+P;R z841x8?eN+HgT3m0G#Ro*$lyTC*Lmrz`Zs4`e(4BlFZsZ8@wV9*!K?B?JN>Q_C(&e- z%ngMdb7!HR@z7Fv{ok;b>x2CZ>P0H<1)ZWoy6X(yxR91}u$#=&Q3 z4xSs43veyDu0foGc@v@=)G(-1dz&K~_7^C!Ev?2FB+}iUmI5K#V5`8M!f%HUwW&I~ zVXK0L8_%giwW&aV&5a&70rh`5H#puU0nhb7OTebx0{ap4_XgOXVD!Q!Esf3&pa(mv zq19o~*^pY1IRclO!2`0nib zBeoM#wE<~#9c_iWm8u`K8~tQJyH&Ii9cQ|BYxpQh7$Zv|XhAS_2+FA1P?o{oJ3BNX zp;D!dC;RTb|JVEdfA9Z)(yb<(I#hvPEI?mS*wK|JatDIk^_UWoM?v0YWbU;9*1c!& zk5;MFav(IAe@wc)dguJo%cmrB>nE+6{=ZARN;VOXE*z7daGaPx;$zaG7UAvQ;W25! z_7x$G{j?OT8AM$DXQbNF_r5TkJ|itkEZ<1{{+zVo(z3l@mS2#TC^J9%XZ|Irx1e<2 zf@7acU+vgDe&y^J(!z)Pw)CgWov%MS$mJ?>`(JEPhT;eSA3YCIr7$qzS4$*jA`CiPrb6U zAoIKf`_Fe;6`A6PsipLKMdlDW=g_}*DKgt^NavlW!TZ(y_YdgjWP}gYPhAE)pa{Av z4;{+Wpu-BZ1T91h%T>xrQdG)G^D^X~S){=KYdU>_b?e^U|Nch@UeCNVj14TWeC^=H zt@ZkCPoEvCJpSwL?|QoTtbBIOg!tKb_c3e&%MbLLOou*vsQGW9U)J~SZeXQ3K{~J$r!%ddGYgKEgZ#{ zelM|a<6lqWd-rYp@}q+zcm;jw1=fEO-|^;#QnN6MA0~@_ZfhFF2a6tm&7ePpKlbTw zHWQDG;NwGDJH37cuhZWB!9zbB!FTq*a>s)5Pw$Y`;~$%L-@75nX#Le%p_Qqa*`fcGBc&Ov}CT%|GH#~ zV{!jYD(1JhS6zT5GZXDia+s}T)XR;CsxanjX9XHnAn3fx{267MmEM2^0i~-hS8Hxz zfmhu+V#+3pKz>!qvKNc*L=d$`RT!Z~KOIx`E4ndG^s}ipUzkq_Vhmea@#AhR1Y}@_ zMQJg}Vwws}qy-iT#01ZSRV+?N<6xzM*(Itt)9?f!znra_v`;0AmFK1|1#)W{r7!#71S1t27_M+0!?k_J>x?T48NX6pY3 z0OZq&vNX7~Wzu+#iPF(D1?8wX1h-{tXvF7SFoNSh-UDI;{k%GAxuHSLJ&d19F%1y(=>e&3LCELNy406 zgQpxt){_L0B!C}y%R#_fb^=ci_?wa*${6yv8-Xwc{7pY11wP@mx@z2dM<=t&6=%do zu8A`-Y}yv3fi2k)4w9m+oe}&z$t8oNU~Ffo7HE_3Q>mEUOmIGfv)v~)0~wLbtvh{Y zatT@Am~1oyAJL)px(TRH1zg$~X|{DR`jn2Li~+cZ*WJ$h(!kyl2Y6=2_X<4ESe*ez zu*AJS;9tcjWu4ikV+0<=cTVEfF>aI5ZEzZWR*0M67`^R5FXhl? z^U?8ss|9f4Y=^mmym>}&bb76T7l_GhbGaHk@g}pa?gs2#(4I2Hxa+vgwz!wFB*0#2 z4;A4(24|;F3~`W?8997|tfs}rB#0y)&Bb7vEyDO=j(1~}!qG#SA>%@}-g&VIp__UZXfhJ)uu zrW{;N%HBb6FmF;cff@#Ns;kp`-L@{8s!PZ*I>CRPn3F`5!3+JY164bNrJluS}o}kV&o$Wews)p+O{qvK*zEDG*nfzVzn)Nl5 z;|HR3_R1P+$6XCg^HMd`&--7vWxrHI%{eytXg~15F*0+jc5cponBDx#x-Wmc zP-s=4aDzkR>>?5}T@AIFX!d+uBlgfpC;I0G-&+py9~y>6N;uu8X@ zV0#2!jU{q;N!5{(s>dc)otkJkRBR~wCrI^1s3(R`Kzu9V1;qcpzTc*24%}_3q!wJW z;r(5yQfk_p$|QlDLTy=_c)n=QRO-N2rK>T0G1XN$(=9H*s68+Gw?wlSNYA5-Vpo1U zL{2dr9hhJA3t7M7<(As0ucb_C%d*0o@@29WH zvcaZx7iWD#ZaDt>zSGz2A%APU@cib1cgRr1?4tWNyhl!dn+ROz-$D*_8H||~?~=8r zPu_R+^xfpamyS9rfA1%$+@q12j@QU_w;F=?NIS@i1Lv*%h~_x;9p{zb|1U9Bo63Qop{(kYE3U>cy-`;hXO$3})a@x*MuU?Hlf1Oq|IY-nAV%}3jr<6%kKtFK4P~P zUMK_}9VaXbQmA{hEDx+(&Bf7%L`o6)SSXJnCC77@6fq865eSBatSt(Lph7**hC_hK|s<%A}PicBsDkGnd?jhASVjj zk5txK>a4_aOgDx0dOMh=eD~>&l--I(U!<9)=}!2gF`uTbv^_#QX*xnXBAU!@AEnPA zVap}Gn|9>a@YJGcdN)mHXz+u#76jg!6FdX(w`T&3tvBFr17R=t+h@CFDHU}2tbR*- znw#fSIi*eP5bd0h^CVcXb@#*~Zp9PjjEx_Z zC5dx+!<_6?gLi_R%Vy?W85F0$r#&2+CuKC9!(--T3F3Q)@tQfm-R7_N+ISbjO^ckx zvoy%GoAP|jQpn|moOq*%EAW;$xjh|pL0%9hhsWn@38)M65BxiA&+Iu>+{W!*F3NYSi$klSGR^dA{h+itenDaiUF3v_1FFUn-aP=NrJ}1F= zkjeJ?EyK0YYTP>>um22d;hgZY4>&aD3bjeHj3*cH15WK++HEk;arL~$IVAgXyhTcL zBC4A^+b&wOtv$4ec)JxloMAYp=0;1<@9ATi#*`MLrzO=UT1{@ngjxml6ul5Vw5Doq zL#+x6JDt^pT2n!P4UY~qf%AWPZfLqS0iL&k){UBW5$Z?i?|G;{VRWJ<&5xF5(8JDJ zXl7M7t>Y8*~HS6pw8ms@mbo1Rb9A{s`FQs-Z%rp;D=oW KU+@dy)BX<(^6W(b literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.3/surrogate/traj.parquet.gzip b/benchmarking/results/0.0.3/surrogate/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..eb8a5899160955e10047b25a5d711114da5026be GIT binary patch literal 3265 zcmc&%eQ*=U6+atAQJE6kfpg_CbsYg}(#S@VEwCZ5oFq#~wq+#SI!P4dyVFTJ`|c#` zTQW{a3F9P9h9-P887TFnDSxC%Lqlc=`6L!4BxzHZ(n7}#ZHLd2bTWa2gy5vzJ;}tz zCNrIB(;Z1~_r14ofA6>N?TpqCE*&nzhh_LXvNqg|W4B`1cYdhAq%o_cyySx~a7V=J zJa-hNmY2W%qbH7lU;gd(Z2{sCcx_Wm)w%o-c&Wu_esIwtuw~0w_t3>W$kdPR-FiL` z&RqI)#fEcvaPQXNjjfF4fq&U~^Ej0UFPZ)s9qP#gaPsJ`PnP9DHv8W2h#K1WELYYq z$b%>2ecLbLdC<4#V(8S|Ja|jHX4T8L=D{;d@BUK>l=YqWjIm{T@LaCx_gm-Wfp%j~ zctM^A_U_#e&w+CJj(zV8-;@U{t3Ub$4dtnDZs?~ad9Zu)k@G`X9ys(1FO+^h0%oOt z{M^e|N5D~%^W6qzP2HZh;HM+t2Ulk8T?(b|{-=}YJ{SSpYkKbcHk7RWek}I>2spNB zzrVZ$!*C3LwFEy|qQOtd@N!&^%jYW<6J#kB6YiDR?K5a0zhBbK1bcd3czxu^;S0kD z`;V+TXmCDJ=QKX_lQHH|%W>7iokMM()vVn(8mhj#@(m34R~$b$Iy$=0S)x1p-ZKw8 z@(0(tg+G7N6N$XNy?MRDc>K;4r@Kx+jyG*Q{QTxSO0km%$g_TUoch?!^YPhL225UF zr7ROzO7tgUR4>aUBC#wkt2`mA{6b#&o14{_WopHLl1Y^Y77&J)B0|ccfXsY#LH+uQ zrQ+3pya?u&{p;*2O+N$lh(&ZJ3)1F?}7^rUEtEC_se_!>IALazQs?icY+Vg#`ytj7r5tRdCh{qcK~+9 zhF$J~Hn7u#-Bq{rCbS(0pru|L1QIVBRqHy@w7E;OVt1&n$Y@2ugGBZu{+q7dn0bJwytDnwZ z1r9j(t*?+bfq9SLcJ+n@H9?kAG2xC1YP$CSP*9i4zbvR*;)%cw>glmt)K7f_7Swdi zH^^kBf~va9fGOp1Cd>*HF2nHIi%O>zaY1_>5)2l0)%+^W*I54QuaB6@@i{O*wW9K| zvUwO*rBTYGlo+7m$~R>LDozZr89x)@lY$smEvsESpz4Dxo*E~}v3$TkRaXG!Ph_L$Kvh!Y zm`I?2At^+&*9;LFy-5h0z$T~wm7t*efQl8NJ12(F-tI0-U6X2X5}2td;La(p8wxfB z(o7E5;S2H+DzT(d;%ExKNrp)P5rKmmh_je9q;hgUOh+)?{$Btf-A;_9;FB(q#&dLx zie(XJ(JU25!ss=ITHwl-kgIreVKII9; zVl;9gGeHne_(h|YAQ}l{h_Dbuh%kjDozXbOo<_=+Yjzu9Dy-qJ6h*Sz2qI0ueNak4 zpp-VjUoZR`(_Yfh=k>HhWgpycTxt{eq|fSZ^ynQadbK-2i|t$oXQbJzJw`!aTW=&} z6YXJI2=F#89kL0AFimzNpJaf{#M?{+$27RYjOc_qB3)dk7?W*@&D@@DH^DukL+kSp z$eszhwQ-xt-b?ED(HTBZm}j!k-;#iMrpNaQJWpF)L0YgRe4WtGYS7WvG>TKq z#}N#y=F^hRWY^IG597Ng@akxf(co!t85k?VO>nf{-tQwF+Cn}$K47&#PF!J>E6kgx z1xLzfg}fk4CcE3+;!Sjz?9JC<&mn)ZAT7zHyN`}$fUd;r`}<*p}ZmYx-{!<*0LTWFWr&gi_?0G*3s*f&Z9}U)=Rp= z0c*>(y9#!uQGQ7;sVnS3_hM<*GJ-|ogKn@J3Y_?&J~Gqi(NElkbjN)&<@GMK&j;7`-jYcCJxt6Sb&SP)`wE=tpWQb31BPxG)kKNhviI?5~N@fhMs2 zujhs!+G22L6SUe;({`hNg#Eo5^(P!o)TD*cVup5jvJ_gH7W8PZai)4gW@|AXl+u8> tSFFI4wNWb8pJWqtOf*_2Jy^BH2dTF3R8?u_V;KBkbK!rKHSo{NzX8rHSF8X4 literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.3/tab_lr/traj.parquet.gzip b/benchmarking/results/0.0.3/tab_lr/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..e51684bd3c293b5335f0b49a4899a53624c333c1 GIT binary patch literal 3238 zcmcgv4OCO-8NMkoL{}VYZwwQa&b`@Y}%J@5NI?|05E#B~ysiyr5qUEDlWi6S!*WPURrVMh!{$mxA3S>Lwxi=SV| z0>3*;{3<7r+= zdt1a{y%#>!G$t|Fui7>@CL}VLcD}!}8fCB@Uurh4;xm}Jr?>rj41@i&blHu490r@y z`P?A&Z3KJuowL>*LlG>w<*Sb_3`DRiQ*S-Fpf`fGZj`D%yA{C-2j=cA?22Ib3{yWp zaU+7AQXgKt`g#PLdpPYa>~aK4p^AZvMqvrx(>UR_L~Uy!HunV{&6gV z{krha(>husSZ;sAK_Lf0Pz1fiLGN->(M~QJkMdAnqL4q5G$DV)T!5rZA_aN=F5P5# zS=rm~UAUb5_xxADOHpDWR;>L=GWXKLNo{(9QkU32r${S&#L*!K*! z(A=D7Vsf9!<(d|8w(t6C(;?-$C0k2o%zm+K-|5!Ep6VlwZ#E?k)(suzZaG!=eA5aI z(&Xs$lHlCrq1Z%pT7nGW#U}`VNZTx~Qoq+yX(Rn^Zy4nYI=O-!v4T6X$(yDm^Z%QW z5>f%95cDyanRxI5DdM8_T=Zc~9-2LlVY5nK`QTutGlZrWeBX z-`w07*)J7gHIK&OuzK7 zclWK)ff|U$9;557oSy!tM!sFtS@q-_( zZ`c)kAa1~Y_AeWX1M9cOA?dUG_(+s7Z*b6$$1-O2QODz=-3Krs|K`BCj)g6?Dzl4w{Mwq*OfhIL1GNBICK9jXI|?3>1+FcPz*_OKK?tB zO!xV%6F732C-{<=+#i?x{!~DciFp4_6qAu8VWkWa@_b~4jkcg%1f90oNN`H@u5p>0Y_>%d8?&(h;NJ6TR=drk~7N77B+!_((vf4tWq}v&wT|Uu@ zq@UG@96$zUBCo||w~11dL@o<$0|HmT=>#jE-{SRyrI?+&Jz$z4jxKC)A*ovnG*OSG ztb5zA{BZ=m4q}TAq=u|c!t?n z;UvSrUg-yTCi*wiPA8$#l@qkmZ+;rssbmsD6@-3<1&kHM?IdVzm01Py0x>BxdVQ|RU!c%r zjl*6I?F|_|>Jcu5#&0$#1K_N%$>4FCGIUj>%R#}MOo-t>*pezGsEM+AG-fj$sxldi zq*{d<#tm{W3EK2oVw+L!WNSp5eS}mg)>am==Me_I*ksUESXH@?YE}Mp5XKiU86?p? zurA6hF-a@gd=MELSu`hRkJ%7%7^Ne%U~BA{EUy0>)?uEIv>wEe6&|jQ&tlMoO-6u| z<)vH(=3yd(WMj6{`YwVWGDCTlI0fTYyX1hwfTxlysoAKhwivPktdGjv zKt7czR=dQoRbWry#qhy4RZc!^Rj`obAy&vX73i;#Q2-}^|KoFm<9S}Nb2-qeVbhkt zegyr!8ulj`MX*VuBR2==!O5&^b{dt#z4FQU1l6ixf8fmyfP2*{M405Uc%Kc}{7XrX fXDNGOB@JIlNztn+AvF;}zz>-PK12$^7s|f?G3ag? literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.3/tab_nn/traj.parquet.gzip b/benchmarking/results/0.0.3/tab_nn/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..e30aca8e3475b7280052cb4d62ae6ed8639a2661 GIT binary patch literal 3214 zcmcgv4QvzF9lt<`tqwv;bHU!i8ksc(mIT|00W;dyvtv6pjzb*qSJozX=dZKx&W^tw znz5125m^QsRC)VD1o&F>Ut2iW*wA8X$Kt|+gMB4(159fX78OHnvks0 zq^?i)-FyG9_xu0f@BgIRKv)%cA^z<`{6L`@e+0)CVc7jU#F#MV7GMPvpA6g|_;}yI zDERsc^|sUhI1O&zvWttEQ{dqb*Ga#2ISZ;k9(;Gno-BB^-?s9F?krgQXjmuvY8D)O z-SUa%^4bd=ot*7B+ z(~TjZ<+rLIzcK{QUw9$pIz9ycIiFney3|lsf6xQ?8veMr6_Mzh^PL3Qnwl8HSFZb=O(IzS`?>~0x zxmRus)<;IO!9zW&e>vyvUbE}PQc;?z*;L}W{p?vfRden7`Kvb{@1N&(Jn_$uu1j>2jBf`M+dpW!L_Y~SOGIa1 z&u#^sqoVMipJsve{rSbEt6A`?d73|6Uls)KoY9}y|D+#0=4uT5?E(XKUU_+u@Anj3m(@dKW4mea_x!tgZpl+6lE=W? z!S_B`OtpgX@oMMj(stl@{_x2>X$A}M-%cmZWN{?oNjF5AnbOaTG|J6a&IKQ~e)!JS zo8Q`U_~yS~{lkTc+oG)x_Fltw*sky2h?w(C$*0UIj>g2Y>%k&*n-Myh&eOC z{+ASHV~%v43X>E?X}^af@j?v0=Ycsh*qW2xg#?2PmX=GazCfOTfrTmSSpf5^6qo&? zxD>;rRg$7G$-Bv@hwvF6F{J6o%7Ud2ZoB3q{wXP?L+;CWQCo15c0RWjw6AZMrN6tSy!fqYY(o zo}okT9ELa-PTx_4D0KNCY@8=Xy2%&`%{R+DJTzx`AM)L_QD41A)-?spbQI8Y+BJrP zO@lO>!Cm;gY>14lsuOB74c`>S6o9CJT~!cgK51CWsr@h$!A$+<06;jMh=+uCw@@^e zp(11?jcOK7laWX$iGUJg#Mb86fH8M$`kyH68`zB-)ciU4@vzB1!TC1Pto1u(I=GO^YYg}clZ%j67p$~77 zyBq}4r@S_K)TlKDC}m1P*;QV&hs)t-=`^(0#~_}W@m(CtQUa0=jr3Qztj_a?~oQr-+T{Av9HeBWhK+&=4s>C^Qx9ugTGb zCXoMk*M=a>5$L%FYK^FAH=%xn{oR226OLxoq`9H1hkCfP5L%e#i_@% literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.3/tab_rf/traj.parquet.gzip b/benchmarking/results/0.0.3/tab_rf/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..436387ca335793903835dcab02f6940065044a9a GIT binary patch literal 3425 zcmd5<3s4m29bfPy7n`vtE_3HVgO`LcBaeG<25iaSy^}lcgaZ!Y9!BwYZx0r3kK-O3 zhe4Auqp9(Y6+FZV7;JGgX^k<87~UjWXVMZ=X~y zwqJt(5_Sz8p3^jb5ndcgJNc`%7ob(;yZon{AHvqYxPghWVbH((^9L_q8HUf+tuKf^ zKMY5oxtrL+4#B5mqV!{D2I0v5=k*8M2Z50+o;Q|02qSrUYk&6D0PKvrkhyoq09<<~ zZs<5W04FM*z1CtHfchoM2iu7O$c`IPEXf`KY;Lvl{mcO1W0_w~WDw4u(yGkwrGakWQX+y{xHuiaw))e9Y_g*S-T zdtvxE+n86}3!S%U?^ohph`xULi^}mHpe81+Y|rU|f0%^x8F3FR^<8PYH1YvpQD5eM zP;(x3CJcT=?C6Hqciy`Vedl0)jm+UZa}My%QQyE=7yQ7TXG*x(1t(;J9V??S49D=h zQTXBL6ns>G$Ko+~OoB)_8C;QYQam18Itvx$v`R)M|2%kdt+i-uiAUPza6}HQuk--dz<1v#1?$KI;~C9e(4h<^-k09_8%)& zpX$&UR^$8Zhu=%RclY#5N=7Dr(jv>6c<{Tb-#_=+_#%3L^V4f@XP<6<_O1S>)|^f8 z9%u}OR$%qii|=kkaFTBe6YzOrB^DDa7JZ+kZLTt($5u&GzG_bp7sQVW;tvSpZwQlr zGdEfIpLi-xK?RB7(Oke{(S#!R?FD+RA+KI?zYY4~=$E(NJP7;pmh73oIh%i6AsyIbK+d8jf= z)CvjG^W>(=L$LXUj+efUJ_MU0^J_6nJ}>KTfs(IBZFal`&LtY|jJrZ`Ygxzsy8I9b zj*yAFQbW*naqY^b3q$aW&L}!#K{J#;^RZH`IRGnt_s9Ntvl)I^lKcFzrVuPjeWhD3 zXo0=!)8{J8AvpV&&#yW5G{N|*$I?$du^+lC)~KYiMj+F2mls{x2W(||t72Ot7|EMe zyYDwb?Wd-*heD08;c(Yt#ihNFHUg?;>$bwnoBuAj!)}JHsaap7F4+S83B&!Tp4=?h3*wYTMvr3v@ELBH^SsSD-Vg|Az&7I_{eSo$vM8A5)*rvB?+b zp#q)h(_=iHtw6;;QevVQFI7RaHe7(=^PY>I(G+3oBSi%Hm~S{V55X_+3C76s@myiU0%tGq_rC*RfvXG5|7PQPD@gf zBrY3EBZABCbfTTtXY=^bR?4rd-Ds(hhBq{~ku|JCoUp|*-aH*KJl&3ip`G@!>9jDg zGGEZm9Vqd;7^>PH#^7h&!H0}$lDp$LY%J}w*=;@>65lAHT}Yg9m28oDQu};5LTbf~(8*0hiQXlEc zX9^efmsd^OT>8KhP-!SU-HrBbg>t*<2Ibu!YVbZ}=_%@s~6h~zasglDFGE9-QU zTBCzxH9l)GlG7?>q&C3WiTGo1*mIo$o~PE!NY;t$8z=F~NV7_5Rv49(mcvajq+DNP zH5sH~e`HR(R)b<;qs=dGcXx-d6fji`K@!QPz|Fxm1W7TW_`WQl;!7bROa~enGC7UCFNR$>nUOl z_u`vsRX*3MXrm(Pcp~3asJ|vh0k=T)|7dIoBF}>~GZ9zEHEjvkkEp+Mx&B0>h-=dD z$XSK>=w#kBzYNnkUDa&$#IdyzduZkd!kwLsiIUtlPmQ1UrBZHpDt}=mMJ}YI@Kq&F RNx(4l!{X34R3ZAf`Zse{vP=K~ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.3/tab_svm/traj.parquet.gzip b/benchmarking/results/0.0.3/tab_svm/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..e5aa055b7d1072c60a9be7d0cfbe2584d23ab204 GIT binary patch literal 3172 zcmcgv4Qw0L9ls==6`-Mka;d$gYvy(tpd|HYNCM?_c4F6F;t)6S+1}RV?tK18?#{+O z$9BAwrmNa9Rx%<13rj0eARQHd_h$xf?-NKar0}BQIwHS^2e(oVosL z`DyI^w;$Uvs5*_cgy@k!UL3>LOt1O__w*R%y5o?kSs25foVvchuy_osyjJzwReRIe zuBM|(bRdo8y=vXN?5Q+1HF?LNx;u>>9CGX#z|+|1gEfBp57XG0TxgKS5?uf8e0du4 zT>8gbr}NU-R((Mac~!(-*{Zc%`MZd9J!qoNpA@kd9uM5h9uYCe;bX0(dqoT#^8S8g zkBB|@yWO{a+Am@`lcmpIcv8f+i*5M@+ePfHPp%Jt=@l`RaqGjMxkW7Zu;_V%5V1SA z)~;V}7O?}D*Y$-l5u16F8kzukqX_y+4l3r9q2n^N5S63yVnzOJ5fu5e=0(W8OGttL zH|3*!ZEbHJedoQ=AyIYV-H+cR6ZIcY3|x#pbE;?C3xk)OkF!78^g;BQk9x+At?f&_ zE9?K&S0nmoZNFBBc8+d3++wb87;xvlSk=&1{m&ccugr96YzL1cNbb(iq!a8@IxR0o zZ&w-+d7)CVoMTA7Rfv%73@wBrNmN!eE-M<47fs1a2W6%C|4RzWGQbD~&4raH1TRn$ z8G0cP{R%MTp#=<~+qP`cubG)?l)ZC#UBylv?b|neXwz9$Tan0rT{UrY?313M>D0F7 zlUJ%g=-9tvg|p+l8VUISIzt%c_ zKsff3OZTUSCYv^HJMn|dR|fi@yA*!@|*#7#B8*RPa`zq1t zCp=wiFnh)8z2_2Fx1ae;`>$(+u7A^!`w#dl>RV11hci-d#?)OJi9lHXdzSZAEd4eKB72e0j1C{qMG9B_e60&o zWMug_6uC1hco#8bSYGtGymVq&=?O@Y#c=;a5=&7;`H%ro$fIc?e(n|^?Fi)u% z9+(GtKlE*BHkVhay61qIj{8&^($AKSsOF_U}asp2`_!{GG!qDM%H2`4;@HakS<=B|V z;?%pe_D*VpQ=s^UU}MloF-cp51h&@pkl)JN0u<+Et--k8${7L_(E@E^ULp~#H{n5A z=Lpbz6OiHY?7EXSSu3rz4eT89E@lsx=ybc9w04sf<_&7E zi8Ib>HRCd}(iw4{D5W*4?d?s{eiY$Uy9r0YYpJ_+R=$mKm|x6IXfi(VT+G#KnlnrF zpma7vrY4@She&j|w6kX+opHxfd3|eGvpk_WC&-~XnLV2*N!XHZ7r-g;(r5tlB&DOJ zoV}bgNo(0oDhSWbny?4;iTZXt2=lh`M!;dfQ%$wjA5v4*Ho#T|3nQM8gi=$1{+b<)a02+hur@ee9|4|KKx>6f+XDL$^!EnXpI|h> zCe4hxTA&9zOQEG{Mh<c{r~^~ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.3/translatewmt_xformer_64/traj.parquet.gzip b/benchmarking/results/0.0.3/translatewmt_xformer_64/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..6facf08419d3edd15d7411a5554a0bd8267e9cb7 GIT binary patch literal 3232 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 literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.4/counting_ones/traj.parquet.gzip b/benchmarking/results/0.0.4/counting_ones/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..41d820050aebcdc8ccb73f357c2d9882df9ccc34 GIT binary patch literal 3133 zcmcgv3v3f*9KUVdEE9wXH`}^yDMAAy3uQ^X53wG?X7p$(sws7 zYQWb_d?PWS;uJB#7aAZwa*-IF(*#u1YLv&-iAE#xRujQ%G%K;6uA~bYKGK^vdT(w$c=wqH~jMx`mw{(+jHxmz3RRr(s1kU zQ|AvJkw#`!rk4J3M0zuD{M&9^o*HNkM-dnpKmyb%WjqPtWUN1`u+aOC# za_{^L7Fp`KYuSR4ZdrO)z2EzePnOQdXUFRUvb3kXewKTKEFEu29X@@JEak>N|8f2! zvc%-S82#{3S=zeg+{{~d%F@%rS08+Pk1XNrrg;b7lqF*C_Q!{h%hHDBvp3y$N|sc< zng>QSdFjz(!;5+s<)wLF-WHNqZb^G|0c}e>1>-ZWjFAYD*_vApFD1vS;K}Sm( z(3}dLgI1sw)f)A9&>Ho)conj68Y&nQq{u?m$H~TB)@l6?3$j*#b+6y@?pr&oYTfEQ_kDa;mDc53~-94j6uv#*>d#Cd^?4u{{S8e>`9CmKa zoF8_*|2wwOKt~R|cos8%a6?u<{|xp}?$g&E-g*X0z1Lm-{>!Ja&?n~aFWU~|L2K0G zZecr2rCzai_~n|v+u@pcB5;{*cy4ChcGwP6kzNM>bnT#BWZQUVJIVv^^ z+W@Cvu~#wA77b6f)5o!Vpm#E@0IWBWjY5aIq{uOmKmkKih-NP`A~d{FAU1(bPys4I z0r5c{D*|y&3_{)2J@&;*bn7R8nT!HxPP&_*u}P4o6SxFlA0MF-O=cxWlkiPoOaKTI zxV{14ECvlyIdLAQBACkm4*)3DiLn&8kd>tI937)#S(vkEmWst9X$U06#^PK=gj7RQ zqoGl+1ITqn_Y;`LMt!46w;s{V#NF;ra%o}uG&%K6a18`oa2)Rff4ElSxEZ$waXXF& zaa&NKS*?@!X-I6n$R}`H;S8RN6@^dWcp3+K;H?+|Z$$|_ec*3R`$$XJ=j{N*FwnQ& zObC3^@9>ztMpue%^CW1ogX`q1G@EtCC?HGpM}mat4ADY>C%ANw5G)~@Tn%NC0WuSB zx8WRPa)%hP3()X%@tk68L=(}{k?ybo9nq!tdvVCm^m+7g!shI!jTr+?TKb?5zc<7) zSs-su06bIe`vsn-9qv9_uqXW8K+a(?(2g{;Q;f&e7iikx|}fa;F$E%)y*YiQyk)8HXLz#6B<)vtP)heBLgj%SOPs zLGBG{*3+zKy;feSk>HQhM!VkC-=+AYNsrz~x&062b*Eu`Ngrt_=)k(zoAr!f zSMoudoR&gP{82xd344v>wNPpto-VHc4QsJa7{LQ#XwDXE6Q@XL*5?H{mAEfe&SN#S5vn Va8+p=su2YIkh$RdU={dq_zS)vMppm; literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.4/imagenet_resnet_512/traj.parquet.gzip b/benchmarking/results/0.0.4/imagenet_resnet_512/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..f5ee42d53d918ffb3ed2a7c4989d023cb6c254a6 GIT binary patch literal 3181 zcmcgv3vd(H6smAvxqO4eU8 zh7<-!hL$>^q~HW&z#XTplhSw+Od%bEn}#;VW(b{eNDE9ujWfk5lmy5SNZ(t@#Kul% zI+O55+I{cd`|dmU-gDo~F2^luRDw21&_7HnL-i;!6G0x^CPTzA>6wPXvhAyHtiILh z>ASh+(8f~_Y1e+FMUMTn)potp-S_2(AKacf|IT3L>|NK1&IIY>xHTRAPl}%Jzvli= zuqm;5*Op7!_4M06xs=^l*uP-up~_{;8WwGx)qDQ%&3Cm;>#n@l)Bo&0yer<{`{R?Z zv|W|;9=f&HynEu z*;M6zQkI4wD1vsSp=ZWDZF)yQDdTlX7JLPaKLoP<8}Ohv~=w zFOZic4J6}fkS0sJap%g3$m4Hs>cr-pDVx!L@J;N&eOta)e7Y0c+CT8ug3RAxO+$Y< znDgiXY=$aQvg9|fV(O1SjKHlDpsnqiw~`d|z?3oomLkuA&tf({)RXvqLE^W4v|ZPbS=Y^s02YLKaoC;x=HChNDx40 zMV2D(K9WA?{v{^!)HD!Zjx6)awAl!v$dgO`q~Ich@;^%&l&s)lV%4;d3-dxy`E>T` z24x+PftfNu3LZw8m#q{?o&f?O%yD2943U8lSgORi&kv?rRdT_=g}U)aK$G-XExKn? zj>r0Ovkd2|9xF=%s}9Be@IYl)U}>K#i6PAU<98K43f@Ez8_$GD7a1afd4rM>fH^C8 z;NDd$jSCkm8%Kc|ivsK%bEiRPV<1gra1TB==OaUl3d9_Z!8b}V3Ls2iV;;bn3L2zx zbU%zoFkb&H01&GaU`TM0i%H{HDnJI}FlYWa83_2I5J-dx1X-T|rRqib>U@+=wTxt8Kx9Kl9C1h1>5Y^$J6*ky|a%M3V6Yb~|3 zPz7XoG_{V<24WFWTpleqfIUKm%4x@;KIXQnf`q~Br8F@$Wz)Ig8BTjGN5_G^F$D08 z_wVF6jxt%?6mJYUR{%ScPEDDj&`&C!3b(72i;6mfSxxaA@NXHxtETLFon33u(I$u+ zXDN-j-f62)CF4LacG!L~(s*SW`Tqc`JyaD4wcKkhGcO4m-dp@=~t@^EjoY#h6{Z zHBM`|2*tv>5wQxkAXetZSr|7V=mCcTPt`>lr`?<&ZAD?xhnEPK8wwJHpn|OedkS9( zA7WD#m%~;C3q2kag0B} zih&-SEV>q_NjcoBpNLOTZA$qAZ*c(JOP3<@Y(E*O4>O^KwBNr_ys)xU7gBces#4@- QAqe;(v%vSna`2(?U(9+@PXGV_ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.4/lm1b_transformer_2048/traj.parquet.gzip b/benchmarking/results/0.0.4/lm1b_transformer_2048/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..4f7775371abcefd602c55eab018264a3cb82b602 GIT binary patch literal 3257 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 literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.4/mfh3/traj.parquet.gzip b/benchmarking/results/0.0.4/mfh3/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..14d9408446bf510ba996d0ad3274bc155e01a41b GIT binary patch literal 3157 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 KU+@dy)BX<(^6W(b literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.4/surrogate/traj.parquet.gzip b/benchmarking/results/0.0.4/surrogate/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..eb8a5899160955e10047b25a5d711114da5026be GIT binary patch literal 3265 zcmc&%eQ*=U6+atAQJE6kfpg_CbsYg}(#S@VEwCZ5oFq#~wq+#SI!P4dyVFTJ`|c#` zTQW{a3F9P9h9-P887TFnDSxC%Lqlc=`6L!4BxzHZ(n7}#ZHLd2bTWa2gy5vzJ;}tz zCNrIB(;Z1~_r14ofA6>N?TpqCE*&nzhh_LXvNqg|W4B`1cYdhAq%o_cyySx~a7V=J zJa-hNmY2W%qbH7lU;gd(Z2{sCcx_Wm)w%o-c&Wu_esIwtuw~0w_t3>W$kdPR-FiL` z&RqI)#fEcvaPQXNjjfF4fq&U~^Ej0UFPZ)s9qP#gaPsJ`PnP9DHv8W2h#K1WELYYq z$b%>2ecLbLdC<4#V(8S|Ja|jHX4T8L=D{;d@BUK>l=YqWjIm{T@LaCx_gm-Wfp%j~ zctM^A_U_#e&w+CJj(zV8-;@U{t3Ub$4dtnDZs?~ad9Zu)k@G`X9ys(1FO+^h0%oOt z{M^e|N5D~%^W6qzP2HZh;HM+t2Ulk8T?(b|{-=}YJ{SSpYkKbcHk7RWek}I>2spNB zzrVZ$!*C3LwFEy|qQOtd@N!&^%jYW<6J#kB6YiDR?K5a0zhBbK1bcd3czxu^;S0kD z`;V+TXmCDJ=QKX_lQHH|%W>7iokMM()vVn(8mhj#@(m34R~$b$Iy$=0S)x1p-ZKw8 z@(0(tg+G7N6N$XNy?MRDc>K;4r@Kx+jyG*Q{QTxSO0km%$g_TUoch?!^YPhL225UF zr7ROzO7tgUR4>aUBC#wkt2`mA{6b#&o14{_WopHLl1Y^Y77&J)B0|ccfXsY#LH+uQ zrQ+3pya?u&{p;*2O+N$lh(&ZJ3)1F?}7^rUEtEC_se_!>IALazQs?icY+Vg#`ytj7r5tRdCh{qcK~+9 zhF$J~Hn7u#-Bq{rCbS(0pru|L1QIVBRqHy@w7E;OVt1&n$Y@2ugGBZu{+q7dn0bJwytDnwZ z1r9j(t*?+bfq9SLcJ+n@H9?kAG2xC1YP$CSP*9i4zbvR*;)%cw>glmt)K7f_7Swdi zH^^kBf~va9fGOp1Cd>*HF2nHIi%O>zaY1_>5)2l0)%+^W*I54QuaB6@@i{O*wW9K| zvUwO*rBTYGlo+7m$~R>LDozZr89x)@lY$smEvsESpz4Dxo*E~}v3$TkRaXG!Ph_L$Kvh!Y zm`I?2At^+&*9;LFy-5h0z$T~wm7t*efQl8NJ12(F-tI0-U6X2X5}2td;La(p8wxfB z(o7E5;S2H+DzT(d;%ExKNrp)P5rKmmh_je9q;hgUOh+)?{$Btf-A;_9;FB(q#&dLx zie(XJ(JU25!ss=ITHwl-kgIreVKII9; zVl;9gGeHne_(h|YAQ}l{h_Dbuh%kjDozXbOo<_=+Yjzu9Dy-qJ6h*Sz2qI0ueNak4 zpp-VjUoZR`(_Yfh=k>HhWgpycTxt{eq|fSZ^ynQadbK-2i|t$oXQbJzJw`!aTW=&} z6YXJI2=F#89kL0AFimzNpJaf{#M?{+$27RYjOc_qB3)dk7?W*@&D@@DH^DukL+kSp z$eszhwQ-xt-b?ED(HTBZm}j!k-;#iMrpNaQJWpF)L0YgRe4WtGYS7WvG>TKq z#}N#y=F^hRWY^IG597Ng@akxf(co!t85k?VO>nf{-tQwF+Cn}$K47&#PF!J>E6kgx z1xLzfg}fk4CcE3+;!Sjz?9JC<&mn)ZAT7zHyN`}$fUd;r`}<*p}ZmYx-{!<*0LTWFWr&gi_?0G*3s*f&Z9}U)=Rp= z0c*>(y9#!uQGQ7;sVnS3_hM<*GJ-|ogKn@J3Y_?&J~Gqi(NElkbjN)&<@GMK&j;7`-jYcCJxt6Sb&SP)`wE=tpWQb31BPxG)kKNhviI?5~N@fhMs2 zujhs!+G22L6SUe;({`hNg#Eo5^(P!o)TD*cVup5jvJ_gH7W8PZai)4gW@|AXl+u8> tSFFI4wNWb8pJWqtOf*_2Jy^BH2dTF3R8?u_V;KBkbK!rKHSo{NzX8rHSF8X4 literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.4/tab_lr/traj.parquet.gzip b/benchmarking/results/0.0.4/tab_lr/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..e51684bd3c293b5335f0b49a4899a53624c333c1 GIT binary patch literal 3238 zcmcgv4OCO-8NMkoL{}VYZwwQa&b`@Y}%J@5NI?|05E#B~ysiyr5qUEDlWi6S!*WPURrVMh!{$mxA3S>Lwxi=SV| z0>3*;{3<7r+= zdt1a{y%#>!G$t|Fui7>@CL}VLcD}!}8fCB@Uurh4;xm}Jr?>rj41@i&blHu490r@y z`P?A&Z3KJuowL>*LlG>w<*Sb_3`DRiQ*S-Fpf`fGZj`D%yA{C-2j=cA?22Ib3{yWp zaU+7AQXgKt`g#PLdpPYa>~aK4p^AZvMqvrx(>UR_L~Uy!HunV{&6gV z{krha(>husSZ;sAK_Lf0Pz1fiLGN->(M~QJkMdAnqL4q5G$DV)T!5rZA_aN=F5P5# zS=rm~UAUb5_xxADOHpDWR;>L=GWXKLNo{(9QkU32r${S&#L*!K*! z(A=D7Vsf9!<(d|8w(t6C(;?-$C0k2o%zm+K-|5!Ep6VlwZ#E?k)(suzZaG!=eA5aI z(&Xs$lHlCrq1Z%pT7nGW#U}`VNZTx~Qoq+yX(Rn^Zy4nYI=O-!v4T6X$(yDm^Z%QW z5>f%95cDyanRxI5DdM8_T=Zc~9-2LlVY5nK`QTutGlZrWeBX z-`w07*)J7gHIK&OuzK7 zclWK)ff|U$9;557oSy!tM!sFtS@q-_( zZ`c)kAa1~Y_AeWX1M9cOA?dUG_(+s7Z*b6$$1-O2QODz=-3Krs|K`BCj)g6?Dzl4w{Mwq*OfhIL1GNBICK9jXI|?3>1+FcPz*_OKK?tB zO!xV%6F732C-{<=+#i?x{!~DciFp4_6qAu8VWkWa@_b~4jkcg%1f90oNN`H@u5p>0Y_>%d8?&(h;NJ6TR=drk~7N77B+!_((vf4tWq}v&wT|Uu@ zq@UG@96$zUBCo||w~11dL@o<$0|HmT=>#jE-{SRyrI?+&Jz$z4jxKC)A*ovnG*OSG ztb5zA{BZ=m4q}TAq=u|c!t?n z;UvSrUg-yTCi*wiPA8$#l@qkmZ+;rssbmsD6@-3<1&kHM?IdVzm01Py0x>BxdVQ|RU!c%r zjl*6I?F|_|>Jcu5#&0$#1K_N%$>4FCGIUj>%R#}MOo-t>*pezGsEM+AG-fj$sxldi zq*{d<#tm{W3EK2oVw+L!WNSp5eS}mg)>am==Me_I*ksUESXH@?YE}Mp5XKiU86?p? zurA6hF-a@gd=MELSu`hRkJ%7%7^Ne%U~BA{EUy0>)?uEIv>wEe6&|jQ&tlMoO-6u| z<)vH(=3yd(WMj6{`YwVWGDCTlI0fTYyX1hwfTxlysoAKhwivPktdGjv zKt7czR=dQoRbWry#qhy4RZc!^Rj`obAy&vX73i;#Q2-}^|KoFm<9S}Nb2-qeVbhkt zegyr!8ulj`MX*VuBR2==!O5&^b{dt#z4FQU1l6ixf8fmyfP2*{M405Uc%Kc}{7XrX fXDNGOB@JIlNztn+AvF;}zz>-PK12$^7s|f?G3ag? literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.4/tab_nn/traj.parquet.gzip b/benchmarking/results/0.0.4/tab_nn/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..e30aca8e3475b7280052cb4d62ae6ed8639a2661 GIT binary patch literal 3214 zcmcgv4QvzF9lt<`tqwv;bHU!i8ksc(mIT|00W;dyvtv6pjzb*qSJozX=dZKx&W^tw znz5125m^QsRC)VD1o&F>Ut2iW*wA8X$Kt|+gMB4(159fX78OHnvks0 zq^?i)-FyG9_xu0f@BgIRKv)%cA^z<`{6L`@e+0)CVc7jU#F#MV7GMPvpA6g|_;}yI zDERsc^|sUhI1O&zvWttEQ{dqb*Ga#2ISZ;k9(;Gno-BB^-?s9F?krgQXjmuvY8D)O z-SUa%^4bd=ot*7B+ z(~TjZ<+rLIzcK{QUw9$pIz9ycIiFney3|lsf6xQ?8veMr6_Mzh^PL3Qnwl8HSFZb=O(IzS`?>~0x zxmRus)<;IO!9zW&e>vyvUbE}PQc;?z*;L}W{p?vfRden7`Kvb{@1N&(Jn_$uu1j>2jBf`M+dpW!L_Y~SOGIa1 z&u#^sqoVMipJsve{rSbEt6A`?d73|6Uls)KoY9}y|D+#0=4uT5?E(XKUU_+u@Anj3m(@dKW4mea_x!tgZpl+6lE=W? z!S_B`OtpgX@oMMj(stl@{_x2>X$A}M-%cmZWN{?oNjF5AnbOaTG|J6a&IKQ~e)!JS zo8Q`U_~yS~{lkTc+oG)x_Fltw*sky2h?w(C$*0UIj>g2Y>%k&*n-Myh&eOC z{+ASHV~%v43X>E?X}^af@j?v0=Ycsh*qW2xg#?2PmX=GazCfOTfrTmSSpf5^6qo&? zxD>;rRg$7G$-Bv@hwvF6F{J6o%7Ud2ZoB3q{wXP?L+;CWQCo15c0RWjw6AZMrN6tSy!fqYY(o zo}okT9ELa-PTx_4D0KNCY@8=Xy2%&`%{R+DJTzx`AM)L_QD41A)-?spbQI8Y+BJrP zO@lO>!Cm;gY>14lsuOB74c`>S6o9CJT~!cgK51CWsr@h$!A$+<06;jMh=+uCw@@^e zp(11?jcOK7laWX$iGUJg#Mb86fH8M$`kyH68`zB-)ciU4@vzB1!TC1Pto1u(I=GO^YYg}clZ%j67p$~77 zyBq}4r@S_K)TlKDC}m1P*;QV&hs)t-=`^(0#~_}W@m(CtQUa0=jr3Qztj_a?~oQr-+T{Av9HeBWhK+&=4s>C^Qx9ugTGb zCXoMk*M=a>5$L%FYK^FAH=%xn{oR226OLxoq`9H1hkCfP5L%e#i_@% literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.4/tab_rf/traj.parquet.gzip b/benchmarking/results/0.0.4/tab_rf/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..436387ca335793903835dcab02f6940065044a9a GIT binary patch literal 3425 zcmd5<3s4m29bfPy7n`vtE_3HVgO`LcBaeG<25iaSy^}lcgaZ!Y9!BwYZx0r3kK-O3 zhe4Auqp9(Y6+FZV7;JGgX^k<87~UjWXVMZ=X~y zwqJt(5_Sz8p3^jb5ndcgJNc`%7ob(;yZon{AHvqYxPghWVbH((^9L_q8HUf+tuKf^ zKMY5oxtrL+4#B5mqV!{D2I0v5=k*8M2Z50+o;Q|02qSrUYk&6D0PKvrkhyoq09<<~ zZs<5W04FM*z1CtHfchoM2iu7O$c`IPEXf`KY;Lvl{mcO1W0_w~WDw4u(yGkwrGakWQX+y{xHuiaw))e9Y_g*S-T zdtvxE+n86}3!S%U?^ohph`xULi^}mHpe81+Y|rU|f0%^x8F3FR^<8PYH1YvpQD5eM zP;(x3CJcT=?C6Hqciy`Vedl0)jm+UZa}My%QQyE=7yQ7TXG*x(1t(;J9V??S49D=h zQTXBL6ns>G$Ko+~OoB)_8C;QYQam18Itvx$v`R)M|2%kdt+i-uiAUPza6}HQuk--dz<1v#1?$KI;~C9e(4h<^-k09_8%)& zpX$&UR^$8Zhu=%RclY#5N=7Dr(jv>6c<{Tb-#_=+_#%3L^V4f@XP<6<_O1S>)|^f8 z9%u}OR$%qii|=kkaFTBe6YzOrB^DDa7JZ+kZLTt($5u&GzG_bp7sQVW;tvSpZwQlr zGdEfIpLi-xK?RB7(Oke{(S#!R?FD+RA+KI?zYY4~=$E(NJP7;pmh73oIh%i6AsyIbK+d8jf= z)CvjG^W>(=L$LXUj+efUJ_MU0^J_6nJ}>KTfs(IBZFal`&LtY|jJrZ`Ygxzsy8I9b zj*yAFQbW*naqY^b3q$aW&L}!#K{J#;^RZH`IRGnt_s9Ntvl)I^lKcFzrVuPjeWhD3 zXo0=!)8{J8AvpV&&#yW5G{N|*$I?$du^+lC)~KYiMj+F2mls{x2W(||t72Ot7|EMe zyYDwb?Wd-*heD08;c(Yt#ihNFHUg?;>$bwnoBuAj!)}JHsaap7F4+S83B&!Tp4=?h3*wYTMvr3v@ELBH^SsSD-Vg|Az&7I_{eSo$vM8A5)*rvB?+b zp#q)h(_=iHtw6;;QevVQFI7RaHe7(=^PY>I(G+3oBSi%Hm~S{V55X_+3C76s@myiU0%tGq_rC*RfvXG5|7PQPD@gf zBrY3EBZABCbfTTtXY=^bR?4rd-Ds(hhBq{~ku|JCoUp|*-aH*KJl&3ip`G@!>9jDg zGGEZm9Vqd;7^>PH#^7h&!H0}$lDp$LY%J}w*=;@>65lAHT}Yg9m28oDQu};5LTbf~(8*0hiQXlEc zX9^efmsd^OT>8KhP-!SU-HrBbg>t*<2Ibu!YVbZ}=_%@s~6h~zasglDFGE9-QU zTBCzxH9l)GlG7?>q&C3WiTGo1*mIo$o~PE!NY;t$8z=F~NV7_5Rv49(mcvajq+DNP zH5sH~e`HR(R)b<;qs=dGcXx-d6fji`K@!QPz|Fxm1W7TW_`WQl;!7bROa~enGC7UCFNR$>nUOl z_u`vsRX*3MXrm(Pcp~3asJ|vh0k=T)|7dIoBF}>~GZ9zEHEjvkkEp+Mx&B0>h-=dD z$XSK>=w#kBzYNnkUDa&$#IdyzduZkd!kwLsiIUtlPmQ1UrBZHpDt}=mMJ}YI@Kq&F RNx(4l!{X34R3ZAf`Zse{vP=K~ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.4/tab_svm/traj.parquet.gzip b/benchmarking/results/0.0.4/tab_svm/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..e5aa055b7d1072c60a9be7d0cfbe2584d23ab204 GIT binary patch literal 3172 zcmcgv4Qw0L9ls==6`-Mka;d$gYvy(tpd|HYNCM?_c4F6F;t)6S+1}RV?tK18?#{+O z$9BAwrmNa9Rx%<13rj0eARQHd_h$xf?-NKar0}BQIwHS^2e(oVosL z`DyI^w;$Uvs5*_cgy@k!UL3>LOt1O__w*R%y5o?kSs25foVvchuy_osyjJzwReRIe zuBM|(bRdo8y=vXN?5Q+1HF?LNx;u>>9CGX#z|+|1gEfBp57XG0TxgKS5?uf8e0du4 zT>8gbr}NU-R((Mac~!(-*{Zc%`MZd9J!qoNpA@kd9uM5h9uYCe;bX0(dqoT#^8S8g zkBB|@yWO{a+Am@`lcmpIcv8f+i*5M@+ePfHPp%Jt=@l`RaqGjMxkW7Zu;_V%5V1SA z)~;V}7O?}D*Y$-l5u16F8kzukqX_y+4l3r9q2n^N5S63yVnzOJ5fu5e=0(W8OGttL zH|3*!ZEbHJedoQ=AyIYV-H+cR6ZIcY3|x#pbE;?C3xk)OkF!78^g;BQk9x+At?f&_ zE9?K&S0nmoZNFBBc8+d3++wb87;xvlSk=&1{m&ccugr96YzL1cNbb(iq!a8@IxR0o zZ&w-+d7)CVoMTA7Rfv%73@wBrNmN!eE-M<47fs1a2W6%C|4RzWGQbD~&4raH1TRn$ z8G0cP{R%MTp#=<~+qP`cubG)?l)ZC#UBylv?b|neXwz9$Tan0rT{UrY?313M>D0F7 zlUJ%g=-9tvg|p+l8VUISIzt%c_ zKsff3OZTUSCYv^HJMn|dR|fi@yA*!@|*#7#B8*RPa`zq1t zCp=wiFnh)8z2_2Fx1ae;`>$(+u7A^!`w#dl>RV11hci-d#?)OJi9lHXdzSZAEd4eKB72e0j1C{qMG9B_e60&o zWMug_6uC1hco#8bSYGtGymVq&=?O@Y#c=;a5=&7;`H%ro$fIc?e(n|^?Fi)u% z9+(GtKlE*BHkVhay61qIj{8&^($AKSsOF_U}asp2`_!{GG!qDM%H2`4;@HakS<=B|V z;?%pe_D*VpQ=s^UU}MloF-cp51h&@pkl)JN0u<+Et--k8${7L_(E@E^ULp~#H{n5A z=Lpbz6OiHY?7EXSSu3rz4eT89E@lsx=ybc9w04sf<_&7E zi8Ib>HRCd}(iw4{D5W*4?d?s{eiY$Uy9r0YYpJ_+R=$mKm|x6IXfi(VT+G#KnlnrF zpma7vrY4@She&j|w6kX+opHxfd3|eGvpk_WC&-~XnLV2*N!XHZ7r-g;(r5tlB&DOJ zoV}bgNo(0oDhSWbny?4;iTZXt2=lh`M!;dfQ%$wjA5v4*Ho#T|3nQM8gi=$1{+b<)a02+hur@ee9|4|KKx>6f+XDL$^!EnXpI|h> zCe4hxTA&9zOQEG{Mh<c{r~^~ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.4/translatewmt_xformer_64/traj.parquet.gzip b/benchmarking/results/0.0.4/translatewmt_xformer_64/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..6facf08419d3edd15d7411a5554a0bd8267e9cb7 GIT binary patch literal 3232 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 literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.5/counting_ones/traj.parquet.gzip b/benchmarking/results/0.0.5/counting_ones/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..41d820050aebcdc8ccb73f357c2d9882df9ccc34 GIT binary patch literal 3133 zcmcgv3v3f*9KUVdEE9wXH`}^yDMAAy3uQ^X53wG?X7p$(sws7 zYQWb_d?PWS;uJB#7aAZwa*-IF(*#u1YLv&-iAE#xRujQ%G%K;6uA~bYKGK^vdT(w$c=wqH~jMx`mw{(+jHxmz3RRr(s1kU zQ|AvJkw#`!rk4J3M0zuD{M&9^o*HNkM-dnpKmyb%WjqPtWUN1`u+aOC# za_{^L7Fp`KYuSR4ZdrO)z2EzePnOQdXUFRUvb3kXewKTKEFEu29X@@JEak>N|8f2! zvc%-S82#{3S=zeg+{{~d%F@%rS08+Pk1XNrrg;b7lqF*C_Q!{h%hHDBvp3y$N|sc< zng>QSdFjz(!;5+s<)wLF-WHNqZb^G|0c}e>1>-ZWjFAYD*_vApFD1vS;K}Sm( z(3}dLgI1sw)f)A9&>Ho)conj68Y&nQq{u?m$H~TB)@l6?3$j*#b+6y@?pr&oYTfEQ_kDa;mDc53~-94j6uv#*>d#Cd^?4u{{S8e>`9CmKa zoF8_*|2wwOKt~R|cos8%a6?u<{|xp}?$g&E-g*X0z1Lm-{>!Ja&?n~aFWU~|L2K0G zZecr2rCzai_~n|v+u@pcB5;{*cy4ChcGwP6kzNM>bnT#BWZQUVJIVv^^ z+W@Cvu~#wA77b6f)5o!Vpm#E@0IWBWjY5aIq{uOmKmkKih-NP`A~d{FAU1(bPys4I z0r5c{D*|y&3_{)2J@&;*bn7R8nT!HxPP&_*u}P4o6SxFlA0MF-O=cxWlkiPoOaKTI zxV{14ECvlyIdLAQBACkm4*)3DiLn&8kd>tI937)#S(vkEmWst9X$U06#^PK=gj7RQ zqoGl+1ITqn_Y;`LMt!46w;s{V#NF;ra%o}uG&%K6a18`oa2)Rff4ElSxEZ$waXXF& zaa&NKS*?@!X-I6n$R}`H;S8RN6@^dWcp3+K;H?+|Z$$|_ec*3R`$$XJ=j{N*FwnQ& zObC3^@9>ztMpue%^CW1ogX`q1G@EtCC?HGpM}mat4ADY>C%ANw5G)~@Tn%NC0WuSB zx8WRPa)%hP3()X%@tk68L=(}{k?ybo9nq!tdvVCm^m+7g!shI!jTr+?TKb?5zc<7) zSs-su06bIe`vsn-9qv9_uqXW8K+a(?(2g{;Q;f&e7iikx|}fa;F$E%)y*YiQyk)8HXLz#6B<)vtP)heBLgj%SOPs zLGBG{*3+zKy;feSk>HQhM!VkC-=+AYNsrz~x&062b*Eu`Ngrt_=)k(zoAr!f zSMoudoR&gP{82xd344v>wNPpto-VHc4QsJa7{LQ#XwDXE6Q@XL*5?H{mAEfe&SN#S5vn Va8+p=su2YIkh$RdU={dq_zS)vMppm; literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.5/imagenet_resnet_512/traj.parquet.gzip b/benchmarking/results/0.0.5/imagenet_resnet_512/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..f5ee42d53d918ffb3ed2a7c4989d023cb6c254a6 GIT binary patch literal 3181 zcmcgv3vd(H6smAvxqO4eU8 zh7<-!hL$>^q~HW&z#XTplhSw+Od%bEn}#;VW(b{eNDE9ujWfk5lmy5SNZ(t@#Kul% zI+O55+I{cd`|dmU-gDo~F2^luRDw21&_7HnL-i;!6G0x^CPTzA>6wPXvhAyHtiILh z>ASh+(8f~_Y1e+FMUMTn)potp-S_2(AKacf|IT3L>|NK1&IIY>xHTRAPl}%Jzvli= zuqm;5*Op7!_4M06xs=^l*uP-up~_{;8WwGx)qDQ%&3Cm;>#n@l)Bo&0yer<{`{R?Z zv|W|;9=f&HynEu z*;M6zQkI4wD1vsSp=ZWDZF)yQDdTlX7JLPaKLoP<8}Ohv~=w zFOZic4J6}fkS0sJap%g3$m4Hs>cr-pDVx!L@J;N&eOta)e7Y0c+CT8ug3RAxO+$Y< znDgiXY=$aQvg9|fV(O1SjKHlDpsnqiw~`d|z?3oomLkuA&tf({)RXvqLE^W4v|ZPbS=Y^s02YLKaoC;x=HChNDx40 zMV2D(K9WA?{v{^!)HD!Zjx6)awAl!v$dgO`q~Ich@;^%&l&s)lV%4;d3-dxy`E>T` z24x+PftfNu3LZw8m#q{?o&f?O%yD2943U8lSgORi&kv?rRdT_=g}U)aK$G-XExKn? zj>r0Ovkd2|9xF=%s}9Be@IYl)U}>K#i6PAU<98K43f@Ez8_$GD7a1afd4rM>fH^C8 z;NDd$jSCkm8%Kc|ivsK%bEiRPV<1gra1TB==OaUl3d9_Z!8b}V3Ls2iV;;bn3L2zx zbU%zoFkb&H01&GaU`TM0i%H{HDnJI}FlYWa83_2I5J-dx1X-T|rRqib>U@+=wTxt8Kx9Kl9C1h1>5Y^$J6*ky|a%M3V6Yb~|3 zPz7XoG_{V<24WFWTpleqfIUKm%4x@;KIXQnf`q~Br8F@$Wz)Ig8BTjGN5_G^F$D08 z_wVF6jxt%?6mJYUR{%ScPEDDj&`&C!3b(72i;6mfSxxaA@NXHxtETLFon33u(I$u+ zXDN-j-f62)CF4LacG!L~(s*SW`Tqc`JyaD4wcKkhGcO4m-dp@=~t@^EjoY#h6{Z zHBM`|2*tv>5wQxkAXetZSr|7V=mCcTPt`>lr`?<&ZAD?xhnEPK8wwJHpn|OedkS9( zA7WD#m%~;C3q2kag0B} zih&-SEV>q_NjcoBpNLOTZA$qAZ*c(JOP3<@Y(E*O4>O^KwBNr_ys)xU7gBces#4@- QAqe;(v%vSna`2(?U(9+@PXGV_ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.5/lm1b_transformer_2048/traj.parquet.gzip b/benchmarking/results/0.0.5/lm1b_transformer_2048/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..4f7775371abcefd602c55eab018264a3cb82b602 GIT binary patch literal 3257 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 literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.5/mfh3/traj.parquet.gzip b/benchmarking/results/0.0.5/mfh3/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..14d9408446bf510ba996d0ad3274bc155e01a41b GIT binary patch literal 3157 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 KU+@dy)BX<(^6W(b literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.5/surrogate/traj.parquet.gzip b/benchmarking/results/0.0.5/surrogate/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..eb8a5899160955e10047b25a5d711114da5026be GIT binary patch literal 3265 zcmc&%eQ*=U6+atAQJE6kfpg_CbsYg}(#S@VEwCZ5oFq#~wq+#SI!P4dyVFTJ`|c#` zTQW{a3F9P9h9-P887TFnDSxC%Lqlc=`6L!4BxzHZ(n7}#ZHLd2bTWa2gy5vzJ;}tz zCNrIB(;Z1~_r14ofA6>N?TpqCE*&nzhh_LXvNqg|W4B`1cYdhAq%o_cyySx~a7V=J zJa-hNmY2W%qbH7lU;gd(Z2{sCcx_Wm)w%o-c&Wu_esIwtuw~0w_t3>W$kdPR-FiL` z&RqI)#fEcvaPQXNjjfF4fq&U~^Ej0UFPZ)s9qP#gaPsJ`PnP9DHv8W2h#K1WELYYq z$b%>2ecLbLdC<4#V(8S|Ja|jHX4T8L=D{;d@BUK>l=YqWjIm{T@LaCx_gm-Wfp%j~ zctM^A_U_#e&w+CJj(zV8-;@U{t3Ub$4dtnDZs?~ad9Zu)k@G`X9ys(1FO+^h0%oOt z{M^e|N5D~%^W6qzP2HZh;HM+t2Ulk8T?(b|{-=}YJ{SSpYkKbcHk7RWek}I>2spNB zzrVZ$!*C3LwFEy|qQOtd@N!&^%jYW<6J#kB6YiDR?K5a0zhBbK1bcd3czxu^;S0kD z`;V+TXmCDJ=QKX_lQHH|%W>7iokMM()vVn(8mhj#@(m34R~$b$Iy$=0S)x1p-ZKw8 z@(0(tg+G7N6N$XNy?MRDc>K;4r@Kx+jyG*Q{QTxSO0km%$g_TUoch?!^YPhL225UF zr7ROzO7tgUR4>aUBC#wkt2`mA{6b#&o14{_WopHLl1Y^Y77&J)B0|ccfXsY#LH+uQ zrQ+3pya?u&{p;*2O+N$lh(&ZJ3)1F?}7^rUEtEC_se_!>IALazQs?icY+Vg#`ytj7r5tRdCh{qcK~+9 zhF$J~Hn7u#-Bq{rCbS(0pru|L1QIVBRqHy@w7E;OVt1&n$Y@2ugGBZu{+q7dn0bJwytDnwZ z1r9j(t*?+bfq9SLcJ+n@H9?kAG2xC1YP$CSP*9i4zbvR*;)%cw>glmt)K7f_7Swdi zH^^kBf~va9fGOp1Cd>*HF2nHIi%O>zaY1_>5)2l0)%+^W*I54QuaB6@@i{O*wW9K| zvUwO*rBTYGlo+7m$~R>LDozZr89x)@lY$smEvsESpz4Dxo*E~}v3$TkRaXG!Ph_L$Kvh!Y zm`I?2At^+&*9;LFy-5h0z$T~wm7t*efQl8NJ12(F-tI0-U6X2X5}2td;La(p8wxfB z(o7E5;S2H+DzT(d;%ExKNrp)P5rKmmh_je9q;hgUOh+)?{$Btf-A;_9;FB(q#&dLx zie(XJ(JU25!ss=ITHwl-kgIreVKII9; zVl;9gGeHne_(h|YAQ}l{h_Dbuh%kjDozXbOo<_=+Yjzu9Dy-qJ6h*Sz2qI0ueNak4 zpp-VjUoZR`(_Yfh=k>HhWgpycTxt{eq|fSZ^ynQadbK-2i|t$oXQbJzJw`!aTW=&} z6YXJI2=F#89kL0AFimzNpJaf{#M?{+$27RYjOc_qB3)dk7?W*@&D@@DH^DukL+kSp z$eszhwQ-xt-b?ED(HTBZm}j!k-;#iMrpNaQJWpF)L0YgRe4WtGYS7WvG>TKq z#}N#y=F^hRWY^IG597Ng@akxf(co!t85k?VO>nf{-tQwF+Cn}$K47&#PF!J>E6kgx z1xLzfg}fk4CcE3+;!Sjz?9JC<&mn)ZAT7zHyN`}$fUd;r`}<*p}ZmYx-{!<*0LTWFWr&gi_?0G*3s*f&Z9}U)=Rp= z0c*>(y9#!uQGQ7;sVnS3_hM<*GJ-|ogKn@J3Y_?&J~Gqi(NElkbjN)&<@GMK&j;7`-jYcCJxt6Sb&SP)`wE=tpWQb31BPxG)kKNhviI?5~N@fhMs2 zujhs!+G22L6SUe;({`hNg#Eo5^(P!o)TD*cVup5jvJ_gH7W8PZai)4gW@|AXl+u8> tSFFI4wNWb8pJWqtOf*_2Jy^BH2dTF3R8?u_V;KBkbK!rKHSo{NzX8rHSF8X4 literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.5/tab_lr/traj.parquet.gzip b/benchmarking/results/0.0.5/tab_lr/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..e51684bd3c293b5335f0b49a4899a53624c333c1 GIT binary patch literal 3238 zcmcgv4OCO-8NMkoL{}VYZwwQa&b`@Y}%J@5NI?|05E#B~ysiyr5qUEDlWi6S!*WPURrVMh!{$mxA3S>Lwxi=SV| z0>3*;{3<7r+= zdt1a{y%#>!G$t|Fui7>@CL}VLcD}!}8fCB@Uurh4;xm}Jr?>rj41@i&blHu490r@y z`P?A&Z3KJuowL>*LlG>w<*Sb_3`DRiQ*S-Fpf`fGZj`D%yA{C-2j=cA?22Ib3{yWp zaU+7AQXgKt`g#PLdpPYa>~aK4p^AZvMqvrx(>UR_L~Uy!HunV{&6gV z{krha(>husSZ;sAK_Lf0Pz1fiLGN->(M~QJkMdAnqL4q5G$DV)T!5rZA_aN=F5P5# zS=rm~UAUb5_xxADOHpDWR;>L=GWXKLNo{(9QkU32r${S&#L*!K*! z(A=D7Vsf9!<(d|8w(t6C(;?-$C0k2o%zm+K-|5!Ep6VlwZ#E?k)(suzZaG!=eA5aI z(&Xs$lHlCrq1Z%pT7nGW#U}`VNZTx~Qoq+yX(Rn^Zy4nYI=O-!v4T6X$(yDm^Z%QW z5>f%95cDyanRxI5DdM8_T=Zc~9-2LlVY5nK`QTutGlZrWeBX z-`w07*)J7gHIK&OuzK7 zclWK)ff|U$9;557oSy!tM!sFtS@q-_( zZ`c)kAa1~Y_AeWX1M9cOA?dUG_(+s7Z*b6$$1-O2QODz=-3Krs|K`BCj)g6?Dzl4w{Mwq*OfhIL1GNBICK9jXI|?3>1+FcPz*_OKK?tB zO!xV%6F732C-{<=+#i?x{!~DciFp4_6qAu8VWkWa@_b~4jkcg%1f90oNN`H@u5p>0Y_>%d8?&(h;NJ6TR=drk~7N77B+!_((vf4tWq}v&wT|Uu@ zq@UG@96$zUBCo||w~11dL@o<$0|HmT=>#jE-{SRyrI?+&Jz$z4jxKC)A*ovnG*OSG ztb5zA{BZ=m4q}TAq=u|c!t?n z;UvSrUg-yTCi*wiPA8$#l@qkmZ+;rssbmsD6@-3<1&kHM?IdVzm01Py0x>BxdVQ|RU!c%r zjl*6I?F|_|>Jcu5#&0$#1K_N%$>4FCGIUj>%R#}MOo-t>*pezGsEM+AG-fj$sxldi zq*{d<#tm{W3EK2oVw+L!WNSp5eS}mg)>am==Me_I*ksUESXH@?YE}Mp5XKiU86?p? zurA6hF-a@gd=MELSu`hRkJ%7%7^Ne%U~BA{EUy0>)?uEIv>wEe6&|jQ&tlMoO-6u| z<)vH(=3yd(WMj6{`YwVWGDCTlI0fTYyX1hwfTxlysoAKhwivPktdGjv zKt7czR=dQoRbWry#qhy4RZc!^Rj`obAy&vX73i;#Q2-}^|KoFm<9S}Nb2-qeVbhkt zegyr!8ulj`MX*VuBR2==!O5&^b{dt#z4FQU1l6ixf8fmyfP2*{M405Uc%Kc}{7XrX fXDNGOB@JIlNztn+AvF;}zz>-PK12$^7s|f?G3ag? literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.5/tab_nn/traj.parquet.gzip b/benchmarking/results/0.0.5/tab_nn/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..e30aca8e3475b7280052cb4d62ae6ed8639a2661 GIT binary patch literal 3214 zcmcgv4QvzF9lt<`tqwv;bHU!i8ksc(mIT|00W;dyvtv6pjzb*qSJozX=dZKx&W^tw znz5125m^QsRC)VD1o&F>Ut2iW*wA8X$Kt|+gMB4(159fX78OHnvks0 zq^?i)-FyG9_xu0f@BgIRKv)%cA^z<`{6L`@e+0)CVc7jU#F#MV7GMPvpA6g|_;}yI zDERsc^|sUhI1O&zvWttEQ{dqb*Ga#2ISZ;k9(;Gno-BB^-?s9F?krgQXjmuvY8D)O z-SUa%^4bd=ot*7B+ z(~TjZ<+rLIzcK{QUw9$pIz9ycIiFney3|lsf6xQ?8veMr6_Mzh^PL3Qnwl8HSFZb=O(IzS`?>~0x zxmRus)<;IO!9zW&e>vyvUbE}PQc;?z*;L}W{p?vfRden7`Kvb{@1N&(Jn_$uu1j>2jBf`M+dpW!L_Y~SOGIa1 z&u#^sqoVMipJsve{rSbEt6A`?d73|6Uls)KoY9}y|D+#0=4uT5?E(XKUU_+u@Anj3m(@dKW4mea_x!tgZpl+6lE=W? z!S_B`OtpgX@oMMj(stl@{_x2>X$A}M-%cmZWN{?oNjF5AnbOaTG|J6a&IKQ~e)!JS zo8Q`U_~yS~{lkTc+oG)x_Fltw*sky2h?w(C$*0UIj>g2Y>%k&*n-Myh&eOC z{+ASHV~%v43X>E?X}^af@j?v0=Ycsh*qW2xg#?2PmX=GazCfOTfrTmSSpf5^6qo&? zxD>;rRg$7G$-Bv@hwvF6F{J6o%7Ud2ZoB3q{wXP?L+;CWQCo15c0RWjw6AZMrN6tSy!fqYY(o zo}okT9ELa-PTx_4D0KNCY@8=Xy2%&`%{R+DJTzx`AM)L_QD41A)-?spbQI8Y+BJrP zO@lO>!Cm;gY>14lsuOB74c`>S6o9CJT~!cgK51CWsr@h$!A$+<06;jMh=+uCw@@^e zp(11?jcOK7laWX$iGUJg#Mb86fH8M$`kyH68`zB-)ciU4@vzB1!TC1Pto1u(I=GO^YYg}clZ%j67p$~77 zyBq}4r@S_K)TlKDC}m1P*;QV&hs)t-=`^(0#~_}W@m(CtQUa0=jr3Qztj_a?~oQr-+T{Av9HeBWhK+&=4s>C^Qx9ugTGb zCXoMk*M=a>5$L%FYK^FAH=%xn{oR226OLxoq`9H1hkCfP5L%e#i_@% literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.5/tab_rf/traj.parquet.gzip b/benchmarking/results/0.0.5/tab_rf/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..436387ca335793903835dcab02f6940065044a9a GIT binary patch literal 3425 zcmd5<3s4m29bfPy7n`vtE_3HVgO`LcBaeG<25iaSy^}lcgaZ!Y9!BwYZx0r3kK-O3 zhe4Auqp9(Y6+FZV7;JGgX^k<87~UjWXVMZ=X~y zwqJt(5_Sz8p3^jb5ndcgJNc`%7ob(;yZon{AHvqYxPghWVbH((^9L_q8HUf+tuKf^ zKMY5oxtrL+4#B5mqV!{D2I0v5=k*8M2Z50+o;Q|02qSrUYk&6D0PKvrkhyoq09<<~ zZs<5W04FM*z1CtHfchoM2iu7O$c`IPEXf`KY;Lvl{mcO1W0_w~WDw4u(yGkwrGakWQX+y{xHuiaw))e9Y_g*S-T zdtvxE+n86}3!S%U?^ohph`xULi^}mHpe81+Y|rU|f0%^x8F3FR^<8PYH1YvpQD5eM zP;(x3CJcT=?C6Hqciy`Vedl0)jm+UZa}My%QQyE=7yQ7TXG*x(1t(;J9V??S49D=h zQTXBL6ns>G$Ko+~OoB)_8C;QYQam18Itvx$v`R)M|2%kdt+i-uiAUPza6}HQuk--dz<1v#1?$KI;~C9e(4h<^-k09_8%)& zpX$&UR^$8Zhu=%RclY#5N=7Dr(jv>6c<{Tb-#_=+_#%3L^V4f@XP<6<_O1S>)|^f8 z9%u}OR$%qii|=kkaFTBe6YzOrB^DDa7JZ+kZLTt($5u&GzG_bp7sQVW;tvSpZwQlr zGdEfIpLi-xK?RB7(Oke{(S#!R?FD+RA+KI?zYY4~=$E(NJP7;pmh73oIh%i6AsyIbK+d8jf= z)CvjG^W>(=L$LXUj+efUJ_MU0^J_6nJ}>KTfs(IBZFal`&LtY|jJrZ`Ygxzsy8I9b zj*yAFQbW*naqY^b3q$aW&L}!#K{J#;^RZH`IRGnt_s9Ntvl)I^lKcFzrVuPjeWhD3 zXo0=!)8{J8AvpV&&#yW5G{N|*$I?$du^+lC)~KYiMj+F2mls{x2W(||t72Ot7|EMe zyYDwb?Wd-*heD08;c(Yt#ihNFHUg?;>$bwnoBuAj!)}JHsaap7F4+S83B&!Tp4=?h3*wYTMvr3v@ELBH^SsSD-Vg|Az&7I_{eSo$vM8A5)*rvB?+b zp#q)h(_=iHtw6;;QevVQFI7RaHe7(=^PY>I(G+3oBSi%Hm~S{V55X_+3C76s@myiU0%tGq_rC*RfvXG5|7PQPD@gf zBrY3EBZABCbfTTtXY=^bR?4rd-Ds(hhBq{~ku|JCoUp|*-aH*KJl&3ip`G@!>9jDg zGGEZm9Vqd;7^>PH#^7h&!H0}$lDp$LY%J}w*=;@>65lAHT}Yg9m28oDQu};5LTbf~(8*0hiQXlEc zX9^efmsd^OT>8KhP-!SU-HrBbg>t*<2Ibu!YVbZ}=_%@s~6h~zasglDFGE9-QU zTBCzxH9l)GlG7?>q&C3WiTGo1*mIo$o~PE!NY;t$8z=F~NV7_5Rv49(mcvajq+DNP zH5sH~e`HR(R)b<;qs=dGcXx-d6fji`K@!QPz|Fxm1W7TW_`WQl;!7bROa~enGC7UCFNR$>nUOl z_u`vsRX*3MXrm(Pcp~3asJ|vh0k=T)|7dIoBF}>~GZ9zEHEjvkkEp+Mx&B0>h-=dD z$XSK>=w#kBzYNnkUDa&$#IdyzduZkd!kwLsiIUtlPmQ1UrBZHpDt}=mMJ}YI@Kq&F RNx(4l!{X34R3ZAf`Zse{vP=K~ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.5/tab_svm/traj.parquet.gzip b/benchmarking/results/0.0.5/tab_svm/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..e5aa055b7d1072c60a9be7d0cfbe2584d23ab204 GIT binary patch literal 3172 zcmcgv4Qw0L9ls==6`-Mka;d$gYvy(tpd|HYNCM?_c4F6F;t)6S+1}RV?tK18?#{+O z$9BAwrmNa9Rx%<13rj0eARQHd_h$xf?-NKar0}BQIwHS^2e(oVosL z`DyI^w;$Uvs5*_cgy@k!UL3>LOt1O__w*R%y5o?kSs25foVvchuy_osyjJzwReRIe zuBM|(bRdo8y=vXN?5Q+1HF?LNx;u>>9CGX#z|+|1gEfBp57XG0TxgKS5?uf8e0du4 zT>8gbr}NU-R((Mac~!(-*{Zc%`MZd9J!qoNpA@kd9uM5h9uYCe;bX0(dqoT#^8S8g zkBB|@yWO{a+Am@`lcmpIcv8f+i*5M@+ePfHPp%Jt=@l`RaqGjMxkW7Zu;_V%5V1SA z)~;V}7O?}D*Y$-l5u16F8kzukqX_y+4l3r9q2n^N5S63yVnzOJ5fu5e=0(W8OGttL zH|3*!ZEbHJedoQ=AyIYV-H+cR6ZIcY3|x#pbE;?C3xk)OkF!78^g;BQk9x+At?f&_ zE9?K&S0nmoZNFBBc8+d3++wb87;xvlSk=&1{m&ccugr96YzL1cNbb(iq!a8@IxR0o zZ&w-+d7)CVoMTA7Rfv%73@wBrNmN!eE-M<47fs1a2W6%C|4RzWGQbD~&4raH1TRn$ z8G0cP{R%MTp#=<~+qP`cubG)?l)ZC#UBylv?b|neXwz9$Tan0rT{UrY?313M>D0F7 zlUJ%g=-9tvg|p+l8VUISIzt%c_ zKsff3OZTUSCYv^HJMn|dR|fi@yA*!@|*#7#B8*RPa`zq1t zCp=wiFnh)8z2_2Fx1ae;`>$(+u7A^!`w#dl>RV11hci-d#?)OJi9lHXdzSZAEd4eKB72e0j1C{qMG9B_e60&o zWMug_6uC1hco#8bSYGtGymVq&=?O@Y#c=;a5=&7;`H%ro$fIc?e(n|^?Fi)u% z9+(GtKlE*BHkVhay61qIj{8&^($AKSsOF_U}asp2`_!{GG!qDM%H2`4;@HakS<=B|V z;?%pe_D*VpQ=s^UU}MloF-cp51h&@pkl)JN0u<+Et--k8${7L_(E@E^ULp~#H{n5A z=Lpbz6OiHY?7EXSSu3rz4eT89E@lsx=ybc9w04sf<_&7E zi8Ib>HRCd}(iw4{D5W*4?d?s{eiY$Uy9r0YYpJ_+R=$mKm|x6IXfi(VT+G#KnlnrF zpma7vrY4@She&j|w6kX+opHxfd3|eGvpk_WC&-~XnLV2*N!XHZ7r-g;(r5tlB&DOJ zoV}bgNo(0oDhSWbny?4;iTZXt2=lh`M!;dfQ%$wjA5v4*Ho#T|3nQM8gi=$1{+b<)a02+hur@ee9|4|KKx>6f+XDL$^!EnXpI|h> zCe4hxTA&9zOQEG{Mh<c{r~^~ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.5/translatewmt_xformer_64/traj.parquet.gzip b/benchmarking/results/0.0.5/translatewmt_xformer_64/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..6facf08419d3edd15d7411a5554a0bd8267e9cb7 GIT binary patch literal 3232 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 literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.6/counting_ones/traj.parquet.gzip b/benchmarking/results/0.0.6/counting_ones/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..41d820050aebcdc8ccb73f357c2d9882df9ccc34 GIT binary patch literal 3133 zcmcgv3v3f*9KUVdEE9wXH`}^yDMAAy3uQ^X53wG?X7p$(sws7 zYQWb_d?PWS;uJB#7aAZwa*-IF(*#u1YLv&-iAE#xRujQ%G%K;6uA~bYKGK^vdT(w$c=wqH~jMx`mw{(+jHxmz3RRr(s1kU zQ|AvJkw#`!rk4J3M0zuD{M&9^o*HNkM-dnpKmyb%WjqPtWUN1`u+aOC# za_{^L7Fp`KYuSR4ZdrO)z2EzePnOQdXUFRUvb3kXewKTKEFEu29X@@JEak>N|8f2! zvc%-S82#{3S=zeg+{{~d%F@%rS08+Pk1XNrrg;b7lqF*C_Q!{h%hHDBvp3y$N|sc< zng>QSdFjz(!;5+s<)wLF-WHNqZb^G|0c}e>1>-ZWjFAYD*_vApFD1vS;K}Sm( z(3}dLgI1sw)f)A9&>Ho)conj68Y&nQq{u?m$H~TB)@l6?3$j*#b+6y@?pr&oYTfEQ_kDa;mDc53~-94j6uv#*>d#Cd^?4u{{S8e>`9CmKa zoF8_*|2wwOKt~R|cos8%a6?u<{|xp}?$g&E-g*X0z1Lm-{>!Ja&?n~aFWU~|L2K0G zZecr2rCzai_~n|v+u@pcB5;{*cy4ChcGwP6kzNM>bnT#BWZQUVJIVv^^ z+W@Cvu~#wA77b6f)5o!Vpm#E@0IWBWjY5aIq{uOmKmkKih-NP`A~d{FAU1(bPys4I z0r5c{D*|y&3_{)2J@&;*bn7R8nT!HxPP&_*u}P4o6SxFlA0MF-O=cxWlkiPoOaKTI zxV{14ECvlyIdLAQBACkm4*)3DiLn&8kd>tI937)#S(vkEmWst9X$U06#^PK=gj7RQ zqoGl+1ITqn_Y;`LMt!46w;s{V#NF;ra%o}uG&%K6a18`oa2)Rff4ElSxEZ$waXXF& zaa&NKS*?@!X-I6n$R}`H;S8RN6@^dWcp3+K;H?+|Z$$|_ec*3R`$$XJ=j{N*FwnQ& zObC3^@9>ztMpue%^CW1ogX`q1G@EtCC?HGpM}mat4ADY>C%ANw5G)~@Tn%NC0WuSB zx8WRPa)%hP3()X%@tk68L=(}{k?ybo9nq!tdvVCm^m+7g!shI!jTr+?TKb?5zc<7) zSs-su06bIe`vsn-9qv9_uqXW8K+a(?(2g{;Q;f&e7iikx|}fa;F$E%)y*YiQyk)8HXLz#6B<)vtP)heBLgj%SOPs zLGBG{*3+zKy;feSk>HQhM!VkC-=+AYNsrz~x&062b*Eu`Ngrt_=)k(zoAr!f zSMoudoR&gP{82xd344v>wNPpto-VHc4QsJa7{LQ#XwDXE6Q@XL*5?H{mAEfe&SN#S5vn Va8+p=su2YIkh$RdU={dq_zS)vMppm; literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.6/imagenet_resnet_512/traj.parquet.gzip b/benchmarking/results/0.0.6/imagenet_resnet_512/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..f5ee42d53d918ffb3ed2a7c4989d023cb6c254a6 GIT binary patch literal 3181 zcmcgv3vd(H6smAvxqO4eU8 zh7<-!hL$>^q~HW&z#XTplhSw+Od%bEn}#;VW(b{eNDE9ujWfk5lmy5SNZ(t@#Kul% zI+O55+I{cd`|dmU-gDo~F2^luRDw21&_7HnL-i;!6G0x^CPTzA>6wPXvhAyHtiILh z>ASh+(8f~_Y1e+FMUMTn)potp-S_2(AKacf|IT3L>|NK1&IIY>xHTRAPl}%Jzvli= zuqm;5*Op7!_4M06xs=^l*uP-up~_{;8WwGx)qDQ%&3Cm;>#n@l)Bo&0yer<{`{R?Z zv|W|;9=f&HynEu z*;M6zQkI4wD1vsSp=ZWDZF)yQDdTlX7JLPaKLoP<8}Ohv~=w zFOZic4J6}fkS0sJap%g3$m4Hs>cr-pDVx!L@J;N&eOta)e7Y0c+CT8ug3RAxO+$Y< znDgiXY=$aQvg9|fV(O1SjKHlDpsnqiw~`d|z?3oomLkuA&tf({)RXvqLE^W4v|ZPbS=Y^s02YLKaoC;x=HChNDx40 zMV2D(K9WA?{v{^!)HD!Zjx6)awAl!v$dgO`q~Ich@;^%&l&s)lV%4;d3-dxy`E>T` z24x+PftfNu3LZw8m#q{?o&f?O%yD2943U8lSgORi&kv?rRdT_=g}U)aK$G-XExKn? zj>r0Ovkd2|9xF=%s}9Be@IYl)U}>K#i6PAU<98K43f@Ez8_$GD7a1afd4rM>fH^C8 z;NDd$jSCkm8%Kc|ivsK%bEiRPV<1gra1TB==OaUl3d9_Z!8b}V3Ls2iV;;bn3L2zx zbU%zoFkb&H01&GaU`TM0i%H{HDnJI}FlYWa83_2I5J-dx1X-T|rRqib>U@+=wTxt8Kx9Kl9C1h1>5Y^$J6*ky|a%M3V6Yb~|3 zPz7XoG_{V<24WFWTpleqfIUKm%4x@;KIXQnf`q~Br8F@$Wz)Ig8BTjGN5_G^F$D08 z_wVF6jxt%?6mJYUR{%ScPEDDj&`&C!3b(72i;6mfSxxaA@NXHxtETLFon33u(I$u+ zXDN-j-f62)CF4LacG!L~(s*SW`Tqc`JyaD4wcKkhGcO4m-dp@=~t@^EjoY#h6{Z zHBM`|2*tv>5wQxkAXetZSr|7V=mCcTPt`>lr`?<&ZAD?xhnEPK8wwJHpn|OedkS9( zA7WD#m%~;C3q2kag0B} zih&-SEV>q_NjcoBpNLOTZA$qAZ*c(JOP3<@Y(E*O4>O^KwBNr_ys)xU7gBces#4@- QAqe;(v%vSna`2(?U(9+@PXGV_ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.6/lm1b_transformer_2048/traj.parquet.gzip b/benchmarking/results/0.0.6/lm1b_transformer_2048/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..4f7775371abcefd602c55eab018264a3cb82b602 GIT binary patch literal 3257 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 literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.6/mfh3/traj.parquet.gzip b/benchmarking/results/0.0.6/mfh3/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..14d9408446bf510ba996d0ad3274bc155e01a41b GIT binary patch literal 3157 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 KU+@dy)BX<(^6W(b literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.6/surrogate/traj.parquet.gzip b/benchmarking/results/0.0.6/surrogate/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..eb8a5899160955e10047b25a5d711114da5026be GIT binary patch literal 3265 zcmc&%eQ*=U6+atAQJE6kfpg_CbsYg}(#S@VEwCZ5oFq#~wq+#SI!P4dyVFTJ`|c#` zTQW{a3F9P9h9-P887TFnDSxC%Lqlc=`6L!4BxzHZ(n7}#ZHLd2bTWa2gy5vzJ;}tz zCNrIB(;Z1~_r14ofA6>N?TpqCE*&nzhh_LXvNqg|W4B`1cYdhAq%o_cyySx~a7V=J zJa-hNmY2W%qbH7lU;gd(Z2{sCcx_Wm)w%o-c&Wu_esIwtuw~0w_t3>W$kdPR-FiL` z&RqI)#fEcvaPQXNjjfF4fq&U~^Ej0UFPZ)s9qP#gaPsJ`PnP9DHv8W2h#K1WELYYq z$b%>2ecLbLdC<4#V(8S|Ja|jHX4T8L=D{;d@BUK>l=YqWjIm{T@LaCx_gm-Wfp%j~ zctM^A_U_#e&w+CJj(zV8-;@U{t3Ub$4dtnDZs?~ad9Zu)k@G`X9ys(1FO+^h0%oOt z{M^e|N5D~%^W6qzP2HZh;HM+t2Ulk8T?(b|{-=}YJ{SSpYkKbcHk7RWek}I>2spNB zzrVZ$!*C3LwFEy|qQOtd@N!&^%jYW<6J#kB6YiDR?K5a0zhBbK1bcd3czxu^;S0kD z`;V+TXmCDJ=QKX_lQHH|%W>7iokMM()vVn(8mhj#@(m34R~$b$Iy$=0S)x1p-ZKw8 z@(0(tg+G7N6N$XNy?MRDc>K;4r@Kx+jyG*Q{QTxSO0km%$g_TUoch?!^YPhL225UF zr7ROzO7tgUR4>aUBC#wkt2`mA{6b#&o14{_WopHLl1Y^Y77&J)B0|ccfXsY#LH+uQ zrQ+3pya?u&{p;*2O+N$lh(&ZJ3)1F?}7^rUEtEC_se_!>IALazQs?icY+Vg#`ytj7r5tRdCh{qcK~+9 zhF$J~Hn7u#-Bq{rCbS(0pru|L1QIVBRqHy@w7E;OVt1&n$Y@2ugGBZu{+q7dn0bJwytDnwZ z1r9j(t*?+bfq9SLcJ+n@H9?kAG2xC1YP$CSP*9i4zbvR*;)%cw>glmt)K7f_7Swdi zH^^kBf~va9fGOp1Cd>*HF2nHIi%O>zaY1_>5)2l0)%+^W*I54QuaB6@@i{O*wW9K| zvUwO*rBTYGlo+7m$~R>LDozZr89x)@lY$smEvsESpz4Dxo*E~}v3$TkRaXG!Ph_L$Kvh!Y zm`I?2At^+&*9;LFy-5h0z$T~wm7t*efQl8NJ12(F-tI0-U6X2X5}2td;La(p8wxfB z(o7E5;S2H+DzT(d;%ExKNrp)P5rKmmh_je9q;hgUOh+)?{$Btf-A;_9;FB(q#&dLx zie(XJ(JU25!ss=ITHwl-kgIreVKII9; zVl;9gGeHne_(h|YAQ}l{h_Dbuh%kjDozXbOo<_=+Yjzu9Dy-qJ6h*Sz2qI0ueNak4 zpp-VjUoZR`(_Yfh=k>HhWgpycTxt{eq|fSZ^ynQadbK-2i|t$oXQbJzJw`!aTW=&} z6YXJI2=F#89kL0AFimzNpJaf{#M?{+$27RYjOc_qB3)dk7?W*@&D@@DH^DukL+kSp z$eszhwQ-xt-b?ED(HTBZm}j!k-;#iMrpNaQJWpF)L0YgRe4WtGYS7WvG>TKq z#}N#y=F^hRWY^IG597Ng@akxf(co!t85k?VO>nf{-tQwF+Cn}$K47&#PF!J>E6kgx z1xLzfg}fk4CcE3+;!Sjz?9JC<&mn)ZAT7zHyN`}$fUd;r`}<*p}ZmYx-{!<*0LTWFWr&gi_?0G*3s*f&Z9}U)=Rp= z0c*>(y9#!uQGQ7;sVnS3_hM<*GJ-|ogKn@J3Y_?&J~Gqi(NElkbjN)&<@GMK&j;7`-jYcCJxt6Sb&SP)`wE=tpWQb31BPxG)kKNhviI?5~N@fhMs2 zujhs!+G22L6SUe;({`hNg#Eo5^(P!o)TD*cVup5jvJ_gH7W8PZai)4gW@|AXl+u8> tSFFI4wNWb8pJWqtOf*_2Jy^BH2dTF3R8?u_V;KBkbK!rKHSo{NzX8rHSF8X4 literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.6/tab_lr/traj.parquet.gzip b/benchmarking/results/0.0.6/tab_lr/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..e51684bd3c293b5335f0b49a4899a53624c333c1 GIT binary patch literal 3238 zcmcgv4OCO-8NMkoL{}VYZwwQa&b`@Y}%J@5NI?|05E#B~ysiyr5qUEDlWi6S!*WPURrVMh!{$mxA3S>Lwxi=SV| z0>3*;{3<7r+= zdt1a{y%#>!G$t|Fui7>@CL}VLcD}!}8fCB@Uurh4;xm}Jr?>rj41@i&blHu490r@y z`P?A&Z3KJuowL>*LlG>w<*Sb_3`DRiQ*S-Fpf`fGZj`D%yA{C-2j=cA?22Ib3{yWp zaU+7AQXgKt`g#PLdpPYa>~aK4p^AZvMqvrx(>UR_L~Uy!HunV{&6gV z{krha(>husSZ;sAK_Lf0Pz1fiLGN->(M~QJkMdAnqL4q5G$DV)T!5rZA_aN=F5P5# zS=rm~UAUb5_xxADOHpDWR;>L=GWXKLNo{(9QkU32r${S&#L*!K*! z(A=D7Vsf9!<(d|8w(t6C(;?-$C0k2o%zm+K-|5!Ep6VlwZ#E?k)(suzZaG!=eA5aI z(&Xs$lHlCrq1Z%pT7nGW#U}`VNZTx~Qoq+yX(Rn^Zy4nYI=O-!v4T6X$(yDm^Z%QW z5>f%95cDyanRxI5DdM8_T=Zc~9-2LlVY5nK`QTutGlZrWeBX z-`w07*)J7gHIK&OuzK7 zclWK)ff|U$9;557oSy!tM!sFtS@q-_( zZ`c)kAa1~Y_AeWX1M9cOA?dUG_(+s7Z*b6$$1-O2QODz=-3Krs|K`BCj)g6?Dzl4w{Mwq*OfhIL1GNBICK9jXI|?3>1+FcPz*_OKK?tB zO!xV%6F732C-{<=+#i?x{!~DciFp4_6qAu8VWkWa@_b~4jkcg%1f90oNN`H@u5p>0Y_>%d8?&(h;NJ6TR=drk~7N77B+!_((vf4tWq}v&wT|Uu@ zq@UG@96$zUBCo||w~11dL@o<$0|HmT=>#jE-{SRyrI?+&Jz$z4jxKC)A*ovnG*OSG ztb5zA{BZ=m4q}TAq=u|c!t?n z;UvSrUg-yTCi*wiPA8$#l@qkmZ+;rssbmsD6@-3<1&kHM?IdVzm01Py0x>BxdVQ|RU!c%r zjl*6I?F|_|>Jcu5#&0$#1K_N%$>4FCGIUj>%R#}MOo-t>*pezGsEM+AG-fj$sxldi zq*{d<#tm{W3EK2oVw+L!WNSp5eS}mg)>am==Me_I*ksUESXH@?YE}Mp5XKiU86?p? zurA6hF-a@gd=MELSu`hRkJ%7%7^Ne%U~BA{EUy0>)?uEIv>wEe6&|jQ&tlMoO-6u| z<)vH(=3yd(WMj6{`YwVWGDCTlI0fTYyX1hwfTxlysoAKhwivPktdGjv zKt7czR=dQoRbWry#qhy4RZc!^Rj`obAy&vX73i;#Q2-}^|KoFm<9S}Nb2-qeVbhkt zegyr!8ulj`MX*VuBR2==!O5&^b{dt#z4FQU1l6ixf8fmyfP2*{M405Uc%Kc}{7XrX fXDNGOB@JIlNztn+AvF;}zz>-PK12$^7s|f?G3ag? literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.6/tab_nn/traj.parquet.gzip b/benchmarking/results/0.0.6/tab_nn/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..e30aca8e3475b7280052cb4d62ae6ed8639a2661 GIT binary patch literal 3214 zcmcgv4QvzF9lt<`tqwv;bHU!i8ksc(mIT|00W;dyvtv6pjzb*qSJozX=dZKx&W^tw znz5125m^QsRC)VD1o&F>Ut2iW*wA8X$Kt|+gMB4(159fX78OHnvks0 zq^?i)-FyG9_xu0f@BgIRKv)%cA^z<`{6L`@e+0)CVc7jU#F#MV7GMPvpA6g|_;}yI zDERsc^|sUhI1O&zvWttEQ{dqb*Ga#2ISZ;k9(;Gno-BB^-?s9F?krgQXjmuvY8D)O z-SUa%^4bd=ot*7B+ z(~TjZ<+rLIzcK{QUw9$pIz9ycIiFney3|lsf6xQ?8veMr6_Mzh^PL3Qnwl8HSFZb=O(IzS`?>~0x zxmRus)<;IO!9zW&e>vyvUbE}PQc;?z*;L}W{p?vfRden7`Kvb{@1N&(Jn_$uu1j>2jBf`M+dpW!L_Y~SOGIa1 z&u#^sqoVMipJsve{rSbEt6A`?d73|6Uls)KoY9}y|D+#0=4uT5?E(XKUU_+u@Anj3m(@dKW4mea_x!tgZpl+6lE=W? z!S_B`OtpgX@oMMj(stl@{_x2>X$A}M-%cmZWN{?oNjF5AnbOaTG|J6a&IKQ~e)!JS zo8Q`U_~yS~{lkTc+oG)x_Fltw*sky2h?w(C$*0UIj>g2Y>%k&*n-Myh&eOC z{+ASHV~%v43X>E?X}^af@j?v0=Ycsh*qW2xg#?2PmX=GazCfOTfrTmSSpf5^6qo&? zxD>;rRg$7G$-Bv@hwvF6F{J6o%7Ud2ZoB3q{wXP?L+;CWQCo15c0RWjw6AZMrN6tSy!fqYY(o zo}okT9ELa-PTx_4D0KNCY@8=Xy2%&`%{R+DJTzx`AM)L_QD41A)-?spbQI8Y+BJrP zO@lO>!Cm;gY>14lsuOB74c`>S6o9CJT~!cgK51CWsr@h$!A$+<06;jMh=+uCw@@^e zp(11?jcOK7laWX$iGUJg#Mb86fH8M$`kyH68`zB-)ciU4@vzB1!TC1Pto1u(I=GO^YYg}clZ%j67p$~77 zyBq}4r@S_K)TlKDC}m1P*;QV&hs)t-=`^(0#~_}W@m(CtQUa0=jr3Qztj_a?~oQr-+T{Av9HeBWhK+&=4s>C^Qx9ugTGb zCXoMk*M=a>5$L%FYK^FAH=%xn{oR226OLxoq`9H1hkCfP5L%e#i_@% literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.6/tab_rf/traj.parquet.gzip b/benchmarking/results/0.0.6/tab_rf/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..436387ca335793903835dcab02f6940065044a9a GIT binary patch literal 3425 zcmd5<3s4m29bfPy7n`vtE_3HVgO`LcBaeG<25iaSy^}lcgaZ!Y9!BwYZx0r3kK-O3 zhe4Auqp9(Y6+FZV7;JGgX^k<87~UjWXVMZ=X~y zwqJt(5_Sz8p3^jb5ndcgJNc`%7ob(;yZon{AHvqYxPghWVbH((^9L_q8HUf+tuKf^ zKMY5oxtrL+4#B5mqV!{D2I0v5=k*8M2Z50+o;Q|02qSrUYk&6D0PKvrkhyoq09<<~ zZs<5W04FM*z1CtHfchoM2iu7O$c`IPEXf`KY;Lvl{mcO1W0_w~WDw4u(yGkwrGakWQX+y{xHuiaw))e9Y_g*S-T zdtvxE+n86}3!S%U?^ohph`xULi^}mHpe81+Y|rU|f0%^x8F3FR^<8PYH1YvpQD5eM zP;(x3CJcT=?C6Hqciy`Vedl0)jm+UZa}My%QQyE=7yQ7TXG*x(1t(;J9V??S49D=h zQTXBL6ns>G$Ko+~OoB)_8C;QYQam18Itvx$v`R)M|2%kdt+i-uiAUPza6}HQuk--dz<1v#1?$KI;~C9e(4h<^-k09_8%)& zpX$&UR^$8Zhu=%RclY#5N=7Dr(jv>6c<{Tb-#_=+_#%3L^V4f@XP<6<_O1S>)|^f8 z9%u}OR$%qii|=kkaFTBe6YzOrB^DDa7JZ+kZLTt($5u&GzG_bp7sQVW;tvSpZwQlr zGdEfIpLi-xK?RB7(Oke{(S#!R?FD+RA+KI?zYY4~=$E(NJP7;pmh73oIh%i6AsyIbK+d8jf= z)CvjG^W>(=L$LXUj+efUJ_MU0^J_6nJ}>KTfs(IBZFal`&LtY|jJrZ`Ygxzsy8I9b zj*yAFQbW*naqY^b3q$aW&L}!#K{J#;^RZH`IRGnt_s9Ntvl)I^lKcFzrVuPjeWhD3 zXo0=!)8{J8AvpV&&#yW5G{N|*$I?$du^+lC)~KYiMj+F2mls{x2W(||t72Ot7|EMe zyYDwb?Wd-*heD08;c(Yt#ihNFHUg?;>$bwnoBuAj!)}JHsaap7F4+S83B&!Tp4=?h3*wYTMvr3v@ELBH^SsSD-Vg|Az&7I_{eSo$vM8A5)*rvB?+b zp#q)h(_=iHtw6;;QevVQFI7RaHe7(=^PY>I(G+3oBSi%Hm~S{V55X_+3C76s@myiU0%tGq_rC*RfvXG5|7PQPD@gf zBrY3EBZABCbfTTtXY=^bR?4rd-Ds(hhBq{~ku|JCoUp|*-aH*KJl&3ip`G@!>9jDg zGGEZm9Vqd;7^>PH#^7h&!H0}$lDp$LY%J}w*=;@>65lAHT}Yg9m28oDQu};5LTbf~(8*0hiQXlEc zX9^efmsd^OT>8KhP-!SU-HrBbg>t*<2Ibu!YVbZ}=_%@s~6h~zasglDFGE9-QU zTBCzxH9l)GlG7?>q&C3WiTGo1*mIo$o~PE!NY;t$8z=F~NV7_5Rv49(mcvajq+DNP zH5sH~e`HR(R)b<;qs=dGcXx-d6fji`K@!QPz|Fxm1W7TW_`WQl;!7bROa~enGC7UCFNR$>nUOl z_u`vsRX*3MXrm(Pcp~3asJ|vh0k=T)|7dIoBF}>~GZ9zEHEjvkkEp+Mx&B0>h-=dD z$XSK>=w#kBzYNnkUDa&$#IdyzduZkd!kwLsiIUtlPmQ1UrBZHpDt}=mMJ}YI@Kq&F RNx(4l!{X34R3ZAf`Zse{vP=K~ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.6/tab_svm/traj.parquet.gzip b/benchmarking/results/0.0.6/tab_svm/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..e5aa055b7d1072c60a9be7d0cfbe2584d23ab204 GIT binary patch literal 3172 zcmcgv4Qw0L9ls==6`-Mka;d$gYvy(tpd|HYNCM?_c4F6F;t)6S+1}RV?tK18?#{+O z$9BAwrmNa9Rx%<13rj0eARQHd_h$xf?-NKar0}BQIwHS^2e(oVosL z`DyI^w;$Uvs5*_cgy@k!UL3>LOt1O__w*R%y5o?kSs25foVvchuy_osyjJzwReRIe zuBM|(bRdo8y=vXN?5Q+1HF?LNx;u>>9CGX#z|+|1gEfBp57XG0TxgKS5?uf8e0du4 zT>8gbr}NU-R((Mac~!(-*{Zc%`MZd9J!qoNpA@kd9uM5h9uYCe;bX0(dqoT#^8S8g zkBB|@yWO{a+Am@`lcmpIcv8f+i*5M@+ePfHPp%Jt=@l`RaqGjMxkW7Zu;_V%5V1SA z)~;V}7O?}D*Y$-l5u16F8kzukqX_y+4l3r9q2n^N5S63yVnzOJ5fu5e=0(W8OGttL zH|3*!ZEbHJedoQ=AyIYV-H+cR6ZIcY3|x#pbE;?C3xk)OkF!78^g;BQk9x+At?f&_ zE9?K&S0nmoZNFBBc8+d3++wb87;xvlSk=&1{m&ccugr96YzL1cNbb(iq!a8@IxR0o zZ&w-+d7)CVoMTA7Rfv%73@wBrNmN!eE-M<47fs1a2W6%C|4RzWGQbD~&4raH1TRn$ z8G0cP{R%MTp#=<~+qP`cubG)?l)ZC#UBylv?b|neXwz9$Tan0rT{UrY?313M>D0F7 zlUJ%g=-9tvg|p+l8VUISIzt%c_ zKsff3OZTUSCYv^HJMn|dR|fi@yA*!@|*#7#B8*RPa`zq1t zCp=wiFnh)8z2_2Fx1ae;`>$(+u7A^!`w#dl>RV11hci-d#?)OJi9lHXdzSZAEd4eKB72e0j1C{qMG9B_e60&o zWMug_6uC1hco#8bSYGtGymVq&=?O@Y#c=;a5=&7;`H%ro$fIc?e(n|^?Fi)u% z9+(GtKlE*BHkVhay61qIj{8&^($AKSsOF_U}asp2`_!{GG!qDM%H2`4;@HakS<=B|V z;?%pe_D*VpQ=s^UU}MloF-cp51h&@pkl)JN0u<+Et--k8${7L_(E@E^ULp~#H{n5A z=Lpbz6OiHY?7EXSSu3rz4eT89E@lsx=ybc9w04sf<_&7E zi8Ib>HRCd}(iw4{D5W*4?d?s{eiY$Uy9r0YYpJ_+R=$mKm|x6IXfi(VT+G#KnlnrF zpma7vrY4@She&j|w6kX+opHxfd3|eGvpk_WC&-~XnLV2*N!XHZ7r-g;(r5tlB&DOJ zoV}bgNo(0oDhSWbny?4;iTZXt2=lh`M!;dfQ%$wjA5v4*Ho#T|3nQM8gi=$1{+b<)a02+hur@ee9|4|KKx>6f+XDL$^!EnXpI|h> zCe4hxTA&9zOQEG{Mh<c{r~^~ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.6/translatewmt_xformer_64/traj.parquet.gzip b/benchmarking/results/0.0.6/translatewmt_xformer_64/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..6facf08419d3edd15d7411a5554a0bd8267e9cb7 GIT binary patch literal 3232 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 literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.7/counting_ones/traj.parquet.gzip b/benchmarking/results/0.0.7/counting_ones/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..41d820050aebcdc8ccb73f357c2d9882df9ccc34 GIT binary patch literal 3133 zcmcgv3v3f*9KUVdEE9wXH`}^yDMAAy3uQ^X53wG?X7p$(sws7 zYQWb_d?PWS;uJB#7aAZwa*-IF(*#u1YLv&-iAE#xRujQ%G%K;6uA~bYKGK^vdT(w$c=wqH~jMx`mw{(+jHxmz3RRr(s1kU zQ|AvJkw#`!rk4J3M0zuD{M&9^o*HNkM-dnpKmyb%WjqPtWUN1`u+aOC# za_{^L7Fp`KYuSR4ZdrO)z2EzePnOQdXUFRUvb3kXewKTKEFEu29X@@JEak>N|8f2! zvc%-S82#{3S=zeg+{{~d%F@%rS08+Pk1XNrrg;b7lqF*C_Q!{h%hHDBvp3y$N|sc< zng>QSdFjz(!;5+s<)wLF-WHNqZb^G|0c}e>1>-ZWjFAYD*_vApFD1vS;K}Sm( z(3}dLgI1sw)f)A9&>Ho)conj68Y&nQq{u?m$H~TB)@l6?3$j*#b+6y@?pr&oYTfEQ_kDa;mDc53~-94j6uv#*>d#Cd^?4u{{S8e>`9CmKa zoF8_*|2wwOKt~R|cos8%a6?u<{|xp}?$g&E-g*X0z1Lm-{>!Ja&?n~aFWU~|L2K0G zZecr2rCzai_~n|v+u@pcB5;{*cy4ChcGwP6kzNM>bnT#BWZQUVJIVv^^ z+W@Cvu~#wA77b6f)5o!Vpm#E@0IWBWjY5aIq{uOmKmkKih-NP`A~d{FAU1(bPys4I z0r5c{D*|y&3_{)2J@&;*bn7R8nT!HxPP&_*u}P4o6SxFlA0MF-O=cxWlkiPoOaKTI zxV{14ECvlyIdLAQBACkm4*)3DiLn&8kd>tI937)#S(vkEmWst9X$U06#^PK=gj7RQ zqoGl+1ITqn_Y;`LMt!46w;s{V#NF;ra%o}uG&%K6a18`oa2)Rff4ElSxEZ$waXXF& zaa&NKS*?@!X-I6n$R}`H;S8RN6@^dWcp3+K;H?+|Z$$|_ec*3R`$$XJ=j{N*FwnQ& zObC3^@9>ztMpue%^CW1ogX`q1G@EtCC?HGpM}mat4ADY>C%ANw5G)~@Tn%NC0WuSB zx8WRPa)%hP3()X%@tk68L=(}{k?ybo9nq!tdvVCm^m+7g!shI!jTr+?TKb?5zc<7) zSs-su06bIe`vsn-9qv9_uqXW8K+a(?(2g{;Q;f&e7iikx|}fa;F$E%)y*YiQyk)8HXLz#6B<)vtP)heBLgj%SOPs zLGBG{*3+zKy;feSk>HQhM!VkC-=+AYNsrz~x&062b*Eu`Ngrt_=)k(zoAr!f zSMoudoR&gP{82xd344v>wNPpto-VHc4QsJa7{LQ#XwDXE6Q@XL*5?H{mAEfe&SN#S5vn Va8+p=su2YIkh$RdU={dq_zS)vMppm; literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.7/imagenet_resnet_512/traj.parquet.gzip b/benchmarking/results/0.0.7/imagenet_resnet_512/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..f5ee42d53d918ffb3ed2a7c4989d023cb6c254a6 GIT binary patch literal 3181 zcmcgv3vd(H6smAvxqO4eU8 zh7<-!hL$>^q~HW&z#XTplhSw+Od%bEn}#;VW(b{eNDE9ujWfk5lmy5SNZ(t@#Kul% zI+O55+I{cd`|dmU-gDo~F2^luRDw21&_7HnL-i;!6G0x^CPTzA>6wPXvhAyHtiILh z>ASh+(8f~_Y1e+FMUMTn)potp-S_2(AKacf|IT3L>|NK1&IIY>xHTRAPl}%Jzvli= zuqm;5*Op7!_4M06xs=^l*uP-up~_{;8WwGx)qDQ%&3Cm;>#n@l)Bo&0yer<{`{R?Z zv|W|;9=f&HynEu z*;M6zQkI4wD1vsSp=ZWDZF)yQDdTlX7JLPaKLoP<8}Ohv~=w zFOZic4J6}fkS0sJap%g3$m4Hs>cr-pDVx!L@J;N&eOta)e7Y0c+CT8ug3RAxO+$Y< znDgiXY=$aQvg9|fV(O1SjKHlDpsnqiw~`d|z?3oomLkuA&tf({)RXvqLE^W4v|ZPbS=Y^s02YLKaoC;x=HChNDx40 zMV2D(K9WA?{v{^!)HD!Zjx6)awAl!v$dgO`q~Ich@;^%&l&s)lV%4;d3-dxy`E>T` z24x+PftfNu3LZw8m#q{?o&f?O%yD2943U8lSgORi&kv?rRdT_=g}U)aK$G-XExKn? zj>r0Ovkd2|9xF=%s}9Be@IYl)U}>K#i6PAU<98K43f@Ez8_$GD7a1afd4rM>fH^C8 z;NDd$jSCkm8%Kc|ivsK%bEiRPV<1gra1TB==OaUl3d9_Z!8b}V3Ls2iV;;bn3L2zx zbU%zoFkb&H01&GaU`TM0i%H{HDnJI}FlYWa83_2I5J-dx1X-T|rRqib>U@+=wTxt8Kx9Kl9C1h1>5Y^$J6*ky|a%M3V6Yb~|3 zPz7XoG_{V<24WFWTpleqfIUKm%4x@;KIXQnf`q~Br8F@$Wz)Ig8BTjGN5_G^F$D08 z_wVF6jxt%?6mJYUR{%ScPEDDj&`&C!3b(72i;6mfSxxaA@NXHxtETLFon33u(I$u+ zXDN-j-f62)CF4LacG!L~(s*SW`Tqc`JyaD4wcKkhGcO4m-dp@=~t@^EjoY#h6{Z zHBM`|2*tv>5wQxkAXetZSr|7V=mCcTPt`>lr`?<&ZAD?xhnEPK8wwJHpn|OedkS9( zA7WD#m%~;C3q2kag0B} zih&-SEV>q_NjcoBpNLOTZA$qAZ*c(JOP3<@Y(E*O4>O^KwBNr_ys)xU7gBces#4@- QAqe;(v%vSna`2(?U(9+@PXGV_ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.7/lm1b_transformer_2048/traj.parquet.gzip b/benchmarking/results/0.0.7/lm1b_transformer_2048/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..4f7775371abcefd602c55eab018264a3cb82b602 GIT binary patch literal 3257 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 literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.7/mfh3/traj.parquet.gzip b/benchmarking/results/0.0.7/mfh3/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..14d9408446bf510ba996d0ad3274bc155e01a41b GIT binary patch literal 3157 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 KU+@dy)BX<(^6W(b literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.7/surrogate/traj.parquet.gzip b/benchmarking/results/0.0.7/surrogate/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..eb8a5899160955e10047b25a5d711114da5026be GIT binary patch literal 3265 zcmc&%eQ*=U6+atAQJE6kfpg_CbsYg}(#S@VEwCZ5oFq#~wq+#SI!P4dyVFTJ`|c#` zTQW{a3F9P9h9-P887TFnDSxC%Lqlc=`6L!4BxzHZ(n7}#ZHLd2bTWa2gy5vzJ;}tz zCNrIB(;Z1~_r14ofA6>N?TpqCE*&nzhh_LXvNqg|W4B`1cYdhAq%o_cyySx~a7V=J zJa-hNmY2W%qbH7lU;gd(Z2{sCcx_Wm)w%o-c&Wu_esIwtuw~0w_t3>W$kdPR-FiL` z&RqI)#fEcvaPQXNjjfF4fq&U~^Ej0UFPZ)s9qP#gaPsJ`PnP9DHv8W2h#K1WELYYq z$b%>2ecLbLdC<4#V(8S|Ja|jHX4T8L=D{;d@BUK>l=YqWjIm{T@LaCx_gm-Wfp%j~ zctM^A_U_#e&w+CJj(zV8-;@U{t3Ub$4dtnDZs?~ad9Zu)k@G`X9ys(1FO+^h0%oOt z{M^e|N5D~%^W6qzP2HZh;HM+t2Ulk8T?(b|{-=}YJ{SSpYkKbcHk7RWek}I>2spNB zzrVZ$!*C3LwFEy|qQOtd@N!&^%jYW<6J#kB6YiDR?K5a0zhBbK1bcd3czxu^;S0kD z`;V+TXmCDJ=QKX_lQHH|%W>7iokMM()vVn(8mhj#@(m34R~$b$Iy$=0S)x1p-ZKw8 z@(0(tg+G7N6N$XNy?MRDc>K;4r@Kx+jyG*Q{QTxSO0km%$g_TUoch?!^YPhL225UF zr7ROzO7tgUR4>aUBC#wkt2`mA{6b#&o14{_WopHLl1Y^Y77&J)B0|ccfXsY#LH+uQ zrQ+3pya?u&{p;*2O+N$lh(&ZJ3)1F?}7^rUEtEC_se_!>IALazQs?icY+Vg#`ytj7r5tRdCh{qcK~+9 zhF$J~Hn7u#-Bq{rCbS(0pru|L1QIVBRqHy@w7E;OVt1&n$Y@2ugGBZu{+q7dn0bJwytDnwZ z1r9j(t*?+bfq9SLcJ+n@H9?kAG2xC1YP$CSP*9i4zbvR*;)%cw>glmt)K7f_7Swdi zH^^kBf~va9fGOp1Cd>*HF2nHIi%O>zaY1_>5)2l0)%+^W*I54QuaB6@@i{O*wW9K| zvUwO*rBTYGlo+7m$~R>LDozZr89x)@lY$smEvsESpz4Dxo*E~}v3$TkRaXG!Ph_L$Kvh!Y zm`I?2At^+&*9;LFy-5h0z$T~wm7t*efQl8NJ12(F-tI0-U6X2X5}2td;La(p8wxfB z(o7E5;S2H+DzT(d;%ExKNrp)P5rKmmh_je9q;hgUOh+)?{$Btf-A;_9;FB(q#&dLx zie(XJ(JU25!ss=ITHwl-kgIreVKII9; zVl;9gGeHne_(h|YAQ}l{h_Dbuh%kjDozXbOo<_=+Yjzu9Dy-qJ6h*Sz2qI0ueNak4 zpp-VjUoZR`(_Yfh=k>HhWgpycTxt{eq|fSZ^ynQadbK-2i|t$oXQbJzJw`!aTW=&} z6YXJI2=F#89kL0AFimzNpJaf{#M?{+$27RYjOc_qB3)dk7?W*@&D@@DH^DukL+kSp z$eszhwQ-xt-b?ED(HTBZm}j!k-;#iMrpNaQJWpF)L0YgRe4WtGYS7WvG>TKq z#}N#y=F^hRWY^IG597Ng@akxf(co!t85k?VO>nf{-tQwF+Cn}$K47&#PF!J>E6kgx z1xLzfg}fk4CcE3+;!Sjz?9JC<&mn)ZAT7zHyN`}$fUd;r`}<*p}ZmYx-{!<*0LTWFWr&gi_?0G*3s*f&Z9}U)=Rp= z0c*>(y9#!uQGQ7;sVnS3_hM<*GJ-|ogKn@J3Y_?&J~Gqi(NElkbjN)&<@GMK&j;7`-jYcCJxt6Sb&SP)`wE=tpWQb31BPxG)kKNhviI?5~N@fhMs2 zujhs!+G22L6SUe;({`hNg#Eo5^(P!o)TD*cVup5jvJ_gH7W8PZai)4gW@|AXl+u8> tSFFI4wNWb8pJWqtOf*_2Jy^BH2dTF3R8?u_V;KBkbK!rKHSo{NzX8rHSF8X4 literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.7/tab_lr/traj.parquet.gzip b/benchmarking/results/0.0.7/tab_lr/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..e51684bd3c293b5335f0b49a4899a53624c333c1 GIT binary patch literal 3238 zcmcgv4OCO-8NMkoL{}VYZwwQa&b`@Y}%J@5NI?|05E#B~ysiyr5qUEDlWi6S!*WPURrVMh!{$mxA3S>Lwxi=SV| z0>3*;{3<7r+= zdt1a{y%#>!G$t|Fui7>@CL}VLcD}!}8fCB@Uurh4;xm}Jr?>rj41@i&blHu490r@y z`P?A&Z3KJuowL>*LlG>w<*Sb_3`DRiQ*S-Fpf`fGZj`D%yA{C-2j=cA?22Ib3{yWp zaU+7AQXgKt`g#PLdpPYa>~aK4p^AZvMqvrx(>UR_L~Uy!HunV{&6gV z{krha(>husSZ;sAK_Lf0Pz1fiLGN->(M~QJkMdAnqL4q5G$DV)T!5rZA_aN=F5P5# zS=rm~UAUb5_xxADOHpDWR;>L=GWXKLNo{(9QkU32r${S&#L*!K*! z(A=D7Vsf9!<(d|8w(t6C(;?-$C0k2o%zm+K-|5!Ep6VlwZ#E?k)(suzZaG!=eA5aI z(&Xs$lHlCrq1Z%pT7nGW#U}`VNZTx~Qoq+yX(Rn^Zy4nYI=O-!v4T6X$(yDm^Z%QW z5>f%95cDyanRxI5DdM8_T=Zc~9-2LlVY5nK`QTutGlZrWeBX z-`w07*)J7gHIK&OuzK7 zclWK)ff|U$9;557oSy!tM!sFtS@q-_( zZ`c)kAa1~Y_AeWX1M9cOA?dUG_(+s7Z*b6$$1-O2QODz=-3Krs|K`BCj)g6?Dzl4w{Mwq*OfhIL1GNBICK9jXI|?3>1+FcPz*_OKK?tB zO!xV%6F732C-{<=+#i?x{!~DciFp4_6qAu8VWkWa@_b~4jkcg%1f90oNN`H@u5p>0Y_>%d8?&(h;NJ6TR=drk~7N77B+!_((vf4tWq}v&wT|Uu@ zq@UG@96$zUBCo||w~11dL@o<$0|HmT=>#jE-{SRyrI?+&Jz$z4jxKC)A*ovnG*OSG ztb5zA{BZ=m4q}TAq=u|c!t?n z;UvSrUg-yTCi*wiPA8$#l@qkmZ+;rssbmsD6@-3<1&kHM?IdVzm01Py0x>BxdVQ|RU!c%r zjl*6I?F|_|>Jcu5#&0$#1K_N%$>4FCGIUj>%R#}MOo-t>*pezGsEM+AG-fj$sxldi zq*{d<#tm{W3EK2oVw+L!WNSp5eS}mg)>am==Me_I*ksUESXH@?YE}Mp5XKiU86?p? zurA6hF-a@gd=MELSu`hRkJ%7%7^Ne%U~BA{EUy0>)?uEIv>wEe6&|jQ&tlMoO-6u| z<)vH(=3yd(WMj6{`YwVWGDCTlI0fTYyX1hwfTxlysoAKhwivPktdGjv zKt7czR=dQoRbWry#qhy4RZc!^Rj`obAy&vX73i;#Q2-}^|KoFm<9S}Nb2-qeVbhkt zegyr!8ulj`MX*VuBR2==!O5&^b{dt#z4FQU1l6ixf8fmyfP2*{M405Uc%Kc}{7XrX fXDNGOB@JIlNztn+AvF;}zz>-PK12$^7s|f?G3ag? literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.7/tab_nn/traj.parquet.gzip b/benchmarking/results/0.0.7/tab_nn/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..e30aca8e3475b7280052cb4d62ae6ed8639a2661 GIT binary patch literal 3214 zcmcgv4QvzF9lt<`tqwv;bHU!i8ksc(mIT|00W;dyvtv6pjzb*qSJozX=dZKx&W^tw znz5125m^QsRC)VD1o&F>Ut2iW*wA8X$Kt|+gMB4(159fX78OHnvks0 zq^?i)-FyG9_xu0f@BgIRKv)%cA^z<`{6L`@e+0)CVc7jU#F#MV7GMPvpA6g|_;}yI zDERsc^|sUhI1O&zvWttEQ{dqb*Ga#2ISZ;k9(;Gno-BB^-?s9F?krgQXjmuvY8D)O z-SUa%^4bd=ot*7B+ z(~TjZ<+rLIzcK{QUw9$pIz9ycIiFney3|lsf6xQ?8veMr6_Mzh^PL3Qnwl8HSFZb=O(IzS`?>~0x zxmRus)<;IO!9zW&e>vyvUbE}PQc;?z*;L}W{p?vfRden7`Kvb{@1N&(Jn_$uu1j>2jBf`M+dpW!L_Y~SOGIa1 z&u#^sqoVMipJsve{rSbEt6A`?d73|6Uls)KoY9}y|D+#0=4uT5?E(XKUU_+u@Anj3m(@dKW4mea_x!tgZpl+6lE=W? z!S_B`OtpgX@oMMj(stl@{_x2>X$A}M-%cmZWN{?oNjF5AnbOaTG|J6a&IKQ~e)!JS zo8Q`U_~yS~{lkTc+oG)x_Fltw*sky2h?w(C$*0UIj>g2Y>%k&*n-Myh&eOC z{+ASHV~%v43X>E?X}^af@j?v0=Ycsh*qW2xg#?2PmX=GazCfOTfrTmSSpf5^6qo&? zxD>;rRg$7G$-Bv@hwvF6F{J6o%7Ud2ZoB3q{wXP?L+;CWQCo15c0RWjw6AZMrN6tSy!fqYY(o zo}okT9ELa-PTx_4D0KNCY@8=Xy2%&`%{R+DJTzx`AM)L_QD41A)-?spbQI8Y+BJrP zO@lO>!Cm;gY>14lsuOB74c`>S6o9CJT~!cgK51CWsr@h$!A$+<06;jMh=+uCw@@^e zp(11?jcOK7laWX$iGUJg#Mb86fH8M$`kyH68`zB-)ciU4@vzB1!TC1Pto1u(I=GO^YYg}clZ%j67p$~77 zyBq}4r@S_K)TlKDC}m1P*;QV&hs)t-=`^(0#~_}W@m(CtQUa0=jr3Qztj_a?~oQr-+T{Av9HeBWhK+&=4s>C^Qx9ugTGb zCXoMk*M=a>5$L%FYK^FAH=%xn{oR226OLxoq`9H1hkCfP5L%e#i_@% literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.7/tab_rf/traj.parquet.gzip b/benchmarking/results/0.0.7/tab_rf/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..436387ca335793903835dcab02f6940065044a9a GIT binary patch literal 3425 zcmd5<3s4m29bfPy7n`vtE_3HVgO`LcBaeG<25iaSy^}lcgaZ!Y9!BwYZx0r3kK-O3 zhe4Auqp9(Y6+FZV7;JGgX^k<87~UjWXVMZ=X~y zwqJt(5_Sz8p3^jb5ndcgJNc`%7ob(;yZon{AHvqYxPghWVbH((^9L_q8HUf+tuKf^ zKMY5oxtrL+4#B5mqV!{D2I0v5=k*8M2Z50+o;Q|02qSrUYk&6D0PKvrkhyoq09<<~ zZs<5W04FM*z1CtHfchoM2iu7O$c`IPEXf`KY;Lvl{mcO1W0_w~WDw4u(yGkwrGakWQX+y{xHuiaw))e9Y_g*S-T zdtvxE+n86}3!S%U?^ohph`xULi^}mHpe81+Y|rU|f0%^x8F3FR^<8PYH1YvpQD5eM zP;(x3CJcT=?C6Hqciy`Vedl0)jm+UZa}My%QQyE=7yQ7TXG*x(1t(;J9V??S49D=h zQTXBL6ns>G$Ko+~OoB)_8C;QYQam18Itvx$v`R)M|2%kdt+i-uiAUPza6}HQuk--dz<1v#1?$KI;~C9e(4h<^-k09_8%)& zpX$&UR^$8Zhu=%RclY#5N=7Dr(jv>6c<{Tb-#_=+_#%3L^V4f@XP<6<_O1S>)|^f8 z9%u}OR$%qii|=kkaFTBe6YzOrB^DDa7JZ+kZLTt($5u&GzG_bp7sQVW;tvSpZwQlr zGdEfIpLi-xK?RB7(Oke{(S#!R?FD+RA+KI?zYY4~=$E(NJP7;pmh73oIh%i6AsyIbK+d8jf= z)CvjG^W>(=L$LXUj+efUJ_MU0^J_6nJ}>KTfs(IBZFal`&LtY|jJrZ`Ygxzsy8I9b zj*yAFQbW*naqY^b3q$aW&L}!#K{J#;^RZH`IRGnt_s9Ntvl)I^lKcFzrVuPjeWhD3 zXo0=!)8{J8AvpV&&#yW5G{N|*$I?$du^+lC)~KYiMj+F2mls{x2W(||t72Ot7|EMe zyYDwb?Wd-*heD08;c(Yt#ihNFHUg?;>$bwnoBuAj!)}JHsaap7F4+S83B&!Tp4=?h3*wYTMvr3v@ELBH^SsSD-Vg|Az&7I_{eSo$vM8A5)*rvB?+b zp#q)h(_=iHtw6;;QevVQFI7RaHe7(=^PY>I(G+3oBSi%Hm~S{V55X_+3C76s@myiU0%tGq_rC*RfvXG5|7PQPD@gf zBrY3EBZABCbfTTtXY=^bR?4rd-Ds(hhBq{~ku|JCoUp|*-aH*KJl&3ip`G@!>9jDg zGGEZm9Vqd;7^>PH#^7h&!H0}$lDp$LY%J}w*=;@>65lAHT}Yg9m28oDQu};5LTbf~(8*0hiQXlEc zX9^efmsd^OT>8KhP-!SU-HrBbg>t*<2Ibu!YVbZ}=_%@s~6h~zasglDFGE9-QU zTBCzxH9l)GlG7?>q&C3WiTGo1*mIo$o~PE!NY;t$8z=F~NV7_5Rv49(mcvajq+DNP zH5sH~e`HR(R)b<;qs=dGcXx-d6fji`K@!QPz|Fxm1W7TW_`WQl;!7bROa~enGC7UCFNR$>nUOl z_u`vsRX*3MXrm(Pcp~3asJ|vh0k=T)|7dIoBF}>~GZ9zEHEjvkkEp+Mx&B0>h-=dD z$XSK>=w#kBzYNnkUDa&$#IdyzduZkd!kwLsiIUtlPmQ1UrBZHpDt}=mMJ}YI@Kq&F RNx(4l!{X34R3ZAf`Zse{vP=K~ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.7/tab_svm/traj.parquet.gzip b/benchmarking/results/0.0.7/tab_svm/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..e5aa055b7d1072c60a9be7d0cfbe2584d23ab204 GIT binary patch literal 3172 zcmcgv4Qw0L9ls==6`-Mka;d$gYvy(tpd|HYNCM?_c4F6F;t)6S+1}RV?tK18?#{+O z$9BAwrmNa9Rx%<13rj0eARQHd_h$xf?-NKar0}BQIwHS^2e(oVosL z`DyI^w;$Uvs5*_cgy@k!UL3>LOt1O__w*R%y5o?kSs25foVvchuy_osyjJzwReRIe zuBM|(bRdo8y=vXN?5Q+1HF?LNx;u>>9CGX#z|+|1gEfBp57XG0TxgKS5?uf8e0du4 zT>8gbr}NU-R((Mac~!(-*{Zc%`MZd9J!qoNpA@kd9uM5h9uYCe;bX0(dqoT#^8S8g zkBB|@yWO{a+Am@`lcmpIcv8f+i*5M@+ePfHPp%Jt=@l`RaqGjMxkW7Zu;_V%5V1SA z)~;V}7O?}D*Y$-l5u16F8kzukqX_y+4l3r9q2n^N5S63yVnzOJ5fu5e=0(W8OGttL zH|3*!ZEbHJedoQ=AyIYV-H+cR6ZIcY3|x#pbE;?C3xk)OkF!78^g;BQk9x+At?f&_ zE9?K&S0nmoZNFBBc8+d3++wb87;xvlSk=&1{m&ccugr96YzL1cNbb(iq!a8@IxR0o zZ&w-+d7)CVoMTA7Rfv%73@wBrNmN!eE-M<47fs1a2W6%C|4RzWGQbD~&4raH1TRn$ z8G0cP{R%MTp#=<~+qP`cubG)?l)ZC#UBylv?b|neXwz9$Tan0rT{UrY?313M>D0F7 zlUJ%g=-9tvg|p+l8VUISIzt%c_ zKsff3OZTUSCYv^HJMn|dR|fi@yA*!@|*#7#B8*RPa`zq1t zCp=wiFnh)8z2_2Fx1ae;`>$(+u7A^!`w#dl>RV11hci-d#?)OJi9lHXdzSZAEd4eKB72e0j1C{qMG9B_e60&o zWMug_6uC1hco#8bSYGtGymVq&=?O@Y#c=;a5=&7;`H%ro$fIc?e(n|^?Fi)u% z9+(GtKlE*BHkVhay61qIj{8&^($AKSsOF_U}asp2`_!{GG!qDM%H2`4;@HakS<=B|V z;?%pe_D*VpQ=s^UU}MloF-cp51h&@pkl)JN0u<+Et--k8${7L_(E@E^ULp~#H{n5A z=Lpbz6OiHY?7EXSSu3rz4eT89E@lsx=ybc9w04sf<_&7E zi8Ib>HRCd}(iw4{D5W*4?d?s{eiY$Uy9r0YYpJ_+R=$mKm|x6IXfi(VT+G#KnlnrF zpma7vrY4@She&j|w6kX+opHxfd3|eGvpk_WC&-~XnLV2*N!XHZ7r-g;(r5tlB&DOJ zoV}bgNo(0oDhSWbny?4;iTZXt2=lh`M!;dfQ%$wjA5v4*Ho#T|3nQM8gi=$1{+b<)a02+hur@ee9|4|KKx>6f+XDL$^!EnXpI|h> zCe4hxTA&9zOQEG{Mh<c{r~^~ literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.0.7/translatewmt_xformer_64/traj.parquet.gzip b/benchmarking/results/0.0.7/translatewmt_xformer_64/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..6facf08419d3edd15d7411a5554a0bd8267e9cb7 GIT binary patch literal 3232 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 literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.1.0/imagenet_resnet_512/traj.parquet.gzip b/benchmarking/results/0.1.0/imagenet_resnet_512/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..8dfd0789b0003429142bd8068a38a3bf2e43c7b8 GIT binary patch literal 3277 zcmc&%4Ny~87JfhkY`2QGp+OnJ*izgLG(QB1Qg2@Z2?_tP=Fb9o@8uC51zg;FU%-OUo$1VO z_fGQOz31F>?svX(&V`iWMww6`Y@Q|@iYXG739;E2ma-`x<44Sr#>;14U2wpCt+zS# z^0m3c9nPK`>GI=8oOXNY#<`KlH*g!4jzmj(=d6YVUe**s5@96XTl)x1`9M z2V3RmcC9%-_}X7?B=0%*J7Umxc#?yj(Z zydYuKW(W4l()L}eQm!6SG`d&co?95WD7f-EQ|^z+EBxj5X6DRC`|46}iE^teroH>b zcV7w*4=>4Hb7kE?|C!W=QwwjNNxjwI|8`aMj&~2vEK2!i?Poh0Pu)IpV|Stb)R2`??)z8i8=0TSV7b@VKlXGKh6yp@@hIUyltkDk5GDv?g|W$^ z_)pHBJ@CP_Ye0mE>HKQWryvnapF#??KafXN+wI3rz5h|yKX!Lsnw|dFIq55pm#wB+ z3}1^Mn#C=gH^1`od#4k>1{czAD&jCYKlk^~Th?k8yt%DwV`<^ewo0Tj`$0O4aol?TfMLr}Ks?;fZPM;*y0ABq_1jge1{SmL|9=zn7?` zDZkqr777yk1d07|i6gOTZGyD;pAt-x1Xcznj7FR!z!xNkuara6CRa+-(@`f!vi6-A zz8ifM#C*}4@ma-DP#}^~DXI>zj$>o@UupyRV=Wh7zP%Upo*Djj`L;cv{lSWprQh!X z2iEPMp8aSWIJvQ4x4xqd#Iq{Secc97mhoG9 zv9tv=Z2mSJf9xet)bq&Jo%WZ&RqdQBO8g+up6~8Ex?(>d=kCATvUMML{+(pv#P!3V zYgW@hOVlBd`N7#gc3}s=!G!spOAoaI&nxM2r*k`K{SZqY$bJocZ)NkItl0wm#dBvz zE&L4-*R=hi{n-|9bIEjr9@`DdzWSuGGHyHg)n1*YFZ*Tix%AC>1w*aCn$WO${a`DY z?ze|N9B2j2m;O|A`c5m@{#JDB(nnta+y2?I_6yMqp!2z1v(GpE8myr9iaTF@4zS%% zeA&Hz4Y>2--{${l4UUm2iXSsaH8@%N|Ea;vvwo<-89u*bsuDaBpSEvCT0g46$*_MU zn5k+oDOZV!VtrH%%@RTZCVb%W=t*@Sk=};{gT0WHoFw@fJ0|VtBPQ|KOc-BUeB$Am zk6>7mL=@{GI0xYqbqgBB4CkOjRg~KmU^$<7aq5ajaUGPwnb=EkPFgHU6>|hjLjf0X zx!}s@C%k^Rl=5@82Tm2z$bv=-SyKhnL_AjU?&(p-6a7>(w98R7Q5FGK zUcwtjoO!~8*Xs@0)vT@BqPnrYIKIpQsbh+aKF|M@l5t_V_hy%XRIb!t>3l`?$aq{ zq%Mg3jK)(^?I>^sd7Z`}BUu;pZydubBQ0vBMPXD@I)oc%NV#F9&0Hdl#3OS#bXv%X zu?EEo<93m3Nxe-6c|n*o29qh@>Mzw8RQF+TK>N)KA9D|v#^AS^wE=im*lPB;tO{d2 z#nmy0lSwiBhrN_e3v;4v7?0V;hU%@Ba(RhHkK%^h%Yw8?C8aHD7oQ{6<|E}=X-RE4 ze;#QzNv&pMjYF4zFIUyef+)U#)hvtHpuA{RQi|2`e2@x*GQx??V>5^9Eb_5j@HwuV zDz5(-*3mklSQCsv6&}rvk1!j;Rtv<**QHts=V4Mo@i9ACQ<##w>PZIWO&=;@vO-0* zID_KWb81+_uuf$vxy@o|Ak3-&@1s^9DAr^(=s78B71UGsGw8uLRbDY_Rk%>&AzsKg z73{CEQHmz8{_p1o$BVqsG6!n)sA-p@euVv9fcg`Ta@3@ek)H?k@MPXKKaI$dt$M0@ zLTcTpKltVc#QoG$m?+glcvl8!e+K38WbhYO>ga`(8o8>HB*_>CKiI?Y-|{l}L+0Nq C^KhX6 literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.1.0/lm1b_transformer_2048/traj.parquet.gzip b/benchmarking/results/0.1.0/lm1b_transformer_2048/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..2bef245ae503b181d37e073a299ac67dd75c8dcd GIT binary patch literal 3102 zcmcgv3vd(H63?x9t9r7a|2)_Y3nbHEKWFQl;38|Z=1_si07&0y9m$nd>68hdsCN_3D z)0u=f((ZfrzI)%f=id8fb^+nm;WGTszwT?_f2Hj0 zo#D@T?W+mREoI$2N5yqz*R6M#PU#IV0T*X=o%qp1|G4k)vJKb2p4fl?#Z?Uh;o}># z3$Oii`kMW#&w6%!RrH#pG<$hUQ|{2~T*L3K-RoG{b>m;l2gR#rnttPWqlo|b#P)!8 z_DR>o->0{fX$}r7Iy!yLzN$yg&)Yo#`|SENr>;QoIEJq)!hc(&!TV)+DPD{hmnlj@ zp^$p8^8!$m7z~DAQv5j}$9_D96xx5o0TXI!+I#4OkB;s5m4CvFUW+H-PN+u*)6()O}n*V`;_jR*WLtS**WXPpX>ntnK5PJCG9rw z<+GojX?XK_(08P6eNVg#n9g1P>42;gbSSDmH9pi0_CL7w$gfVX1?2`ueZ$#qF!Soc zwkMlj0(~p{Y#Yw31vdxFytCr#!LhZ2a~79(18wg+y?Yu&7% zqyrcZe17HCoh!kGi{TkFZ#)Mg%f6uZB$k6irF%U!KVJ^+KS`-JZg>IA?0x0Ym#aI$ z52|Ku{+ZYT@TL16>7hD+%9Y6W?Cb!>whx|MxvT^1Tl3*0!_^L8e}7k%y1D~|&YUlP zYSIdDfL!s`de;i@x@kh@TMJ}}1VzaZTvQ;VrFWq~c1``JK&B>=!LjONpjiFoz3Rgg zV1bOr_$|oCDiGy7Bc>=$FcDUua2bYAdib7EMVXi0fdqqvsw`7#?qWHs?;bJoEt6q< z>JoY1##4xMUl&eHa zV4*-v@jP55l2kkims)8ajlrown_sYKp=)0XHF=MXl6$t`c%+{Y$MV6(k+M9n#$+~z z4pgN?j)?~I7*awkds`8u(H(=Z32c%IQb`JKZ&R@%+|G$%WV?8gb#}F?eHfULD4^wt z+X^`w0coraci;>0Q7SpNQsQU?zF~@C01<)h8i=zHG^BEPKa55&TK^pYkg^kJDR@Oo zr12abr{Y<}Su9J%tQ|c?U6$Vv1rkG5)-3{Ky z^WCTDFPVczE?h$pgbV)Bs3(X@!W<^71Q8}IVM%5-kI<))u=ci|BrN$gd`eyU+o)(;~0UP86VY1jgo?3sh!D2Vvfjx)zdkqQhHZF@j8Sq+D@T{!g8{_>3cPk^d zaEOypG5n9cjLiyjV$BW591t?CexFP4w2&xn$h|JjdQ4i@XXd3G34sKyw`!fuF6lhl z>(TnX?nuy9dplR5g=rLD%J0?XZBSmUCM_daB|d0_-I(Vj5DR!SEk6BFE~Ff{j1|}S zhP6;9jNpMWn6ic3Bq*;v>-RyNQeB#jaGs?Nj1+TF@MIZ1-%4{RZ)C>FRc7Wl6C8@0 z6wR=PVV&ws`hd@#qr9e+-9h)lf^Krd^Es5%zZ->Q6Xas7dpqwg&3q$&zbnnwKM6^H}wS)V6{@ x_?8C5{lpWPqC7^$pH8vK*-R`pTe`5y3l~y({;E=H$}kN6u<7svU;+Fx_%D5)9peB1 literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.1.0/mfh3/traj.parquet.gzip b/benchmarking/results/0.1.0/mfh3/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..9a4126491781f2df89057af2ff4499dc70918633 GIT binary patch literal 3191 zcmcgvd2Ab18lNQ2(U7E}bd1BMG%_?$a^NHG)}_@jc525aafp-n>e6&(JU)_{vGEbx zNrO1m21*M8RRw}52*Q%36@P52-K8iakP#x?H7kn^gq$>+j41GQN8utD_8%2 z_?0{27gGb6xYuBK3D;(cw&$*Tc>l}UV$Ch3CytBRqUr>GU%xU(ynlL&t6wP-S;r<@ zOOs42bUdP2)hZLGmQ1`po}Vi|n&)mGA#z2}cSF{bleyxXZtZ;$H^7K*B4|0>Z_MdDjGRZXopSS0?hZT0Rw<;7y|ZHKnA z9~X-O=Tke1zb_X5k$TZvr7RKoqCHDqTvsA~`1J$R=OBL^!w0kQv8-x*T!xq8d3avA zqF{y$MZt`@9J_fDDfrK!u@!su#~cui%d&FwE4HiiR(~-NeMg`F{F6`G<%Kz2H6sc} zQG8=b?pd;c+7Wq2e`cWanq|v#-v6lg>>IV$E>q;_{re7lPJ^vKU9}(C~r}(qa z949)9{MX6HJ|srIE!+Lw?Qav|!5hZzX&xm8x2}8an+>DH(ob9Bwe%=)@&Ld5>D42| zz_#mmO$l!k_f@UjdDGy##9#GC4xGY{5gni1dn?g)gm~ugtN#h?I!d@V{cyM~`zZ0W zZpv2Ge3W>>ci~UFo*f~I$DTN_|KRIH!?gP^17rJ$$#!vQbN@b~XyxSNdr$w3kSiw6 z_w~O2=c2ekUv!f+5aJvMt7wdh z#9*nC=Akf5wW{=jMGJM`U7$%v?2y8k_Ia0_QOI13-!MP0O@ohECsid>QBUB`XI18t! zNF0h;%6 zmSDnf;dKGp*^X@DUS~4eXe5J-)*fJl7LbvN%(|N~TGm+Vn-Wb%@DXe(kBdb5q|c#> zT8!3CT9Z`MPMr_!;c*2xCI$AU7~okL-@|hpZMOSp-W2n+f}L5Xrp*ZyCzFrO=WXB; zlFn#V(>w?9?K61Qw9BA#Y3(}3jBt}dT4TN2o1=MKx5o^; zAWTN9!?DpFYc^W-mtpTg_D*dyIE%|@jd`4=IP8^jJHwn?Ywu=+t{~!MK@PuS%a~1Y zCZ?Xbm_2;5+wE%6*o+pGH*l{`unxV7bs0G6jCfC!)|gbb&K7Au+UZcao%Vp&ym9ud ze60zTU)=3fr+v`5nDi=!H%WZZTB|P2i6`uFCc9jknX{12xNEVz{xGbWI$?MRT(Q&A9f9VS=o;l|L literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.1.0/mfh6/traj.parquet.gzip b/benchmarking/results/0.1.0/mfh6/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..e619d0bfe53d83eee8e18f26373f8e183ed68b61 GIT binary patch literal 3169 zcmcgv3vd(F8eW=Mqk^rLEotoxH9`k%sd+TD^%j;*+JudL(9q`PVA{rU3b$%dIr_B>eN0}D)}YAs2(s{D1tJaEoCzf7{F)C>RUf{xUo83Y zwpu(nBvN0tz7QPvN>rTd`*FeAQE`0hz)33qsA%iW&AIn4$HcxoZ(d>DF_9c5Zt6TZ zCYp|p-xS&~F1GA?ck@qAj*F3P2XFrSvG2r>6W=~vIB-(@`JUmb9~S>pTz`LQ*Vx*B ziQ3O&E9kSQ#nUgh1-i|@iO5sR#PUsN#Vniiqrx+1#dnXNOpV@hUd(;Gbk*1vB>Btu zE!{igbCQ7@H|~_xXC?oZb^e5BI4fxwJapHZTv@WKzi2{+%aTt-?)&#fmn?~%d#`6( zk1V-?bl@?WJbBvs^oJ%vo}7F3y7EJB%9AITbYDLK@<$Q0cMkf=oH8^eM|06^G`mQt zm@I};F=?KUESW_L{QoE;?OD6Ff8f*Id)^)z2Lr$fIS*hOuiKEFgTz z&)G%j)dhMaJGVfY!!ab^CWOfVLkq!h0+r{dzjYW>+|d8VSL;5*_P@2;-fpkni#<=<%%o5-ZZZ^ZRb& zL9B4c6#f#Z{KnVJN2vW$Up8mh-Ezy z-MpM0#@<=<3?chsKX#PVSFDZ=VXva~<5!&6i|u=D@Jyh85W8bX)!}R8pJNO9>K9y+ zAd{OY6_e$F1eqzl3kEm`hzOzf!4rE}a3X{B-QI!>|c#>m)fRC~)SVaUfEP$n2ng>H*s#B*I z3|we>)&Na9Vw)76$poGr$Kz*MciVJX8d#f<2*C|iQQl7n-DwO_E|j>S2vYElf!H`k zAl;-u0`o2v!vk|a?}fgtEvBVas-7uerlSC!({3vmY#OB53@*awVS}VlSs~SE8onut zDF9&sd&&ULOwyo~Q~O~if|>gN0RZWA!VC$nXsKwdp9+)V1gu#oL59P@7zEP6gd_eS z52c#Qa!t8f1(2&U+fPwy%hlyNRS%+^i(9Qt_S@6lr%Wksg`?A3i{p4R_``7rj#uCY zFK)tdFK+ZoGJ|27J_dz#7xV;fOs~OHiX!O=9FO6^54@!y;4L|UrxW}QF{fSM?sPN& zVLR|Q+(vM0)Md6+IJAu&)JmH`@eTeazky;BmM{ryi9pax@D?A%xmm&=^AeoiN7-AU zP1J3VN9v8ZpVnD@G~Wzlcr3H-pp8T&QQHt}FajUGQSEZzP#^c$)DgmH2~gU&hO+BD za1WQm$I=O4ZxR5Wnekm5%Ti{mhvH0vYc;Sl>ot@)2IFM%Y4o^PvN1_#v}h=f1@Wzu zcr}#6pm*r3dfE(e<91ftA8VQ&;sJ$k}*s9fx!@x>s#JM7r)}(F>G)wzYcAMI1xBA@Xx(jFJSsjDs-JC5!YuOIU56_K=H~K5$^#R-u^Cox$;4t8+rdsQASUO32bySKG zAfgS%icW%8!&ZSkg}11J5d;C1BIG z!hQt(y%P2(7|pOr)1$5y=)ulXXla_3Ltn#ee1d9oCLVZ81K?h^3{e(`$nd%-BP^vu fp{3G=Rh+qyiqltBL0J)kfFF_vz9CkDkBk2RYKcud literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.1.0/nasbench201/traj.parquet.gzip b/benchmarking/results/0.1.0/nasbench201/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..2bce36217a7f2e83795fb7d2b296dfe0ae08882d GIT binary patch literal 3189 zcmcgve{d639^aN&dKKD^=XMeg@0u+X|42)cHk7pG_H9BF5}H6m$uB(1?q-v2ySqvA zqe)ufdWUxh^5aku<(ECYxjW`gd)#0V{{XQgBY1R%DMBmWpo8|jIZ^Sjs0e!RZBlG$ zamE?tO|tvm_t*P;Kkxf}GrNLv>2L-9&J293q7kphv3oG=XPfdddCbVUj1_%-FxOo2 z`@?4N*Q0}D4?I{8K3p;X;2-X<2mjr5NO-@y4s6-!*`S(P2M%6%(tiBSTF^B#FgiA9 z1hth%wiR8g28S-@zg)Pd8a&zW_~hsN=7HKj9>c%zka^~D+7Zy z{g&-l2~a1E-n0J$0zCT0Yi{p)0vs586W?qnfU|U7=MD=2V(*-d{r>A$Q!S3rNdoQKcU}WRr z^1Z9oU|Dfr&x=3}3bdMEep#yq-6t=pj#Q|@!w>cRtqNU!hMM)N(oHuq?-UE;c$X1G!LhM9Bl0+j*FD^@9sM2?nP;!(PdW8>jy8dsEzC`$I{mGsOk zKcpzn|1LSGG_W)3}29wZ!eXa!be$ZlLm}EGj#I$^{XT|dtYCu<2rf3OBcSN}J|!>a?SI?++85-C56rPsk6k0z%$;9;Zf_1aTC7}m@aPSa{rqoi|5xvk zA6;4B*G7$y^$&ik8Y?|Z>gl4z>lJ6n+0^Sk$N4wNO;>-j^?vLOS%0G;xOnpjd3osF z&@#s`S$F*Sv4IW4`h0ZO?C+KR|Z1 zw7+U8dzCCW-O+p7QW+;hnLi#DmC97<9W9j$Mcp$qD2l0q=X>ARV+?N z<8Y~!=ivyPR%tT}4lQ(Re*ra_h%It>E*p4qoFLB$ftJa#46v4XI)XMN5)#jb0~rhn zF_ONi2s7xmLD)ntP6y~X4b8g=PJ-sV6hgkMnk^NJh_w^IOhy4cC*4~p*d$2P8Qg*| zD1_H*f~orN0f2luQI3X}wM?48Gf_I4Mw~^` zbTk@HA|RbyG{%P|B-Jgf)KzK;h@8l7KT%n!udF84V#-;R%eCB7o9RB~Nd5vex7K#c{=8!BinI`FzNZ4>wZ==kaHGIlZWW9}|k`(lVZ#f8j%TDm= zgMU-f=P|VVybdUAhyJD-n$?Uq5HQN^2mN=3QGxU+1TECY<`c%-Z zjoHlhHb$S)F&;w@?cw*f3TztMTjCJU)cAf;5E!c~$cUD>e6(byFQz(u-X^`%Y(sfN?sZAdZPapJlOUgw=#Mdai`LoJB=5&~+*+T<)f%ui z+&rt`$|TA!;q&M+KImL5MlCB^WImWGyCK7gKjQbK+P(VmvyjiYeY(7UFs#`+VMRC0 z!I;jTO^o)~(>^c6Dc7aR0Ox6@ij{K?i0(A27djapotrJ?~?u zM!nx_@1i}%gdC%-A>rVwwKhqMS_SnK)r=l;Q!R0zR)q@_m6C;WQ^EckAIs4M*8i>C zP*h_SdM<)m8*18Bs2^c}FGc+cM-yt&%xG8w^>Al7v^>qok*{gGdO~VzHXeM-1L9u1 r7*m!;=x9fRi&wCbNQHc1m1Zxb(#%z*(#*jy_``k-zbjV2503u>N53p2 literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.1.0/surrogate/traj.parquet.gzip b/benchmarking/results/0.1.0/surrogate/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..e32746905215b8d8907182612d6c81b230aec136 GIT binary patch literal 3133 zcmcgv4Qv!u9v|B6x+fsD-jrQzq-)o&-;kkD#Inr-?|=|C`-nON)t# z`Z6=`z5mzy{l8u^Ybl?N)RAMA65Wr-#=AApPW9r=N$M=667Xw@2m!LTt`-udQx9!G)%<6Xqb?$C6>%U1@%eM zL&U)!DuFbvn^iTt{z035(F5E0W37fo5BNOnoEGP(j2Epxb5F+d{c6;7O3HlrID-z( zww(3tV9^uAxudTdSyZuQXl!nGJ6e5m^oV?tMqiDs+r7=;LSpw5XRZkCsPVZ=?^Q4q zntv%gbnv_zef`Z1-_@LOA>=<^?J_e+KD_z;fh9DmdT+=7-f5yy;RQ>6WHyb&ql1e- ztESNr@0}0+|E~->wB%Sa{Q`p$9rg{+pLU@IuXcxyf7p%$`@!EjV|2VzlH_4M;fL}sOIlvN!4e4q!* zq$7b`at%#MLbI=5P`iLeWy|}FK(ou)_Ks`^4LYjV8V*vJpX>8mlPv8S;O#jZA8_>H zGs3}sS;&JtlL9=`?S~av=H0$NUSU$aWfDTUqAL0{FZsen+dxiE*KN-@%vq&R446e zy$1U*mJc*1rK`ATPbwT>(r{Kj6o|{AW?x272PGVnX+Hdntl(xKC(Q6<%wZ*$2?e|C zUYf;zL+ou?(cfwngHBn?krGbwcE;)*=+e&P1Ac2L;OmdLT~~9}w=RqQONRosk`B%b z(`pqIMvDjE>~WN05{`!hxxt`)A{SbY2WRr@H^W-46G8EV53TufZjxNUlMe*}r&gCv z2dwjav!MALQT%zqE@yZN=Z(#IrIy^90ZPJtv#Jwn80ys4Y7YlJ!(5;>t=SlGr8}e+ zE2~;@tKgoZy75PAs`d`ts<3fVIgO|_74+A{=)?=C|7&AIQEL*QxdON>ZrUE)kI>(% zaDT$+!cAHlu6E$V$(m_xS)yZI=S=m4+3vDEn6&}8@4AaH*2lTTP+Cka6XNk@+J#kL YzL4rmSCy%ujv(M6Zh`-UweaKcBVq_0d;kCd literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.1.0/tab_lr/traj.parquet.gzip b/benchmarking/results/0.1.0/tab_lr/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..3f24222f6d8d79450191798a8589923d011b456b GIT binary patch literal 3051 zcmcgudu$VR9KW${Hbay+Z)tVGS;9o@W*;j$=JLz6TTAO!SO>kf3ghm2ZEwB1miGD@ z&IlSKz7o(F14w)%O5*DeAx<%hXeKT`S_z5<7evH2@qtDqg5Te@!@V>yQGaRge!uVQ z_xXN5zwa-%lJc2J4f)+1a%Xi9*-8=@5yWM8X$f^ySB(&^v;Ku=byqDogvMXmmiM>4 zhdP^rpO00)hdg_-_x$=|3EA)TTYA=(P|Zz04jv1Z&<}g}2(``a%ap@IWC@ub+<&UOzJwk)<=ND!EuoHqr6269Dxotg4_;{dy@>8T zeGB*Eu_8KDq~{GEDx#qd2Rr^w5uI5ue6Vh`h#uP9pMbY*u{Zn_GVbIo(T7vH`T!$V%dC9>WPy0~t-jANzl3j(i z@IO8A>|Qte)_S~t?Fk-T`Q=^5f9Yiq9W`d(+_nb2@Z`%Vdg&T;v~N$x`0D|*`1#QN z7hSUwIj;!roo8H*?rbi<<3Hz{p`;_Te-M^8PAvWGc%O$?3Ec=9uM~Qt@hC+wjfY ziwQz+)YT>#In1PWZ)!Fe1Uby-2e^cok>s>tS2sq;h! z8BD_$5fhBEv`wwi6nv8ulK|oZ4jTbyC21(-Nu?4w3?$2^(n3PUQuESQbF0Y!$PJb4Co5Ymt!;*3LU%sp^R1wlmAg-OSbH@d zL(wjZqWa*E$MqD|M%km3lcJ)OBdW^m_9^-t7IvT0yD3L`4No9pte|s)S+v34MF9_q{Z@Xtn* zRtk%5As2N^wirvV#x|KSolo~TD1o#3Vw~IuGAdVDXE}#^sk^H;*XsZu*=q^~D6G#% z{HC_2gH~Ublj8!e$&4KS#+GwA zffMJ@WXvHcpA823EMA8j=MA+t=Xig+i4WLCl_M#XW-U&Wcd$?0kEQ*lAnl8VUESxn ziuC7jewiR`F8g3!ob4t~a;o)UtsYysCZS}A&c_3m2`*HQ6Hf9&4(){s zH))3U6oLW3sh&%_4dw;b%BeYrC4Yglh*?&^yt(sUp)KDtNC`M^w`_+q4CmC`ZV3fE zLk!)XQDY2tXL^M;lUp|7R>3_*t-=qrsk(Y`tHQ!gqq__Au(KLkotEX;*FM{M!fIC~9=z27xH~%uT~m@t kt;M1& literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.1.0/tab_nn/traj.parquet.gzip b/benchmarking/results/0.1.0/tab_nn/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..5d2ac63dc5af13802185e675cb841e9a0c21e9d0 GIT binary patch literal 3313 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 WsjEs|oR1*jhdcm2edd9`1%CrrBl2(n literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.1.0/translatewmt_xformer_64/traj.parquet.gzip b/benchmarking/results/0.1.0/translatewmt_xformer_64/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..c27c36507ea90a85e7ce0b6c0f35c44b3fef5e59 GIT binary patch literal 3274 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 Us#0k35d{2@C%_l@EbwXm4+rVwg8%>k literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.1.1/counting_ones/traj.parquet.gzip b/benchmarking/results/0.1.1/counting_ones/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..cda89cd7f618af8197abba9aa965b62fb10563c8 GIT binary patch literal 3301 zcmc&%4Nx0Z9$zp(fP-?y#iXSLb0eiTU=j!lgYIntNt1>kQSxOi-Q6T4u-U|XkOYdo zs};4qcG~)V-c3EN+B*F}y&Lap^|g2B6>qqX_0DN+D}`hnEUibY^uw#P_ud976za^) zsP`t>eeeJEe*fS5|KH5sOPb`k0Phvx0|EoC!Lhj*R+IFebzV#%AVaxJacdm>~32ykckh0M-A_k&o>PLr7LZG)H4LWSVbsT>>UDc<&Lgh z_xTWbO1+*PzB~jp4}M&;FFy_p_V>3n8{**e%RA0})DQ=od51VqXB^DQ>WG7we$#7$ zSR81!uEyuX_wMIEd^Wu^4z4_T%V≺-I)R>)(Cr;^2(rFTFWCf zBirANgT>jsl1D)t2>T17OZLY>d5(Mi$&cgU=1&KYY&a1IxA(oisc0|`at6!qTsIO2 z4{zD%T$rB#S5H3u`qf(!pybqP@YsR`7&EP`T6J3j)Je1Nc}wrII?84dr$MAd+&km`+u|jfS|Gnd;4GS zeBgi^mt4vy#IwXoEIm&wn&Wj+TuUfGwKkfZM|v7En(<--qT{rn~6Z__sK`I>n1g+ceSzENVWVtnD5pN$jCYl=?% zB0NS^eX}`xTlG2O%8J#6hMF&lEmy~uue|93F>mjh9<$^k@nPnnQRd7!BK-7%+Qs_Q zgk;NmR~GwE6YCYyH?}_Z1@ZC_)?pp_ggBM{XYc41A81ZE0KkEMT`(uR5 zHvIf2x?{vEad2Ue?KttPhq(dO+oQx*S#OywCoyh`vZvF3H%DHs=zt_Qf?reSbPn$QO#co*Ot%Y&!U|`}hlE z#3R0QPb{~O5s6(roB#gL^F)!pcf}*!;=mSBQ#KSq9 z(H6$XhP_-+Qd9gum!uua;7k&rxK^h`S}frxuM-NmFw4SKFhm7Ha4F;GK0lmR$dU^u zTFAQ}gqmc;7CyXlBJlJ$E{~ISv`m*JfwhEUezc(^%y}4}BZ(pG^~bI$d^EbH5H_zf zL^-Gs1$&uRA^3N{VWYzEiibFn@uR8`4yG!5Sr z#T0;uz-}qTIgvD^a%w-!L@-nTJpkZOC*Y*uCC`(_dguTZh#}7WF)9%7MG%kjoCiq8V8A(=> zs#a1%lC7k=m6xeh)ASJ}tiPt$k?Q0cKKUrTUPqD<68gb69|XR6C-}6%zbaz0DBEq; z1}JQY{;E55UN&sknk%geV+Xy|9HO}fPoqagJ7f9)1#NY0zE&Nlchg=6tMf!!bzY^L zwlpJ~u)`7!8q}nRsW7=2t_jM>$i%vXQR}L7bq$dQHT2<(GP{*T`l!n+3+mMRHd+yt z(-x%*?P0gNStbVUH6e&+W_-JsWofO+MSC?N`+d+(tCZ8)2#Pb2kJ05=%0_sdS}&)) zER1iO#4D$*Dy6l;q-3-RH|e1j`iJZmqb!+^oONh5kQ0*|w?x~mipjI!&$xZIynZmO6LrFP%`k`R*u>cc zDT_X4vqGGFU8qY+JD{a?=wNg4vs z^Dd~>p{8v{{RsPeDe6x+noyG_M|~aC!=3ri{4^;?zN*>k38}Rc@!*>u5cl18W1?a| m6?iD@43#l{e;I#a6;E79#mTEmEG@(^_`~wycg(%;1LwbeGM0b< literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.1.1/imagenet_resnet_512/traj.parquet.gzip b/benchmarking/results/0.1.1/imagenet_resnet_512/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..13f6fd1dbbc7969aa3adeea3fb3907286fc64e01 GIT binary patch literal 3181 zcmcgv3s4)^6<)B26H``*3p-goY~_r8%f5)K`ngYV42-_5SUO*pm;!&W>g#l(?qC@syKIXwPK zd3Lt>iHn!lP7MtW^{g)JVEVher+%Bb(0tWn2+nM{|MT3hfBu&<7kaiHw|=&&dS-Oy z!QzU~vg-|xjP{pDhgP4TxwX2tkQZzl1Vi$C~1e&|#FWDjxWaC}cs#V@=Q2X8N!-0(-&i7WSfXZP}o z>7sA{C~@LGY}?t9Ez&Fu!!i7D7Je>EgOBFmOK}MHD@wCvKbg zdG4V>$qy=a?%$z(sk-sQ$r1NI**(XOeYBo53@eMDe*KYesD?LOY9GIL>FI-V9D8f* z>XZkbq#lwe@mz%wlPp!p^LaldG{hoQlb?x&A}KsaHku>*t3>vOM1471E&XqTP-tN0 zG5i+9#Zvf!q==R9M$W=Y$dYFLduEV*bC{JK1uK7SpSn%)8laBGUiz2hHE{A(y6Pf0 z0=6dhbS?Y-Auv|4eM`@=1E5XVx2CUeKbY>{e|O6V`$65v#H~L()dw{1R2)oI{uErE z>0D0sc7uzjYCbxr?*dbkW|w=q3j}*7|NfJ{ZZMWQ*C{h}g9+RAOC!o%K!(>Y2}!;S z{$N|JZ0ULo{AqBEIDhY6P`_$ji*?mLaN^+e=XdOW5q#n~vVuB(01PhAKYr=m1K>#D zlg`1FFM#-OyhUg49RTmQjc;7BvKKtoTimIp_kiJbAAawZ$rpivS^qWjFMkH|cJz|sXwdee=lGFf55#4RvWYwI#xR9OE(ueDkBZ9Q$!S-yg3q69U_xA+7ow{51zXxx z%}@qsst6?n{VGj?N}zZ@6bNySgR5waip1bjE6zh)YsR3wEs3#X_^B$PlvTK$nI8xoLIS6ZYi(yAbGRp$6P zN_~;G$e`-L6i9FsS-*PuU_A+)Flvf}~(;qP1Ks9jbPV$-2~Dn15Ry}G~1eJeNsoei~)3p*WJi5DY)MfgLoGD z_wpP^TO9$Kx5T`g;6AHSM_UufPbMCFz*o&BM4j2Dqj?Vccg*6|(QcE`ZEzSFE5c2% zwBFX@b=kG)cyyf4YJr?M8d0n;ZjR>dtzIkS1z|GVoX#pwtj=sJy8(L}+V3(%+3UE> zwwTvtiNmu}9#@$27#yvP(99xE7R2xsdl{<*=ETxA7qgd7wtC$4db^oKaYOEP3BR*U z>vx+tF-N>NO6x6JdsDr59_?~!JuXM1&sudoSAk6l6kpuq(xq)sUMyu=hPQ}(&<2|^ z&51YcbtRkK`q^BFIc{DouKyd>Or0>i6UI=M%H$?Wxojzq8{!n}(qx456m4L{n0>r6 z#ptlb-L^K$RTdY0G?DRIb4eR1Xi=-6o+2JX z53#8#Yf-Dhg^5UtLb0h}f6b0MG=cShBR2$56M>fNpq4~UyBYN(?C)ySpK#QpCQXm3 zN~nh?i>}3KT8?Z@i`5fSTQmOPTO1H~c{wI82vd=kxIb3Ngu{j6g;kKbkP6aQl|rM$ QF!;glf!ao}S0kG0W`~Uy| literal 0 HcmV?d00001 diff --git a/benchmarking/results/0.1.1/lm1b_transformer_2048/traj.parquet.gzip b/benchmarking/results/0.1.1/lm1b_transformer_2048/traj.parquet.gzip new file mode 100644 index 0000000000000000000000000000000000000000..469b8651fcb54c6e683cb581567f06868b018815 GIT binary patch literal 3222 zcmc&%4{Q_H89&Fy@tQzWh&>yk;&~!4&7}Sl(}V@y&Q5G>5{J0NXS;;-?tF1BxjP&G ziS0z0+5`eEb<3b)1;pQ>v~(Lyp{0UW3Mp$R1hgg9Ml@hZ9SvQ_)D|IVEB@@gvqKY- zPMWl}Pxjq=-}k=n{l4G#eNVa-xW}lJDF*rf~ z-<|c!{3^+|!S{~N(trM!CYg%xeOBNNoxD7KbneTCBs<_y-F}2We}rE)XF-Xy>0El(m9+0+>7|?9m-2gxwJUy- zr>ko_>ZIT)rGJ%|C?C*RFnN(i{UFbfLUTMywlQ=(98D`_su7v$g?!bpy!2CPsp7wh zNu!4~fGP73HAV0RITCB)Z?efXAyG@N+!XF2WJP{BNgxL1!b969=0^T2#DK?Id7fV39dc=M*nR2KG0Y6oaFM)_kfp*RsC;X z+XM3P;oB>o*aL2DEx7I-+6nkOdHeUCdJ$~*($kj~Z2|u}@rQk1J-7wzZq@(x?L!-Y z>VWE}jjpwz;MUd6>g5^m>6;e}D>pq0c6@ko^@hS{!P07l=F98PfK3(W2hP0P2i9M> z`E*b7da%wY|HgHo2ka`CvpjyV7Yx2WeeSL3S`ZX&-Z=ixbs*!tJ9?;aBRDv#y|my& z7vP4P+3mmU1es%(;=`J?Ao=Cl7qs=gVCIsK=kKrT1)04&Rt2{8fxPRo505f^;Jt>` zneQyIG1AnEF}JA1CQEC!^7ECRV z(X9+mDrK1Rfq8k8$~r5(4+#cKT~ngbe~%4O`u!23dU*znuT-IWXGSrGY4mD&gcO2g zOnp+;rDKI4lWL~JT!I&3y2aYZyL9bP24}h`DTElEUaJ#Go`C`(!EtaEi<8kfTpGlA zI0C0;Lw3QSg|WK{YO)@iMfXh3@kBo@EW-txC(5$Gn&asRI#8DoSUMccVo30j^gTtG zLbnvc#xrp;NXALHy-UXka62o6kZt2i`@#xc_c$;UQ9#QH_Z@OJ0n$_(?!(u@g~|A$ za*?A6_{J&50Yn6L>mklu(2&aU{V*B9Wc~jDfS8>qL&8g5B#mRKC>c#7&LU|t8Vx5A zkPapqW5WWH8W)ur%M3b*T$ek3oYGWgC^PH2F?AvC@zfKGv)!j2Q9Oc1XQ&#-@do%u zV>ynO8y))H`uJi9{=;6{VTU=f zcaFy#;8PubUxUeQbE3E*_r@gStu!z`D<|fN55y>w-QaF(5YM9sufb1vT7!<7d%0?P zEQ#Vv_z7dy2Ia+GX`p$#$OmP1S+bl2A^{@R?lX<$Ld^u;%K7=Dje6%5*L_ zF_Lhl{XU3OtV^o}&eN2c7GnoJDav1uLv!Sf|EHQ^4oy zB#Fv|=%dYue2pfe#)md-DrD%Y~+^>KlHRs#V*uFpGCyI2kaBaoXQd3S{~FDE*m1s z_njTPwS9=VLSbG%vNKndPwyJt){`sV*!{e4)glvxofFs0ZI_AfUUZFGHY`sxlr=xo ziRX!XuQzz#`YliV=A84yjJM^YY1?pqLfKGp-`-CWMTZrl>CxjuM_(EyK2joTn$sgh zy<*J%?GNUQUE@A~^0|rmV)$a)SF2a#i)W^d-}G5izDPYZ$??>>eDV6K4I4W^ekg*j z%t2dnG-#I$9f`_Od7)C#o2*jNYhHj%7(@#EZ({q}8h z%ZuM)k&^pvoSE@GMm+QD?qzFFVVCFK*Zg2>C+3K7%g23r4DvRVsSjAn^mGcaiv)@^2BJAB+3%!29Xp z#n*-c;s;{81LDDmS4}e_N_mW~V>l9(A?UF2Lk1kSjPy1n2snVMLY3x!Jf_9}UttQG zhlBiz6$Lv++>anCjZz*Zc|RFb9+E9qhj>4es-+`rg5zWAsYQ=3R)>KM%+vzO2N|`d zNX?TR0|b16Wx*;ICxtjzYNdH33Z@2aX2HOPZpi|m$waJ`!ZX>x{o@2e4C}A$FUtU{ zji;k`bygMK^j){|gGEM^X#cGBJ<{>@^eQV}hN~Wln^a0Z! z1@P>53&CLhAPr`48@>P=A>-v`QjPlI>!auc5EgKW2H?yl4NBR!9|j^AsQ(WDNbCp< z39eqLXl#fQNFfbt7EP0a5J^HH4U7;AMR+LHm6z&DwQ7J|o!!2VQeUbqHK>;$$`QEJ zImbOU(|yV=#UwZygOxarJHQu?**IQ?n}WCn$Ah>zD9KEwe)=R7&b+B7aC2r2o>CM^ zPvCeG2Y%o!1p#l#2|T^vYf5_E#<15@4TNFfZ<DIUy6p zq-_ETY>E0vkl<}~6z6A&P%=nx#yZMf18ow1cPdt8#zVBhSx55@Aj6Z{bpvfC%8APA zWVIRi@OG`wgF}5P;L^qjv#p-er*xFt7=U~DJasIc2KJUXz%wwuk7HTN>I_hvCGMLC z?5su|Wlh33*?jB)|135s>C84A#jzm1vlp+9@|cVsgVRV`A#OZG>1~UAZo4*xaU1qVXzw<}LN{@lZE>I5k^p<9z3wRM zH8>k+J{*EI8IZ$2*wR)D;Kb6{7qgE`HF!M^z1>W}yg}`CNyb&7WjrQU;)wIbD7{5% zuXjlMQEr#k>vq=ptut?O6_}TV`6aw=UB(CUVyV#5oJFb!Ww04DHStA#?o`;L@8v?` zI6PQhcMWUyoY0&L;{hTXJ>)8e>1bHJ;_E1@> zsvZx)yb0a}&M-Kqx(dC|V{0Vc6$vRuJ&~w3mo*Z+7PboPDSSSBNKI8)4Of zojMQgtU9F~QrDgxb**RWoZrX#0xDoTs&%d~K_sYcJ)%&$T9~u$z8A0{*mHKy*0X!^ z-o5w#b$|b_oAZ_FFumAd& z`&LG%te5M#qUJ{GnDBUd^Jk~1FE-bADnC0*9ghF@7Z;~>PG$x{7Ye?iwC!imXShR@CRtROFlUH5e7S#K z`|uFunDa#IlYbbd)~|hU(0S`FC5rO4{A=hgweE0gk9EsEYWoUq)Pvurwq?(1*0kNH zde59{{Y1rzRNn7haIbOD%PAk=rM2 z4R5mJBTMdYZoDmsk7#E7I{im$;v+XdFu335vm=Wy9M{(tu_G7%YD=g&#Eu;3PwLBI zK@bn(^|E-iaY9}Po0rT>7@kcXnT@tFB(P_tk@&9<%j*{bBgrg8nu8wtZf%*;-zB@rxCA8tR_R{bQc2 zFbV3t@{g^R07S-l&TJkxO$H?2pULRL5XRUdK=KpE?9@ z#;*^&*SQ}ij60@uB%X%@YgkR)zc~-r%BHNBEaDyE$krnkZ0v~mBrvEnZaIUG9Nj-*)3zYJCsfa^11>UZe*`-f!GpJ+&8pZEjyJ zIT(fK3BA91{#F!jSy1v;aphGwi@55l+ujTG_w4L@qX+JZ3~aay^eWpH|Lqkh3Rk`u zzrWz;QJ82Lu6;YM3(lG`bzVnu7rgFgQ|>qxb-_l}ssp#WF2S#h_b#;K?ePA+R7ahn z6Moil@~sTcW%zpL+RtZJU4jpmysLg>IgWzib4J5Qm*Yh0|4ljGPWi4Jr+a@CR(3j2|vA zsn=!z|1vnKn`S-^L1{vMq8oLZQ7`{2yINp(nk}I++(r0Fr&q8jeO0xf0?@!p;6a@> zi$ItzaH6CI5S)I306VV__4vS6#H?Lzu#}2o8wSiBP~AEjQUU@UM;XVfwXX z0KjC&V?n_m0uwaCj(Jc|n2wn{jCwq-APpp7@p$bnCruSE%o1mb1OT~Ub93#zy+8(s2Nm)6jUrEdO&H9jcsRFU%Qe8RjECw_r zII<7m3iU#DUQw_}0d$;Nk;#D2{E)R&iemnV3A0KGVxlXjeFc6K7^w}IR3I)iCWWT7G~ei3rqJX*guRNE*Gs+j2e=d( zpGmLugR{a$y_+yfbphO2VW(p6J^y{%qB7vFdB*_T7{bS8^m55w3OzG zECxBj$QLigEtMVV@%DN&*`{y_6#W5W^FUnjIPAZvrU{Z}N z788@(qz_dXB%`@ta$GT)U;i_#BXxq4rND>W@JMdFs9qB`8URkFF6AYPxAx()|efyMXRbFpB9W zjg9;~zy~KYrkQ1oPV34it0$VR8nFjvW&qqvmO%V;H|nYMTYQ>&i-1Dy@*JDqDT1Y#;(RuMK9?~xdv`nxjH8=&?QUKP^m|O-rygqszm5C+-#xzqY*{$|LhGw5z`EE8a{Znb zu=(TnCbm4*0#bW_auRr?7i5hU>jU#*4ay4Ll`^kgV|EewOEs{U*UYy|g8 z2H<&R^uBcw1NgA=+3#%ZH2}A%;mo>r12_=*>xKQT2GIMuW!nwN1CHUpD8Wya)Z=HB zxCU3@sw%B|iWIGS%DfU=I)@bcPovX|?YgCaqO;19`{wJ_rbGIJTQ_KIU#orTS+Ay4 zF|g}kAXQghv*4>5h3Sy?#jW~^hZa4AE3S_ZPwrdvfI@p|YwCDZw`#FsIDXuESyQFh z_sRIaPfory+~|c->$c3V!b^1)Or_Cj7l<4!^`(<^jAPUBWFA*mo>f-vQB{u4uREly zQ~x(P=;~pKVE8;lg$BMLCtqAL)nx;x!#9_L(QVh>UD8kn4m|Zlf}T)ths z_OAa-y1wKpS+O%^JNMGx$YY^Txyjgd^7&saPJDFb1{wXdqwTfKKgiOuZEvVooFG+C zF0A>}o>Szn%fB^Qdie~w_wR?n(rp*XolUDj)rM2#re~J@p4|TjvSH(n4s7Xh@{Ds( z!)H&EhbKFa1lvxLx%=z?+5MZ7U<=C|^og>Bc%cb1o=SdIedwN9q zF8S2%AMU?!`W^DEul%KUW$jUN)z~@D;p|aT{CK3g^1xBD;_dHU+j`+YEgc3EOY$U6j4BhEF+)tanjV zmV$opEeC;b*$F;_@Ndfo{g#1XzypN?(BJkAmndXHPG57t+%?E__|lBz;k$Vo!{yyc z8rr&I@rX-uM;S3JxcF?uC0e44e+{z9g#Ecxr=8;2CU2CLdZ3KT7T1HU-PPi1^JG1C z=p%I*LjelubNxPJ%4K)Q7<10V_$~ctk5C{guz6_jNJBic#XL(?&b#N1#o&|~hhyHMVcdsCM4S&dx4Cdg+bhEj~#VeE?a z$onyVpE2n7M#Ikb+h^6kI*anl1pTIh4>}iz)yRqtnGdGPZ7FaPN`(Bmfq;4HEaWpD zm@BXU8`ff-u%ZvK57B;WMvf6{&v^J|qf0WPRzW>QJ%S!`Q?+?etHOni%E>~x zsbGIijczo7^?xTf6xEr8p39)tg_?E^>POh$9jHIy=s`_d80~FP4|kSB%hQ4!`P$~H zC!}^3QqOt!+_$r%OCi);@Fo+;e~Dch0#pX(c=cT!H^yfge&d<5nD-i(v~lD=~S@EK(MIap`N{#+?H* z{svTUEFjAEz738Od+u92=S|=#3tnQr&4I@HyV~PpIq;`x!#OZNbzQR-&hMJ}g;hij zsK~D_UaZZ5O?{7jzNsb$Of!B%EQ7P>m46>!|D6PGj-L4>enA4m#Gc&I&m^#R?7dz8 z`cwjQFA(eh@QDOm-yP$2os&TQy{|hsIKMDja`u}u5_s4uVSTYzs15r^1C&FSNB^?*eLR zpz^I(!=PvHJ!PwJ=>qc>a$|>^)_~b7mfg|T>jjQk#~g!o?cm!zr0;099jq_iKbX4Y z0d?(X50&E*WOPDix<}b75B)= z4bPdtv%4P!H*7Ql{ln7iO}p)2gJHwaQ;*nzy64Vqy3R)Mdg)_}&mXpc{n0;f8yu?z zWMuDaOUvuPg@^yUZJAUDjF&dg-@eWa?!Rr$6Q>3&;OAfL@Nu&m!KPJ<=ItA403Xbp zchBzqHn7zYJAPu36%g8krwo5-1Q&N+?ELaq4d9z+hvICq9vs^|f6G-%Xq+UqavUxy zp{deqT0)1)zAvFU@kH<{6?A@f%U93Ri3Jfo~ZN`+c z%}cL9g27VOlxuX?u;44N9WkndvtfLdO4Ubm=3$sdr!J0CVvvff|EgH0<-{PH>0ly! zQV`?Xx{5XHv^`J;SK1gQhFPtyLMu`N3k715=ix4%pkfKQ)ywNh6fRBr{DwsvL;qT+ z$$RXO-LnP9ll_D^mJfDJmgRwUB(hO-p*AUUOeC1ckQAcX%Zdn%ULk}{U=vi3N>I>z zot71$IVXnE+10D;)wSCG31B9pfF~!tXUN$kNYfcyfiJ{IsKnA5nWIVgCMYHVL@goShg;!AD#sjpyhX70V*dqFE{yi=+{d6dQ|k5fMoZOP3gy z=(P~Jws8GKckYnZSTM3}IJ zWtr7FNuNf-rptOKVaxB~uk1zEI|(99z;kexoxoW>1b_YTYfbw}bC2KWhQc0r-g=i) z;FAG|x5j5|Nzp6330ib>D>*C8W?eA~+B&-{E=*xzxGbop#&c8L>ql@DWI#33>H#r_I$(8#4x)G>6a~0bdu- zWTCx10r5=r9}sw+c6dUxU{3_vp`F8QpdD%Crw~s|D7b=8%Q~COKnpzd?-|EypnX=e z&*U*P4uqTFXrrq)K(^@f@fi4^!wxy|bfH*b+&nF`qyi4e3&Lb`dA&{k#7djXas~E2 zWKWvn++|!gS0X^#lkl#rpN#T;lPAT9Jsjd>N(?_>%Q);XC-%OHm;*v4<@dE2TWn4g zH{{-sX1x|Y>$CE5j)Xv*Hrn+q-EH!HH0jm*Nl#bM(R4Xiq4qS2FX<-@`7@pv;$z{%S5{L%KOpnhvo(nn0J=4YYlVL5?2_tx643=ymH*tz|W&J*gQ?5&^8LqRm ziIHOt3f?SZQtU^C>Q!RI+R)rfYk&%URQ^EckA1l!U*8i2<5JYnfo~(shCu-W&s2^c}uR#3? zM;mI={AgMZ_3&odwY<#B(OK(s^@P-pf?> WBL7rrbmbTZKiJRU|BzPr2jzbNn_)^|qq4dRJ}XXOd&L9u z?-nF5>u9mF2~A+P7uHVb9-hG7>YRU@eH_P_?`u}5ZpE?7pME~v^=BNrlzM+RPiww$ zK8|U<+^$jGaqN!c)tg&R#IdFO@04aI;#kvrM(XsjIOg8Ic=q}uacuR%y762`96NXd ztKJOoqX;@T4Q)$Pp`GdI2s8uD$dzaIBqPu4F_$6Z2ap2)r)8kMGiUDFxBuXwwm5ld z<$cb2Q(vYZ?yWewX4<^@yO!@-+Pq`NqC>K?=(+53KH0=Ei@R5kIhZRRyLCTTL%zLO zrmRA4o@yWQ0SKx*Gb9(y%F!ViBXZ=g^9(7}ib1lTp+$c%hNjCp(`9pq$U288cMMi$ z{ujJCDnKKG4uWZq056cgMC*b9Xx$@k?YMls^`m9BmCgphNRk z9p7}k{rBagM{ZyH&f(MJ+pamgE*l-c=5+maet*lAK@X1j=hRNwec|NS zP2TMuVnoBYl8og)v={$$$1 zd-k&Cai@PR-_mirg;-YVY-?%nc-Y##e&M~eBa1dv99nXUtVEkbF)Bx z%1qh1p>HBcj!K>pAO#N@lK-6EtY8HX6RoBFT$mR^ib;7j&58yf12aXC6nu$f`^u8QYQ1 zzrbL9APr>j3_dUCC&l6-sYZS9^-}Z#2n*Pv0ytAigHrbHhyDoq>;DG;5<5YL1edB* zG>)Z$WH1J67Ko9-pg#hEG%~>u>ldI@Q=G5KS1SN=MQZ!r%6x5pk)j2W55sM?O2?#R z_sKgm3*cz-mEbsD1^#f9;dl{l@ZlyL_u)pLBr_QL=p#^A`b1CQ#^f42r6`h~!0`wU z{J>iZ0^X7nc)Gyf5OFzl4K8N|5Ho__F>`fxT(?7nO=Qzr2^HRJ?bWa0zW}SvI zM_`;(K31=13Kx-dMvI2xIS}90gI7a24LWC`O-Gv{Zk(mGmRW9xRh`U7!+FdmP!n4n z%oXI#QM|R$Z3cCLn2Z*?z0@UE8ZG)~us1<_M`4J4g3D+T-40V2>=ko40-USR)<_Et zEUZbt9R9_YHk$w^rl#JQ-F&ps<*d?LjReda)Ls)|?0PlhG;k6}ygNi`O=@d>m9!t_ zu&Z4TTb;*T`h+X*vE>~d(5K9CoaUQP2RsUB3JMVG9JJK%Oi8=Tr6E+mc{2FmM& zVNIPAnzw@-^sy8-A<|)qxtsu}bS@1#Fpp7%w3M@lx5sEL*GRFDHzI0fi=yTAI1BS8 z1Oqt3;GAmoTDQ~EL^||gDMo#1xPmQG6M`DH3hXI-I($e?RZ;<46)X&RR1!)}1^TOJ zRKf{3|IgM2$IFAjb0W|ZuxYDdKZ5?A0{at;D%hmSQCb4@U}q_`G)>B(uVJ9`1l8tL yJn)tVz&&{~BF_tu!C7HOoInQx6Qm0(FLfd1C9kR+RW5>nACe8e)u)1w_6;w-OG& zbfz<@-$=Xf-Fx4C=iYnno7oCnD?&NwK@NJJQ-&6!NHT&v)y6~E@vVfUgxmKURywaF zrVn8mx()w2U3d=L{@JhSH*(HmBNZ2aW{3`8t7@t@d6x`evK_A<9Bld!TlCM`Z(HB# z$4-YT`w!*!W37&{$@O{tSjEKOdRk7N!kQm@SMhPvDeQ~01JBo@r!dpm;i?xK`!I1? zP337#9~Q~k+xvM*A9iWmI5m~jht=n__iT&yVnyla`Ysf9V-ue!+dD_Pu-%)S7xy0N z!tPeJoQouNVMy9%N0v`@VqG88uYU21PAvI}CG97ZI8UzD1PUk;Cr|2{nE+B}obs}>M z;h^tv(93{P@;QvU-ra3)YVBRo97XP3&wV`W1M}mf$EzEzE^cn%-oLdk^*gr?cW(In zcBka8_q*EAfzjdJx5oQl`$u@2=KY}Lqmbypp~0G(D<4FAOa~?>orBHUcO)b3Ek8In z5i+*5wDxWtJ#;h>t=gaV=8>sN`2=US9qcua^4!)_Jtr zk(hEhG4rjZnH`S+Ud;#nHK8oTtJFdX!sq%d^){M7IS9J==|%In9FxvLf&hM}rl)2- z#4gBuc!^1QaVdx|lb7=Lvd0i4HH**n5R8@Z@jv1;3n<2F3z;o$SAb@Gf^`|sH4B_T z24(^;!PMCVSs4O`plv|F1Y9n#^7#p`A1sCJ-0cC=Tw!csg9}m1^FR~xXlC8p;*Mwg zu~Rme)jV4k17`MzJ@7z5fT1jIYYanx_JkiO+$6l3AU4|OC#-~@0OrjC8w1QKrVj3{ z-Xve0FKC$oW;P12bJisXoy~%@kii^$c9)y*ugPO`Gz;Gh#SDNjfh}18XFO<-%9;Hz zAHjV6HvoXGj@L$jo1IOXiz2;*Hw<&;2@_tgI|zX^+Ppr>%|NMWO|~doC;-R>@#AMI zv&GqYf)<3o1lMZI_3L8Y$G^nOfupIe7{~ES@Q0%m$MbM$9WKZ5I$T!A%B0d+`XCgR zJkTp~S!@lStQS_V#PJ{w_JKF+1iaZz;AsSZY0#*bIE@B15IVtr=~^Z23YZkSJcC%% zNN&{mNk&bTQ&Q3vR(T0vt8}>Ql#HsLq^&L`6|7Uzl6q2K4Q&EeeaKfP!zoLyw%)>2 z0vR5RuNy5g0kcVA5-Zv3Nu-t3nQPqOFIqg1B8It!XqVKwcmwnM$WCG5X78s)9M#o1ncu*GE0T zB~$rLdU*hx6*lTUE@Q5?(ZV<>n3H)i{1;n`LJn#oZ<>kOM28xUhDxzUri5{W+>3%X zU4hVMkh<6!(Iy`$mJ2nGO7=WbuM-;e+Ip*^}AcVxe^)hJtXsHa_^bw8)1KfQ3;zg zHcEquVD$Shs~4~xaHpS%=>abrYSZdl8`5i2X7u8aQ@BrIK+ z>1#XzwYRo04bOE$*(KkKRhnZk@zUbj3HOh}RKZW{D}+a3$)c;+wOdEP^XJI)Rpeoa zSpNIEv9k}u7)_$Xl5`j@HrI_CvGYBccH`CST|HfJC9^b3d%qKsrp&oJ;dUqd+uOWh z57P<9Qg`p(PIiLodiT+(w>#k6y2{DB&UV0=@ZSmOb!>pcW_);1)?BprgTt9>Wl+;I@bkW=sTlMX^|*vHwa9S4A3(-C`d z^8tv(?xovn+hFqh6_ehtXoGEUzP0*}r46Kox=R5~8=PDH`ByD5ZP0g_Xxe|i6~`JmE6}@62Bk@@@VB~ApB4*S!Rb`|vQE$n*u+~cW==*y=1vYY#1 z?cvu)tnb|q*9#QObHgxylquJaCoFAhYSJ{v zQk%|Zj-R^ojqp=%(~Z0LUi~DpN#1zn#Z<{>@0`svwvatl3xi)&Z3|bO7p_j7L2Gy? ziCrb5Go?#sEvYa0a9`rjYl-pLlHN6^mm(wyt42-YMGItDWQ>46mZ1&yVvoyEMjJg2 zSCAJGcP=8XGb*lTRKnen2~q!zlY(San;0*gja3YqP|&`+R*kd2`N-VR0{`rjbw7V$ z7yNkH*>Q_*YzLlm!J&^!nqUimUG!I-TR~e~k)wTeGkh9x{)6Ql)`N6=#>>hRt6@UPshQVWUV>-Bww->(wF*w1UitQ0 zd+OkcK!Lt{&dVU!ziisQg0*mb%l6(S!L^`iX}I`e%X09IUbJt*iW+F~y#pKTYhc&s z>#r^jRKst+jCCn)}{-kI@B^0`R$qQFjLj28<@=eXZ0!QAS=RbKb0DY$o zS&Jrm;coxj@Y=+}8L<}lLX^0p9?Bp{|6^xMs};0Q-$*)=ZH1;QD{7vpV&Kc)?VUd3 zUp5H)y6WU(Yjq&l{HOu5Y^@Hb{;+EG^7wCSb&T6%dQ7SI#3WpdMzuQJoyR!&s9F`g zAj9~PZli@}47>=87d2TAtg#`G z9wqP)KC{hX@JvtRVl)KbAjTkoYyhj15zc<6Q78xZ!*B${`Tqj|Ty|Wv0sUKWL9&P!ZmYx2QpM9##i=48LN4q-elRmtlA0#0#`sU+`T05ItWfvy z&qY1Qj>^)xIF9F`haH(Xo`%ayaV3tI;)+s^CYKN4`&nYf13rN(LVNV)tZ;k+$Nf0c zLo;Ut&72Z?>(C?j>quF-PMeL0}m_em~4dAUrI1C3q=;PGF}rIaAzrSt5KS7G1~JG4fpr&eMSW_otT^L&sHEE zyGEqf;w(R4E)uy3g}RKA1jH06GqY#twHBK(h~$+XglD*YJ!7*`s(drWC_Vc5NKPda zQz}1er{5oq*)-4Q=XeUWm||?me*OSnF{PEuw9kUwIZNu@+F z$+xh+BEM}Eqw(ogC@w4}g}SIHL+8m+sM8<9UdhUnQn&R1E`{2oCzW1wR!~PeZ8~Yb z&uA~VvN0Lv!*|FURZ5f-W#wSZdM4o0Y4ao+1;P4_VlVd7Md>11E4OhuV)SlGq7-S$ z^0@OTvPh&O^DQP-#)Dj$=lfazygE`G(qZ$WOcxm$B^M7$s+NUfqIc@aK)F^jkP9xy z<&W~~|Aw`{PK-)w$Czh@1w})nKAl$QOWBhoh!BydtS_hY?s{u)y}Op{n>ioR znD|Hp1Da@p!9W0A@P$MaWxnEzgqB4?h4_d>hM*#5VkVjY@7m$UriqFAwY~ek|Lgnx z|G)45rOQdT5ii5q5H9zOTrV--W73)kb*NqTs zp06IZUNJ(rH|{#UUo%47{Pn=EW91{nd+)vyUUX(Z@xnzDmz{h*Pu#M5NJ_2G6PH^Rtvxg^Pkd6co!W9?p4d6?J11A=iJN*G4{Vr| zCyuRIKhHm!BiygQ->ch_Bg_q|J5O%P5hwJc>&pgmM0~-b^NezixPAGN^6uMn#IiM8 z%CfE;p+A4DrnxmoymY+&u^5pf@^i!I4?{jUhG+0+=IHT*W%vTT0{lQ1ub6WUV7mq%&`GI5muOmx(Dh|1=Ly`8UzkE)$M7Q?P zqD5P;+N9lUJrYh`=ZhRI^(JJxpJNkI zIg6L64wk7NFIW9guKTo9SNTt{YV^P;hL@m>7r+ZrR~X(p3&Z0ZyWj6Qniq-hpKE#a zxa=JF|F)5gJiGgNcF)R7syBRBwb_26<;^pLR~=DBCQki&xb)bD!()pteS)*TmJ|2< zeD9HMr5n$Tb*4v8YkrUJeB#cNX8z+-jpL^`zp?Pg{+$P}|0TFjCcW;jYv-`fdH=2OM+j=w;U*AGxw^XoqX- zj!@52yI(m?Z5VuZ?fCdLCG^<7J@*{ag!lb8y7p?}3#Js4dJexejB=cX-fdqseKg$t zD50*LPqi`&m)>th^v;xm`@c``j=6u*J1?FH&c^Q1a^1QMbbHSOdS{~g3#_xztFc-z zbw!*Fb0UqGVR+Tzk{L&;AUy{O2FFZOtWUaG z1?jl@!?FP_F9o?wFB=t-q7>KOSaa)uHUcu3X=Pdpaaw(iR-#1?1X5BEU=>f$asrkH zWgd;e)NCj$IJ7Vh-UgaN#9k#lR}4HoP9M(+!QSbz02yVCq(H) zV}nwoY51lnrT|0*9Ml8OV$x8`sr@h$!A$+X06<|!=4iNJm7)neBhzvg)hw2!WjUHg zKvJ9>=c5vm8XN13bp|aU*A};*s;o2BHE0Jh^@XI{-RZrt(0%HImGx+>4mFb`*#$o| zmXTxwX$z4Kk_?gdkRr3$rs>m2*m71+k@mtGo=Ox&PmyGr1V4ByLEx=8!P5^vTiWln zMEt&X5Jte?b^|2}$$-<-;4^ikm{w1Mk=prA-o|iQmrR2#)gKK}k}J%JL4o4aAxgA_ z8E-eTNd~={c$=N%S+hILN?jl$)5Ud)wNs5$b9=ho4n9(cA>bpCKGWwh#3{S0pD|^O zjMvhK_6YdG0-FVUM*{H7j2{pMfpNO~7}1dktN=Tw#mG3*C{8h-j=o^4kXCedmyr<# zi0_`nYh-*ji_h$~uug=VQ5 z{zRwU)pQQ_)yUp!j`L@6* znUvqxW$Lg~C~v5}G0l0J44ls)7_IAd}cI{Lem{TQ#u;P<-2L1)WZuKHG_QGQ9k z*I4jDyf~T+tmshc!I)i^LQMj(fHxEInI^eVIF8Jg*MEk!curW+135Hhi`>L%uPf{K z0Z!#y+AJ{7GGI0_XqS+K^62SF&}1F9qxJcPlJs%RGSTYBF^{ofqA07hy%u7H*w{lN0`Etu&KU4r*AYd7x87~3%1 z)ij1#dS9BEmxf^?Omrqq)Hx$xln{urMH!-uTnVDx5FI!NBtn%+^=!ePP5?2MH;ok9 zO$d^^p<&;lx8FH@QF?I5D?RSmapn!fCm+c-e)#AdL9DxN=?m9Z?wNPiBW_qb_nt35 z$|m0$y*uyhf;@Szbf9%-k%e^prgPC(zonkvyZ5sjhF9KI99j9ho~!%KngYY761;cG zy!N6u#rDf3d(J;weXc4EJB4NR1|S0YSVpdBc8(g$$j*^uF%-epb3vk!a&rD)TqF=D z1mfc}#TPT=m(u0J??NsoA65h=nt@`J4PP)=e1+T;Os$Z#ytI=yYdvo%{_^PC;1`)$ zL)i~*2Oaz68{&zrV8dfS9qifM3leoNF(R-7%#8(>MvuG<4les+<8HDa4Ag85#UAPh zS7-kD)oqb}K=1u{efh=LKuMYTNk`juu&u6W@cd)j!Oo)tk@dT_g1XJ;7nx3M1*;Y( zxGHHcxVO1ge9XTM{C?Geo-Jctz;N=&n$9a-;F$Lq_uMyK;ESsZ8^fQs0qJE)`I*x# zVCSp{F7%DYz}G{DSBD>ufn5cQ#d9<D`Hq@RYt@Q*E}pIq()eZs?| zyBa&d#-7BzwQL7SY)iBI2l!RyEKT;h4q*Oz_?O>Wd*eZr2*+Wd+M6o<|ERr-+5fJ+ zyF#36y3*?v$}h~7A4Rn{mBzP_o38e9exk-C86l^aVhE7{6U}~b#*}(bO7B2|!5+xT z&B^~BJ4OEe1xCCj3-Xf-#ZPD5gJC)Ol8gYsx`>eET|tY?$GWIkz0*&J88#$aA+2qZ zH9;Ai$$|vyp=9||8A~t}6tH2MhN}=q1Ua}=@N<6vPF0HJf;x$S-u`^hXdf9Qf^ihHK%58${ZRxYLIp!UKZ~TwWd+Itg$yE>rH-GV zEG$qIsAO%JWDagNS6WvjyHAo3E=8l+Q;OqwHTL$Cb915G@e$8?tLx&xDOOdUx zB0?H09LbjZDt#J~ikpH2v^6&RJx12#B^eiO^hG^JM(ri7HOMCHvc^KIwYblzGJBnD zHI(7e)H>qS8kZSM%cJF5xQDG!IBYo5$J`c0$fz|nl7%rPX;r(?84jD5cE+K-j)Qon z`gbriP3p~VlF@OFN1&Zvtt9nP|ffm84ChwyDf&ryk+P zePp3&t;1TONb*tAF1-%M#Oy^}A#a*wDk2U&j0?h~HCZfWcCJ!uD!v1IGqSg;LcZI$ zv?k7B)rH|%al17@+g0X>lWp>$m`vgDA8eg^9n6WYc_L;96N}hw)rA#WBjOEXuZ&Wb zVg+T>(0q;nhhBZ|uPR0T`6vtD!2@zIP+-`$7`MT7o;XF>NoIGb2 zV~INp=?LjVc{9c;d_}R~@3#f1)=shO}Ahj|~3#&Ef|sM*LWP^+Mx z!q=b&-&CdLs8!)YgU5Iw-&C-_#z!TZ!1}*4HaNaI2zNdVwMNvmHK-q9e;ZJL!cmQy zG&#yjp&p*hyXL1!Iohk4uAY!upYjLa{D8PiN-&8uKm^x@DQ<}~5Lm)rSklymBu!pb TIr+I520z$*_>;T}{&D#i}lRMI?m< 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 literal 0 HcmV?d00001 diff --git a/benchmarking/results/counting_ones_traj.png b/benchmarking/results/counting_ones_traj.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9fff5c940ee36359037afd52c2d3750fc3ea93 GIT binary patch literal 50260 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¬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 literal 0 HcmV?d00001 diff --git a/benchmarking/results/imagenet_resnet_512_traj.png b/benchmarking/results/imagenet_resnet_512_traj.png new file mode 100644 index 0000000000000000000000000000000000000000..4ed23121e9731d6705727340882b81a1357ae569 GIT binary patch literal 54207 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%0AnM$> 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 literal 0 HcmV?d00001 diff --git a/benchmarking/results/lm1b_transformer_2048_traj.png b/benchmarking/results/lm1b_transformer_2048_traj.png new file mode 100644 index 0000000000000000000000000000000000000000..6c8ad58e99fe14c6f1806d9862c2c3048d09226f GIT binary patch literal 53907 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 literal 0 HcmV?d00001 diff --git a/benchmarking/results/mfh3_traj.png b/benchmarking/results/mfh3_traj.png new file mode 100644 index 0000000000000000000000000000000000000000..6af8d49a5fffbbda050885679dbfe5d147702d79 GIT binary patch literal 54912 zcmd?RWn7kN_bz-B0)hyNfYOM9MMz3BASEr`Al==qC<-Dd0@5R(Al;oJQUXeMBhuZq z*X7JOI?w#~@7ep^-`)@0!^j=ieO~Ka>sZHetn-PytT;X{87>Ni!k3h|eHVp7_eG)5 z#&EFUUpT%DO~HS-9Yxg~6>W?iUG(jZP%`?Cww5-ImS*>8oQ>=q%xtXLn7EiYZqS%I zI@&t$Ff&{Icmk7+y$SPbe7rim$w^xYbq5rRKp*)*OBGBpL!r7CC2#+xu+tcHG)5XVEp_nby?;QaxODve&7pu1Y;Qt9_*cRj+AUI6xSfgDNOi^#?~?!JlPCKbq7ILa&f7PIF6z8uQ5R@$Fwpq=_0tgBvQ}7_ z!xFc+g0iwG4y`|-@CMmi300x*zs72Ipw0=yuiuQ4(XPPXaK5xiV8|nXON@Mu^*j6n z?QLc{d?Dm@k9EYze32&;Rz77%Jw*QIe!&cd`~5vx|9|pEw+Xhsh*Q75f@@Q?Yn+_k zaXCY)^sK1Dm21}m9hKW8+}(M&Mm-&p)4yEa^%U?vT2BazhE5_y@CSvXh!cmQNg&%PIq?+#h$RtGcKyy~ks|t?=?RH38p>P)hHvWrl8b zJT{f9@7&y+gzB4Kx7jz5JBv0xEiTpj+B$C2#7kBC)*{)*JCh-$Yt7dsrKIYti^HO$ zn={n&cNX&7dER{#z8!J7gBWhT76JbT;ppL#OBBC{bNRIQYLKpN3uCcqJD1JKr%pM+ z)`|L{3;gZ{&Yti6PnswvEc+bqYxx{*-WC;&>)tOgI^5g5pY-MN-g#&GWN#|@vg$W#>puzqg7t7r0KnP>Zo5tN8eFaCia2V;66TBcbm^F ze#K#-!qBDhxDg4mixW(xQ!heioXg`<61=0Om`eTem@9Hxd%5FeDNYA0t-oqD{$#u! zrNVYmNx6R7{tPAMuo-@D{MgRwq)GR;s_6(#;UgThoi8EYA9D2TT-TZy-k@D^r`T1z zi$iG*_vxO20k`|cm3)(SdQQ%WsVPJ6t^9=X?R}AEEOfMZ_qnSdL#RWBtr@tvqtx?_ z%|x1Iwl8ODmFCsE$x?sy9P`7LKljjUe`~dJ*(+pc$Mr>6*zPp5&y%z?3IWeo%bqj5 zAL{F$!-5-x@b{P>9(oG~kuuYBa1aO7)rPC;G>z80!?HZeIF#p}X^kB?8AP(SMkcQM;kq{PJGSfkUedT;K!b;YXK-qvCZ zSJf&$%6Xx$wv}u26MWTz@p9^eG3?k|b{D7k2g{PFCy=h&{J4G=&JL@^GIXW@yGHSFo)pT22d_6$$;J5vO*$XPFst&!{F3%$( z#FUiI(TP1BdoE5zONitD(qpl(x3RVLja-5NEYD5v16Nq-cc&d(c;bc}+W80eL&!J+ zr&}VE(#$2eMHOBN`Us?}W*ZNc*g>$}bY4*F$x!bc=Z;=dJ{%l9`q=SC>H@ndq1WEV zc=_ld69)%J$*}cO**w$TyLTT42OBL7m16%Fue^8fo`kGy1g+N>I!S`x33+x8y^Y&qC3SSDU}Mf4Zja97Hc%Pttc(xY zHBf4lx~+fBwV%GjRKCD!T{=zTDL|dzxpp$a=ZHIuK~5maLDyy2=_wU|bO5#YtKt#& zAl>7=-b?iKYp^_iHs0$od~1z#2M{acCW8AH6yHjZAFQ_%xE;cu$j^z6A0Jj9H>^%J zxIx55-88`3-Q9(?#i*q%XkjXUIy9uURDJ9%O;5yJeZV?;@Re(KDopMbkCS<$hYqZ+ zp`l@pWj||?)!;|iE<$(i;D+$6;h=o>IulA@OTZJa6%RX;qv`?(1e4lFhd6q*M2wB; zAp?Z=;HZ~7Gh!1^8N#w9zkQo$(aRL?bL0lWQa_X6^DOa-Rn=(1(FTKc*(^P*PZM1T zpRkAsM)mRG^6p2js@ko^K}k6|?EAr=*4uaq(z~0jiigD@`C*@?7#lr4;;P3EMN{mGBPH#Cc$4wt*ExBDEi zCChqjFHJupw;tOXw3+GAv@z;RRmkkAeEr%FkEz5rNj$`Uf3cX&u#vDQTem$?H0a9J ztK&@!30-TY`tlA7BEk7L8HtG;;ty!ORqDTuJIaz1-R$SR~}XPflr z8KICU`S?)`rIM*3s;x~~JnGFGn7HySDa5{8S=DZ3?6(XR3kgbd3yW1(J|!ikmAUln zJck)s5@wwt{o#k-oRw&AKaSM(RzK0z8pCDLfZP~jd7sU6-G?vZ*v(!<$Hb)bACEmC zP!c+vmGc>x@WSx(O-oDDP*Y1qpKD>R9!fm*`-so+;lTR-a<%S>u0iW^8Q!n!yIr*p zu+sw*QwanQa-1vD((VL5d!}Lo@4navK@G3{{kI2Q0|Oe1JEKQiT*UGTkS;T=qoShb zK1Hz=y2D3sva_dNxNu?aa->#AqO9OfErIadk>K&Vpn0|Tq3|5(6m0ueUzVYD1D-fKww9R zm(%f^Jh6N)WRVFrd`cenOYPXyp7Kt&DCVlX_Jx~=J(ere`Ylz0f`Z^9yLp!@6oZ3; z6uks=gSIW(=epD3vNp4QDD4j*-(;m-3Dl66|D6&;DW;Xgej$jtN*--9$|T-wn@^^9 zw#05yDWoBZvKk^#NmQW=w(pJPg95Y8F1XZ36y;<0@w##i8Xi$t?Ac^OM41~Iy>UJ` zK3YD8+qGSNJe+bNt(#}f>w|A)Xq48&-t|j$m)}0wGRf? zkv(`N@I9oe(TT#vO<||x-AYO0{HUfdhNQG>>t9sIP`b|{y1Tiu3tvFexs-1fRM>~@wB7vDkb`u{? zLO8bXILz7YxuIo}64gxGD<~+`_Ev3ipdjn?eD%oGE{~X-Gq)}o$691lRZ`O9jA?3V znXDra#QeRYA~rot<5#PFN;%PxDoo-(0C9Sci?hIuXRYR+#OD4|j5(PuP)x74wF_tjzX0M{lu>E(ChP45T-` zu^K{OjR_B3NP+?9;cL^YV&{ zL~BwT8$29dnUFC`N=i-(e2HplY&5mY$jf{2Mk;a*sH7X`3IC!yOo%~BhaduN-uTIO}=Dd1| zEp2~)|A&ts&*ESrATTJt5^_2GgnSV&m~ebB zlj-d>)%YBhoSYn*kkDSfT-5>_whsA$-1aG!+rf1@Ty;ZPCm_F)e!$(!q|!z_ySU#{ z%WXQG?_i~los)C!s0!x`C3H8BS;z!DZy_ZhJUrZL3!QUQAXXrMWn<)}t@+%nd1BhN z6DLj#l)1~)IYU5wdUcb|a)v)f-=-2mK&{xCQYw;dphD!5?w=L$^VU1r3(bOCr?u+zr+_-){sjMs-GJ&&NZw~^m_V(PhN7-UpKOzaN z>TuD92nX{!dZj*E!S>#5(JlHGWvR2gJ?fKCR#q0OQ^W7EWvaV8OGZwvpd4OS#$$#G zq!L|1J9qJER@I)llCsfk#~a3~o~}VcQd04|cV9UBsDvRXKTaiERo4r7#o{htc1cOe zlaboa7f_|8rO0&v`cl-@9i7;mo}M;w)Cs8jGAm`uzPS`T64S|!QN#}$^AZ!&Gw4ik zvU>+7=4BFi0YCzxN`QEJGBGg`%G%mKSU^8Mo3Ojq!faD03p@T6N>$5FG{DKK6}jh+ z@X1}bhg~#1Gt0^}%3T&W2GOPI!+LfEy)Hy|&M$87yKVKGh&&Tq{XldjFi~5Ozjn6x zv=B=jlI4=$ym|iO#aTa%lV9ADvEjazeM=15IohsnM>-W)+(Oz$Ie}gOAf~d%yX!L; zwUU%j#aN1m?C}7deVq&uG=?Sw*5Jd3+f}QX#{}5UdR;;|o z({k=NdP>O~QR*efXQ2n$D4ut^=T1g|eb; zalm)D(dju!K1##D5CGLU`03MAfq{Xp&>c0lxAzJ#W4dsb9_`KNYGiuCPBxzS@MOrb zQ-%*ZC?x>hwI@h(%sT0j{?E8QzEzY|+fgjRYyADggL&QK3C+2Z2)8?mrFAH3O ze?RiC{wIlCSL;cUtq)~fI-W0Twll@TDB^~?u$vn<^wDpf9gbipcbZk6g2u_X;Ta`@ z2O(&YdgKj->kJW5Qg|ucr~Vv$45;li?E?EZHa9l`xxR>uY*+*^B{t)Au-Z_%STtAy zJKNOKa_Vi2HLeE+;r;oF!zl*A@zR-i5oKkj%8k2FH7K!8Q}m5n*gye<-x{G_eS)v8 zIb_ZC01JNtO05CXPLv{FeRn2dy+!xv1)$pP5-p}jrzx8uuG7P#SdDOzOS!I+q1PJC zfr*ZWi-%`-ivkI!Q{x2dR2&#t-y z0YoSM%n;Ix9E^mp1u?A^vxGF_bu@nguJTtC;0KdiYK9Tw(rlABpf|ripq| z-6;ry@s;s92!LB1-DiX!KYs23oKB?}q=>*of3GMiAcd?Aanx|WOhTGm{TgGFcds7z ztxOCF>jooGK+iXT`EjoR)ShoUE({f~wmJMdoi-({|KnSw*nd$-RR1$`6m`Or1l zcRL9%-Hc(oB0?m^R=z!qgEHH9nr&E7E>Y5mJ$JmU{#bJyN--ah9r+>DRP}!4I`6!|D<8hqf2P5W; z&W%@CSoomAJxs=06|b$0?f}A1$4pqN-t9fC3Ep zhO?vl8_Ca4(`b=WR)!|iyIN4Va4vdlc~s8W`0dh~asGv%`i}JF)%nNlsPde>y*&xl z*Mp%M8(|qwpI0D{-2BWT4I*&!fI~QwrqDaRy?^z_4fc&_ARDkwo%d}uo=?_rvgtrA zyoWHnsQu7dB(Fm*k5z09d3@`p1GN^w_a|dE4D8b%jPoUzmDz%WgP|Rrzm}eMjVdHy zZOtAcyy?@Yg~A~IV(}$3KD;9q*dh^0Zhh82Ro9+lUHJ@*ig2z{1-Ac8X;OQ55 z98=koHP7H+p5mGyBO|-z_>B;H1;!=nmmVl165B|?kwyRfE@q6(v+vA@qfP}$MJ$Fn zBKQ3})99>U>E!dCjrP}D%s|BbUXILH`&Io#2gi*UKds5Eq#OVCkOOQIgW^HJr3RgE zWvn8G3oS^YC~^R)0WdmDPN08$zkJvl;fW9$sQ#WlaCPJ9p3Il=YnU<+CPeug=g&9E z{f+5>)5Y2jjLXR+*Kq4M6*zpJR|6qf{zD{wB} z(3Z0re0*xFQr-LF4`#Kk4@y*9X7Nb#P^kj|-cyiEXaHJ5aeddlhOh;I4;Yc!0kFHQ zZQSyR{L7VrUWdH|k5@0=A3miP6o5$jvhAV z{(Mj74UGZ`USrm%SHL!qb6Vo)#yMu8UD*i3(jzVO=@buT30*hQIWwE)h*w`$oCzDH=k(;WDRB34(%_Gtb9I zSHkF>NZ(!xsUI};+>aSCZHZufo+VsN`&UZoR9w@@(L?h&n4|_|soGcR!R0b!hb@~D z2G9YW#iT7ZRPrKhmV*P&we@vq0Y2=byG zGH7^q)2!pt;_ljXi+YtOH>s8_8nxHP8NygCduUQZ*R{NNrzv@)zMZUqpJt zBmdQG09g*-KGQ;(BgTJRdN0KCTt#Cmd;BdzgcA+P{rTtMFRxcmY zb;I)eYlghSw5PxRJTfApNTUimqt^A3;ib@OVWcZg?4iU-P31VTWAM>=gxftd*WfZk z<B-bYJAccT1_*R`9(t|Qn`acWrDkL#S5#1hHGOz_Rk1J62+zAZ!TWFz z!1#M0*3cS1eM&AWQqerm&deMF`FniReRi;z848DCZS!h*I4^@`7pmDgqI z190}#)a{|PB0JC~_>BeE2_%F7>_LTwh1JFLdzhM<*356Rx~&;j?M&dI9-X>?j%kvB zhNM+^Q+ZuoIce!ru-z>Oi)2~`@8z0uQG`I)PE6c`jDo~4IhU+vmOjuMA3l6A72$%N zF%7G#q^zu8r~$Yep%{f$2%zu21tm3m+UsD)4u}uGeoJGZvn@v|qJ(IK?Cn{fJbAJ( zTu$oyoKE~MsAYgo0~1-C=9G%8hXdPZ=pZbi>9BAMIe+s$v~Y_dk?#~!%v-Ks0=mU@ zMQ?GWN5Afof|Am08bTBebPU?%&g1r_kAs5f`1$##qBr*sHAcedW$r;!0-zj33Ft!n zi!enrG|1?~Bx7E4>A%N>n)xn0osNem8t#;Z8vz+RPE4zqzW(coZIBV(Wo6NW(sYuD zKF4j{crhBtER7K;Dz5XdRkh)f&%u%=+?%@&k?1jWyW=z zZ0{{O1Ez+Fy~P&#^RY!0%BI>M_w}hgBA_05<1NN+^u@9Dv0z*NxZA zIzlh4l1`l8|Fngef;ew*ap%yxLdPa3k0j_sdiNcmxq|Xgrvn}UFN*Fb6qE;LE;TK1 zW@=HqwI#aMI59C1BEz)M67IfrF?sdqXktdIv53OCOrke#>S0a(!`3$WmX3}EDuQ86 zw;dhXWld~@wZ8MRxL4;l-QhwsDx<4rT7AUWE33E^yQo+mewujTk}8|o&BRzGrO>$-iZ);SUqXcTFA(+U!+s^Vd(M6%78JAq0C z)`)j{+r{Mz-4dE*)mgW&x8aQ`GBG`K76`n)OQp9sP-qnqFs9230F*YQ4OVf-Yv*u8 zmRDTvUZDovckuR82~~Ir2&!TBrbrEfNuck!2T?5@#}m$w;F(u{X9{|ndk6(R1az5} zZS4uZtv&-SyL#e^tpN+m{=A1s2m6A0@?14_p*xq~2mR++lEttyiGE4{Py|i~&;b^* zbH7bMgQt{sW-PHRke|SUTysmKN=CW!;sj9W^!)skq6$dI z&+F*}GQ~4W-doER>yR^mTv!G6{n0AXh5&+!mE`#Sd<7Ad;y!;P3qa)o)JA}An+$3Ou`pMOm4k>0t_d@<1L5piZeg>>3ZCvA@ zqpG2j3`aoY22UF9$fL&CK{5=UNNux$K&LN>q64|lith0f#c*0pfV|XToNw0fmu3U9 zD+rhPgQf0xW+-QUzh-plK*x@`o9-Lm{y^P-whv}p%r+Q&>?=dcZ%gYNYTnxPhqLtu zZb}3CV6#;FmS-w6bAypF9Bb@CXpg8WN!a5wtc%(~)~_=?WNu6S2z!VTe!b2-CUJLw zV)Y}W-Re{b6l0K$)dSA*d6rl)&5vcZ*6DerC#Q8u&A^dV=FS~RE*ASdTvxAO@8qu) z33>VQrAj-R|0ZAMlMR%!QJSth%850m^%q#sX{{4@mf}(Hhq{^~3zIzJ`6xv4qV_qs zsk8iUQ2|O(3)C{ho$XVS7&&-&6r*TxM-ct;*LV3>L?<4UsTL!5762S@de4a_l93XrBh;(S!^{wEZnQHZLzt# zP+^J$povh)efX~0!OyeqfA8}M|A^DEQ&&RRQM~N-Q;oj_Ds;Q~gNtwnL+GGAlg@2; zkT&5Y)$1Y-dZJTeodCN zG8%D$sym7|@qAxdYVnWm`g@Q4N0(Xc$cqxlzJbyC9E!i#KUYbFQv`<>`37H)h)_5? zZ|2MCG>ffa<^FC&kPbOTF+v273!Z0m$2LVEK@&c4Vtx0Q>wn8Iy$L$`^Z58@;7kCZ zB@@G0sCg93H9~X!I#3L4V194|A#{+@XV9wn^_4q84FGxSc5k{9e_z3m*Mu$;e&ZIr z#1oW}n*D>~kd|wj-|W>jsl9(<2-HA8RKdVT^g!Bt{wD$}AGkARQm%1aSyzGf<`_8Fa&!^yo#=(hQ@&T zZb!#m?HNAjh4WBsPN%D6b|~u<$Rb(M$A~tSP~Pao#lwvi%NB1K$^Oz zh{C~4#?GO04>;{_X!PtP-MEdPWpikh{E zq>0Gn;GUSxN-~Xu4ai5VjDNfAEHF8@(@Acq)leVrh$Gy!^YTb5rOS|C=WLhpx3(y@ z0MQ^4vuRj0SqO{T6%S=PQ{+s#)0Br?M!jz6RJ{81 zNm?aahq5CT*oN07C2Af^wzmKQjstuNLwREh8gi3ZcfI0L%x}3}0CR zB$Xu#CLn@It_L2k1PJnpbM!QH98dY2f`xt!VCk2P1}s%;f?xt5iE-!hesBr7xuqDh z_-uR;2WuH?@&VX3>cC}XS3V5#QWy~Gd{gt+RkNnR-qI1z#mRY=npzIf38)zsCf+Y~ zlEgPqper9SLl|Uemy=}owg9_?5aT?t7rjATSWDMEyyHPdlw>oo&uvijI*l+COD}+r zs-H=Y`7fjbIjUMn$eZAiX0Z)wX{0iS!=eZ2IOyf#Pt~xs^VLm9>b3#xaN(A%UQBlI zlP6{_JqpS1vdDx^sAIhqIeGHrFBt$@Z|h`)6n)r} zVDiBP;p52agNMnuAax1=l=mI9yl8epxr95@=*1m7sHx z-1p6!Hy}j#Q{=1NfYemPTYm(GgDJ#MLhZdn8$`l5ffzDI_eZt|_#+1w-xd{dPJM~G z(WK6Bd|7*x(#(d)?#!LPiYD+<%NvywbKuJea{)BT;VDW<1)2*e3S3A@^Qj z(L({5a}$w-!7h|pW&Ho5&nG-c|7;UnYbYl~8TvrOEfg}FqNZlhu(ioTU#{hF8L=n?km$te zy`q8-nA%6Z^KWcMt4>ke3WeSljm2}v7C2q--=OIMtb*_)ifj?}^yCwHbZQ&|6_WT=N{bq}kp~qB7%Q~7`FZHTX|G=o0#d=u zP4fl`2v!C2u=`#`N0Ti$^THQ407edV>O6}t@Y<&-ZlP+R=y5}y1q+8-ri#72eL?&T zEI{(1`*4kbPLo1~kAQjNV_}K4~i$@IYwlntK%!(~_lKZdJ!*VR_SSw!yxn-F*do;ZyWAei+*eE}QY z*|TRsV(HB42MLmoiaM)&0J#A^P4mKgoH2H#T0*uar>aLodgrYadhX@w6>1cU zDX!-c#wrW~jYUIfs=#^e8ZLN#_K9L5IbvGD{AZSAloAO^rFPMIa(iF%WnsT15DJ5f z)(Sm_top@+gEz=2DP?E~5sK{3#y^D!XX{k7^xM!poov#C_LT1QS&xweliQv19&DnE ziIYK~aDz)SahMh9;*hie!T^8+J3BkFyNAQtj{Q_M;7HXLlz>_)2Amz>#mih=q`n|7 z`U=qyvf@|L$?#vmz&d4`FAWw;L<$&Px4as0#rA=4&Z-+z`|vRPq4Eu$pNY<1(fzct zLTev_F^H=u4hs@Q>qh!RKvf1u2fK)+ci_|*cx?v4vH{)RoMJGVsQsag{Vj_%z2F}2g-lEs+Zq!d zUJpR(6H+A*%PL|mT$~4i9Jbt}A>9?ARvf^@44+*O0!){(K#>PyqP;Jn$X$VDN+^!JPe|tdN8Fqi^+DCb5A^buUi%AO@bmWmad7 z-$v}NK&-B27of@yC#Bcyv0X{-Z_PLTWR$aU%l zT&oJha}Dfylalf;X#DrrfX3;hvRwJ7fKF|OH!CoJ+7Gf9q|rwzy7}-Jx`qPFiDf=t z4YC1&J4SpJ2zv$ApMwPx!7xhUHeq1pJ39L^Yn@Ab-RH7J5}*OdqU3cxud$uW^<$OI zn3)T6pI34}kGjNaKB)5Y)p>2B>({QW>>q9{j|xt?f?8D==PaxG9jtE^*)U$YG6trS zdh24ugBk{z)O#a|8nM9Xc<&l%I}yKzMLofRkLH2V+(dT`t(w`M7y+{vuMpz=eg)SD zJUftyvG0qtBet8};bm`eM@L70i@rk%SfUPkKUX=9Jz0G0pdRQf*nffjpwvBiX53Yj z`Lno{u{b}JoRRSq$XXR$@ba6d@?mZlP_dha_Ut?u6C+GZgU0v_D;t|ruR3NEwC|yu zCvS6{P`$5GyBtP4wzYG3^bGH$P#)`@KlI(oigTj1=ZJ`&2Y|J=XWkKn0iY5fno=n7 zFwrwKi=UZwzAfB~hR265vDLtA7c(8BQ>&E?+t)bkzdQ<0Om3=~@IHpzLvpK1z201>$7 z7$GlawhJ05o>RZ8>D13P>Xw9`;d%%@SlxV7pvd8hR}K%OD} zCy8RMj?1|4XKZ5ZusldhOtW`z@`#l+`H%dJnY4oFyoNSCsExE*A8bB*0zD5&ucqpLii@eFj#I`D4u8m}zpxqAsi~=O?;D=On;R+KcW|g+ zs1{9I!0gESXR8B{-NMuq$;Swfq`;||gDp>v4w4_j{Jg&nBL2(5ci8eA4{*~?p%q_e zWMuqhr+}5h(Czj2FJWZiOhDs%jn}WB<=dWoWz^3Z|M}vqzkvOwlfnQYORXf01c6>T z`0>vDbLC(~cOZWSnMY%GbYYyAfAfcF1>u31<~Ag0Xz**cq+hYn{&ETbtPp(#W{Tz0 zh;{WBHMM+r4XUlM!b_5nj*bpn@25JV$d}99y+jxqC&VMKrgr|9%i+JA4Kjb+2|N

1OG`@90uAobcsrVnp~*>fdVj}V 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%0AynW_WPa12r? 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 literal 0 HcmV?d00001 diff --git a/benchmarking/results/nasbench201_traj.png b/benchmarking/results/nasbench201_traj.png new file mode 100644 index 0000000000000000000000000000000000000000..0b2c1623853c888a50fd7d5e5f1397b96e2de3ec GIT binary patch literal 41825 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 literal 0 HcmV?d00001 diff --git a/benchmarking/results/surrogate_traj.png b/benchmarking/results/surrogate_traj.png new file mode 100644 index 0000000000000000000000000000000000000000..c72bf83b6faac09b06c55640e5f3c247e2b7370f GIT binary patch literal 41457 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 literal 0 HcmV?d00001 diff --git a/benchmarking/results/tab_nn_traj.png b/benchmarking/results/tab_nn_traj.png new file mode 100644 index 0000000000000000000000000000000000000000..83672f2e706385963d9bd291a844933ac5af3f15 GIT binary patch literal 48319 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 DJ2&Rt literal 0 HcmV?d00001 diff --git a/benchmarking/results/tab_rf_traj.png b/benchmarking/results/tab_rf_traj.png new file mode 100644 index 0000000000000000000000000000000000000000..67160206ab00299be481adfae65ac5d8a4403891 GIT binary patch literal 53723 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

  • %0q7vMPJ)Gs@{ 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 Z=LmYQ^Bi94J-~urvJVv>6iOIA|39}NaI^pb literal 0 HcmV?d00001 diff --git a/benchmarking/results/tab_svm_traj.png b/benchmarking/results/tab_svm_traj.png new file mode 100644 index 0000000000000000000000000000000000000000..a7fbaf5e6abcc0e7bfc92f166de9c7978b105cf6 GIT binary patch literal 55473 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 literal 0 HcmV?d00001 diff --git a/benchmarking/results/translatewmt_xformer_64_traj.png b/benchmarking/results/translatewmt_xformer_64_traj.png new file mode 100644 index 0000000000000000000000000000000000000000..05a0f98ffb90e86b4ae5fc79ea4344e4a33bfc4f GIT binary patch literal 52286 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

    *njs1X0Rbk<6j{QwvCiWM{=wGdL0M9DZMS3iV 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 B*xLXA literal 0 HcmV?d00001