From 8e6f609e2d507df1f3cb5feeda66288f58466e16 Mon Sep 17 00:00:00 2001 From: Brady Planden Date: Sat, 16 Mar 2024 13:18:31 +0000 Subject: [PATCH] Add random seed, updt branch target, increment python for publish job in workflow --- .github/workflows/periodic_benchmarks.yaml | 5 ++--- asv.conf.json | 2 +- benchmarks/README.md | 8 +++++++- benchmarks/benchmark_model.py | 4 ++++ benchmarks/benchmark_optim_construction.py | 6 +++++- benchmarks/benchmark_utils.py | 5 +++++ benchmarks/parameterisation_benchmark.py | 6 +++++- 7 files changed, 29 insertions(+), 7 deletions(-) create mode 100644 benchmarks/benchmark_utils.py diff --git a/.github/workflows/periodic_benchmarks.yaml b/.github/workflows/periodic_benchmarks.yaml index a58c0048e..6ea0b489e 100644 --- a/.github/workflows/periodic_benchmarks.yaml +++ b/.github/workflows/periodic_benchmarks.yaml @@ -10,7 +10,6 @@ # - Publish website name: Benchmarks on: - push: # Everyday at 12 pm UTC schedule: - cron: "0 12 * * *" @@ -62,10 +61,10 @@ jobs: runs-on: ubuntu-latest if: github.repository == 'pybop-team/PyBOP' steps: - - name: Set up Python 3.11 + - name: Set up Python 3.12 uses: actions/setup-python@v5 with: - python-version: 3.11 + python-version: 3.12 - name: Install asv run: pip install asv diff --git a/asv.conf.json b/asv.conf.json index 7d032dcfe..fdd830cea 100644 --- a/asv.conf.json +++ b/asv.conf.json @@ -8,7 +8,7 @@ "python -m build --wheel -o {build_cache_dir} {build_dir}" ], "default_benchmark_timeout": 180, - "branches": ["179-add-airspeed-velocity-for-automated-benchmarking"], + "branches": ["develop"], "environment_type": "virtualenv", "matrix": { "req":{ diff --git a/benchmarks/README.md b/benchmarks/README.md index bb9b3c97a..55a014a5b 100644 --- a/benchmarks/README.md +++ b/benchmarks/README.md @@ -48,7 +48,7 @@ With `asv` installed and your benchmarks set up, you can now run benchmarks usin To run all benchmarks in your python env: ```bash -asv run --python=same +asv run ``` This will test the current state of your codebase by default. You can specify a range of commits to run benchmarks against by appending a commit range to the command, like so: @@ -57,6 +57,12 @@ This will test the current state of your codebase by default. You can specify a asv run .. ``` +For quick benchmarking, pass the `--quick` argument to `asv run`. This runs each benchmark once and returns the singular value. + +```bash +asv run --quick +``` + ### Running Specific Benchmarks To run a specific benchmark, use: diff --git a/benchmarks/benchmark_model.py b/benchmarks/benchmark_model.py index b65c8a217..ed53914ce 100644 --- a/benchmarks/benchmark_model.py +++ b/benchmarks/benchmark_model.py @@ -1,5 +1,6 @@ import pybop import numpy as np +from .benchmark_utils import set_random_seed class BenchmarkModel: @@ -17,6 +18,9 @@ def setup(self, model, parameter_set): model (pybop.Model): The model class to be benchmarked. parameter_set (str): The name of the parameter set to be used. """ + # Set random seed + set_random_seed() + # Create model instance self.model = model(parameter_set=pybop.ParameterSet.pybamm(parameter_set)) diff --git a/benchmarks/benchmark_optim_construction.py b/benchmarks/benchmark_optim_construction.py index fcaf1deb1..f79da4fc4 100644 --- a/benchmarks/benchmark_optim_construction.py +++ b/benchmarks/benchmark_optim_construction.py @@ -1,5 +1,6 @@ import pybop import numpy as np +from .benchmark_utils import set_random_seed class BenchmarkOptimisationConstruction: @@ -19,6 +20,9 @@ def setup(self, model, parameter_set, optimiser): parameter_set (str): The name of the parameter set to be used. optimiser (pybop.Optimiser): The optimizer class to be used. """ + # Set random seed + set_random_seed() + # Create model instance model_instance = model(parameter_set=pybop.ParameterSet.pybamm(parameter_set)) @@ -74,7 +78,7 @@ def time_optimisation_construction(self, model, parameter_set, optimiser): """ self.optim = pybop.Optimisation(self.cost, optimiser=optimiser) - def time_cost(self, model, parameter_set, optimiser): + def time_cost_evaluate(self, model, parameter_set, optimiser): """ Benchmark the cost function evaluation. diff --git a/benchmarks/benchmark_utils.py b/benchmarks/benchmark_utils.py new file mode 100644 index 000000000..3126e8bbd --- /dev/null +++ b/benchmarks/benchmark_utils.py @@ -0,0 +1,5 @@ +import numpy as np + + +def set_random_seed(seed_value=8): + np.random.seed(seed_value) diff --git a/benchmarks/parameterisation_benchmark.py b/benchmarks/parameterisation_benchmark.py index 99964a3af..1c92700b0 100644 --- a/benchmarks/parameterisation_benchmark.py +++ b/benchmarks/parameterisation_benchmark.py @@ -1,8 +1,9 @@ import pybop import numpy as np +from .benchmark_utils import set_random_seed -class ParameterisationBenchmark: +class BenchmarkParameterisation: param_names = ["model", "parameter_set", "optimiser"] params = [ [pybop.lithium_ion.SPM, pybop.lithium_ion.SPMe], @@ -29,6 +30,9 @@ def setup(self, model, parameter_set, optimiser): parameter_set (str): The name of the parameter set to be used. optimiser (pybop.Optimiser): The optimizer class to be used. """ + # Set random seed + set_random_seed() + # Create model instance model_instance = model(parameter_set=pybop.ParameterSet.pybamm(parameter_set))