تنظیم هایپرپارمترها با افزایش Batch Size
شاید شنیده باشید که در هنگام آموزش شبکههای عصبی، وقتی اندازهی #batch ها را x برابر میکنید، بهترست نرخ آموزش را نیز x برابر (اگر الگوریتم آموزش #SGD است) و یا x√ برابر (اگر الگوریتم آموزش #Adam است) کنید.
مثلا در #LLM ها که بیشتر از الگوریتم آموزشی Adam استفاده میشود، اندازهی batch ها را تا حدی که #GPU شما خطای Out_Of_Memory نمیدهد (به صورت توانی از ۲) افزایش دهید. هر بار که اندازه batch را ۲ برابر میکنید، نرخ آموزش را ۱/۴ برابر کنید.
این مقالهی جالب از دانشگاه پرینستون، به کمک معادلات دیفرانسیل تصادفی، الگوی کارایی برای تغییر هایپرپارامترها (مثل learning rate) با افزایش #batch_size ارائه میدهد.
لینک
معمولا در عمل، نرخ آموزش هرچقدر هم که باشد، در طی #epoch ها، ابتدا از 0.1 نرخ آموزش شروع کرده و در ده درصد ابتدایی مسیر آموزش، این نرخ را بهصورت خطی زیاد کرده تا وقتی ده درصد epoch ها طی شد، به نرخ اصلی رسیده باشیم. از آنجا به بعد (۹۰ درصد باقی epoch ها) نرخ آموزش بهصورت کسینوسی کم میشود.
شاید شنیده باشید که در هنگام آموزش شبکههای عصبی، وقتی اندازهی #batch ها را x برابر میکنید، بهترست نرخ آموزش را نیز x برابر (اگر الگوریتم آموزش #SGD است) و یا x√ برابر (اگر الگوریتم آموزش #Adam است) کنید.
مثلا در #LLM ها که بیشتر از الگوریتم آموزشی Adam استفاده میشود، اندازهی batch ها را تا حدی که #GPU شما خطای Out_Of_Memory نمیدهد (به صورت توانی از ۲) افزایش دهید. هر بار که اندازه batch را ۲ برابر میکنید، نرخ آموزش را ۱/۴ برابر کنید.
این مقالهی جالب از دانشگاه پرینستون، به کمک معادلات دیفرانسیل تصادفی، الگوی کارایی برای تغییر هایپرپارامترها (مثل learning rate) با افزایش #batch_size ارائه میدهد.
لینک
معمولا در عمل، نرخ آموزش هرچقدر هم که باشد، در طی #epoch ها، ابتدا از 0.1 نرخ آموزش شروع کرده و در ده درصد ابتدایی مسیر آموزش، این نرخ را بهصورت خطی زیاد کرده تا وقتی ده درصد epoch ها طی شد، به نرخ اصلی رسیده باشیم. از آنجا به بعد (۹۰ درصد باقی epoch ها) نرخ آموزش بهصورت کسینوسی کم میشود.