在 Tesla T4 上运行默认引擎¶
来自在 16 GB NVIDIA Tesla T4(Turing,sm_75)上实际运行默认 omnivoice TTS 引擎的笔记。
测试环境¶
| 项目 | 值 |
|---|---|
| 驱动 | 550.163.01 (CUDA 12.8) |
| PyTorch | 2.8.0+cu128 |
| transformers | 5.3.0 |
| Python | 3.11,由 uv 管理 |
| 引擎 | OMNIVOICE_TTS_BACKEND=omnivoice |
第一个请求可能超时¶
在新安装环境下,第一次 POST /v1/audio/speech 可能会失败,并报错称任务“超过 300 秒后被放弃”。GPU 不是问题所在:整个过程中其显存占用约 2 GB,利用率为 0%。
原因:第一次生成调用会下载约 2.3 GB 的 k2-fsa/OmniVoice 检查点,而这次下载会计入生成时间预算(OMNIVOICE_GENERATE_TIMEOUT_S,默认 300 秒)。一旦权重被缓存,同一个请求大约 1 秒即可完成。
有两种方法可以绕过这个问题:
- 先获取模型。向
POST /models/install发送包含repo_id的 JSON 请求体(必填,且必须是应用已知的模型;参见backend/api/schemas.py中的InstallModelRequest)。在/setup/download-streamSSE 订阅源上查看进度。 - 在 设置 -> 性能与设备 中提高预算。如果设置了环境变量,则环境变量优先于该设置。
请求参数¶
/v1/audio/speech 没有 num_step 或 guidance_scale 字段。如果你发送了这些字段,它们会被静默丢弃(pydantic 模型会忽略额外字段)。multipart POST /generate 端点同时接受这两个字段。
应用默认的 num_step 为 16,而模型自己的文档建议使用 32(参见 generation-parameters.md)。换句话说,默认值已经是“快速”预设。
速度检查清单¶
- dtype: 该引擎固定使用 float16,且没有环境变量可覆盖。这适合 Turing,因为 Turing 没有 bf16 张量核心。
- 注意力机制: 由于未安装
flash_attn,会回退到sdpa。 - int8: 该引擎没有 int8 路径。
- CUDA Graphs: 自 #2135 起,在 Ampere 之前的 GPU 上不再使用。应用会按 GPU 选择
torch.compile模式,并在 sm_80 以下使用非 cudagraph 的default模式。设置OMNIVOICE_FORCE_CUDAGRAPH=1可恢复旧行为,例如用于基准测试。 - torch.compile: 在
default模式下仍会尝试启用。可在 设置 -> 性能 中关闭,或设置TORCH_COMPILE_DISABLE=1。
内存¶
由 nvidia-smi 报告的峰值使用量为 2487 MiB,torch.cuda.max_memory_allocated() 报告的则为 2.050 GB。这远低于 4 GB 的最低档位。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 om/VoiceStudio