Repository navigation
Test federated webapp training - #1230
Conversation
0e4db21 to
2f8bbc6
Compare
2f8bbc6 to
f1dc368
Compare
JulienVig
left a comment
There was a problem hiding this comment.
The objective of issue #1196 is to test browser-browser collaboration while the current implementation implements browser-Node.js collaboration. For federated learning this doesn't make a big difference since participants don't directly interact with each other but for decentralized learning the current approach doesn't really address the issue. I'm curious if there was a specific reason that pushed you towards relying on Node.js?
Also, I find the current implementation a bit overkill for what it does, do we actually need such a harness? I've pushed a temporary commit with an alternative implementation that doesn't rely on a harness or a separate cypress config (feel free to remove my commit). Were there cases that couldn't not be addressed in a simpler manner?
Let's discuss these points in tomorrow's meeting!
45fccc4 to
0b5c954
Compare
0b5c954 to
1510f8f
Compare
1510f8f to
dc46423
Compare
JulienVig
left a comment
There was a problem hiding this comment.
Thanks! I noticed that you removed the package.json commands to run the collaborative tests manually, was there a specific reason? I think it would be useful for debugging to be able to run the tests outside of the CI.
Other than that I only have a minor comments, feel free to adapt the suggested comments
I just wanted to be consistent with the local training PR. Also, the CI has a matrix job, the package.json command was one per task. I agree it can be useful to have the tests as a command, For each local, federated and decentralized, I can try to add a command testing all tasks maybe |
Co-authored-by: Julien Vignoud <[email protected]>
Co-authored-by: Julien Vignoud <[email protected]>
Co-authored-by: Julien Vignoud <[email protected]>
Co-authored-by: Julien Vignoud <[email protected]>
|
Yes could you the commands and document them in |
|
I looked into it, but it's not as simple as it seems, as we need to start both the peer and the server for the given task. We would need some orchestration to run all tasks with one command. |
What & why
Part of #1196. Add webapp end-to-end coverage for real federated training with the default Titanic and LUS COVID tasks. Each run drives one browser through the full UI alongside a Node participant and a real Disco server. The tests check participation, training completion, model-sharing progress, and absence of error toasts.
Technical plan
Organize end-to-end training specs under webapp/cypress/e2e/training, with local, federated, and decentralized subdirectories. Ordinary Cypress discovery excludes the dedicated training runs; separate CI jobs select their specs directly. The LUS test uses four epochs and a deterministic, disjoint split of the full image dataset across the two participants. A task-selecting Node peer serves only the model needed by each test.
Deviations from plan
The original Cypress harness and separate config were removed following review; a standalone server/peer process and the existing Cypress config are sufficient. The full LUS dataset is split between participants instead of duplicated on each participant, preserving full-dataset coverage while reducing redundant work. The task-specific package scripts were removed because the CI matrix already selects each federated spec.
Todo
None for this PR. Decentralized and browser-to-browser scenarios remain in stacked #1232 and #1239.