آمپِر: روشی خفن برای یادگیری فدرال سریع و کم‌خرج!

Fall Back

خب بچه‌ها امروز می‌خوام درباره یه روشی خیلی باحال به اسم «آمپِر» صحبت کنم، مخصوص اونایی که دوست دارن بیشتر درباره یادگیری فدرال بدونن. اگه اسمش به گوشتون نخورده، یادگیری فدرال یعنی اینکه یه مدل هوش مصنوعی رو به‌جای اینکه با تمام داده‌ها روی یه سرور متمرکز آموزش بدن، میارن روی موبایل‌ها و کامپیوترها و هر کدوم از دستگاه‌ها بخشی از مدل رو با داده‌های خودش آموزش میدن. چیزی مثل باشگاه تیمی برای هوش مصنوعی! هدفش هم اینه که اطلاعات شخصی آدم‌ها پیش خودشون بمونه و راهی سرور نشه.

حالا یه مشکلی که همیشه تو این کار بوده اینه که همه‌ی این محاسبات رو که میذارن گردن گوشی یا کامپیوتر، حسابی سخت و سنگین میشه و خب مصرف باتری رو بالا می‌بره و کلاً اذیت می‌کنه. برای اینکه این حجم کار رو کمتر کنن، اومدن یه ایده جدید زدن به اسم SFL یا Split Federated Learning. اینم یعنی آموزش مدل رو نصف می‌کنن، یه تیکه‌ش روی دستگاهه و بقیش روی سرور. مثلاً لایه‌های اول شبکه عصبی رو گوشی آموزش می‌بینه و بقیه کار رو سرور انجام میده. (اگه نمی‌دونی شبکه عصبی چیه؟ یه مدل کامپیوتری که شبیه مغز آدم اطلاعات یاد می‌گیره!)

ولی خود این Split کردن هم داستانای خودشو داره! چرا؟ چون دستگاه و سرور باید هی وسط آموزش با هم صحبت کنن و یه عالمه اطلاعات رد‌ و بدل کنن: “این وسطی که درست کردم رو بگیر برو بالا!”، “آها باشه! جوابش این شد!”. اینجوری کلی داده و اطلاعات بینشون رد و بدل میشه (اینجا منظور از activation همون خروجی لایه وسط شبکه عصبیه و gradient همون می‌گه مدل باید چجوری خودش رو بهبود بده)، و خب این حجم جابجایی داده هم سرعت رو کم میکنه هم هزینه‌ها رو می‌بره بالا! تازه دقت مدل هم برای داده‌هایی که تو هر گوشی فرق داره – به این میگن non-IID data یعنی هر دستگاه یه مدل داده منحصر به فرد داره – میاد پایین.

اینجا یه نابغه اومده و روش “آمپِر” رو اختراع کرده تا همه این مشکلاتو حل کنه. حالا آمپر چیکار می‌کنه؟

اولا یه مدل آموزش رو پیشنهاد میده که به جای این همه ارسال و دریافت داده بین سرور و دستگاه، فقط یه بار اطلاعات وسطی رد و بدل کنن! خیلی هیجان‌انگیز شد، نه؟ به این کار میگن کاهش communication overhead یا همون هزینه ارتباطی. یعنی دستگاه‌ها مجبور نیستن مدام اطلاعات رد کنن، یه بار خروجی رو میدن به سرور و تمام! تازه یه سامانه کمکی (auxiliary network)، که خیلی سبک و جمع و جوره، طراحی کردن تا آموزش دستگاه و سرور رو هم مستقل کنه و کمتر نیاز به حرف زدن باشه.

دوم اینکه توی آمپر، آموزش مدل دوطرفه نیست مثل SFL. اینجا یادگیری یکطرفه و به صورت پشت سر هم انجام میشه (بهش میگن unidirectional inter-block training). یعنی اول دستگاه مدل خودش رو آموزش میده، بعد هرچی یاد گرفته شده، به سرور منتقل میشه و اونم کار خودشو انجام میده. اینجوری دیگه لازم نیست gradient رو (یعنی اون اطلاعاتی که نشون میده مدل باید چجوری بهینه بشه) ارسال کنن! خلاصه کار دستگاه راحت میشه.

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

حالا بیاین یه نگاه به نتایج آزمایش‌های واقعی بندازیم!

  • آمپر تونسته دقت مدل رو تا ۱۳.۲۶ درصد بهتر کنه نسبت به بهترین‌های SFL!
  • زمان آموزش رو تا ۹۴.۶ درصد کم کنه – یعنی تقریباً همه دردسرها رو حذف کرده!
  • هزینه ارتباطی دستگاه و سرور رو تا ۹۹.۱ درصد پایین آورده! یعنی دیگه اینترنت تموم نمیشه همش!
  • محاسبات لازم روی خود دستگاه رو هم تا ۹۳ درصد کم‌تر کرده. گوشی شما خوشحال، شما خوشحال!
  • حتی توی داده‌های خیلی غیرهمسان هم نوسان دقت رو تا ۵۳ درصد پایین آورده—یعنی عملکردش خیلی باثبات‌تره.

کلاً آمپر یه ایده فوق‌العاده برای کساییه که به یادگیری هوش‌مصنوعی تو دستگاه‌های شخصی علاقه دارن اما نمی‌خوان دردسر زیاد و هزینه بالا رو تحمل کنن! هم داده خودت پیش خودت می‌مونه، هم دیگه باتری نمیسوزه، هم اینترنت کمتر مصرف میشه و هم مدل باهوش‌تر و دقیق‌تر میشه!

خلاصه که اگر روزی خواستین یه مدل هوش مصنوعی رو توی گوشی یا لپ‌تاپ خودتون آموزش بدین، یا حتی دنبال راه‌حل‌های ارزون‌تر و سریع‌تر برای یادگیری فدرال بودین، آمپر یکی از خفن‌ترین انتخاب‌هاست!

منبع: +