跳转至

在 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-stream SSE 订阅源上查看进度。
  • 在 设置 -> 性能与设备 中提高预算。如果设置了环境变量,则环境变量优先于该设置。

请求参数

/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