Skip to content
This repository has been archived by the owner on Apr 28, 2023. It is now read-only.

Autotuning improvements #501

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

nicolasvasilache
Copy link
Contributor

@nicolasvasilache nicolasvasilache commented Jun 11, 2018

This PR isolates a small subset from @ttheodor's #453.
I took the commits that look independent, fix clear bugs or implement simple new behavior and do not touch autotuner-inl.h (which underwent some changes related to early exit recently and for which I need to look deeper).

Theodoros Theodoridis and others added 5 commits June 10, 2018 21:57
Using an unscaled fitness value for selection is problematic:

-Outstanding individuals take over very quickly, this leads to
premature convergence.

-When fitness values are close together, very litle selection
pressure is applied and selection is almost uniformly random.
Having slightly better fitness does not improve an individual's
survival chances.

-Transposing the fitness function (e.g. adding a constant value)
changes the selection probabilities even though the location of the
optimum (and the "shape" of the fitness) remain unchanged.

Scaling the fitness function helps ameliorate those issues.

Sigma scaling is used:

fitness' = max(fitness - (mean_fitness - 2 * std_fitness), 0)
Stochastic Universal Sampling is an improvement upon the roulette
algorithm that was previously used
This is needed following the changes to the build system.
It is too slow to converge and does not yield perf gains
@nicolasvasilache nicolasvasilache force-pushed the pr/autotuning-improvements branch from 065c935 to 380c054 Compare June 11, 2018 03:59
@@ -166,6 +195,7 @@ GeneticSearch::GeneticSearch(
lastBestConf(confs[0]),
numGenerations(numGenerations),
maxPopulationSize(populationSize),
matingPoolSize(populationSize * 3),

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In one of the subsequent commits I introduced a separate flag for the mating pool size (instead of hardcoding populationSize * 3).

@facebook-github-bot
Copy link

Thank you for your pull request. We require contributors to sign our Contributor License Agreement, and yours has expired.

Before we can review or merge your code, we need you to email [email protected] with your details so we can update your status.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants