Git Product home page Git Product logo

codabench's Introduction

CodaLab logo Circle CI codecov

What is CodaLab?

CodaLab is an open-source web-based platform that enables researchers, developers, and data scientists to collaborate, with the goal of advancing research fields where machine learning and advanced computation is used. CodaLab helps to solve many common problems in the arena of data-oriented research through its online community where people can share worksheets and participate in competitions.

To see Codalab Competition's in action, visit codalab.lisn.fr.

Codabench, the next-gen of CodaLab Competitions, is out. Try it out!

Documentation

Community

The CodaLab community forum is hosted on Google Groups.

Quick installation (for Linux!)

To participate in competitions, or even organize your own competition, you don't need to install anything, you just need to sign in an instance of the platform (e.g. this one). If you wish to configure your own instance of CodaLab competitions, here are the instructions:

Install docker and add your user to the docker group, if you haven't already

$ wget -qO- https://get.docker.com/ | sh
$ sudo usermod -aG docker $USER

Clone this repo and get the default environment setup

$ git clone https://github.com/codalab/codalab-competitions
$ cd codalab-competitions
$ cp .env_sample .env
$ pip install docker-compose
$ docker-compose up -d

Now you should be able to access http://localhost/

More details on how to configure your own instance:

License

Copyright (c) 2013-2015, The Outercurve Foundation. Copyright (c) 2016-2021, Université Paris-Saclay. This software is released under the Apache License 2.0 (the "License"); you may not use the software except in compliance with the License.

The text of the Apache License 2.0 can be found online at: http://www.opensource.org/licenses/apache2.0.php

Cite CodaLab Competitions in your research

@article{codalab_competitions_JMLR,
  author  = {Adrien Pavao and Isabelle Guyon and Anne-Catherine Letournel and Dinh-Tuan Tran and Xavier Baro and Hugo Jair Escalante and Sergio Escalera and Tyler Thomas and Zhen Xu},
  title   = {CodaLab Competitions: An Open Source Platform to Organize Scientific Challenges},
  journal = {Journal of Machine Learning Research},
  year    = {2023},
  volume  = {24},
  number  = {198},
  pages   = {1--6},
  url     = {http://jmlr.org/papers/v24/21-1436.html}
}

codabench's People

Contributors

acletournel avatar auroralauu avatar bbearce avatar binfeng1018 avatar brendanmyers88 avatar brendon-lind avatar cjh1 avatar ckcollab avatar dde6khkg avatar dependabot[bot] avatar didayolo avatar dtuantran avatar germs31 avatar gibsonbailey avatar ihsaan-ullah avatar jimmykodes avatar kamaldas492 avatar lbeziaud avatar logan-ruf avatar madclam avatar nehzux avatar obadas avatar ohmaley avatar tthomas63 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

codabench's Issues

Competition detail wireframing Finalize what I've got and push, determine if direction is good etc

So many nooks and crannies here.

Top display

  • Logo
  • Phases (previous, current, next)
  • Reward
  • Organizer

The v1.5 header is pretty nice:
image

Main area

Should probably have the following tabs/sections:

  • Details
    • Should show all of the "pages" the competition creator has made
  • Participate
    • Phase selection somehow
    • Submission description + submit button, like old style, also showing the results of your submissions
  • Leaderboard
    • Have phase selection at top
    • Display leaderboard + columns
    • Clicking on a column should sort it the opposite way
    • Should have the default column sorted the default way right off the bat
  • Discussion
    • Similar forum/discussion as existing version?
  • Teams?
    • Teams will be competition specific, I believe?

Default database settings (dj database url) not working properly

Ted couldn't get up and running forever, we had to use these defaults:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': 'db',
        'PORT': '5432',
    }
}

