Adibian / Persian_Tacotron2

Training Tacotron2 for Persian language as a Persian text-to-speech
7 stars 1 forks source link

CUDA out of memory exception #3

Open mohsenhrt opened 2 years ago

mohsenhrt commented 2 years ago

Hi dear Iranian engineer I encounter this error: RuntimeError: CUDA out of memory. Tried to allocate 2.00 MiB (GPU 0; 4.00 GiB total capacity; 2.66 GiB already allocated; 0 bytes free; 2.87 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

even with batch size = 1

Adibian commented 2 years ago

This error is common in Pytorch but should be fixed for a small batch size. It also seems that you are using 4 GB of RAM, which I think is not enough to train the model, and you can use google Colab , which gives you more RAM and free GPU. You can also try the solutions in this link.

mohsenhrt commented 2 years ago

Hi my dear friend How if we speak in persian? (; I made a model, but this model makes sound files less than a second. What's the problem? thanks

Adibian commented 2 years ago

Hi It is better to write the message in English so that it can be used by everyone, but nevertheless, whatever you want to write the message, I will answer. For your problem, I think it is because of your data and number of training epochs. If your data is good enough it maybe because of underfitting. what is your data and number of epochs?

mohsenhrt commented 2 years ago

ممنونم آقامهندس هم استانی تعدادی فایل صوتی تقطیع شده رو با برنامه نویسی از روی یک فایل صوتی که متنشو داشتم استخراج کردم و تعداد ایپاک ها 200 گذاشته بودم چون سیستمم 4 گیگ گرافیک داره تعداد فایلها رو عمدا کم کردم تا توی رم گرافیک جاشه . خب درسته که داده های ترین کم شده فوقش باید اورفیت شه نه اینکه کلا خروجی نده درسته؟ چون بلاخره در اورفیت مدل بایاس شده هم جواب بخواد بده بلاخره یه جوابی میده بنظرم . اینم در نظر بگیریم که من یه متن از فایلهای آموزش داده شده رو بهش دادم پس انتظار داشتم جواب درستی رو بده قربونت

Adibian commented 2 years ago

احتمالا مشکل همون آموزش ناکافی باشه. چند نکته رو در نظر بگیرید شاید حل بشه مشکل: اول اینکه اندازه فایل ها معمولا بین یک تا 10 ثانیه باشه و خیلی کمتر یا خیلی بیشتر رو فیلتر کنید (مثلا کمتر از 0.8 و بیشتر از 12). دوم اینکه تعداد داده ها خیلی مهمه و هر چی بیشتر باشه مدل بهتر آموزش می بینه و مثلا خروجی هایی که تو این پروژه من گذاشتم با 2 ساعت داده آموزش دیده (توی پروژه های واقعی بیشتر از 100 ساعت هم استفاده میشه). ولی حرف شما درسته و برای داده آموزشی با این وجود هم باید نتیجه درستی بده. سوم اینکه به خطایی که مدل میرسه دقت کنید و ببینید آیا به خوبی آموزش دیده یا نه که باید خطا در طی آموزش به تدریج کم بشه و بعد از 200 مرحله باید خطا خیلی کم شده باشه. نکته انتها اینکه نیاز نیست تعداد فایل ها رو کم کنید چون مدل همه داده ها رو همزمان آموزش نمیده و در هر استپ بخشی رو لود میکنه و آموزش میده. اگر به خطای حافظه میخورید اندازه فایل های صوتی و مقدار بچ سایز رو کم کنید.

mohsenhrt commented 2 years ago

image image خیلی ممنون بخاطر نکته ها اینکه نرخ یادگیری ثابته مشکل ایجادکرده بنظرتون؟

mohsenhrt commented 2 years ago

ببخشید استفاده از فونم 'vˈa ˈarkɑn donjˈɑje mˌasihˈiːjat rɑ hˈam beː lˈarzeː darˈɑvard .' که تبدیل شده ی جمله 'و ارکان دنیای مسیحیت را هم به لرزه درآورد.' هست برای شبکه مشکلی ایجاد میکنه؟ میخوام ببینم ساختار مدلی که ساختید خاصه یا هر نوع کاراکتری رو قبول می کنه سپاس

Adibian commented 2 years ago

سلام بستگی دارد مدلی که آموزش داده اید از چه ساختاری برای phenome استفاده کرده است. دقت کنید که این مدل هنگام load کردن داده ها برای آموزش آن ها را پیش پردازش میکند. پس اگر حروف خاصی برای صداهای خاصی استفاده کرده اید باید پیش پردازش را متناسب با آن تغییر دهید. می توانید این پیش پردازش ها را در اینجا ببنید. مثلا اگر در phenome های مورد استفاده شده ی شما کاراکترهای کوچک و بزرگ صداهای مختلفی دارند قسمت lowercase را از فایل cleaner حذف کنید. یا علائمی که استفاده میکنید اگر در فایل symbols قرار ندارند آن را اضافه کنید. پیش پردازش نهایی در فایل init انجام شده که از سایر فایل های استفاده شده است که حتما آن را ببینید. در نهایت با توجه به این پیش پردازش ها phenome ها به دنباله عددی تبدیل می شوند و اگر ابهامی در این پیش پردازش ها نساخته باشید (مثلا علامتی که صدای خاصی دار را حذف کرده باشید یا برای دو صدا یک کاراکتر استفاده کرده باشید) در آموزش مدل نباید مشکلی ایجاد شود.

mohsenhrt commented 2 years ago

image ممنون حروف خاصی که در تبدیلات صوت به متن بود را اضافه کردم . بنظر شما این Backslashها در خروجی cleaner طبیعیست؟ 2.و اینکه سعی می کنم از text_to_phone ای برای تولید npy ها استفاده کنم که شما استفاده کرده اید اما فقط از espeak می توانم استفاده کنم! یا چطور بدون استفاده از backend=espeak می توانیم فایل های نامپی را تولید کنیم؟