fluentwhisper / DEPLOY.md
pradachan's picture
Upload folder using huggingface_hub
2bed44a verified
|
Raw
History Blame Contribute Delete
4.38 kB
# Deploy — Disfluency Remover Space
> **STATUS: NOT PUBLISHED.** Everything below is a deliberate, outward-facing
> publishing action and requires the user's explicit go-ahead. The local
> `space/` artifacts are committed; nothing has been pushed to the Hub.
## Prerequisites
### 1. Push the v1 adapter to the Hub (REQUIRED — Space can't load without it)
`space/app.py` loads `ADAPTER = "pradachan/whisper-large-v3-turbo-disfluency-lora"`.
That Hub repo does **not exist yet** — the v1 adapter lives locally at
`/models/whisper-lora-disfluency`. Push it first:
```bash
# from a machine with the adapter + huggingface_hub installed and logged in
huggingface-cli login # or: export HF_TOKEN=hf_...
huggingface-cli upload \
pradachan/whisper-large-v3-turbo-disfluency-lora \
/models/whisper-lora-disfluency . \
--repo-type=model
```
If you prefer to keep the adapter **private** at skeleton stage, create it
private and add the token as a Space secret (step 4) — the Space will then
authenticate to pull it.
### 2. Export gallery audio clips (so example chips are clickable)
The precomputed gallery text is already baked into `app.py`. To make the
example *clips* playable, export the matching test-set audio by idx:
```python
# run once; writes space/examples/idx_XXX.wav
import soundfile as sf
from datasets import load_dataset, Audio
ds = load_dataset("amaai-lab/DisfluencySpeech", split="test", trust_remote_code=True)
ds = ds.cast_column("audio", Audio(sampling_rate=16000))
for idx in (1, 125, 43, 248):
a = ds[idx]["audio"]
sf.write(f"space/examples/idx_{idx:03d}.wav", a["array"], a["sampling_rate"])
```
`app.py` only registers `gr.Examples` for clips that exist on disk, so the app
runs fine with or without this step.
## Create + push the Space
```bash
# one-time: create the Space (gradio SDK, ZeroGPU hardware) under the user's account
huggingface-cli repo create disfluency-remover --type space --space_sdk gradio
# push the contents of space/ to the Space repo root
cd space
git init && git remote add origin https://huggingface.co/spaces/pradachan/disfluency-remover
git add app.py requirements.txt README.md examples/ 2>/dev/null
git commit -m "Disfluency Remover skeleton (v1 adapter)"
git push origin main # use an HF token / git credential helper
```
(Alternatively `pip install huggingface_hub` and use
`HfApi().upload_folder(folder_path="space", repo_id="pradachan/disfluency-remover", repo_type="space")`.)
### 3. Set ZeroGPU hardware
`README.md` already declares `hardware: zero-gpu` in the YAML header. Confirm in
the Space **Settings → Hardware** that ZeroGPU is selected after the first push.
### 4. Set the Space secret (only if the adapter repo is private)
Space **Settings → Variables and secrets → New secret**:
- Name: `HF_TOKEN`
- Value: a token with read access to the private adapter repo.
The `transformers`/`peft` loaders read `HF_TOKEN` automatically.
## Live verification (after the Space is up)
- **Mic clip:** record ~10s saying "you know" / "I mean" / a repeated word →
the *Cleaned* pane drops them and the *diff* pane shows red strikethroughs.
Warm latency should be < 15s.
- **Chunking:** upload a ~60s clip → it is split into 30s windows and the texts
are concatenated; output should be coherent end to end.
- **Phone-number caveat:** upload a clip containing a spoken number sequence and
confirm whether digits collapse. If they do, keep such an example **out of the
gallery** and document it in the limitations note (and as the Epic 08 "honest
failure" example at final stage).
- **Cold start:** first request after idle is ~30s (model load on ZeroGPU). The
baked-in gallery text keeps the page demonstrable during that window.
## Final-stage swap (Epic 07/09 — NOT now)
- Point `ADAPTER` at the winner adapter Hub repo.
- Curate gallery to **3 wins + 1 self-repair + 1 honest failure** (add the Epic
08 failure to `GALLERY` in `app.py` with a "limitation" label).
- Update README claim numbers to match Epic 09 claims rules.
## Decision gate
- ZeroGPU quota/queue problems on demo day → fall back to a paid T4 Space
(`hardware: t4-small`, ~$0.60/h). Decide by Jun 14 evening; do not debug live.
- If the winner adapter isn't ready by Jun 14 evening, ship with v1 permanently
and update the card numbers accordingly (v1 beats vanilla; demo works).