torch.compile 加速 ChatTTS——一次编译,后续推理快 1.3~2 倍
什么是 torch.compile
torch.compile 是 PyTorch 2.0+ 引入的计算图编译优化:
- 把模型的前向传播过程编译成优化后的计算图
- 减少 Python 解释器开销、融合小算子、消除冗余计算
- 首次调用会触发编译(几十秒),后续推理直接复用编译好的图
ChatTTS 中的用法
chat = ChatTTS.Chat()
chat.load(compile=True) # 开启 compile
就一个参数,不需要改其他代码。
效果预期
| 场景 | compile=False | compile=True | 提速 |
|---|---|---|---|
| 首次推理 | 正常速度 | 慢 30~60 秒(编译开销) | - |
| 第二次推理 | 正常速度 | 快 1.3~2 倍 | 30%~100% |
| 批量推理 | 较慢 | 更快 | 批量受益更大 |
什么时候开
必须开
- 批量生产(一次性生成大量语音)
- 后端服务(启动一次、持续服务)
- 追求极致速度的场景
不必开
- 第一次体验 / 快速验证效果(不想等编译)
- 只跑一两条样本
- Windows + torch 某些版本不支持 compile(见下文)
Windows 用户注意
某些 torch 版本在 Windows 上会报错:
RuntimeError: Windows not yet supported for torch.compile
此时保持 compile=False 即可,功能完全一致只是速度稍慢。
与其他加速手段配合
| 手段 | 效果 |
|---|---|
| torch.compile | 整体 1.3~2 倍提速 |
| 批量推理 | 共享加载开销 |
| GPU 升级(4090) | 硬件级提升 |
| 关闭不必要的上下文管理器 | 微小开销节省 |
compile + 批量推理的组合是性价比最高的加速方案——不花钱、不改代码、效果明显。