Inflect-Micro-v2 / docs /DEPLOYMENT.md
owensong's picture
Finalize v2 model card, CPU evidence, API contract, and release docs
d0385b5 verified
|
Raw
History Blame Contribute Delete
3.26 kB
# Deployment
## Verified release environment
The final package was validated on Windows x86-64 with Python 3.11,
PyTorch 2.10, CPU inference, and CUDA inference. The runtime is ordinary
PyTorch and is expected to work on modern Linux x86-64, but that combination is
not yet part of the signed release matrix. Treat Python 3.11 as the reference
environment rather than interpreting flexible requirements as proof of every
possible version.
Install the CPU or CUDA PyTorch wheel for the target first, then install either:
```bash
python -m pip install -r requirements.txt
```
or the exact validation set:
```bash
python -m pip install -r requirements-tested.txt
```
The PyTorch build suffix remains platform-specific and is intentionally not
forced by the tested requirements file.
## Revision-pinned download
```python
from huggingface_hub import snapshot_download
model_dir = snapshot_download(
"owensong/Inflect-Micro-v2",
revision="v2.0.0",
)
```
The `v2.0.0` tag points to the frozen initial release. Use `main` only when you
intentionally want later documentation or runtime fixes.
## Reproducibility
Keep the checkpoint, `config.json`, frontend files, and `runtime/` directory together. Record `Inflect-Micro-v2`, the release revision, `speed`, `variation`, and `seed` with generated artifacts. Verify files against `release_manifest.json` when moving the package between machines.
## Long text
The runtime splits long text at sentence punctuation and then at safe intra-sentence boundaries. Chunks are synthesized independently and joined with punctuation-dependent silence. This prevents unbounded inference but means a long paragraph is not one globally planned prosody pass.
## Production boundaries
- Instantiate `InflectTTS` once and reuse it; loading per request wastes time.
- Serialize calls to one model instance unless the surrounding application explicitly manages device memory and random seeds.
- Validate empty or untrusted input before synthesis.
- Set a fixed seed for deterministic caching and tests.
- Measure on the actual target device before claiming real-time operation.
- Apply an explicit CPU thread policy in production rather than inheriting all
visible host cores.
## Capacity planning
- The FP32 checkpoint is 37.53 MB for Micro and 15.97 MB for Nano.
- Peak RAM and VRAM depend on PyTorch, allocator state, input length, and device.
Measure the deployed process rather than estimating memory from weight size.
- The reference runtime is non-streaming: the full chunk is returned after
synthesis.
- One model instance should process one request at a time unless the application
owns synchronization and random seed isolation.
## Troubleshooting
- Missing phonemizer errors: reinstall `phonemizer` and `espeakng-loader` from `requirements.txt`.
- Unexpected pronunciation: spell out ambiguous abbreviations or add context; the release frontend is English-only.
- Flat or unstable delivery: keep `variation` near the default before changing speed.
- Long pauses: inspect source punctuation because chunk boundaries intentionally follow punctuation.
- Slow first request: model loading is measured separately from warm synthesis and should not happen per utterance.