With Propulate, we provide a software for solving optimization problems that is especially adapted to the HPC setting. It is openly accessible and easy to use. Compared to a widely used competitor Propulate is faster - for a set of typical benchmarks at least an order of magnitude - and in some cases even more accurate.
Propulate is inspired by biology, in particular by evolution, that is selection, recombination, and mutation. Propulate uses mechanisms inspired by biological evolution, such as selection, recombination, and mutation. Evolution begins with a population of solution candidates each with randomly initialized genes. It’s an iterative process where the population at each iteration is called a generation. For each generation, the fitness of each candidate in the population is evaluated. The genes of the fittest candidates are incorporated in the next generation (see explanatory video).
Like in nature, propulate does not wait for all compute units to finish evaluation of the current generation. Instead, the compute units communicate the currently available information and use that to breed the next candidate immediately. This avoids waiting idly for other units and in consequence a load imbalance. Each unit is responsible for the evaluation of a single candidate. The result is a fitness level belonging to the genes of that candidate, allowing to compare and rank the candidates. This information is sent to other compute units as it becomes available. When a unit is finished evaluating a candidate and communicating the resulting fitness, it breeds the candidate for the next generation using the fitness values of all the candidates it evaluated and received from other units so far.
Propulate can be used for hyperparameter optimization and neural architecture search. It was already successfully applied for several accepted scientific publications. Applications include grid load forecasting, remote sensing, and structural molecular biology.
- Propulate Code Repository
- Explanatory video
- Paper Massively Parallel Genetic Optimization through Asynchronous Propagation of Populations