Giter Club home page Giter Club logo

evalai's Introduction


Join the chat at https://gitter.im/Cloud-CV/EvalAI Build Status codecov Coverage Status Code style: black Code Climate Documentation Status Twitter Follow

EvalAI is an open source platform for evaluating and comparing machine learning (ML) and artificial intelligence (AI) algorithms at scale.

In recent years, it has become increasingly difficult to compare an algorithm solving a given task with other existing approaches. These comparisons suffer from minor differences in algorithm implementation, use of non-standard dataset splits and different evaluation metrics. By providing a central leaderboard and submission interface, we make it easier for researchers to reproduce the results mentioned in the paper and perform reliable & accurate quantitative analysis. By providing swift and robust backends based on map-reduce frameworks that speed up evaluation on the fly, EvalAI aims to make it easier for researchers to reproduce results from technical papers and perform reliable and accurate analyses.

Features

  • Custom evaluation protocols and phases: We allow creation of an arbitrary number of evaluation phases and dataset splits, compatibility using any programming language, and organizing results in both public and private leaderboards.

  • Remote evaluation: Certain large-scale challenges need special compute capabilities for evaluation. If the challenge needs extra computational power, challenge organizers can easily add their own cluster of worker nodes to process participant submissions while we take care of hosting the challenge, handling user submissions, and maintaining the leaderboard.

  • Evaluation inside environments: EvalAI lets participants submit code for their agent in the form of docker images which are evaluated against test environments on the evaluation server. During evaluation, the worker fetches the image, test environment, and the model snapshot and spins up a new container to perform evaluation.

  • CLI support: evalai-cli is designed to extend the functionality of the EvalAI web application to your command line to make the platform more accessible and terminal-friendly.

  • Portability: EvalAI is designed with keeping in mind scalability and portability of such a system from the very inception of the idea. Most of the components rely heavily on open-source technologies โ€“ Docker, Django, Node.js, and PostgreSQL.

  • Faster evaluation: We warm-up the worker nodes at start-up by importing the challenge code and pre-loading the dataset in memory. We also split the dataset into small chunks that are simultaneously evaluated on multiple cores. These simple tricks result in faster evaluation and reduces the evaluation time by an order of magnitude in some cases.

Goal

Our ultimate goal is to build a centralized platform to host, participate and collaborate in AI challenges organized around the globe and we hope to help in benchmarking progress in AI.

Installation instructions

Setting up EvalAI on your local machine is really easy. You can setup EvalAI using docker: The steps are:

  1. Install docker and docker-compose on your machine.

  2. Get the source code on to your machine via git.

    git clone https://github.com/Cloud-CV/EvalAI.git evalai && cd evalai
  3. Build and run the Docker containers. This might take a while.

    docker-compose up --build
    
  4. That's it. Open web browser and hit the URL http://127.0.0.1:8888. Three users will be created by default which are listed below -

    SUPERUSER- username: admin password: password
    HOST USER- username: host password: password
    PARTICIPANT USER- username: participant password: password

If you are facing any issue during installation, please see our common errors during installation page.

Citing EvalAI

If you are using EvalAI for hosting challenges, please cite the following technical report:

@article{EvalAI,
    title   =  {EvalAI: Towards Better Evaluation Systems for AI Agents},
    author  =  {Deshraj Yadav and Rishabh Jain and Harsh Agrawal and Prithvijit
                Chattopadhyay and Taranjeet Singh and Akash Jain and Shiv Baran
                Singh and Stefan Lee and Dhruv Batra},
    year    =  {2019},
    volume  =  arXiv:1902.03570
}

Team

EvalAI is currently maintained by Rishabh Jain, Gunjan Chhablani . A non-exhaustive list of other major contributors includes: Deshraj Yadav, Ram Ramrakhya,Akash Jain, Taranjeet Singh, Shiv Baran Singh, Harsh Agarwal, Prithvijit Chattopadhyay, Devi Parikh and Dhruv Batra.

Contribution guidelines

If you are interested in contributing to EvalAI, follow our contribution guidelines.

Contributors

evalai's People

Contributors

aka-jain avatar alabhya268 avatar arun-jain avatar ayukha avatar ayushr1 avatar burnerlee avatar dependabot[bot] avatar deshraj avatar dexter1691 avatar gautamjajoo avatar gauthamzz avatar gchhablani avatar guyandtheworld avatar hargovindarora avatar harshithdwivedi avatar jayaike avatar kajol-kumari avatar khalidrmb avatar krtkvrm avatar live-wire avatar muddlebee avatar nikochiko avatar ram81 avatar rishabhjain2018 avatar sanji515 avatar sanketbansal avatar savish28 avatar spyshiv avatar suryansh5545 avatar taranjeet avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

