optimas-org / optimas

Optimization at scale, powered by libEnsemble
https://optimas.readthedocs.io
Other
22 stars 13 forks source link

Fix memory issues in multitask generator #57

Closed AngelFP closed 2 years ago

AngelFP commented 2 years ago

When having a large number or samples (≳1000), the multitask generator was typically crashing due to out-of-memory errors, especially when running on a GPU. The crash happens while generating the next batch of configurations to evaluate, at the point where the acquisition function is optimized. This optimization begins by evaluating the acquisition function at 1000 points in a single batch (by default), which can result in a matrix that is larger than the available memory.

This PR adds the option of evaluating these points in several batches, so that each batch can actually fit in memory. This is done by passing the init_batch_limit to m.gen. Initially, the generator tries to optimize the acquisition function with init_batch_limit=1000. If this triggers an out-of-memory error, init_batch_limit is divided by 2 and a new trial is attempted. This process is repeated until the generator runs successfully.

Related issues: https://github.com/pytorch/botorch/issues/366, https://github.com/cornellius-gp/gpytorch/issues/647, https://github.com/cornellius-gp/gpytorch/issues/1978.

AngelFP commented 2 years ago

Looks like setuptools is currently kind of broken (https://github.com/pypa/setuptools/pull/3505) and impacting the installation of many packages. This is why the tests are failing. The breaking changes in setuptools have been reverted. All tests passing now. 👍