Spaces:
Running on Zero
Running on Zero
|
Download README.md from rfick/disco-zero: direct link, hf CLI and curl.
- Browser
- Download file 2.77 kB
-
https://huggingface.co/spaces/rfick/disco-zero/resolve/main/README.md
- Command line
-
hf download hf://spaces/rfick/disco-zero/README.md
-
curl -L -o README.md https://huggingface.co/spaces/rfick/disco-zero/resolve/main/README.md
2.77 kB
| title: DiSCo replay to tractogram (ZeroGPU) | |
| emoji: 🧠 | |
| colorFrom: indigo | |
| colorTo: blue | |
| sdk: gradio | |
| sdk_version: 6.28.0 | |
| app_file: app.py | |
| pinned: false | |
| license: mit | |
| short_description: DiSCo replay to connectome on the shared GPU pool | |
| # The DiSCo Space on ZeroGPU | |
| The same application as `rfick/disco` (dmrai-lab/disco-space) on Hugging Face's shared GPU pool: the compute backend | |
| is PyTorch (`DISCO_BACKEND=torch`: dmipy-sim's shape-moment image, dmipy-fit's `csd_tournier07_torch`, dmipy-tract's | |
| torch tracker), the GPU exists for the duration of one run (`spaces.GPU`), and the layout's tiles are rebuilt on the | |
| device inside every call from the layout downloaded from the Hub when the container started. Deterministic algorithms are on and TF32 off inside the | |
| call. Source and pins: https://github.com/dmrai-lab/disco-space (`requirements-zero.txt`, `app.py`). | |
| ## GPU quota per visitor | |
| Every run reserves the GPU for the seconds the page shows under the run button. ZeroGPU charges that reservation | |
| against the *visitor's* daily quota, not the Space's: 2 minutes logged out, 5 with a free Hugging Face account, 40 | |
| with PRO; a single request above the visitor's quota is refused before it starts ("The requested GPU duration (N s) | |
| is larger than the maximum allowed"), and a run that outlives its reservation is killed. Only the device part of a | |
| run (`space.app.compute`: the replays, the noise, the CSD, the tracking, the scoring, the explorer's maps) holds the | |
| GPU; the page writes the files and draws in its own process after the device is released (disco-space#7). | |
| Measured on the pool (DiSCo 364, every tier, density 4, 2026-09-30, dmipy-sim 7f6f1fa with #522 and #523; not | |
| re-measured at the current pins, dmipy-sim 1b79d2e, which the pool runs only once deployed): | |
| | run | device held | handoff | client wall | reserved | | |
| |---|---|---|---|---| | |
| | DiSCo 364 | 23 s | 1.5 s | 73 s | 42 s | | |
| | DiSCo 364 + the explorer's ladder | 53 s | 2 s | 108 s | 87 s | | |
| | DiSCo 364, A + B (B0 transverse), no ladder | 42 s | 3 s | 130 s | 67 s | | |
| | DiSCo 364, A + B (SNR → 10) + ladder | 72 s | 4 s | 160 s | 113 s | | |
| Before the split the device was held 77 s and 100 s for the first two runs (the files, the states, the figures and | |
| a 15 s host pass for the ingredient maps were inside the window), and every run at a field direction the host had | |
| not preloaded contracted the 8 GB field channels on the host inside the window (8 s; the default direction too, | |
| through a key mismatch, dmipy-sim#523). The reservation is 16 s + 0.045 s per measurement + 0.096 s per measurement | |
| for the ladder + (8 s + 0.032 s per measurement) for B + 10 s per extra tracker key, times 1.3. DiSCo 364 alone, | |
| with the ladder, and A + B + ladder all fit a logged-out visitor's 2 minutes. | |