evalai's Issues

Create endpoint to get details about a particular Challenge

Details about the endpoint:

Url: /api/challenges/challenge_host_team/<challenge_host_team_id>/challenge/<challenge_id>
Header: Authorization: Token
Method: GET
Response:
status on success: HTTP_200_OK
status on exception: HTTP_406_NOT_ACCEPTABLE
status on Unauthorized access: HTTP_203_NON_AUTHORITATIVE_INFORMATION

Setup ModelAdmin class for each model in Team app

This class should be derived from TimeStampedAdmin of base app.

Notable attributes should be

  • list_display
  • search_fields
  • list_filter

Note that this issue depends on #68 which involves the creation of TimeStampedAdmin class.

Create endpoint for updating the challenge

Details about the endpoint:

  • Url: /api/challenges/<challenge_id>/
  • Header: Authorization: Token
  • Method: PUT/PATCH
  • Response:
    • status on success: HTTP_200_OK
    • status on exception: HTTP_406_NOT_ACCEPTABLE
    • status on Unauthorized access: HTTP_203_NON_AUTHORITATIVE_INFORMATION

For more details, feel free to discuss on thread or gitter channel https://gitter.im/Cloud-CV/EvalAI

Create endpoint to get details about a particular ChallengeHost

Details about the endpoint:

Url: /api/hosts/challenge_host_team/<challenge_host_team_id>/challenge_host/<challenge_host_id>
Header: Authorization: Token
Method: GET
Response:
status on success: HTTP_200_OK
status on exception: HTTP_406_NOT_ACCEPTABLE
status on Unauthorized access: HTTP_203_NON_AUTHORITATIVE_INFORMATION

Create endpoint to get details about a particular ChallengeHostTeam

Details about the endpoint:

Url: /api/hosts/challenge_host_team/<challenge_host_team_id>/
Header: Authorization: Token
Method: GET
Response:
status on success: HTTP_200_OK
status on exception: HTTP_406_NOT_ACCEPTABLE
status on Unauthorized access: HTTP_203_NON_AUTHORITATIVE_INFORMATION

Scroll to details section on home page.

There is an option to scroll up to second section in Landing page by clicking on "Get Insight". Need to implement smooth scroll which will scroll the page with in limit of atmax 2ms.

In case of query, leave your comment here.

Add url names in team apps

Right now the urls defined in team apps have no names. Naming a url actually gives the flexibility of changing the uri very easily if everywhere urls are referred by url tags.

Create endpoint for deleting a challenge

Details about the endpoint:

  • Url: /api/challenges/<challenge_id>/
  • Header: Authorization: Token
  • Method: DELETE
  • Response:
    • status on success: HTTP_200_OK
    • status on exception: HTTP_406_NOT_ACCEPTABLE
    • status on Unauthorized access: HTTP_203_NON_AUTHORITATIVE_INFORMATION

For more details, feel free to discuss on thread or gitter channel https://gitter.im/Cloud-CV/EvalAI

Create endpoint to delete a team

Details about the endpoint:

  • Url: /api/teams/<team_id>/
  • Header: Authorization: Token
  • Method: DELETE
  • Response:
    • status on success: HTTP_200_OK
    • status on exception: HTTP_406_NOT_ACCEPTABLE
    • status on Unauthorized access: HTTP_203_NON_AUTHORITATIVE_INFORMATION

For more details, feel free to discuss on thread or gitter channel https://gitter.im/Cloud-CV/EvalAI

Add new Gulp task to build static files for prod.

Currently, Gulp is performing all tasks related to development. Need to make a new task so that it can minify all angular related and other static files (like CSS, Javascript) for production.

Task should minify all the files and can also do concatenation wherever needed.

Create endpoint for creating a new Challenge

Details about the endpoint:

  • Url: /api/challenges/
  • Header: Authorization: Token
  • Method: POST
  • Response:
    • status on success: HTTP_201_CREATED
    • status on exception: HTTP_406_NOT_ACCEPTABLE
    • status on Unauthorized access: HTTP_203_NON_AUTHORITATIVE_INFORMATION

For more details, feel free to discuss on thread or gitter channel https://gitter.im/Cloud-CV/EvalAI

Create endpoint to delete a ChallengeHost

Details about the endpoint:

