Open RobertTLange opened 2 years ago
@DiamonDiva - The basic building blocks are now implemented in the subpops
subdirectory. But there are still a couple of open tasks:
Protocol
could have two parts -- broadcast_fitness
and broadcast_state
.
I would like to add a new (abstract) strategy class wrapper(
BatchStrategy
), which takes a single strategy as input or instantiates one and then performance batched versions ofask
,tell
andinitialize
. This provides functionality for executing multiple sub-populations (with same population size) simultaneously in a vectorized/device-parallel fashion.The high-level brainstorming mindmap looks as follows:
The workload can be roughly be divided into 3 blocks:
BatchStrategy
wrapper with core functionality assuming independent subpopulations (no communication between them - see snippet below).CommunicationProtocol
extension (look for better name) that is applied before/after batchedtell
. E.g. share top-k members, some info between subpopulations.MetaController
extension which alters hyparameters similar to how PBT works (e.g. exploit better populations by copying their state, explore hyperparameters).Let's quickly sketch a rough design idea for the first part:
CC @DiamonDiva