yeyupiaoling / PPASR

基于PaddlePaddle实现端到端中文语音识别,从入门到实战,超简单的入门案例,超实用的企业项目。支持当前最流行的DeepSpeech2、Conformer、Squeezeformer模型
Apache License 2.0
797 stars 131 forks source link

大佬救救 #170

Closed Nyannerso closed 6 months ago

Nyannerso commented 6 months ago

模型都正常加载,但是加载完之后报错说整数除0的情况后面就开始报cudnn的问题,cuda和cudnn版本都验证过且都使用正常,环境版本都是大佬是一致的

q1 q2
Nyannerso commented 6 months ago

我用的大佬分支下的模型

Nyannerso commented 6 months ago

CPU可用正常使用,GPU跑就会报错

yeyupiaoling commented 6 months ago

release/2.4.x分支吗?CPU可以正常识别音频文件吗?

yeyupiaoling commented 6 months ago

你看看dataset里面的字典是不是正常的?

Nyannerso commented 6 months ago

release/2.4.x分支吗?CPU可以正常识别音频文件吗?

1.0的cpu运行一切正常,GPU运行报上面的错

Nyannerso commented 6 months ago

你看看dataset里面的字典是不是正常的?

我直接复制你文件里的,目视没看到问题

yeyupiaoling commented 6 months ago

底层C++报错的信息,我也看不出是哪里除0错误。

yeyupiaoling commented 6 months ago

1.0的cpu运行一切正常,GPU运行报上面的错

不是release/2.4.x分支吗?

Nyannerso commented 6 months ago

1.0的cpu运行一切正常,GPU运行报上面的错

不是release/2.4.x分支吗?

r1.x版本的

Nyannerso commented 6 months ago

1.0的cpu运行一切正常,GPU运行报上面的错

不是release/2.4.x分支吗?

模型是通用的吗,通用的话我试试2.4.x的

yeyupiaoling commented 6 months ago

不通用的

yeyupiaoling commented 6 months ago

试试2.4.x吧,1.x太久了。看不出是哪里问题。如果CPU没有问题,那应该都没有问题的,只可能是环境问题。

yeyupiaoling commented 6 months ago

你换一个电脑试试?用Anaconda搭建环境

Nyannerso commented 6 months ago

试试2.4.x吧,1.x太久了。看不出是哪里问题。如果CPU没有问题,那应该都没有问题的,只可能是环境问题。

我也怀疑是环境问题,我现在换个cudnn版本试试,不行我就用2.4.x再试试

yeyupiaoling commented 6 months ago

你是用Anaconda搭建的环境吗?

Nyannerso commented 6 months ago

你是用Anaconda搭建的环境吗?

是的,但是我这显卡是矿卡,不知道有没有关系

yeyupiaoling commented 6 months ago

你可以试试其他的程序。看能不能跑

Nyannerso commented 6 months ago

你可以试试其他的程序。看能不能跑

我在torch里面验证过了,cudnn和cuda都可用,然后我这项目有用到yolo,yolo也能正常用,我现在如果换环境的话一堆都要换(难受),所有我打算换下cudnn版本,我看底下报cudnn问题

yeyupiaoling commented 6 months ago

跑这个代码:

import paddle
import paddle.nn.functional as F
import numpy as np

print(paddle.__version__)

class MyModel(paddle.nn.Layer):
    def __init__(self, input_size, hidden_size):
        super().__init__()
        self.linear1 = paddle.nn.Linear(input_size, hidden_size)
        self.linear2 = paddle.nn.Linear(hidden_size, hidden_size)
        self.linear3 = paddle.nn.Linear(hidden_size, 1)

    def forward(self, inputs):
        x = self.linear1(inputs)
        x = F.relu(x)

        if paddle.rand([1,]) > 0.5:
            x = self.linear2(x)
            x = F.relu(x)

        x = self.linear3(x)

        return x

total_data, batch_size, input_size, hidden_size = 1000, 64, 256, 512

x_data = np.random.randn(total_data, input_size).astype(np.float32)
y_data = np.random.randn(total_data, 1).astype(np.float32)

model = MyModel(input_size, hidden_size)

loss_fn = paddle.nn.MSELoss(reduction='mean')
optimizer = paddle.optimizer.SGD(learning_rate=0.01,
                                 parameters=model.parameters())

