From 67a16fedbd25bc4ad99d7535c3ea61938c233e22 Mon Sep 17 00:00:00 2001 From: Frank Schneider Date: Wed, 17 Aug 2022 11:40:57 +0200 Subject: [PATCH] Performance profiles and competition score --- .assets/performance_profiles.png | Bin 0 -> 72369 bytes RULES.md | 53 ++++++++++++++++++++----------- 2 files changed, 34 insertions(+), 19 deletions(-) create mode 100644 .assets/performance_profiles.png diff --git a/.assets/performance_profiles.png b/.assets/performance_profiles.png new file mode 100644 index 0000000000000000000000000000000000000000..ec587313ec03d6453882ad68601c3028cbde549f GIT binary patch literal 72369 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 literal 0 HcmV?d00001 diff --git a/RULES.md b/RULES.md index 0633028ea..7e0f40260 100644 --- a/RULES.md +++ b/RULES.md @@ -21,7 +21,7 @@ - [Scoring](#scoring) - [Competition hardware](#competition-hardware) - [Defining target performance](#defining-target-performance) - - [Summary score using performance profiles](#summary-score-using-performance-profiles) + - [Competition score using performance profiles](#competition-score-using-performance-profiles) - [Awards and prize money](#awards-and-prize-money) - [Model Track](#model-track) @@ -388,41 +388,56 @@ All scored runs have to be performed on the competition hardware to allow for a #### Defining target performance -A target performance for the validation dataset will be defined for each [workload](#workloads) separately by taking the best performance achievable by a standard baseline algorithm (e.g. Adam, SGD with momentum, etc.). This baseline algorithm will follow the general process of the external tuning ruleset, with a slightly larger tuning budget to guarantee competitive performance. Both [tuning rulesets](#tuning) will then use the same target performance. The runtime of the baseline algorithm on each workload will be chosen to match published results and is constrained by the overall time budget of a single week for all public workloads. +A target performance on the validation dataset will be defined for each [workload](#workloads) separately by taking the best performance achievable by one of four standard algorithms (Adam, Nadam, Nesterov Momentum, and Heavy Ball Momentum). These target-setting algorithms will follow the general process of the external tuning ruleset, with a slightly larger tuning budget of $100$ trials to guarantee competitive performance. Once the best hyperparameters are determined, they are repeated $20$ times, with the target performance being the median over those $20$ runs. -#### Summary score using performance profiles +Both [tuning rulesets](#tuning) will use the same target performance. The runtime of the target-setting algorithms on each workload will be chosen to match published results and is constrained by the overall time budget of roughly a single week for all public workloads. The `max_runtime` for submissions on each workload is $\frac{1}{3}$ longer than the runtime of the target-setting algorithms. -We will score submissions using the following algorithm described in [Benchmarking Machine Learning with Performance Profiles](http://www.argmin.net/2018/03/26/performance-profiles/), originally from [Dolan and Moré](https://arxiv.org/abs/cs/0102001). Below we surface several relevant definitions from their work for easier readability, where we have $n_p$ benchmark problems we are evaluating on, and the user submission is abbreviated by $s$: +#### Competition score using performance profiles -- $r(p,s)$ = Time spent on problem $p$ by submission $s$ / Time spent on problem $p$ by best submission +We will aggregate the training times of a submission on all workloads using [Performance Profiles](http://www.argmin.net/2018/03/26/performance-profiles/) (originally from [Dolan and Moré](https://arxiv.org/abs/cs/0102001)). Below we surface several relevant definitions from their work for easier readability, before explaining how we integrate the performance profiles to reach a scalar competition score that will be used for ranking submissions. - - a.k.a. "performance ratio of submission $s$ on problem $p$" - - - Can take on values between $[1, \infty)$, lower is better. +*Notation:* We have a set $\mathcal{S} = \{s_1, s_2, \dots, s_k\}$ of in total $k$ submissions that we evaluate on a set of $n$ workloads: $\mathcal{W} = \{w_1, w_2, \dots, w_n\}$. For each submission $s$ and each workload $w$ we have a training time score $t_{s,w} \in [0,\infty)$. This is the time it took the submission to reach the target performance on this particular workload. -$$r_{p,s}=\frac{t_{p,s}}{\min\\{t_{p,s}:s \in \mathcal{S}\\}}$$ +##### Computing performance ratios -- $\rho_s(\tau) = (\frac{1}{n_p}) \cdot [\text{number of problems where}\, r(p,s)\leq \tau]$ +For all workloads and submissions, we first compute their performance ratio $r$, which is defined for a particular submission $\bar{s}$ and a particular workload $\bar{w}$ to be: - - Need to be careful about weighting tasks to not favor any data modality. We might need to weigh the problems somehow to handle different numbers of models on a given dataset +$$r_{\bar{s},\bar{w}} = \frac{t_{\bar{s},\bar{w}}}{\min_{s \in \mathcal{S}} t_{s,\bar{w}}} \in [1,\infty)$$ -**The area between a submitted performance profile $\rho_s(\tau) $ and the performance profile of the baseline submission will be used as a score to compare submissions, where the area is computed by integrating $\log\tau $ from $[0, \infty) $ OR $\tau $ from $[1, \infty) $, whether or not to log scale is a decision to be made after further investigation.** +This performance ratio $r(s,w)$ expresses the "time spent by submission $s$ on workload $w$" relative to the "time spent by the best submission on this workload". E.g. If a submission takes twice as long on a particular workload compared to the best submission on this workload it will have a performance ratio of $2$. Lower performance ratios are therefore better, with an optimal ratio of $1$ if the given submission is the fastest on this workload. -$$\rho_s(\tau)=\frac{1}{n_p} \text{size} \\{ p \in \mathcal{P}: r_{p,s} \leq \tau \\}$$ +##### Building performance profiles -For a given problem, we define the "speedup over the reference" as $\frac{t_{p, \text{ref}}}{t_{p,s}}$. For example, if a submission was 2x faster than the reference implementation, this would be equal to 2. +Next, we compute how often a submission is within a factor $\tau \in [1,\infty)$ of the optimal submission. For this, we determine the following function for every submission $\bar{s}$: -To have a simpler to interpret number for press releases, we will also release (in addition to the raw $t(p,s) $ values) the geometric mean of $\frac{t_{p, \text{ref}}}{t_{p,s}} $. +$$\rho_{\bar{s}}(\tau) = \left(\frac{1}{n}\right) \cdot \left[\text{number of workloads where}\, r_{\bar{s},w}\leq \tau\right]$$ -- Once we fix a reference we can rerun the reference on the new set of problems for each iteration of the contest (using the new competition hardware), and then report our year over year progress as a community in speeding up training +In other words, we compute the fraction of workloads where a submission $\bar{s}$ is less than $\tau$ away from the optimal submission. The function $\rho_{\bar{s}}(\tau)$ is monotonically increasing with $\tau$ and bounded between $0$ and $1$. -While performance profiles take a bit of effort to explain, we believe they are fairer and well-supported by research in the machine learning and optimization community. +An example of a performance profiles plot is shown below, where we plot $\rho_{\bar{s}}(\tau)$ for seven "submissions": + +![Example performance profile](.assets/performance_profiles.png) + +##### Integrating performance profiles for the competition score + +To get a scalar score that is usable for ranking submissions, we will integrate the performance profiles $\rho_{\bar{s}}(\tau)$ of all submissions to get their competition score $C_{\bar{s}}$, with + +$$C_{\bar{s}} = \frac{1}{r_{\text{max}}} \int_{1}^{r_{\text{max}}} \rho_{\bar{s}}(\tau) \,d\tau \in [0, 1].$$ + +The upper limit of the integral is given by the largest $r(s,w)$ in the competition, i.e. $r_{\text{max}} = \max_{s \in \mathcal{S}} \left(\max_{w \in \mathcal{W}} \left( r_{s,w} \right) \right)$. The integral is normalized by the total integration area, with higher competition scores being better. + +##### Alternative scores + +Performance profiles and the competition score derived from them, take a bit of effort to explain. +However, we believe that they are fairer and well-supported by research in machine learning and the optimization community. To have some simpler to interpret numbers, e.g. for press releases, we will also release a series of alternative scores. + +For a given workload $\bar{w}$, we define the "speedup of a submission $\bar{s}$ over the target-setting reference" as $\frac{t_{\text{ref}, \bar{w}}}{t_{\bar{s}, \bar{w}}}$. For example, if a submission was 2x faster than the target-setting reference, this would be equal to 2. In addition to the raw $t_{s,w}$ values, we will release the geometric mean of the speedups across all workloads, i.e. $\left(\prod_{w \in \mathcal{W}} \frac{t_{\text{ref}, w}}{t_{\bar{s}, w}}\right)^{\frac{1}{n}}$. #### Awards and prize money -An awards committee will award a prize for the "*Best Performance*" in each ruleset and an award for the "*Most Innovative*" submission. The prize for the best-performing submission will be awarded based on the [summary score](#summary-score-using-performance-profiles) on the full benchmark including [held-out workloads](#held-out-workloads). The most innovative submission will favor more out-of-the-box ideas that show great potential, even though the method may not be of practical value with the current landscape of models, software, etc. +An awards committee will award a prize for the "*Best Performance*" in each ruleset as well as a "*Jury Award*". The prize for the best-performing submission will be awarded based on the [competition score](#summary-score-using-performance-profiles) on the full benchmark including [held-out workloads](#held-out-workloads). The "*Jury Award*" will favor more out-of-the-box ideas that show great potential, even though the method may not be of practical value with the current landscape of models, software, etc. -The prize money for "*Best Performance*" in a ruleset is 20.000$ each. The "*Most Innovative*" submission will be awarded 10.000$. We reserve the right to split the prize money and distribute it among multiple submissions. +The prize money for "*Best Performance*" in a ruleset is 20.000$ each. The winner of the "*Jury Award*" will be awarded 10.000$. We reserve the right to split the prize money and distribute it among multiple submissions. The chairs of the MLCommons Algorithms Working Group (presently *George Dahl* and *Frank Schneider*) and their institutions (currently *Google Inc.* and the *University of Tübingen*) are ineligible to receive prize money. In addition, all individuals serving on the awards committee and their institutions are ineligible to win prize money (regular attendance at the working group's meetings is a prerequisite for joining the awards committee). A submission with at least one ineligible submitter may still win an award, but the prize money will then be awarded to the top-ranked submission that is eligible for prize money.