TensorSpeech / TensorFlowASR

:zap: TensorFlowASR: Almost State-of-the-art Automatic Speech Recognition in Tensorflow 2. Supported languages that can use characters or subwords
https://huylenguyen.com/asr
Apache License 2.0
928 stars 243 forks source link

Memory leakage problem #135

Closed pourfard closed 3 years ago

pourfard commented 3 years ago

Hi,

I've just pulled the last source code from the repository. The speed of training has changed from 2s/batch to 1s/batch but memory goes up to 5GB and freezes my pc with only 8GB of RAM.

I changed buffer_size in config file from 100 to 10 but nothing changed.

I'm trying to train contextnet.

nglehuy commented 3 years ago

Did you use ASRSliceDataset or ASRTFRecordDataset? Try setting cache: False in the train and eval dataset configs

pourfard commented 3 years ago

Thanks

I set cache: False and memory usage is fixed on 4.5GB. I did not use ASRTFRecordDataset.

Sorry if I ask this question here, Jasper parameters is about 90M and Contextnet is about 10M, does it mean Jasper inference time is partially 9 times more than Contextnet? I'm trying to train a model to run it on Raspberry Pi or Android for real time ASR, have you any suggestion?

After training contextnet I realized that I cannot use it in a streaming or real-time application. And now I'm going to train Jasper but I'm not sure about it's performance on Raspberry Pi or other embedded devices.

nglehuy commented 3 years ago

It's true that more parameters will take more time for inference, but I don't think it would be like 9 times because it depends on the structure and the decoder from probabilities to text. Jasper cannot be used for streaming too, only models that use unidirectional RNN layers or some technique can be used for streaming because it keeps the states of the previous frames.

pourfard commented 3 years ago

Thanks,

Can I use streaming_transducer? I read the paper and the authors had said it is for a streaming fashion.

Have you any suggestion?

nglehuy commented 3 years ago

Until now, I see they often use streaming_transducer for streaming apps, but they're moving to Streaming Conformer by applying some methods that I'm currently doing research on, hope that we can apply it in the near future.

pourfard commented 3 years ago

Thanks again.