for t in range(200 * (total_data // batch_size)):
    idx = np.random.choice(total_data, batch_size, replace=False)
    x = paddle.to_tensor(x_data[idx,:])
    y = paddle.to_tensor(y_data[idx,:])
    y_pred = model(x)

    loss = loss_fn(y_pred, y)
    if t % 200 == 0:
        print(t, float(loss))

    loss.backward()
    optimizer.step()
    optimizer.clear_grad()
yeyupiaoling commented 6 months ago

pytorch和paddlepaddle依赖的cuda和cudnn不一样的,

yeyupiaoling commented 6 months ago

我在torch里面验证过了,cudnn和cuda都可用,然后我这项目有用到yolo,yolo也能正常用,我现在如果换环境的话一堆都要换(难受),所有我打算换下cudnn版本,我看底下报cudnn问题

可以创建一个新的虚拟环境

yeyupiaoling commented 6 months ago

用这个命令安装,会自动配置cuda的

conda install paddlepaddle-gpu==2.3.2 cudatoolkit=10.2 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/
Nyannerso commented 6 months ago

跑这个代码:

import paddle
import paddle.nn.functional as F
import numpy as np

print(paddle.__version__)

class MyModel(paddle.nn.Layer):
    def __init__(self, input_size, hidden_size):
        super().__init__()
        self.linear1 = paddle.nn.Linear(input_size, hidden_size)
        self.linear2 = paddle.nn.Linear(hidden_size, hidden_size)
        self.linear3 = paddle.nn.Linear(hidden_size, 1)

    def forward(self, inputs):
        x = self.linear1(inputs)
        x = F.relu(x)

        if paddle.rand([1,]) > 0.5:
            x = self.linear2(x)
            x = F.relu(x)

        x = self.linear3(x)

        return x

total_data, batch_size, input_size, hidden_size = 1000, 64, 256, 512

x_data = np.random.randn(total_data, input_size).astype(np.float32)
y_data = np.random.randn(total_data, 1).astype(np.float32)

model = MyModel(input_size, hidden_size)

loss_fn = paddle.nn.MSELoss(reduction='mean')
optimizer = paddle.optimizer.SGD(learning_rate=0.01,
                                 parameters=model.parameters())

for t in range(200 * (total_data // batch_size)):
    idx = np.random.choice(total_data, batch_size, replace=False)
    x = paddle.to_tensor(x_data[idx,:])
    y = paddle.to_tensor(y_data[idx,:])
    y_pred = model(x)

    loss = loss_fn(y_pred, y)
    if t % 200 == 0:
        print(t, float(loss))

    loss.backward()
    optimizer.step()
    optimizer.clear_grad()

这个代码可用正常运行

q4
Nyannerso commented 6 months ago

用这个命令安装,会自动配置cuda的

conda install paddlepaddle-gpu==2.3.2 cudatoolkit=10.2 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/

pip install paddlepaddle-gpu==2.3.2.post112 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html我是从官网安装的,我cuda版本是113,但是可以向下兼容我就没太在意可能是这个问题

yeyupiaoling commented 6 months ago

不要用pip安装,另外创建一个conda虚拟环境,执行上面的安装命令。

Nyannerso commented 6 months ago

不要用pip安装,另外创建一个conda虚拟环境,执行上面的安装命令。

好,我去试试

yeyupiaoling commented 6 months ago

这个代码可用正常运行

你跑代码的时候,确定使用到了GPU吗?

Nyannerso commented 6 months ago

这个代码可用正常运行

你跑代码的时候,确定使用到了GPU吗?

我刚刚改了下代码,应该是在GPU上跑的

q5
yeyupiaoling commented 6 months ago

可以watch -n 0.1 nvidia-smi实时显示是否使用了GPU,

Nyannerso commented 6 months ago

可以watch -n 0.1 nvidia-smi实时显示是否使用了GPU,

重新创建了环境,用的cuda10.2然后cudnn也用的比较之前的版本解决了,我现在把模型部署到Django上去了。但是现在模型的准确率有点不行,现在没太多时间再去训练了,2.4.x准确率会不会好点哇

yeyupiaoling commented 6 months ago