yeyupiaoling / PPASR

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

训练问题 #163

Closed yourengod closed 1 year ago

yourengod commented 1 year ago

训练的时候出现这个问题:怎么解决? image

yeyupiaoling commented 1 year ago

cuda没配置好,看我文档用conda安装paddlepaddle

yourengod commented 1 year ago

我安装的cuda是11.7 cudnn是cudnn-linux-x86_64-8.9.2.26_cuda11-archive.tar paddle:python3 -m pip install paddlepaddle-gpu==2.4.2.post117 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html

yourengod commented 1 year ago

conda install paddlepaddle-gpu==2.4.1 cudatoolkit==11.7 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/ -c conda-forge 安装后还是那个问题,我是在ppasr源码上train的,请指教一下?

yeyupiaoling commented 1 year ago

最新的是2.5.0

yourengod commented 1 year ago

2.5.0报这个错误: W0725 15:22:10.749516 73697 gpu_resources.cc:119] Please NOTE: device: 0, GPU Compute Capability: 5.2, Driver API Version: 12.2, Runtime API Version: 11.7 W0725 15:22:10.750409 73697 gpu_resources.cc:149] device: 0, cuDNN Version: 8.9. Traceback (most recent call last): File "train.py", line 22, in trainer.train(save_model_path=args.save_model_path, File "/data/zhdp/PPASR/ppasr/trainer.py", line 478, in train self.setup_model(input_dim=self.test_dataset.feature_dim, File "/data/zhdp/PPASR/ppasr/trainer.py", line 156, in setup_model summary(self.model, inputs=[paddle.rand([1, 260, self.train_dataset.feature_dim]), File "/data/zhdp/PPASR/ppasr/utils/model_summary.py", line 118, in summary result, params_info = summary_string(net, _input_size, dtypes, inputs) File "/data/anaconda3/envs/asr/lib/python3.8/site-packages/decorator.py", line 232, in fun return caller(func, *(extras + args), kw) File "/data/anaconda3/envs/asr/lib/python3.8/site-packages/paddle/fluid/dygraph/base.py", line 347, in _decorate_function return func(*args, kwargs) File "/data/zhdp/PPASR/ppasr/utils/model_summary.py", line 249, in summary_string model(x) File "/data/anaconda3/envs/asr/lib/python3.8/site-packages/paddle/nn/layer/layers.py", line 1254, in call return self.forward(inputs, kwargs) File "/data/zhdp/PPASR/ppasr/model_utils/conformer/model.py", line 89, in forward encoder_out, encoder_mask = self.encoder(speech, speech_lengths) File "/data/anaconda3/envs/asr/lib/python3.8/site-packages/paddle/nn/layer/layers.py", line 1256, in call return self._dygraph_call_func(*inputs, kwargs) File "/data/anaconda3/envs/asr/lib/python3.8/site-packages/paddle/nn/layer/layers.py", line 1235, in _dygraph_call_func outputs = self.forward(*inputs, **kwargs) File "/data/zhdp/PPASR/ppasr/model_utils/conformer/encoder.py", line 186, in forward masks = make_non_pad_mask(xs_lens).unsqueeze(1) # (B, 1, L) File "/data/zhdp/PPASR/ppasr/model_utils/utils/mask.py", line 68, in make_non_pad_mask return make_pad_mask(lengths).logical_not() File "/data/zhdp/PPASR/ppasr/model_utils/utils/mask.py", line 40, in make_pad_mask seq_range_expand = seq_range.unsqueeze(0).expand([batch_size, max_len]) File "/data/anaconda3/envs/asr/lib/python3.8/site-packages/paddle/tensor/manipulation.py", line 3443, in expand return _C_ops.expand(x, shape) ValueError: (InvalidArgument) The 1th element of 'shape' for expand_v2 op must be greater than 0, but the value given is 0. [Hint: Expected expand_shape[i] > 0, but received expand_shape[i]:0 <= 0:0.] (at ../paddle/phi/infermeta/unary.cc:1039)

yourengod commented 1 year ago

1690270569650 请教一下?

yourengod commented 1 year ago

我用的是ubuntu 20。ubuntu 18 过期了。

yourengod commented 1 year ago

我现还在用的ppasr是开发版本的,是最新的

yeyupiaoling commented 1 year ago

你我看是不是显存不足

yourengod commented 1 year ago

1690272092249 这个新版本的问题。 1690272333491 这个问题是原先的版本的问题。定位如下图: 1690272471593 nvidia-smi命令如下: 1690272523103 请教请教

yourengod commented 1 year ago

1690274953266 这里出的问题,max_len=0,这个怎么一回事啊?请教请教。

yeyupiaoling commented 1 year ago

你换个显卡看一下吧,我看你显卡的计算能力很低,不知道是不是老版本的显卡问题?

yourengod commented 1 year ago

好的,我试一试

yeyupiaoling commented 1 year ago

问一下你数据列表里面有数据吗?

yourengod commented 1 year ago

1690340095654 是这个吧?

yourengod commented 1 year ago

GPU Compute Capability: 8.6,这个可以。

yourengod commented 1 year ago

请教一个问题。你提供的这个地址的模型是不是不能用于再训练?我试了一下,出个错。我需要一个好的预训练的模型。

yeyupiaoling commented 1 year ago

1690340095654 是这个吧?

你这个是字典。

yeyupiaoling commented 1 year ago

GPU Compute Capability: 8.6,这个可以。

可以是吧,那就没有问题。

yeyupiaoling commented 1 year ago

请教一个问题。你提供的这个地址的模型是不是不能用于再训练?我试了一下,出个错。我需要一个好的预训练的模型。

我提供的这个是一训练模型,你可以当做一训练模型去加载,但是要把配置文件一起复制进去。

yourengod commented 1 year ago

请教一个问题。你提供的这个地址的模型是不是不能用于再训练?我试了一下,出个错。我需要一个好的预训练的模型。

我提供的这个是一训练模型,你可以当做一训练模型去加载,但是要把配置文件一起复制进去。

我要是没有记错的话,里面好像有这些, 1690422739839 配制文件用的这个:“configs/conformer_online_zh.yml” 请问我该如何把它做为预训练模型加载使用?

yeyupiaoling commented 1 year ago

微调不用这些,另外你下载的模型是旧的

yourengod commented 1 year ago

微调不用这些,另外你下载的模型是旧的

https://download.csdn.net/download/qq_33200967/86951249 这个是新的,是吗?新的可以再训练是吗?我需要填加领域术语语料。

yeyupiaoling commented 1 year ago

是的,这个如果你在上面下的是最新的。你可以用这个异性的模型来微调你的数据提高你数据的准确率。

yourengod commented 1 year ago

是的,这个如果你在上面下的是最新的。你可以用这个异性的模型来微调你的数据提高你数据的准确率。

多谢,我试一试。另外,有个小问题,如何指定多个gpu啊,这样 CUDA_VISIBLE_DEVICES=a,b,c python train.py ,我咋觉得没有用啊,老是内存溢出,我改了批大小16也没有用。

yeyupiaoling commented 1 year ago

看文档。

yourengod commented 1 year ago

你的那个新模型,我下载下来了,用了一下,出了下面的问题。设置是这样: add_arg('resume_model', str, './models/conformer_streaming_fbank/best_model/', '恢复训练,当为None则不使用预训练模型') add_arg('pretrained_model', str, './models/conformer_streaming_fbank/best_model/',
请教一下怎么办? image

yeyupiaoling commented 1 year ago

下载的模只能用于预训练的,不能用于恢复训练

yourengod commented 1 year ago

下载的模只能用于预训练的,不能用于恢复训练

只能用于预训练,怎么设置啊?

yeyupiaoling commented 1 year ago

下载的模只能用于预训练的,不能用于恢复训练

只能用于预训练,怎么设置啊?

add_arg('pretrained_model', str, None, '预训练模型的路径,当为None则不使用预训练模型')

yourengod commented 1 year ago

下载的模只能用于预训练的,不能用于恢复训练

只能用于预训练,怎么设置啊?

add_arg('pretrained_model', str, None, '预训练模型的路径,当为None则不使用预训练模型')

这样??? add_arg('resume_model', str, None, '恢复训练,当为None则不使用预训练模型') add_arg('pretrained_model', str, './models/conformer_streaming_fbank/best_model/',

还有我下面就是按照doc里面说的进行数据处理,然后就是train就可以了吧?

yeyupiaoling commented 1 year ago

嗯嗯

yourengod commented 1 year ago

add_arg('resume_model', str, None, '恢复训练,当为None则不使用预训练模型')

add_arg('resume_model', str, None, '恢复训练,当为None则不使用预训练模型') 这个是中断训练后,要恢复训练,让程序加载最新训练且保存的模型用的吗?

yourengod commented 1 year ago

你好,如果我在你的模型上接着训练必须用你的这个词表文件“vocabulary.txt”吧,请问如何填加新词?

yeyupiaoling commented 1 year ago

是的,

yourengod commented 1 year ago

是的,

这个词表文件“vocabulary.txt”,请问如何往里面添加新词?

yeyupiaoling commented 1 year ago

那就生成自己字典。模型当预训练模型使用

yourengod commented 1 year ago

那就生成自己字典。模型当预训练模型使用

那预训练模型跟新生成的字典中的字对应不上吧?