Git Product home page Git Product logo

vlab-bench's Introduction

VLab-Bench

Vlab image VLab-Bench is a suite that offers benchmarks for real-world scientific design tasks and optimisation algorithms for materials science and biology.

Benchmark results

Electron ptychography

Result image The reconstructed phases (of the object transmission functions) with parameters obtained from the corresponding DFO methods on a MoS2 dataset.

Synthetic functions

Result table Results are averaged over 5 trials, and ± denotes the standard deviation.

Installation

The code requires python>=3.9. Installation Tensorflow and Keras with CUDA support is strongly recommended.

Install vlab_bench:

pip install -e "git+https://github.com/poyentung/VLab-Bench.git"

or clone the repository to local devices:

git clone https://github.com/poyentung/VLab-Bench.git
cd vlab_bench; pip install -e ./

[Optional] Install TurBO and/or LaMCTS

git clone https://github.com/uber-research/TuRBO.git
pip install -e TuRBO/./
git clone https://github.com/facebookresearch/LaMCTS.git
pip install -e LaMCTS/LaMCTS/LA-MCTS/./

[Optional] Install py4DSTEM

pip install py4dstem

Or check installation for GPU acceleration.

Getting started

Virtual lab examples

We run parameter optimization for electron ptychography using TuRBO on a MoS2 dataset in 14 dimensions for 20 samples with 30 initial data points. Note that num_samples should include the init_samples for TuRBO and LaMCTS, i.e., num_samples=50 and init_samples=30 represent 20 aquisition of samples (50 - 30 = 20). More detailed hyper-parameters can be adjusted in the run_pytho.yaml.

python scripts/run_ptycho.py method=turbo \
                             func=ptycho \
                             dims=14 \
                             num_samples=50 \
                             init_samples=30

Synthetic function examples

We evaluate TuRBO on Ackley in 10 dimensions for 1,000 samples with 200 initial data points. Note that num_samples should include the init_samples for TuRBO and LaMCTS, i.e., num_samples=1000 and init_samples=200 represent 800 aquisition of samples (1000 - 200 = 800). More detailed hyper-parameters can be adjusted in the run.yaml.

python scripts/run.py method=turbo \
                      func=ackley \
                      dims=10 \
                      num_samples=1000 \
                      init_samples=200

We can also run multiple conditions in a run. For example, we want to evaluate MCMC, CMA-ES and Dual Annealing on Ackley in 10 dimensions for 1,000 samples with 200 initial data points .

python scripts/run.py -m method=mcmc,cmaes,da \
                         func=ackley \
                         dims=10 \
                         num_samples=20 \
                         init_samples=200

Available real-world tasks

Please send us a PR to add your real-world task!

Available synthetic function tasks

  • Ackley
  • Rastrigin
  • Rosenbrock
  • Schwefel
  • Michalewicz
  • Griewank

Available optimisation algorithms

Please send us a PR to add your algorithm!

License

The source code is released under the MIT license, as presented in here.

vlab-bench's People

Contributors

poyentung avatar

Stargazers

 avatar  avatar Bo Peng avatar Deep Heisenberg avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.