Repository navigation
Conversation
55697bc to
e489b7f
Compare
e489b7f to
0e054da
Compare
0e054da to
e76d17c
Compare
e76d17c to
a7b402f
Compare
ee165f3 to
f335779
Compare
f335779 to
f6cc2e0
Compare
0112c7a to
6da8cc1
Compare
|
I've also refactored the |
be145af to
bdc2a99
Compare
JulienVig
left a comment
There was a problem hiding this comment.
Thanks for the great work! I mostly have nitpicking comments but I'm requesting changes because the CI is currently flaky. I just merged #1259 which should fix the error. You can request the review again once you rebased and see that the CI passes consistently
50a5eff to
a84faef
Compare
JulienVig
left a comment
There was a problem hiding this comment.
All good! Just curious about why you ended up switching a firefox for edge rather than a chrome
| import { createInterface } from "node:readline"; | ||
|
|
||
| const browsers = ["chrome", "edge", "firefox", "firefox"]; | ||
| const browsers = ["chrome", "chrome", "edge", "firefox"]; |
There was a problem hiding this comment.
You mentioned it would be a better idea to swap out a chrome for edge rather than a firefox. Did someting make you change your mind?
Is this linked to the commit mentioning a "geckodriver race condition"?
| This runs both Titanic and LUS COVID with a mocked server. The command starts | ||
| and stops Vite itself; port 1351 must be available. | ||
| The local command runs both Titanic and LUS COVID with a mocked server. | ||
| The decentralized command runs MNIST across Chrome and Firefox participants with a real server; install Chrome and Firefox (plus `xvfb` and `xauth` on headless Linux). |
There was a problem hiding this comment.
| The decentralized command runs MNIST across Chrome and Firefox participants with a real server; install Chrome and Firefox (plus `xvfb` and `xauth` on headless Linux). | |
| The decentralized command runs MNIST across Chrome, Edge and Firefox participants with a real server; install Chrome, Edge and Firefox (plus `xvfb` and `xauth` on headless Linux). |
| stdio: "pipe", | ||
| env: { | ||
| ...process.env, | ||
| DISCO_TRAINING_E2E: "1", |
There was a problem hiding this comment.
DISCO_TRAINING_E2E is already set in process.env isn't it? Do you need to set it again here?
| cy.contains("button", "next").click(); | ||
|
|
||
| cy.contains("button", "group").click(); | ||
| cy.task<string[]>("readdir", "../datasets/CIFAR10").then((files) => |
There was a problem hiding this comment.
| cy.task<string[]>("readdir", "../datasets/CIFAR10").then((files) => | |
| // Train on dummy images from CIFAR10, this test doesn't care about actual performance | |
| cy.task<string[]>("readdir", "../datasets/CIFAR10").then((files) => |
| test-e2e-decentralized: | ||
| name: decentralized webapp (mnist) | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: 10 |
There was a problem hiding this comment.
| timeout-minutes: 10 | |
| timeout-minutes: 12 |
The current timeouts add up to ~8min + 4 browser startut, I think 10min is a bit tight and we want to leave enough time to upload the screenshots if it fails
What & why
Adds end-to-end webapp coverage for decentralized browser-to-browser training, as requested in #1196 and the review of #1230. Four real browser participants (two Chrome and two Firefox) train the default MNIST task through the webapp against a live Disco server over WebRTC. The run exercises Chrome–Chrome, Firefox–Firefox, and Chrome–Firefox model exchange.
Technical plan
Keep the test with the other webapp training suites. Start the standard built Disco server and a Vite webapp, then run four Cypress browser processes on a shared Xvfb display in CI. Assert that all participants complete 20 epochs and 10 model-sharing rounds.
Deviations from plan
None. This replaces the Node participant prototype in #1232 with browser-to-browser collaboration.
Todo
None.