A module allowing administration of challenges.
VocoLab is a module that allows administration of various challenges, it includes :
- user management (login/logout, signup, password reset)
- multiple challenge creation (or multiple task depending on setup)
- Submission upload & management
- Automatic evaluation of submissions (using a message queue & an asychronous evaluation worker)
- Configurable evaluations that can run in a remote server via multiple type of runners (bash, python, slurm, etc)
- Aggregation of results into a leaderboard.
- Access to all the information using an API.
Some feature details :
- A submission can be of anything that can be included in a zip archive.
- A large submission can benefit of multipart upload (file spliting).
- Each challenge (or task) can have only one evaluation script.
- Evaluation can be triggered on demand by admin or automaticly.
- Administrator can setup evaluation quotas (number of submissions per hour/day/month etc...)
- Each challenge (or task) can have multiple leaderboards.
- A leaderboard can contain any type of value in any format each entry consists of a json object.
- When an evaluation is completed all the relevant leaderboard are rebuilt.
- Evaluators can be any type of script (python/bash/etc..)
Setup can be handled in three ways the first is using docker which is the easier, the second is to perform a native installation of all the tools & components necessairy. The third is local mode which is used during devellopement to debug and test the different features.
Using docker, you can use the default configurations and create all the services without having to install and setup all dependencies.
This creates all the necessary services to run VocoLab. To use the docker version, you need to install docker & docker-compose on your server (installation instructions). Once docker is up and running you can setup vocolab :
- Clone this repository
git clone <url> <folder>
somewhere on your server. - Edit the default environment default settings in the docker-compose.yml file, and replace them with your own (API_BASE_URL, SMTP settings, etc..), there is a detailed description of all possible env variables here.
- Start the services
docker-compose up -d
(the-d
allows docker to be run un daemon mode). - A reverse proxy will need to be setup to allow access to the API from the outside world. (see how to setup a reverse proxy in the setup section)
- Now all you need to do is add some challenges/users/leaderboards and you are good to go. You can find a quick-setup example with our own data here
The evaluation worker node will probably need to be local or on another machine if you require more computing power for evaluation. You can see how to set-up remote workers in the setup section
A manual setup requires a bit more work to setup as you will have to manage and install all the dependencies.
To run this project, you will need to add the following environment :
- python 3.7+
- An instance of RabbitMQ installed.
- A daemon manager (SystemD, SupervisorD, etc...)
- A reverse proxy (Nginx, Apache, etc..)
A detailed explanation on how to install & setup all the services manually can be found here
To configure your environment a .env file is used. you need to specify an
environment variable named VC_ENV_FILE
configured, so the module knows were
load variables from.
For an example on the minimum setup see example.env
More information on settings and the meaning of each parameter can be found here
If some variables are not set correctly it might affect some features of the module as they are a hard dependency.
Install the following dependencies:
- python 3.7+
- An instance of RabbitMQ installed.
Clone the project
git clone <url> <vocoLab>
Go to the project directory
cd vocoLab
Create an environment and install dependencies
python -m virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
pip install -r requirements-dev.txt
Install the package locally
pip install -e .
Now you can run the following commands :
voco api:init
voco
: CLI with all the admin tools.voco api:serve
: run the api in debug mode locally.voco worker:run -t eval
: run the evaluation worker.voco worker:run -t update
: run the update worker.
More detailed documentation of each component and how it works can be found in the docs folder.
The samples folder contains some examples of challenges/users & leaderboards to allow illustration of how the tool works.
To run tests execute the following command : pytest
For more information on tests see docs/testing
vocolab module
Copyright (C) 2021 Nicolas Hamilakis, CoML TEAM, École Normale Supérieure Paris, Inria Paris Research This program and all its files are licenced under the GNU GENERAL PUBLIC LICENSE Version 3; This program comes with ABSOLUTELY NO WARRANTY; This is free software, and you are welcome to redistribute it under certain conditions; For more information on the Terms & Conditions see the details in the LICENCE.txt file attached to this project, or consult the online version of the GPL v3