بذار خیلی راحت و خودمونی برات توضیح بدم که داستان از چه قراره! اگه سری به دنیای هوش مصنوعی و یادگیری عمیق یا دیپلرنینگ زده باشی، حتماً دیدی که مدلهاش رو میشه رو چیزای مختلف اجرا کرد: از سیپییو (CPU یعنی پردازنده کامپیوترهای معمولی)، گرفته تا جیپییو (GPU یعنی همون کارت گرافیکی که مخصوص پردازش سنگینتره)، یا حتی نسخههای کامپایلشده و سرعتیترش.
حالا مشکل اینه که وقتی میخوای یه مدل رو رو این سیستمهای مختلف اجرا کنی، گاهی نتیجهها کامل شبیه هم نمیشن! مثلاً ممکنه یه مدل رو رو کارت گرافیک اجرا کنی یه چیزی تحویل بده، همون مدل رو رو سیپییو اجرا کنی یذره فرق کنه… و این خیلی اعصابخوردکنه، مخصوصاً واسه وقتی که دقت و تکرارپذیری خیلی مهمه!
یه تیم باهوش یه راهحل خفن برا این مشکل پیدا کرده و تو مقالهشون (که اسمش کلی با کلاسه!) اومدن یه چارچوب معرفی کردن که حسابی این قضیه رو تست و برطرف میکنه. تو این راهحل، گفتن: اولاً از همون اول ما همه چی رو بر اساس یه فایل ساده به نام YAML تنظیم میکنیم (YAML یعنی یه جور فایل تنظیمات که مثل یه دفترچه راهنما میمونه و همه مشخصات آزمایشت رو توش میذاری؛ لازم نیست بری تو کد چیزی عوض کنی!). این یعنی آزمایش و کد از هم جدا میشن و کار خیلی راحتتر میشه.
بعدش برای بررسی اینکه مدل رو همه سیستمها شبیههم جواب میدن یا نه، سه مرحله تایید گذاشتن، که خیلی باحاله:
- بررسی نزدیک بودن تِنسورها: مثلا تِنسور یه جور داده چندبعدیه که مدل هوش مصنوعی روش حسابکتاب میکنه. اینجا چک میکنن که خروجی این دادهها خیلی با هم فرق نکنه.
- هماهنگی اکتیویشنها: اکتیویشن همون خروجی لایههای داخلی مدل هست، یعنی میبینن وسط راه شبکه عصبی چیزها یکیه یا نه.
- امتیازدهی به خروجی نهایی یا متریک تسک: یعنی عملاً به اینکه آیا مدل تو حل وظیفه اصلی درست کار کرده یا نه امتیاز میدن.
تو آزمایششون ۶۷۲ بار انواع مدل رو رو سیستمها و تنظیمات مختلف امتحان کردن! باورت میشه؟ نتیجهاش این شد که ۷۲ درصد اجراها درست و بیمشکل بودن. البته هرچی معیار قضاوت سختتر، اختلافا بیشتر میشه. مخصوصاً تو مدلهای مربوط به شناسایی (Detection) و موقعی که مدل رو نسخههای کامپایلشده اجرا میکردن (کامپایلشده یعنی مدل قبل اجرا، به شکلی ترجمه میشه که رو سختافزارهای خاص سریعتر بتونه اجرا بشه). اینجاها چون پردازش انتهایی مدل همیشه دقیق تکرارپذیر نیست، بیشتر اختلاف درمیاد!
اما نکتۀ جالب اینه که اگه بری سراغ راهحلهای هوشمندانه مثل استفاده از آداپتورهای قطعی (Deterministic Adapters یعنی روشهایی که نتیجه رو کاملاً قابل پیشبینی و یکسان میکنن) یا مثلاً بعضی وقتا رویهی قدیمی اجرا رو بکنی، اختلاف خیلی کمتر میشه و سرعت مدل هم تقریباً افت نمیکنه! یعنی میشه بدون دردسر، مدل رو رو هر سیستمی به راحتی اجرا کرد و نتایجت قابل اتکا باشن.
این چارچوب کلاً اولین مدلیه که اومده قشنگ و علمی بررسی میکنه اختلافهای بین سیستمهای مختلف در اجرای مدلهای یادگیری عمیق و یه راه حل استاندارد براش ارائه داده؛ یعنی حالا دیگه میتونی با اطمینان، مدلهات رو تو جاهای مختلف اجرا کنی و انتظار داشته باشی خروجیها مثل هم باشه! خلاصه، اگه با مدلهای هوش مصنوعی سر و کار داری و نگران تکرارپذیری و دقتشون رو سختافزارهای مختلفی، این روش حسابی به کارت میاد!
منبع: +