You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tortoise TTS未利用GPU求助:环境正常但运行缓慢

Tortoise TTS GPU使用率极低问题排查与解决

可能原因

  • 模型或输入张量未完全加载到GPU:即使指定了cuda:0,部分模型组件或预处理后的张量仍可能留在CPU,导致GPU无有效任务。
  • 数据预处理/后处理成为瓶颈:音频特征提取、文本tokenization等步骤在CPU执行,GPU处于等待状态,使用率被拉低。
  • 单样本推理任务量不足:单次仅生成短音频时,GPU计算负载过低,无法充分利用硬件资源。
  • 版本兼容性冲突:Tortoise TTS 3.0.0与PyTorch 2.1.2+cu118可能存在适配问题,导致GPU加速失效。
  • 显存不足触发自动 fallback:若GPU显存不足以加载完整模型,部分层会自动切换到CPU运行,表现为GPU使用率极低。

解决步骤

  1. 验证模型与张量的设备归属
    在代码中添加设备检查,确保所有模型组件和输入数据都在GPU上:

    from tortoise.api import TextToSpeech
    import torch
    
    tts = TextToSpeech(device='cuda:0')
    # 检查模型各组件的设备
    for model_name, model in tts.models.items():
        print(f"Model {model_name} device: {model.device}")
    # 检查输入张量设备
    test_text = "Test text"
    tokens = tts.tokenizer(test_text)
    print(f"Input tokens device: {tokens.device}")
    

    如果输出中有cpu,需手动将模型和张量移至GPU:

    tts = TextToSpeech(device='cuda:0')
    tts = tts.to('cuda:0')
    tokens = tokens.to('cuda:0')
    
  2. 优化数据处理流程
    将预处理步骤移至GPU执行,同时调整CPU线程数避免预处理卡顿:

    torch.set_num_threads(8)  # 根据CPU核心数调整,如16核可设为16
    
  3. 批量提升推理任务量
    一次性传入多个文本进行批量生成,让GPU获得足够计算负载:

    texts = ["First text", "Second text", "Third text"]
    outputs = tts.tts_batch(texts)
    
  4. 降级PyTorch版本尝试
    Tortoise TTS 3.0.0对PyTorch 2.x的兼容性可能不佳,尝试降级到PyTorch 1.13.1+cu118:

    pip uninstall torch torchaudio torchvision
    pip install torch==1.13.1+cu118 torchaudio==0.13.1+cu118 torchvision==0.14.1+cu118 --extra-index-url https://download.pytorch.org/whl/cu118
    
  5. 检查GPU显存状态
    运行nvidia-smi查看显存占用:

    • 若显存接近满,启用Tortoise的低显存模式:
      tts = TextToSpeech(device='cuda:0', low_vram=True)
      
    • 若显存占用极低,重新检查模型的设备设置是否生效。
  6. 检查Tortoise配置文件
    查看tortoise/configs目录下的配置文件,确保没有硬编码为cpu的设备设置,若有则修改为cuda:0。

内容的提问来源于stack exchange,提问作者walter becker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 14:04:50