beat issueshttps://gitlab.idiap.ch/groups/beat/-/issues2016-03-16T12:00:17Zhttps://gitlab.idiap.ch/beat/beat.web/-/issues/169Video tutorials2016-03-16T12:00:17ZAndré AnjosVideo tutorialsFor each set of key pages on the platform, it would be nice to have video tutorials explaining what those objects are for and how to use the site. This would complement well any tutorial material we may have.
Here is a preliminary lis...For each set of key pages on the platform, it would be nice to have video tutorials explaining what those objects are for and how to use the site. This would complement well any tutorial material we may have.
Here is a preliminary list of (short) videos that could be done:
- [ ] platform overview and organisation
- [ ] experiments (intro, list)
- [ ] experiments (configurator, launching)
- [ ] searching (and reporting when available)
- [ ] toolchains (intro, list, creation, edition)
- [ ] data formats (intro, list, creation, edition)
- [ ] algorithms (list, creation, edition)
- [ ] algorithms (synchronisation basics)
- [ ] libraries
- [ ] teams
- [ ] searching (how to organise a competition)
- [ ] searching (how to organise a study group)
- [ ] backend (environments, parallel processing)
The idea is that those videos are somehow easily accessible (linked) from the beat.web website in key locations.Open-source ReleaseAndré AnjosAndré Anjoshttps://gitlab.idiap.ch/beat/beat.web/-/issues/341[ui] Replace on the frontpage the example toolchain by the public activity feed2016-03-16T12:01:27ZSébastien MARCEL[ui] Replace on the frontpage the example toolchain by the public activity feedhttp://beatweb-staginghttp://beatweb-stagingOpen-source Releasehttps://gitlab.idiap.ch/beat/beat.web/-/issues/418[reports] plot_404 error2016-03-21T15:27:04ZFlavio TARSETTI[reports] plot_404 erroron editable reports, plotter seems to sometimes get no experiment informationon editable reports, plotter seems to sometimes get no experiment informationOpen-source ReleaseFlavio TARSETTIFlavio TARSETTIhttps://gitlab.idiap.ch/beat/beat.web/-/issues/276[search] Plot template not showing up on search2016-04-04T14:37:02ZFlavio TARSETTI[search] Plot template not showing up on searchMissing the new feature "plot template selection" on searchMissing the new feature "plot template selection" on searchFlavio TARSETTIFlavio TARSETTIhttps://gitlab.idiap.ch/beat/beat.web/-/issues/419[reports] unable to do a PUT on reports2016-04-06T09:09:00ZFlavio TARSETTI[reports] unable to do a PUT on reportsThis is due to the merge/expand that corrupts the selected_template in the database.This is due to the merge/expand that corrupts the selected_template in the database.Open-source ReleaseFlavio TARSETTIFlavio TARSETTIhttps://gitlab.idiap.ch/beat/beat.web/-/issues/420[reports] merge/expand correct flag to be set2016-04-06T09:09:01ZFlavio TARSETTI[reports] merge/expand correct flag to be setOpen-source ReleaseFlavio TARSETTIFlavio TARSETTIhttps://gitlab.idiap.ch/beat/beat.web/-/issues/367[backend] Wipe cache and cancel experiment actions are not working2016-06-24T10:27:57ZAndré Anjos[backend] Wipe cache and cancel experiment actions are not workingCurrently, both result in a time out. Needs to test if the backend is working properly.Currently, both result in a time out. Needs to test if the backend is working properly.Open-source ReleaseAndré AnjosAndré Anjoshttps://gitlab.idiap.ch/beat/beat.web/-/issues/7Integration with the new scheduler2016-06-24T10:33:06ZAndré AnjosIntegration with the new schedulerHere is a task list with topics that require attention for the integration:
- [X] The most important feature to be integrated is the ability to start/stop the experiment. This has been implemented in the scheduler.
- [X] When deletin...Here is a task list with topics that require attention for the integration:
- [X] The most important feature to be integrated is the ability to start/stop the experiment. This has been implemented in the scheduler.
- [X] When deleting an experiment, if the experiment is still running, then the experiment must be cancelled by the scheduler
- [X] The update of the dataflow drawing while the toolchain executes should respect the new abilities of the scheduler to report start/end of each block and for the experiment as they arrive. There is no need anymore for the platform to guess that certain blocks are being executed.
- [ ] There should be an administrative page on the beat web site that allows for:
- [X] Viewing the current scheduler state through the `/state` API call
- [X] Cancel all running experiments
- [X] Clean the cache content
- [ ] Change the scheduling policy
- [ ] Change the debugging level
- [X] Change the queue/environment/worker/slot configuration.
- [X] The web server should hold and allow for administrative change of queue/environment/worker/slot properties
- [x] For each block of the experiment, the user should be allowed to select:
- [x] Processing queue to use, following user rights
- [x] Processing environment to use
- [x] Number of slots to occupy
These information should be transmitted to the scheduler.
Hints on behavior and implementation details:
### Use Cases
1. Simple xp submission by an user with no particular rights
2. A xp submission with a user which has 1000 points of reputation
3. A xp submission with a user that has priority on a given queue
### New Tables on the Django DB:
We must first define an "environment". The environment has a name (e.g. "Python"), a version (e.g. "2.7.3"), a OS (e.g. "Debian Wheezy 7.2 (x86_64)"), a rich description string which defines all properties of that environment, including installed packages.
Each "queue" in the system is defined with a name (e.g. "3 hours/4G on Python"), a memory limit (e.g. "4096Mb"), a time limit (e.g. "3 hours"), an environment (e.g. "Python") and the number of slots the queue can occupy, at most, on every machine available in the system.)
Each user "library" consists of a bunch of files that are packaged together and put on a certain directory. Their organisation follows the same strategies as for algorithms. The sole exception is that each library is represented by a directory rather than a single file. The "library" is defined with a name (e.g. "lbp"), a version (e.g. "1.0"), an environment compatibility list and a list of other libraries this library depends on.
We must also define another table called "GroupQueueRights" in which we are going to track 4 aspects: queue - group - max slots - priority. For example: a user belonging to group "default" may be able to use 5 slots on queue "3 hours/4G on Python" with priority 0.
A user may belong to several groups. In this case, the platform should only consider the maximum slots/priority for each Queue when submitting the job to the scheduler.
E.g.: on GroupQueueRights table (queue name, group name, slots, priority):
```text
Row 1: Q1 - default - 2 - 0
Row 2: Q1 - special - 1 - 1
Row 3: Q1 - super - 3 - 1
User "A" belongs to group "default": Computed user queue rights are (Q1 - 2 - 0)
User "B" belongs to groups "default" and "super": Computed user queue rights are (Q1 - 3 - 1)
User "C" belongs to groups "default" and "special": Computed user queue rights are (Q1 - 2 - 1)
```
### Worker Perspective
The worker installed in each machine knows where each local environment with a given name and version is installed and how to execute user programs using that environment.
The program execution receives as parameters:
1. the environment
2. the parameters to call the environment executable with
> N.B.: The parameter list API for all environment executables defines our so-called Sandboxing
> API. It has to be respected for all environment implementations.
The worker is just told what to do - it does not check for rights or know any of that.
### User Perspective Operation
The user selects an overall execution queue for that experiment. It may also specify individual queues for individual blocks. The platform only allows the user to select queues in which the user has at least 1 slot for processing (other queues, even if they exist, are suppressed from the selection box).
After basic queue selection, every block on the toolchain executes in a single slot for the selected queues. If the algorithm does support a multi-slot operation, then the platform will allow the user to select how many slots (max'ed at the user rights) to use for a given block.
Users can submit as many jobs as they want. They will be treated according to queue rights and farm availability.
### Web Platform
In possession of all this information, the web platform will submit to the scheduler, the experiment for execution. Each request for execution contains 4 components:
* Toolchain
* Configuration, containing the queues, libraries and slots the user wants to deploy
* Username or ID
* User queue rights - computed from the max of all the groups the user belongs to
> NB: The reputation can be implemented as a multiplying factor. (ceilled at the total # of slots for a
> particular queue). For example, a user with Reputation = 200 has 2x more processing power than the established
> User queue rights.
### Scheduler
The scheduler will receive run-xp requests and breaks down the experiments in jobs (representing the blocks) with dependencies.
At each queue loop it must decide what to execute based on:
* Current slot availability for the different queues/users (user-queue occupation state needs to be stored)
* Job queueing time (how old is the job?)
* User queue rights/priority
> N.B.: If the Scheduler receives a second job for the same user, the queue rights for that user will be updated
> with the new values, in case they differ.
### Simplifications for first implementation
1. There is only 1 environment installed, based on Python/"execute_single_algorithm.py".
2. All queue priorities are set to 0 (i.e. the scheduler can ignore it)
3. #slots/memory goes in pairs until we understand all this a bit better
4. The scheduler implements only a FIFO (first queued/runnable is run) strategy based on the job submission age
5. Libraries must be written in pure Python
6. No reputation system is in place just yetOpen-source Releasehttps://gitlab.idiap.ch/beat/beat.web/-/issues/406[teams] Teams can be deleted, even if there are resources which are shared th...2016-09-16T09:35:04ZAndré Anjos[teams] Teams can be deleted, even if there are resources which are shared through themThere is, currently, some inconsistence with the team deletion property and sharing.
If a contribution is shared via a team with someone, then the contribution is marked as "Shared" (sharing status) and the team is add to its ``shared...There is, currently, some inconsistence with the team deletion property and sharing.
If a contribution is shared via a team with someone, then the contribution is marked as "Shared" (sharing status) and the team is add to its ``shared_with_team`` list.
The owner of the team may now proceed and delete the team, which will leave the contribution marked with ``Shared``, but now with no one on the ``shared_with_team`` list.
If the user has used the contribution, I'm not sure in which status that leaves us.
My understanding for the simplest way out is this: if a team has been used to share a contribution, it can no longer be deleted.Open-source Releasehttps://gitlab.idiap.ch/beat/beat.web/-/issues/393[toolchains] Cancelling edition generates a 404 (NOT FOUND)2017-03-20T14:20:09ZAndré Anjos[toolchains] Cancelling edition generates a 404 (NOT FOUND)How to reproduce this issue:
1. Create a new toolchain clicking on the New button
2. Click on the "red" toolbar button
Results in: 404
Should result in: toolchain list being displayed (or return to the previous page)How to reproduce this issue:
1. Create a new toolchain clicking on the New button
2. Click on the "red" toolbar button
Results in: 404
Should result in: toolchain list being displayed (or return to the previous page)Update of staging to version 1.2.0Philip ABBETPhilip ABBEThttps://gitlab.idiap.ch/beat/beat.web/-/issues/471Experiment quirk on production platform2017-06-30T12:42:25ZAndré AnjosExperiment quirk on production platformFor some reason this experiment was working before the update:
https://www.beat-eu.org/platform/experiments/anjos/tutorial/eigenface/1/atnt-eigenfaces-88-comp/
Now, if I fork it (change the number of components parameter to it does not...For some reason this experiment was working before the update:
https://www.beat-eu.org/platform/experiments/anjos/tutorial/eigenface/1/atnt-eigenfaces-88-comp/
Now, if I fork it (change the number of components parameter to it does not hit the cache), it cannot run anymore. E.g.:
https://www.beat-eu.org/platform/experiments/anjos/tutorial/eigenface/1/atnt-eigenfaces-120-comp-check/
The failed experiment complains about an error on the user side. Any suggestions?https://gitlab.idiap.ch/beat/beat.core/-/issues/44Agent is unprotected in case the user sends to many "nxt" commands2017-08-06T11:17:03ZAndré AnjosAgent is unprotected in case the user sends to many "nxt" commandsWe should put in place:
1. A check in the agent side (around line 150), that prevents the agent to measure the length of `None'
2. A new protocol reply possibility for an erroneous condition on the `nxt` operation.
We should put in place:
1. A check in the agent side (around line 150), that prevents the agent to measure the length of `None'
2. A new protocol reply possibility for an erroneous condition on the `nxt` operation.
BTAS TutorialAndré AnjosAndré Anjoshttps://gitlab.idiap.ch/beat/beat.core/-/issues/42[io] Execute externally currently requires twisted (async.run)2017-08-06T11:17:03ZLaurent EL SHAFEY[io] Execute externally currently requires twisted (async.run)With the introduction of the new I/O framework, the execution of a job requires to launch the I/O daemon (that will launch and control the user process). This daemon currently needs twisted (async.run) to be executed, while we would idea...With the introduction of the new I/O framework, the execution of a job requires to launch the I/O daemon (that will launch and control the user process). This daemon currently needs twisted (async.run) to be executed, while we would ideally prefer not to have such a dependency in beat.core.
To fix this, an optimal decapsulation of the communication via pipes from the I/O daemon would be required, as well as its integration into beat.core.BTAS TutorialAndré AnjosAndré Anjoshttps://gitlab.idiap.ch/beat/beat.core/-/issues/41[io] Optimization of I/O when using pipes2017-08-06T11:17:03ZLaurent EL SHAFEY[io] Optimization of I/O when using pipesWith the introduction of communication via pipes between the user process and the daemon, it may happen that a chunk of data is decoded from a baseformat and then re-encoded (into a baseformat) to send it through pipe. This is the case, ...With the introduction of communication via pipes between the user process and the daemon, it may happen that a chunk of data is decoded from a baseformat and then re-encoded (into a baseformat) to send it through pipe. This is the case, when next() is called: a chunk of data is then read using a CachedDataSource (that will decode from a baseformat) and then sent through a pipe (and hence will be re-encoded into a baseformat). This is of course suboptimal and may be fixed by specializing the CachedDataSource.BTAS TutorialAndré AnjosAndré Anjoshttps://gitlab.idiap.ch/beat/beat.core/-/issues/40Cleanup of executor/dataformats/algorithms/libraries/schema loading2017-08-06T11:17:03ZAndré AnjosCleanup of executor/dataformats/algorithms/libraries/schema loadingAs of today, we moved the definition of these objects and functions to beat.backend.python. The backend does not need to be able to validate objects, only to load them and instantiate a runner. We should revise and clean-up this relation...As of today, we moved the definition of these objects and functions to beat.backend.python. The backend does not need to be able to validate objects, only to load them and instantiate a runner. We should revise and clean-up this relationship.BTAS TutorialAndré AnjosAndré Anjoshttps://gitlab.idiap.ch/beat/beat.core/-/issues/39inputs/outputs cleanup w.r.t beat.backend.python2017-08-06T11:17:03ZAndré Anjosinputs/outputs cleanup w.r.t beat.backend.pythonAs of today there is some functionality of beat.backend.python that is duplicated in this package. We should clean-up and organised it so there is no repetition of code, respecting a good DRY principle.As of today there is some functionality of beat.backend.python that is duplicated in this package. We should clean-up and organised it so there is no repetition of code, respecting a good DRY principle.BTAS TutorialAndré AnjosAndré Anjoshttps://gitlab.idiap.ch/beat/beat.core/-/issues/38discover_environments() does not crash when the same environment/version is d...2017-08-06T11:17:03ZLaurent EL SHAFEYdiscover_environments() does not crash when the same environment/version is detected multiple timesWhile this should raise an exception.While this should raise an exception.BTAS TutorialAndré AnjosAndré Anjoshttps://gitlab.idiap.ch/beat/beat.core/-/issues/35Move command-line client to another package2017-08-06T11:17:03ZAndré AnjosMove command-line client to another packageAs discussed, we should move the command-line client to another package, since it depends on the `beat.web` API. This creates some sort of reverse dependence which we should get rid of.As discussed, we should move the command-line client to another package, since it depends on the `beat.web` API. This creates some sort of reverse dependence which we should get rid of.BEAT TourAndré AnjosAndré Anjoshttps://gitlab.idiap.ch/beat/beat.core/-/issues/34JSON declarations should be versioned2017-08-06T11:17:03ZAndré AnjosJSON declarations should be versionedWe should include a version field on the JSON declaration to allow for changes on the declaration to co-exist.We should include a version field on the JSON declaration to allow for changes on the declaration to co-exist.BTAS TutorialAndré AnjosAndré Anjoshttps://gitlab.idiap.ch/beat/beat.core/-/issues/32Dash '-' as a valid (or invalid) character for element names (dataformats, al...2017-08-06T11:17:03ZLaurent EL SHAFEYDash '-' as a valid (or invalid) character for element names (dataformats, algorithms, etc.)?I've noticed an inconsistency wrt. the usage of the dash '-' character for element names.
There is currently a bunch of elements (e.g. algorithm 'ptome/fingervein-miura_scoring/1/') defined on the platform, which contains the '-' char...I've noticed an inconsistency wrt. the usage of the dash '-' character for element names.
There is currently a bunch of elements (e.g. algorithm 'ptome/fingervein-miura_scoring/1/') defined on the platform, which contains the '-' character.
In contrast, the '-' character is not 'always' part of the valid character at the JSON validation schema level (see beat/core/schema/experiment.json line 48).
The list of valid characters needs to be properly defined, and the characters accepted by the beat.web interface need to match the ones of the JSON validation schema.BEAT TourLaurent EL SHAFEYLaurent EL SHAFEY