همه میدانیم که در زمینه پردازشهای هوش مصنوعی و یادگیری ماشین نظیر DNNs یا همان Deep Neural Networks Traning همیشه پردازندههای گرافیکی یا GPUها از پردازندههای مرکزی یعنی CPUها برتر هستند. دلیل این امر هم بسیار ساده است، چرا که پردازندههای گرافیکی از تعداد واحدهای پردازشی بیشتر تشکیل شدهاند و به اصطلاح هستههای بیشتری دارند. اما الگوریتم جدیدی که توسط دانشگاه Rice طراحی را ورق را برمیگرداند و گفته میشود که پردازندهها با این الگوریتم تا حداکثر 15 برابر سریعتر خواهند شد.
بهینه سازی الگوریتم پردازندههای مرکزی، ایده جدید دانشمندان برای بهبود بازدهی یادگیری ماشین
معمولاً برای حل کردن محاسبات پیچیده از الگوریتمهای جستجوی غیر هوشمندانه نظیر Brute Force استفاده میکنند؛ یعنی با استفاده از سخت افزار قویتر یا اختصاصی برای هدفی مشخص، برای حل یک محاسبه پیچیده از روشهای جستجوی جامع فراگیر استفاده میکنند. بدون شک پردازشهای DNN امروزه یکی از پیچیدهترین و سنگینترین عملیاتهای پردازشی است، به همین خاطر برنامهنویسانی که در زمینه یادگیری ماشین فعالیت دارند برای انجام این عملیات از پردازندههای گرافیکی استفاده میکنند. از آنجا که در پردازندههای گرافیکی بازدهی بهتری در این زمینه دارند و همچنین اغلب الگوریتمها براساس محاسبات ماتریسی هستند، برنامه نویسها ترجیح میدهند از GPU به جای CPU استفاده کنند.
کشفیات جدید دانشگاه Rice عملکرد پردازندههای AVX512 را به شدت بهبود داده است
Anshumali Shrivastava، یکی از اساتید دانشگاه فنی مهندسی Rice Brown، به همراه همکاران خود موفق شده الگوریتم جدیدی را طراحی کند که سرعت پردازندههای مرکزی AVX512 و AVX512_BF16 را در محاسبات DNN چند برابر افزایش میدهد. وی در مصاحبهای با TechXplore میگوید: «شرکتها میلیونها دلار پول صرف میکنند تا سیستمها کامپیوتری خود را برای محاسبه پردازشهای هوش مصنوعی و DNN بهینه کنند. تقریباً میتوان گفت که تمام بخشهای این صنعت به یک موضوع وابسته هستند، بهبود بازدهی محاسبات ماتریسی. همه به دنبال سخت افزاری اختصاصی با یک معماری ویژه برای به حداکثر رساندن بازدهی محاسبات ماتریسی هستند. بسیار برای بهبود شرایط از سیستمهای تخصصی بسیار گران قیمت صحبت میکنند، اما من میگوییم بیایید نگاهی دوباره به الگوریتمها داشته باشیم و آنها را بهینه کنیم.»
بررسی نتایج به دست آمده از بررسیهای محققان و Anshumali Shrivastava
Shrivastava برای اثبات ادعای خود در رابطه با الگوریتمی که به تازگی طراحی کرده، از SLIDE یا Sub Linear Deep Learning Engine، یک موتور برپایه Open-MP و مبتنی بر زبان ++C که به صورت تصادفی هش هوشمند را با موازی سازی چند هستهای متوسط در CPU ترکیب می کند، استفاده کرد. این موتور به شکل ویژهای برای پردازندههای شرکت Intel که از AVX512 و AVX512-BF16 پشتیبانی میکنند، بهینه شده است. نتایج بررسیهای انجام شده توسط محققان دانشگاه Rice نیز ارائه شده که در ادامه میتوانید مشاهده کنید.
استفاده از Locality Sensitive Hashing برای شناسایی Neuronها
این موتور برای شناسایی Neuronها در حین هر بروزرسانی از Locality Sensitive Hashing یا LSH استفاده میکند که به شدت سبب بهینه سازی عملکرد نهایی میشود. حتی بدون سفارشی سازی نیز میتواند بیش 200 میلیون پارامتر Neural Network را یاد بگیرد. از لحاظ میزان زمان صرف شده، این موتور میتواند بسیار سریعتر و بهینهتر از پیاده سازی TensorFlow در کارت گرافیکهای سری Nvidia V100 عمل کند. شبنم دقاقی، یکی از اساتید دانشگاه Rice، میگوید: «بازدهی مبتنی بر جدول هش در حال حاضر در پردازندههای گرافیکی بهتر است، اما پردازندههای مرکزی نیز در حال پیشرفت در این زمینه هستند.» دانشمندان راهکارهای جدیدی را برای بهینه سازی الگوریتمها پیدا کردهاند که در ادامه به آنها خواهیم پرداخت.
راهکار جدید دانشمندان برای سرعت بخشیدن به Hashing
محققان برای سرعت بخشیدن به هش کردن (Hashing)، الگوریتمها را برداری و کوانتیده کردهاند تا در موتور پردازندههای AVX512 و AVX512-BF16 شرکت Intel عملکرد بهینهتری ارائه کنند. آنها همچنین برخی بهینه سازیها را نیز در زمینه حافظه پیاده کردهاند. «ما با استفاده از پتانسیل پردازندههای AVX512 و AVX512-BF16 بهره برداری از SLIDE را از چیزی که بود هم فراتر بردهایم. ما نشان دادیم که اگر شما به محاسبات ماتریسی وابسته نباشید، میتوانید به لطف قدرت پردازشی پردازندههای مدرن در زمینه یادگیری ماشین و هوش مصنوعی با استفاده از پردازندهها به 15 برابر سرعت بالاتری نسبت به هر سخت افزاری اختصاصی دیگری دست پیدا کنید.» در ادامه به نمودارهای ارائه شده توسط Anshumali Shrivastava توجه کنید.
(برای مشاهده تصویر در اندازه اصلی روی آن کلیک کنید)
نتایج به دست آمده با Datasetهای Amazon-670K و WikiLSHTC-325K و Text8 نشان دهنده عملکرد بهینه و بسیار عالی موتور SLIDE هستند. با استفاده از الگوریتم جدید میتوان گفت که پردازندههای سری Cooper Lake میتوانند در این زمینه کارت گرافیکهای Nvidia Tesla V100 را پشت سر گذاشته و تا 7.8 برابر در Amazon-670K و 5.2 برابر در WikiLSHTC-325K و 15.5 برابر در Text8 بازدهی بالاتری داشته باشند. در واقع حتی یک پردازنده سری Cascade Lake نیز با بهینه سازی میتواند 2.55 تا 11.6 برابر عملکرد بهتری نسبت به کارت گرافیکهای Nvidia Tesla V100 داشته باشد. در ادامه به جدول مقایسه زمانی که توسط دانشگاه Rice منتشر شده توجه کنید.
(برای مشاهده تصویر در اندازه اصلی روی آن کلیک کنید)
بهینه سازی پردازندههای مرکزی به هیچ وجه ضرری نخواهد داشت
بدون شک، بهینه سازی الگوریتمهای DNN برای پردازندههایی که از AVX512 و AVX512-BF16 پشتیبانی میکنند کاملاً منطقی به نظر میرسد. چرا که این پردازندهها امروزه در اغلب دیتاسنترها و سرورها و ماشینهای HPC مورد استفاده قرار میگیرند و چه بهتر که از تمام قابلیتهای آنها و حداکثر توان پردازشی آنها بهره ببریم. البته از لحاظ بازدهی مطلوب نکته بسیار ظریفی در اینجا وجود دارد. کارت گرافیکهای سری Nvidia A100 تضمین میکنند که 3 تا 6 برابر سریعتر از Nvidia Tesla V100 خواهند بود. متأسفانه ما هیچ داده مربوط به عملکرد این کارت گرافیکها با Datasetهای Amazon-670K یا WikiLSHTC-325K یا Text8 در دست نداریم.
عملکرد کارت گرافیکهای Nvidia A100 هنوز مشخص نیست
شاید کارت گرافیکهای A100 نتوانند پردازندههایی را که از الگوریتمهای جدید استفاده میکنند شکست دهند، اما پردازندههای مذکور به اندازه کارت گرافیکهای A100 به راحتی قابل تهیه نیستند. در آخر این سوال به وجود میآید که آیا پردازندههای سری Nvidia A100 میتوانند پردازدههای سری Cascade Lake شرکت Intel را شکست دهند؟ برای پاسخ به این فعلاً داده کافی در دسترس نیست، پس بهتر است صبر کنیم تا اطلاعات و جزئیات بیشتری منتشر شود.