# Remote Evaluation Each challenge has an evaluation script, which evaluates the submission of participants and returns the scores which will populate the leaderboard. The logic for evaluating and judging a submission is customizable and varies from challenge to challenge, but the overall structure of evaluation scripts is fixed due to architectural reasons. ## Writing Remote Evaluation Script The starter template for remote challenge evaluation can be found [here](https://github.com/Cloud-CV/EvalAI-Starters/tree/master/remote_challenge_evaluation). Here are the steps to configure remote evaluation: 1. **Setup Configs**: To configure authentication for the challenge set the following environment variables: 1. AUTH_TOKEN: Go to [profile page](https://eval.ai/web/profile) -> Click on `Get your Auth Token` -> Click on the Copy button. The auth token will get copied to your clipboard. 2. API_SERVER: Use `https://eval.ai` when setting up challenge on production server. Otherwise, use `https://staging.eval.ai`

3. QUEUE_NAME: Go to the challenge manage tab to fetch the challenge queue name. 4. CHALLENGE_PK: Go to the challenge manage tab to fetch the challenge primary key.
5. SAVE_DIR: (Optional) Path to submission data download location. 2. **Write `evaluate` method**: Evaluation scripts are required to have an `evaluate()` function. This is the main function, which is used by workers to evaluate the submission messages. The syntax of evaluate function for a remote challenge is: ```python def evaluate(user_submission_file, phase_codename, test_annotation_file = None, **kwargs) pass ``` It receives three arguments, namely: - `user_annotation_file`: It represents the local path of the file submitted by the user for a particular challenge phase. - `phase_codename`: It is the `codename` of the challenge phase from the [challenge configuration yaml](https://github.com/Cloud-CV/EvalAI-Starters/blob/master/challenge_config.yaml). This is passed as an argument so that the script can take actions according to the challenge phase. - `test_annotation_file`: It represents the local path to the annotation file for the challenge. This is the file uploaded by the Challenge host while creating a challenge. You may pass the `test_annotation_file` as default argument or choose to pass separately in the `main.py` depending on the case. The `phase_codename` is passed automatically but is left as an argument to allow customization. After reading the files, some custom actions can be performed. This varies per challenge. The `evaluate()` method also accepts keyword arguments. **IMPORTANT** ⚠️: If the `evaluate()` method fails due to any reason or there is a problem with the submission, please ensure to raise an `Exception` with an appropriate message.