modelbeast/docs/CUDA-WORKER.md
MODELBEAST 27ce69782d docs: CUDA worker setup guide (T490s + 2080Ti eGPU on tailnet)
Ready-to-follow checklist for standing up a headless Linux + eGPU CUDA node to
offload the CUDA-only 3D/mocap jobs the Mac can't run (splat->mesh, GVHMR mocap).
Bare-metal Linux required (no VM GPU passthrough on Mac hosts). Planned remote-CUDA
operators: sugar_mesh, gvhmr_mocap.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 10:58:32 +10:00

64 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CUDA Worker Setup — T490s + 2080 Ti eGPU on the tailnet
Goal: a headless Linux box with the RTX 2080 Ti (11GB) eGPU, live on Tailscale, that
MODELBEAST (on the M3 Ultra) offloads the CUDA-only jobs the Mac can't run —
gaussian-splat → mesh extraction (SuGaR/2DGS), research-grade video mocap
(GVHMR/WHAM/TRAM), NeRF/tiny-cuda-nn, nvdiffrast/PyTorch3D.
**Why a ThinkPad and not the Intel iMac:** no T2 chip = no Secure-Boot/Thunderbolt
fight; laptop idles ~610W (+ ~20W eGPU) vs ~5575W for the iMac; battery = built-in
UPS. The 2080 Ti is EOL-ish (Turing: no bf16/fp8, 11GB) — it's a *compatibility*
box, not a performance one. It will not beat the M3 Ultra at anything the Mac
already does; it only unlocks the CUDA-locked tail.
## Do this at the shop (once)
1. **Ubuntu 24.04 LTS**, bare metal (dual-boot Win11 or wipe — bare-metal, NOT a VM;
macOS/Windows hypervisors can't pass a physical GPU through, so a Linux VM can't
do CUDA on the eGPU).
2. **Thunderbolt authorize the eGPU** (plug in the Razer Core first):
```bash
sudo apt install bolt
boltctl list # find the enclosure UUID
boltctl enroll --policy auto <UUID>
```
3. **NVIDIA driver + CUDA:**
```bash
sudo ubuntu-drivers autoinstall # or the latest official driver branch
sudo apt install nvidia-cuda-toolkit
sudo reboot
nvidia-smi # must list the 2080 Ti over Thunderbolt
```
If it doesn't appear: confirm the eGPU was connected at boot, re-check `boltctl`,
ensure the `thunderbolt` module loads before `nvidia_drm`.
4. **Tailscale:**
```bash
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up --ssh # --ssh lets the M3 Ultra SSH in over the tailnet
tailscale ip -4 # note this IP → put it in MODELBEAST settings
```
5. **Headless / low-power:** run lid-closed →
`sudo sed -i 's/#HandleLidSwitch=suspend/HandleLidSwitch=ignore/' /etc/systemd/logind.conf`
then `sudo systemctl restart systemd-logind`. Enable Wake-on-LAN in BIOS + `ethtool`
if you want it to sleep and wake on demand.
## MODELBEAST integration (I'll build this when the box exists)
The operator framework already shells out to tools; a **remote-CUDA operator** wraps
that pattern: rsync the input to `cuda_host:~/work/`, `ssh cuda_host` to run the CUDA
tool in its venv, rsync results back, register as assets. Planned operators:
- `sugar_mesh` — splat `.ply` → textured mesh (closes the Brush→mesh gap; the Mac can't extract meshes from splats).
- `gvhmr_mocap` — video → world-grounded SMPL → FBX (research-grade, replaces the cloud/manual path).
Add a `cuda_host` setting (the tailnet IP + user) to the vault so these operators know where to reach it. Fits in 11GB: SuGaR/2DGS/gsplat (~5-6GB), GVHMR/WHAM (light). Does NOT fit: FLUX, 20B+ models — those stay on the Mac.
## Reality check
Only worth it because the card's already owned. If you were buying, a used RTX 3090
(24GB, bf16) would be strictly better and unlock FLUX/video too. Turing's runway is
shrinking (newer 3D wheels drop 20-series), so treat this as "use the free card for
the CUDA-only leftovers," not a long-term foundation.