فلکس‌پایپ: انعطاف واقعی توی موازی‌سازی خط لوله‌ای برای آموزش مدل‌های عمیق

Fall Back

بذارین همین اول کار یه چیزی رو بگم: آموزش دادن مدل‌های بزرگ هوش مصنوعی (همون DNN که یعنی Deep Neural Network یا شبکه عصبی عمیق) اصل کاریه و خیلی وقت‌ها باید این مدل‌ها رو توی کامپیوترهای مختلف پخش کنیم تا کار رو جمع کنیم. یکی از روش‌های معروف واسه این کار رو بهش می‌گن “pipeline parallelism”، یعنی چندتا کامپیوتر دارن هر بخش از مدل رو جداگانه می‌چرخونن و اطلاعات مثل یه خط تولید می‌ره جلو. اما این روش همیشه سرراست نیست و مخصوصاً وقتی مدل‌ها پیچیده می‌شن، کلی تنظیمات و ماجراهای عجیب پیدا می‌کنه.

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

حالا اینجا فلکس‌پایپ (FlexPipe) وارد میشه. این یه چارچوب جدید برای موازی‌سازی خط لوله‌ایه که کلی دستمون رو باز می‌ذاره تا هر جور برنامه‌ریزی‌ای که دلمون خواست بسازیم. تازه یه زبان کوچک مخصوص خودش هم داره که بهش می‌گن Domain-Specific Language یا DSL، یعنی یه زبان برنامه‌نویسی کوچیک که مخصوص همین کار خط لوله‌ای طراحی شده. باهاش می‌تونی سریع و راحت برنامه زمان‌بندی خودت رو بچینی و لازم نیست گیر کدهای دشوار باشی.

اما جذاب‌ترش اینه که فلکس‌پایپ یه زمان‌بند اتوماتیک هم داره. یعنی خودش می‌تونه بره و بر اساس مدل و نیاز کاربر، بهترین زمان‌بندی و تقسیم‌بندی رو پیدا کنه؛ اونم بدون اینکه کلی زمان و انرژی برای پیدا کردنش بزاره. خلاصه مثل یه دستیار زرنگ عمل می‌کنه که می‌تونه توی زمان‌بندی خط لوله هر نوع تغییر و تنظیمی بدی و هر عملیاتی رو ادیت یا اضافه کنی، حتی اگه شرایط عوض بشه یا مدل تازه‌ای بخوای آموزش بدی.

بریم سراغ مهم‌ترین بخش یعنی نتیجه‌ها و مقایسه‌هاش؛ تو آزمایش‌ها فلکس‌پایپ تونسته سرعت کار رو تا ۲.۲۸ برابر نسبت به یکی از معروف‌ترین ابزارهای آموزش موازی بزرگ به اسم Megatron-LM زیادتر کنه. Megatron-LM خودش یه چارچوب سنگین و معروف توی این زمینه است. تازه، فلکس‌پایپ تونسته نسبت به بهترین سیستم‌های خودکار زمان‌بندیِ فعلی هم تا ۱.۴۹ برابر سریع‌تر عمل کنه. یعنی هم سریع‌تره، هم راحت‌تر و قابل برنامه‌ریزی‌تره، هم حسابی انعطاف داره.

اگه بخوام خلاصه بگم: فلکس‌پایپ اومده تمام اون دردسرهای برنامه‌ریزی موازی رو بذاره کنار و یادگیری و تست مدل‌های سنگین هوش مصنوعی رو هم ساده‌تر، هم سریع‌تر و هم قابل برنامه‌ریزی کنه؛ بدون اینکه کاربرش توی دردسر کدنویسی زیاد یا مشخصات عجیب مدل‌ها گیر کنه. راستش رو بخواین، با این همه انعطاف، هرکسی خیلی راحت می‌تونه برنامه‌ی خط لوله‌ای خودش رو برای مدل‌های عجیب‌غریب فردا بسازه بدون اینکه نگران دردسرهای قبلی باشه!

منبع: +