diff --git a/DOCUMENTATION.md b/DOCUMENTATION.md index 05d6515bd..d04b247f3 100644 --- a/DOCUMENTATION.md +++ b/DOCUMENTATION.md @@ -222,7 +222,6 @@ def update_params( - Cannot replace the model parameters with pre-trained ones. - Batch norm should work here because the `model_fn` will return updated batch norm moving averages when it is told to with `update_batch_norm`. - ###### Prepare for evaluation function ```python @@ -278,7 +277,7 @@ def data_selection( In general, with noisy, non-deterministic training, evaluation frequency can affect training time measurements as more "bites of the apple" potentially allows the training code to exploit instability. We also want to discourage submissions from complicated and unrealistic logic that attempts to guess when training is close to complete and increases the evaluation rate, while not producing a well-sampled training curve at the start of training. Simply allowing submissions complete freedom over evaluation frequency encourages competitors to work to minimize the number of evaluations, which distracts from the primary goal of finding better training algorithms. -Submissions are eligible for an untimed eval every `eval_period` seconds. Before proceeding to evaluation, the submission can prepare the model through a call to `prepare_for_eval`, effectively modifying the model parameters and state as well as the the optimizer state. Any additional evaluations performed by the submission code count against the runtime for scoring. +Submissions are eligible for an untimed eval every `eval_period` seconds. Before proceeding to evaluation, the submission can prepare the model through a call to `prepare_for_eval`, effectively modifying the model parameters and state as well as the the optimizer state. Any additional evaluations performed by the submission code count against the runtime for scoring. The harness that runs the submission code will attempt to eval every `eval_period` seconds by checking between each submission step (call of `update_params`) whether it has been at least `eval_period` seconds since that last eval, if so, the submission is given the possibility to prepare for evaluation (through a timed call to `prepare_for_eval`). If the accumulated runtime does not exceed the maximum allowed runtime after the preparation step, the clock is paused, and the submission is evaluated. This means that if calls to `update_params` typically take a lot more than `eval_period` seconds, such submissions will not receive as many untimed evals as a submission that had an `update_params` function that took less time. However, for appropriate settings of `eval_period`, we expect this to be quite rare. Submissions are always free to restructure their `update_params` code to split work into two subsequent steps to regain the potential benefits of these untimed model evaluations. For each workload, the `eval_period` will be set such that the total evaluation time is roughly between 10% and 20% of the total training time for the target-setting runs. #### Valid submissions diff --git a/GETTING_STARTED.md b/GETTING_STARTED.md index 006b972ec..7d53c35e2 100644 --- a/GETTING_STARTED.md +++ b/GETTING_STARTED.md @@ -18,6 +18,8 @@ - [Docker Tips](#docker-tips) - [Score your Submission](#score-your-submission) - [Running workloads](#running-workloads) +- [Package your Submission code](#package-your-submission-code) +- [Package Logs for Self-Reporting Submissions](#package-logs-for-self-reporting-submissions) ## Set Up and Installation @@ -80,7 +82,6 @@ To set up a virtual enviornment and install this repository pip3 install -e '.[full]' ``` -
Per workload installations @@ -414,22 +415,24 @@ submission_folder/ ``` Specifically we require that: + 1. There exist subdirectories in the the submission folder named after the ruleset: `external_tuning` or `self_tuning`. -2. The ruleset subdirectories contain directories named according to -some identifier of the algorithm. -3. Each algorithm subdirectory contains a `submission.py` module. Additional helper modules are allowed if prefer to you organize your code into multiple files. If there are additional python packages that have to be installed for the algorithm also include a `requirements.txt` with package names and versions in the algorithm subdirectory. +2. The ruleset subdirectories contain directories named according to +some identifier of the algorithm. +3. Each algorithm subdirectory contains a `submission.py` module. Additional helper modules are allowed if prefer to you organize your code into multiple files. If there are additional python packages that have to be installed for the algorithm also include a `requirements.txt` with package names and versions in the algorithm subdirectory. 4. For `external_tuning` algorithms the algorithm subdirectory should contain a `tuning_search_space.json`. To check that your submission folder meets the above requirements you can run the `submissions/repo_checker.py` script. ## Package Logs for Self-Reporting Submissions + To prepare your submission for self reporting run: -``` +```bash python3 package_logs.py --experiment_dir --destination_dir ``` -The destination directiory will contain the logs packed in studies and trials required for self-reporting. +The destination directiory will contain the logs packed in studies and trials required for self-reporting. **Good Luck!**