https://github.com/aidancrilly/mille-feuille

Bayesian Optimisation wrapper for HPC scale simulations

https://github.com/aidancrilly/mille-feuille

Science Score: 36.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: arxiv.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (17.9%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Bayesian Optimisation wrapper for HPC scale simulations

Basic Info
  • Host: GitHub
  • Owner: aidancrilly
  • License: mit
  • Language: Python
  • Default Branch: main
  • Size: 565 KB
Statistics
  • Stars: 2
  • Watchers: 1
  • Forks: 1
  • Open Issues: 1
  • Releases: 1
Created about 1 year ago · Last pushed 10 months ago
Metadata Files
Readme License

README.md

mille-feuille

workflow badge

mille-feuille

mille‑feuille acts as an orchestrator when running sampling, learning and optimisation loops against expensive MPI-parallelised HPC codes. For optimisation, mille‑feuille is a thin wrapper on top of BoTorch, providing the necessary interface between simulators, surrogates and optimisers.

Status: early days – very much a work in progress

Used in the following publications:


🔧 Install

Pip:

```bash

Development head

pip install git+https://github.com/aidancrilly/mille-feuille.git ```

Or clone repo and install dev environment:

bash git clone https://github.com/aidancrilly/mille-feuille.git cd mille-feuille pip install -e .[dev] python dev_fetch_deps.py # Grabs header file needed by C++ test script

Requires Python ≥ 3.11. Core dependencies (botorch, gpytorch, numpy, scipy, h5py, scikit‑learn …) are pulled in automatically.


🚀 Quick‑start

Take a look at the examples directory and sub-directories within:

  • test_executables: simple (fortran90 and C++) examples implemented for the test suite.
  • loops: example scripts which use mille‑feuille to perform sampling, learning and optimisation tasks. This example includes a template for a simulator with namelist based input and scheduling within a PBS environment.

Core components

Domains, States and Surrogates

mille‑feuille implements the following containers:

  1. InputDomain holds the bounded input domain which can be a mix of continuous and discrete dimension
  2. FidelityDomain holds information regarding the degrees of simulation fidelity.
  3. State holds the necessary data taken from simulation samples: indices (Is), inputs (Xs), output parameters (Ps), fidelities (Ss) and objectives (Ys)

These classes hold the necessary information to train surrogate models. mille‑feuille has a number of abstract base classes as well as concrete examples of surrogate models including Gaussian Processes (using GPyTorch and BOTorch) and Neural Network Ensembles (using PyTorch and BOTorch).

Simulators and Schedulers

mille‑feuille implements abstract base classes to interact with generic executable simulators. These follow a simple design pattern that simulators are expected to follow:

  1. External input files are written based on the candidate X values
  2. Batches of the (mpiexec'ed) simulator are launched via a Scheduler
  3. The simulator writes output files which must be post-processed to extract useful information (P) and the objective function value (Y)
  4. (Optionally) A clean up of the Simulator and Schedular output files is performed

Take a look at the examples and the tests to see implementations of Simulators and Schedulers.


Additional Info

CI makes use of cached IntelOneAPI install by scivision

✉️ Contact

Aidan Crilly · ac116@ic.ac.uk


Licensed under MIT © 2025

Owner

  • Name: Aidan Crilly
  • Login: aidancrilly
  • Kind: user

Schmidt Future AI in Science Postdoctoral Fellow, I-X, Imperial College London

GitHub Events

Total
  • Create event: 10
  • Release event: 1
  • Issues event: 3
  • Watch event: 3
  • Push event: 52
  • Public event: 1
  • Pull request event: 22
  • Fork event: 1
Last Year
  • Create event: 10
  • Release event: 1
  • Issues event: 3
  • Watch event: 3
  • Push event: 52
  • Public event: 1
  • Pull request event: 22
  • Fork event: 1

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 2
  • Total pull requests: 15
  • Average time to close issues: 8 days
  • Average time to close pull requests: about 8 hours
  • Total issue authors: 1
  • Total pull request authors: 2
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 11
  • Bot issues: 0
  • Bot pull requests: 3
Past Year
  • Issues: 2
  • Pull requests: 15
  • Average time to close issues: 8 days
  • Average time to close pull requests: about 8 hours
  • Issue authors: 1
  • Pull request authors: 2
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 11
  • Bot issues: 0
  • Bot pull requests: 3
Top Authors
Issue Authors
  • aidancrilly (2)
Pull Request Authors
  • aidancrilly (11)
  • github-actions[bot] (3)
Top Labels
Issue Labels
Pull Request Labels