Ex error:

Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?```

`.toc.item` doesn't exist?

image

This may be due to some kind of race condition, like the elements don't exist yet?

This is probably the culprit, in init.js:

    // create sidebar and attach to menu open
    $('.ui.sidebar').sidebar('attach events', '.toc.item')

Push to Chahub

v1.5 pushes to Chahub, make v2 push as well.

  • Competitions
  • Submissions ??? (probably not implemented well enough)

User profile detail page wireframe

Spec

  • Full name
  • Job title
  • Avatar (gravatar ??)
  • Bio
  • Location
  • Competition list (participation or organization of competition -- display 2)
  • Website
  • Github
  • Linkedin
  • Twitter

Submissions

The ability to make submissions and view their output. Output should be streamed live during processing.

Submission management page wireframe

Should contain

  • A user filter field where the input filters on user name, email, etc.
  • A Competition typeahead dropdown where you select which competition to filter on
  • A table displaying all relevant submissions, pagination probably required
  • Table should show details about the submission(s):
    • file name
    • size
    • submitted at
    • started processing at
    • finished processing at
    • Which compute worker did it?
    • What queue was it on
    • What docker image(s) were used?
  • The table should have buttons for actions at the top and checkboxes on the left of each submission; there should also be a way to check ALL submissions (even on every subsequent page)
  • Available actions:
    • Re-run
    • Stop/cancel
    • Delete

Support directories INSTEAD OF zip files in competition bundles

Sometimes it's annoying to make changes to scoring program or reference data and have to re-zip it between each upload. Instead, allow specifying a directory in the bundle. The specified directory will be zipped and treated like a normal dataset from there!

Dataset upload handling discussion

When I upload a dataset now, I make a dummy Data object to hold all of the information while it's being uploaded. This means if we try to make a file with a unique name, upload fails, and we attempt to re-make the file we get a "Name is in use!" error.

I think we should re-factor this to not make a dummy dataset, but how should we handle it?

Flow

  1. POST to get a dataset, must provide name and type. Name must be unique to you. upload_completed_successfully is set to False by default
  2. From the above POST you receive a signed URL to upload to
  3. Begin the upload
  4. Finish upload, POST that upload is finished. upload_completed_successfully is set to True now

This is pretty gross, I feel.

New flow

  1. POST to get an upload URL, like /tmp/something
  2. Upload to that URL
  3. Tell Codalab you are finished, THEN create dataset with name and such

Problem here is what if dataset form has other errors... like missing/unique name and such...

Just thinking aloud, will want to make this work better before too much is built on top of it.

Cool animation addition

In the header we currently use the basic javascript animation, but we should make a small addition like bouncing a "signal" between each thing. We can figure out the code where it decides to draw a line between nodes and "amplify" it :)

Leaderboard API documentation

Potential problems

  • How do we get custom docs into DR?
  • DRF is not displaying the inline data for nested form creation

Competition creation via form

Screenshots of current form:

image

image

image

image

image

image

image

image

Current problems with form

  1. The validation for each page is pretty bad. It does not update in a nice way, often times you have to click "test save" to get validation to fire properly. This needs to be refactored.

User management wireframe

Should contain

  • A keyword filtering box:
    • Works with emails, username, first name, last name, etc. all relevant fields; use django-filters in DRF for this
  • A table of users, sign up date, email, etc. probably limited to the first 50 results
  • I don't think pagination will be required

Questions

  • What do we need this for? We haven't had to "ban" anyone from Codalab v1.5, what user management should we need really?

Analytics page wireframes

Should show the currently overall stats, like:

  • Total # of users
  • Total # of public competitions
  • Total # of submissions

Then a breakdown per year, per month... maybe like a tab for each year:

2015 - 2016 - 2017 - 2018

Then under each tab breakdowns

Month New user signups New public competitions New submissions
January 1 1 1
Feb 1 5 100

Have an "embed submit form" button

This feature should output code for an iframe that a user logged into Chahub can submit to.

Iframe content should be dynamically generated, because we may flip on/off features so the view of the embed may change

Simple page/auth refactors

  • Move $(document).ready stuff to appropriate pages -- shouldn't be in base template
  • Don't style .column, use Grids
  • Fix auth urls, shouldn't have direct links in urls.py for them
  • Fix login page, doesn't seem to be working?
  • Signup page doesn't seem to be working?

Server status wireframes

  • shows gauges/such kind of like health/status page right now.
  • CPU/memory usage and such
  • Links to rabbitmq mgmt, flower like current setup

image

Factories for testing

Some way to generate:

  • 10 new users
  • 10 new submissions
    • creating users if not provided
    • competition must be provided
    • optionally automatically execute submissions
    • optionally automatically attempt to add to leaderboard
  • 10 new competitions
    • must create phase/etc. required fields
    • optionally creating users
    • optionally creating submissions

Use factory boy

Competition creation & columns

If you try to create a competition now, columns have no way of referencing each other!

I suggest we make it so you cannot add column computations until a competition is saved. Also, you shouldn't be able to reference columns until they are individually saved, so when editing a competition that has already been saved, new column additions should be saved automatically.

Todo:

  • Make competition form "disable" computation section while competition.id == undefined
  • Make columns save as soon as input is saved, IF competition.id != undefined
  • Remove any columns without a .id from computation_columns selector
  • Make ColumnSerializer throw an error if you try to pass computation_columns during a create//when it doesn't have a parent yet

- OR -

  • Don't allow editing Leaderboard at all until competition has been saved, and then Leaderboard interacts with a leaderboard API all on its own..? This could be the same with collaborators tab!

Try out django channels

  • Use reconnecting web socket
  • Receive random things from the server
  • Use toastr to show these random things

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.