feat(chatterbox-fast): Phase 3 scaffold — Dockerfile, compose, .env.example
Container artifacts to deploy alongside the live chatterbox (:8196) on irv-ml1.
- Dockerfile: thin overlay FROM local/chatterbox:v1 (sibling's image, has the
chatterbox lib + torch + fastapi) + COPY scheduler.py app.py; runs uvicorn.
- compose.yaml: mirrors the sibling chatterbox stack (runtime: nvidia +
NVIDIA_VISIBLE_DEVICES; host IP:port, no traefik-net — these GPU TTS services
aren't traefik-fronted). Port 8197, /health healthcheck, homepage labels,
reuses /worktank/chatterbox/{cache,reference_audio}.
- .env.example: GPU default device 1 (A6000) — turbo is fp32, 3090 free VRAM is
tight; port reservations; perf-lever toggles.
Not yet deployed — awaiting operator go (shared GPU host, runs beside production).
This commit is contained in:
@@ -39,8 +39,21 @@ regardless of chunking. That is why this is the chatterbox-specific answer.
|
||||
| `test_scheduler.py` | GPU-free simulation: asserts no-starvation + ratchet. `python test_scheduler.py` or `pytest`. |
|
||||
| `app.py` | FastAPI server: model holder + `POST /tts` (StreamingResponse) + `GET /health`. |
|
||||
| `bench.py` | Client: ground-truth TTFB + real 1×-consumer starvation check; saves `.wav` for A/B. |
|
||||
| `Dockerfile` | Thin overlay: `FROM local/chatterbox:v1` + our two modules. |
|
||||
| `compose.yaml` · `.env.example` | Deploy on irv-ml1 alongside the live `chatterbox`. |
|
||||
|
||||
Phase 3 will add `compose.yaml`, `Dockerfile`, `.env.example`.
|
||||
## Deploy (Phase 3)
|
||||
|
||||
```bash
|
||||
scripts/deploy-stack.sh irv-ml1 chatterbox-fast # push compose+code to the host
|
||||
# then on irv-ml1, in /opt/docker/compose/chatterbox-fast/ (after copying .env):
|
||||
docker compose build && docker compose up -d
|
||||
```
|
||||
|
||||
`Dockerfile` is `FROM local/chatterbox:v1` (the sibling stack's image — must exist
|
||||
on irv-ml1) + `COPY scheduler.py app.py`. GPU pin and voices/cache paths come from
|
||||
`.env` (see `.env.example`). Default GPU is **device 1 (A6000)** — turbo loads fp32,
|
||||
so the 3090's tight free VRAM likely won't fit; measure before pinning device 0.
|
||||
|
||||
## API
|
||||
|
||||
|
||||
Reference in New Issue
Block a user