|
2 | 2 |
|
3 | 3 | Dreamverse is the FastVideo realtime video generation & editing platform. It lives in this monorepo under `apps/dreamverse/`. |
4 | 4 |
|
| 5 | +## Deployment |
| 6 | + |
| 7 | +Dreamverse runs anywhere you have a CUDA NVIDIA GPU. Pick the path that fits: |
| 8 | + |
| 9 | +| Method | Best for | Guide | |
| 10 | +| --- | --- | --- | |
| 11 | +| **Local GPU (native)** | Dev boxes, quick local demos | [Quick Start: Local GPU](#quick-start-local-gpu) | |
| 12 | +| **Server / bare-metal B200 (SSH)** | Persistent self-hosted serving | [Server B200 deployment (SSH)](#server-b200-deployment-ssh) | |
| 13 | +| **Docker** | Reproducible container build/run | [`docker/README.md`](docker/README.md) | |
| 14 | +| **Modal (serverless B200)** | On-demand cloud GPU, no infra to manage | [`scripts/modal/README.md`](scripts/modal/README.md) | |
| 15 | + |
| 16 | +Whatever the target, the backend needs the prompt-LLM keys (`CEREBRAS_API_KEY` |
| 17 | +and `GROQ_API_KEY`) and serves on port `8009`: `/healthz` reports liveness and |
| 18 | +`/readyz` returns `200` once model load and startup warmup finish. |
| 19 | + |
5 | 20 | ## Install Dreamverse |
6 | 21 |
|
7 | 22 | You can install Dreamverse using one of the methods below. |
@@ -163,6 +178,83 @@ BACKEND_HOST=localhost BACKEND_PORT=8009 npm run dev |
163 | 178 |
|
164 | 179 | Open `http://localhost:5299`. |
165 | 180 |
|
| 181 | +## Server B200 deployment (SSH) |
| 182 | + |
| 183 | +For a persistent, self-hosted deployment, SSH into a CUDA-capable GPU host (for |
| 184 | +example a B200 box) and bring Dreamverse up there. Both paths below assume the |
| 185 | +host has recent NVIDIA drivers and CUDA-visible GPUs. |
| 186 | + |
| 187 | +### Option A: Native (source install) |
| 188 | + |
| 189 | +Best when you want to run and iterate on the checkout directly. |
| 190 | + |
| 191 | +```bash |
| 192 | +ssh <user>@<b200-host> |
| 193 | + |
| 194 | +# 1. Clone (or pull) FastVideo and install the Dreamverse extra |
| 195 | +git clone https://github.com/hao-ai-lab/FastVideo.git |
| 196 | +cd FastVideo |
| 197 | +pip install --upgrade pip && pip install uv |
| 198 | +uv venv .venv --python 3.12 && source .venv/bin/activate |
| 199 | +uv pip install -e ".[dreamverse]" |
| 200 | + |
| 201 | +# 2. (Recommended) build the native FFmpeg for full streaming performance |
| 202 | +bash apps/dreamverse/scripts/install_native_ffmpeg.sh |
| 203 | +source apps/dreamverse/scripts/ffmpeg-env.sh |
| 204 | + |
| 205 | +# 3. Export the prompt-LLM API keys (direct launches do not source ~/.env) |
| 206 | +export CEREBRAS_API_KEY=... # default prompt provider |
| 207 | +export GROQ_API_KEY=... # fallback provider |
| 208 | + |
| 209 | +# 4. Start the backend; binds 0.0.0.0:8009 and starts one GPU worker |
| 210 | +dreamverse-server --host 0.0.0.0 --port 8009 |
| 211 | +``` |
| 212 | + |
| 213 | +Serve the web UI from the same host (or point an external frontend at the |
| 214 | +backend): |
| 215 | + |
| 216 | +```bash |
| 217 | +cd apps/dreamverse/web && npm ci |
| 218 | +BACKEND_HOST=<b200-host> BACKEND_PORT=8009 npm run dev |
| 219 | +``` |
| 220 | + |
| 221 | +Keep the backend alive across SSH sessions with your process manager of choice |
| 222 | +(`tmux`, `systemd`, `nohup`, ...), and wait for warmup before serving traffic: |
| 223 | + |
| 224 | +```bash |
| 225 | +curl http://<b200-host>:8009/healthz # process is up |
| 226 | +curl http://<b200-host>:8009/readyz # 200 once model load + warmup finish |
| 227 | +``` |
| 228 | + |
| 229 | +### Option B: Docker (on the server) |
| 230 | + |
| 231 | +Best for reproducible, isolated runs. Builds the image (which bundles the native |
| 232 | +FFmpeg build) and runs it with the GPUs exposed. |
| 233 | + |
| 234 | +```bash |
| 235 | +ssh <user>@<b200-host> |
| 236 | +git clone https://github.com/hao-ai-lab/FastVideo.git |
| 237 | +cd FastVideo |
| 238 | + |
| 239 | +# Build the image (defaults to dreamverse:dev; add BUILD_DREAMVERSE_UI=1 for the UI) |
| 240 | +apps/dreamverse/docker/docker_build.sh |
| 241 | + |
| 242 | +# Run it: passes the keys, mounts the HF cache + outputs, maps host port 8009 |
| 243 | +CEREBRAS_API_KEY="<your-key>" \ |
| 244 | +GROQ_API_KEY="<your-key>" \ |
| 245 | +apps/dreamverse/docker/docker_run.sh |
| 246 | +``` |
| 247 | + |
| 248 | +Pin a specific GPU with `DREAMVERSE_DOCKER_GPUS=device=<idx> FASTVIDEO_GPU_COUNT=1`. |
| 249 | +See [`docker/README.md`](docker/README.md) for build args, the UI image, GPU |
| 250 | +pinning, and the smoke script. |
| 251 | + |
| 252 | +> **First-boot warmup:** with `torch.compile` + startup warmup enabled, the |
| 253 | +> first boot compiles the segment 1 and segment 2 inference paths and can take |
| 254 | +> tens of minutes on a cold cache; `/readyz` stays `503` until it finishes. For |
| 255 | +> a faster (uncompiled) startup while testing, set |
| 256 | +> `FASTVIDEO_ENABLE_STARTUP_WARMUP=0` before starting the backend. |
| 257 | +
|
166 | 258 | ## Quick Start: Mock Backend (For UI development) |
167 | 259 |
|
168 | 260 | The mock server emulates the Dreamverse backend protocol and streams a |
|
0 commit comments