بیایید باهم داده‌پراکنی رو در یادگیری عمیق غیرمتمرکز گسترش بدیم!

Fall Back

تا حالا اسم یادگیری غیرمتمرکز یا “Decentralized Learning” به گوشتون خورده؟ این یعنی به جای اینکه یه سرور مرکزی همه کارها رو انجام بده، چند تا کامپیوتر (یا همون نود) با هم همکاری می‌کنن تا یه مدل یادگیری عمیق رو آموزش بدن. حالا این ایده تو تئوری خیلی باحاله، اما وقتی نوبت می‌رسه به استفاده واقعی تو کارهای بزرگ، اوضاع یکم پیچیده میشه!

مشکل اصلی اینجاست که تو پروژه‌های بزرگ و واقعی هنوز نمی‌شه با جرأت گفت که یادگیری غیرمتمرکز برای استفاده در تولید (production) آماده‌ست. علتش هم اینه که این روش هنوز اونقدری پایداری (stability)، مقیاس‌پذیری (scalability – یعنی اینکه وقتی با داده‌ها و سخت‌افزار زیاد کار می‌کنیم هم بتونه خوب پیش بره) و همه‌جانبه بودن (generality) رو تو آموزش شبکه‌های عصبی عمیق (Deep Neural Networks یا DNN) نشون نداده.

حالا یه گروه اومده که دقیقاً این مشکل رو هدف گرفته. گفتن بیاید تو زمینه یادگیری غیرمتمرکز داده‌موازی (Data Parallel Training) یه بررسی درست‌وحسابی انجام بدیم. حالا داده‌موازی یعنی اینکه هر نود یه تیکه از داده رو می‌گیره و مدل خودش رو روی اون آموزش میده – طوری که همه با هم کلی داده رو هم‌زمان پردازش می‌کنن.

برای اینکه بتونن این موضوع رو علمی و شفاف بررسی کنن، یه چارچوب بنچمارکینگ (Benchmarking Framework – یعنی یه ابزار برای مقایسه و سنجش عملکرد) به اسم DBench ساختن. این ابزار هم برای یادگیری متمرکز (مرسوم) و هم غیرمتمرکز کارایی داره. بعدش هم رو DBench یه متدولوژی بنچمارکینگی پیاده کردن که بتونه نشون بده دقت مدل چطوری با تفاوت‌های بین پارامترها (Parameter Tensors – یعنی وزن‌هایی که شبکه باهاش کار می‌کنه) بسته به شکل ارتباط بین نودها و مقیاس آموزش رابطه داره.

چند تا نکته جالب از این بررسی‌ها به دست اومده:
١. همونطور که تو یادگیری متمرکز بزرگ‌مقیاس یه‌سری مشکلات مثل مقیاس‌پذیری داریم، تو غیرمتمرکز هم وقتی مقیاس رو می‌بریم بالا همونا رو می‌بینیم. یعنی داستان با عوض کردن روش به تنهایی حل نمیشه!
٢. دقت مدل تو یادگیری غیرمتمرکز خیلی بستگی داره به اینکه چندتا ارتباط (یا همون edge تو گراف ارتباطی نودها) بین نودها وجود داره. عملاً هرچی ارتباطات بیشتر، داده و اطلاعات بهتر پخش و هماهنگ میشه.
٣. دقت مدل تو یادگیری غیرمتمرکز شدیداً حساسه به اینکه پارامترهای مدل تو نودهای مختلف چه‌قدر با هم فرق دارن. یعنی اگه این تفاوت‌ها (Variance) زیاد بشه، دقت مدل پایین میاد و این یه نکته کلیدیه!

حالا این گروه فقط به کشف مشکل قناعت نکرد، یه راه‌حل هم پیشنهاد دادن به اسم Ada. Ada یه روش تطبیقی غیرمتمرکز (Adaptive Decentralized Approach) برای آموزش مقیاس بزرگ شبکه‌های عمیق با الگوریتم معروف SGD (Stochastic Gradient Descent – یعنی کاهش تدریجی خطا با انتخاب رندوم بخش‌هایی از داده) ارائه میده و کاری می‌کنه که گراف ارتباطی بین نودها دائماً و پویاتر در طول آموزش تغییر کنه و بهینه بشه.

جالب اینکه وقتی Ada رو امتحان کردن، دیدن نه تنها نرخ همگرایی (Convergence Rate – یعنی اینکه مدل چه‌قدر سریع یاد می‌گیره) تو آموزش غیرمتمرکز همیشه خیلی خوبه، بلکه برای همه تست‌هایی که انجام دادن، دقت مدل تقریباً با مدل متمرکز برابری می‌کنه. حتی موقع آموزش مدل ResNet50 (یکی از مدل‌های معروف تصویر) روی دیتاست ImageNet-1K (یه دیتاست خیلی بزرگ تصاویری) با هزار و هشت GPU، Ada باز هم عالی جواب داد!

خلاصه که اگه دوست داری بدونی آینده آموزش مدل‌های عمیق قراره چه شکلی باشه، این تحقیقات خیلی امیدوارکننده‌ست. یادگیری غیرمتمرکز داره با Ada و روش‌های هوشمندانه جدید خیلی پیشرفت می‌کنه و شاید به زودی بتونیم تو پروژه‌های واقعی ازش استفاده کنیم!

منبع: +