Url: /api/hosts/challenge_host_team/<challenge_host_team_id>/challenge_host/<challenge_host_id>
Header: Authorization: Token
Method: DELETE
Response:
status on success: HTTP_200_OK
status on exception: HTTP_406_NOT_ACCEPTABLE
status on Unauthorized access: HTTP_203_NON_AUTHORITATIVE_INFORMATION

Create a new app named as `base`

This app will contain all the models which will be used accross the project. Also it will be the placeholder for many mixins.

This app will not have an entry in urls as this will be the placeholder for many functions, mixins and views(using as a package)

Create endpoint to delete a ChallengeHostTeam

Details about the endpoint:

Url: /api/hosts/challenge_host_team/<challenge_host_team_id>/
Header: Authorization: Token
Method: DELETE
Response:
status on success: HTTP_200_OK
status on exception: HTTP_406_NOT_ACCEPTABLE
status on Unauthorized access: HTTP_203_NON_AUTHORITATIVE_INFORMATION

Update status and permission fields in ChallengeHost model

Ideally status and permissions should be CharField instead of being foreign key fields to respective models. Reason for this being that at a time a particular challenge host will have a single status. So foreign key actually makes no sense here.

ChallengeHostPermission and ChallengeHostStatus should be removed.

Also while updating, make sure that string in each options(for status and permission) follows title case convention.

Add content to home page

Need to complete the Homepage:

Main content that will come:

  1. Top 5 challenges
  2. Intro to EvalAI
  3. How it works

Remove challenge field from ChallengeHostTeam model

Challenge model has FK on ChallengeHostTeam as creator field.

ChallengeHostTeam model has FK on Challenge model as challenge field.

Ideally the foreign key(FK) should be on Challenge because a single team will be creating numerous challenges, not the other way around.

SMTP server not working for sending mails

When a user registers, then a mail needs to be sent to the user's email id.

The current error is:

SMTPServerDisconnected at /api/auth/registration/
please run connect() first

Create endpoint to update a particular ChallengeHostTeam details

Details about the endpoint:

Url: /api/hosts/challenge_host_team/<challenge_host_team_id>/
Header: Authorization: Token
Method: PUT/PATCH
Response:
status on success: HTTP_200_OK
status on exception: HTTP_406_NOT_ACCEPTABLE
status on Unauthorized access: HTTP_203_NON_AUTHORITATIVE_INFORMATION

Create endpoint for creating a ChallengeHost

Details about the endpoint:

Url: /api/hosts/challenge_host_team/<challenge_host_team_id>/challenge_host
Header: Authorization: Token
Method: POST
Response:
status: HTTP_201_CREATED

Typo in README

The line That's it, Now to connect to dev server at http://127.0.0.1:8000 needs to be replaced with That's it, Now to connect to dev server at http://127.0.0.1:8888

Create a ModelAdmin class in base app to exclude created and modified fields

The admin class should live in base apps. It will be derived from ModelAdmin class and will use exclude to exclude created and modified fields.

This is so that anyone adding an object from the admin panel should not be shown in these fields as these are handled internally by Django before saving an object.

Name of the class should be TimeStampedAdmin and it should live in base/admin.py

Add created_by in ChallengeHostTeam

With the existing design, it is actually very different to fetch ChallengeHostTeam objects of a particular user. One of the hacks that can be used to solve this are

  • fetch challenge host object of current user with permission level as admin and then query by it(select_related) to ChallengeHostTeam. But this is very much for a simple use case.

Adding this column will help us deal with the use case of fetching all the challenge host team object of a single user.

Create endpoint to update the team details

Details about the endpoint:

  • Url: /api/teams/<team_id>/
  • Header: Authorization: Token
  • Method: PUT/PATCH
  • Response:
    • status on success: HTTP_200_OK
    • status on exception: HTTP_406_NOT_ACCEPTABLE
    • status on Unauthorized access: HTTP_203_NON_AUTHORITATIVE_INFORMATION

For more details, feel free to discuss on thread or gitter channel https://gitter.im/Cloud-CV/EvalAI

Create endpoint to update a particular ChallengeHost details

Details about the endpoint:

Url: /api/hosts/challenge_host_team/<challenge_host_team_id>/challenge_host/<challenge_host_id>
Header: Authorization: Token
Method: PUT/PATCH
Response:
status on success: HTTP_200_OK
status on exception: HTTP_406_NOT_ACCEPTABLE
status on Unauthorized access: HTTP_203_NON_AUTHORITATIVE_INFORMATION

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.