سیستم کاربرپسندی که به توسعهدهندگان در ساخت شبیهسازیها و مدلهای هوش مصنوعی کارآمدتر کمک میکند
مدلهای هوش مصنوعی مبتنی بر شبکههای عصبی که در برنامههایی مانند پردازش تصاویر پزشکی و تشخیص گفتار استفاده میشوند، بر روی دادههایی با ساختارهای پیچیده و عظیم عملیات انجام میدهند. پردازش این دادهها نیازمند محاسبات بسیار سنگین است. به همین دلیل، مدلهای یادگیری عمیق انرژی زیادی مصرف میکنند.
برای بهبود کارایی این مدلها، محققان MIT سیستمی خودکار طراحی کردهاند که به توسعهدهندگان الگوریتمهای یادگیری عمیق این امکان را میدهد تا از دو نوع افزونگی داده به صورت همزمان بهرهمند شوند. این کار باعث کاهش میزان محاسبات، پهنای باند و حافظه موردنیاز برای عملیات یادگیری ماشین میشود.
روشهای فعلی برای بهینهسازی الگوریتمها معمولاً پیچیده هستند و توسعهدهندگان تنها میتوانند از یکی از دو نوع افزونگی داده یعنی اسپیارسیتی (پراکندگی) یا سیمتری (تقارن) بهره ببرند. هر دو این نوع افزونگی در ساختار دادههای یادگیری عمیق وجود دارند.
با ایجاد سیستمی که الگوریتم را از ابتدا طوری طراحی میکند که هم از پراکندگی و هم از تقارن بهرهمند شود، محققان MIT سرعت محاسبات را در برخی آزمایشها نزدیک به ۳۰ برابر افزایش دادهاند.
به دلیل استفاده از یک زبان برنامهنویسی کاربرپسند، این سیستم میتواند الگوریتمهای یادگیری ماشین را برای طیف گستردهای از برنامهها بهینه کند. این سیستم همچنین میتواند به دانشمندانی کمک کند که متخصص یادگیری عمیق نیستند اما به دنبال بهبود کارایی الگوریتمهای هوش مصنوعی خود هستند. علاوه بر این، سیستم مزبور کاربردهایی در محاسبات علمی نیز دارد.
ویلو ارنس (Willow Ahrens)، پژوهشگر فوقدکتری در MIT و یکی از نویسندگان مقالهای درباره این سیستم که در سمپوزیوم بینالمللی تولید و بهینهسازی کد ارائه خواهد شد، بیان میکند: «برای مدت طولانی، دستیابی به این افزونگی دادهها نیازمند تلاش زیادی در پیادهسازی بود. اما اکنون، یک دانشمند میتواند به سیستم ما بگوید که چه چیزی میخواهد محاسبه کند، آن هم بهطور انتزاعی، بدون نیاز به تعیین روش دقیق محاسبه آن.»
از دیگر نویسندگان این مقاله میتوان به رودا پتل (Radha Patel)، فارغالتحصیل مقطع کارشناسی و کارشناسی ارشد MIT، و سامان ارسنیکه (Saman Amarasinghe)، استاد گروه مهندسی برق و علوم کامپیوتر و محقق ارشد در آزمایشگاه علوم کامپیوتر و هوش مصنوعی (CSAIL) اشاره کرد.
حذف محاسبات غیرضروری
در یادگیری ماشین، دادهها معمولاً بهصورت آرایههای چندبعدی یا تنسورها نمایش داده و پردازش میشوند. تنسورها مشابه ماتریسها هستند (آرایههای مستطیلشکل از مقادیر در دو محور سطر و ستون)، اما بر خلاف ماتریسهای دوبعدی، تنسورها میتوانند چندین بعد یا محور داشته باشند، که این موضوع کار با آنها را دشوارتر میکند.
مدلهای یادگیری عمیق عملیاتهایی مانند ضرب و جمع ماتریسها را بهطور تکراری روی تنسورها اجرا میکنند، که این فرایند برای یادگیری الگوهای پیچیده در دادهها ضروری است. حجم زیاد محاسبات موردنیاز برای این عملیاتها به انرژی بسیار زیادی نیاز دارد.
اما به دلیل نحوه قرارگیری دادهها در تنسورها، مهندسان میتوانند با حذف محاسبات تکراری سرعت عملکرد شبکه عصبی را افزایش دهند.
به عنوان مثال، اگر یک تنسور دادههای نظرات کاربران یک وبسایت تجارت الکترونیک را نشان دهد، چون هر کاربر همه محصولات را بررسی نکرده است، اکثر مقادیر این تنسور احتمالاً صفر هستند. این نوع افزونگی داده اسپیارسیتی یا پراکندگی نامیده میشود. مدل با ذخیره و پردازش فقط مقادیر غیرصفر میتواند در زمان و محاسبات صرفهجویی کند.
علاوه بر این، گاهی یک تنسور متقارن است، به این معنا که نیمه بالایی و پایینی ساختار دادهها با یکدیگر برابر هستند. در این حالت، مدل تنها باید روی یک نیمه کار کند و میزان محاسبات را کاهش دهد. این نوع افزونگی، تقارن یا سیمتری نامیده میشود.
ارنس توضیح میدهد که «وقتی سعی میکنید هر دو بهینهسازی (پراکندگی و تقارن) را در نظر بگیرید، شرایط بسیار پیچیده میشود.»
برای سادهسازی این فرایند، ارنس و همکارانش یک کامپایلر جدید توسعه دادند که یک برنامه کامپیوتری برای ترجمه کدهای پیچیده به زبانی سادهتر است. این کامپایلر که SySTeC نام دارد، میتواند بهطور خودکار از هر دو پراکندگی و تقارن در تنسورها بهرهبرداری کرده و محاسبات را بهینه کند.
آنها فرایند ساخت SySTeC را با شناسایی سه بهینهسازی کلیدی که میتوان با استفاده از تقارن انجام داد آغاز کردند:
- اگر تنسور خروجی الگوریتم متقارن باشد، فقط نیاز است تا یک نیمه آن محاسبه شود.
- اگر تنسور ورودی متقارن باشد، الگوریتم فقط نیاز دارد نیمهای از آن را بخواند.
- اگر نتایج میانی عملیات روی تنسورها متقارن باشند، الگوریتم میتواند از انجام محاسبات تکراری صرفنظر کند.
بهینهسازی همزمان
برای استفاده از SySTeC، توسعهدهنده برنامه خود را وارد سیستم میکند و سیستم بهطور خودکار کد را برای هر سه نوع تقارن بهینه میسازد. سپس در مرحله دوم، SySTeC تبدیلهای بیشتری انجام داده و تنها دادههای غیرصفر را ذخیره میکند، و برنامه را برای پراکندگی بهینه میکند.
در نهایت، SySTeC کدی آماده استفاده تولید میکند.
«به این ترتیب، از مزایای هر دو بهینهسازی بهرهمند میشویم. نکته جالب درباره تقارن این است که با افزایش ابعاد تنسور، میتوانیم صرفهجویی بیشتری در محاسبات داشته باشیم» ارنس میگوید.
محققان نشان دادند که سرعت محاسبات با استفاده از کدهای تولیدشده توسط SySTeC در برخی موارد نزدیک به ۳۰ برابر افزایش یافته است.
زیرا این سیستم خودکار است و میتواند به ویژه در شرایطی مفید باشد که یک دانشمند بخواهد دادهها را با استفاده از الگوریتمی که از ابتدا مینویسد پردازش کند.
در آینده، محققان قصد دارند SySTeC را با سیستمهای کنونی کامپایلرهای تنسور پراکنده ادغام کنند تا یک رابط کاربری یکپارچه ارائه دهند. علاوه بر این، میخواهند از آن برای بهینهسازی کد برنامههای پیچیدهتر استفاده کنند.
این پژوهش با حمایت مالی بخشی از سوی اینتل، بنیاد ملی علوم ایالات متحده، آژانس پیشرفته پروژههای تحقیقاتی دفاعی (DARPA)، و وزارت انرژی ایالات متحده انجام شده است.