netease-youdao / EmotiVoice

EmotiVoice 😊: a Multi-Voice and Prompt-Controlled TTS Engine
Apache License 2.0
6.63k stars 556 forks source link

文档中说的docker运行命令,不能使用GPU运行。是否文档有错误? #82

Open dongxiaok opened 6 months ago

dongxiaok commented 6 months ago

我在linux系统中,运行docker run -dp 127.0.0.1:8501:8501 syq163/emoti-voice:latest,是cpu运行的。 我添加了参数docker run --gpus all -dp 127.0.0.1:8501:8501 syq163/emoti-voice:latest,运行后会报错。 image

请问如何才能在docker中使用gpu运行?我的电脑已安装了相关依赖,其他docker项目使用gpu都没有问题。

MisakaMikoto-o commented 6 months ago

根据你的cuda版本安装对应版本的pytorch相关包,如果torch.cuda.is_available()输出是true,运行程序会自动使用gpu,如果是false则说明pytorch没安装对

dongxiaok commented 6 months ago

测试docker exec 6e0cb3e4273c python3 -c "import torch; print(torch.cuda.is_available())"返回True,但还是有报错。 日志显示我的GPU需要支持更高的 CUDA capability (sm_89)。目前安装的 PyTorch 支持的 CUDA capabilities 是 sm_37, sm_50, sm_60, 和 sm_70。之后,我在容器内卸载并重装了torch,使用以下命令: pip uninstall torch torchvision torchaudio pip install torch torchvision torchaudio 之后使用--gpus all参数运行容器就可以正常运行了。

但是现在又发现另外一个问题,只有在第一次运行时,才能用到gpu资源(用到的时候速度很快)。但是在测试几次之后,gpu就又不能调用了,只看见gpu显存占用在涨,但还是占用的cpu计算,速度也很慢。请问这是程序bug吗?

MisakaMikoto-o commented 6 months ago

不清楚你的情况,我在jupyter里,先运行这个代码块

from demo_page import get_models, tts
from frontend import g2p_cn_en, ROOT_DIR, read_lexicon, G2p
from config.joint.config import Config
import soundfile as sf

config = Config()

speakers = config.speakers
models = get_models()
lexicon = read_lexicon(f"{ROOT_DIR}/lexicon/librispeech-lexicon.txt")
g2p = G2p()

后面只需运行下面代码块更改文本内容就可以

content = "你想输出的语音文本"

text =  g2p_cn_en(content, g2p, lexicon)
path = tts(text, "开心", content, "8051", models)
sf.write(file="./1.wav", data=path, samplerate=16000)

这样我一直都是使用的gpu