با توجه به رشد سریع زمینه¬های یادگیری ماشینی، رنسانسی در شبکه¬های عصبی به وجود آمده است، به گونه¬ای که نرم¬افزارهای کامپیوتری می¬توانند مسائل را شبیه به راه حل های انسان¬ها حل کنند. این نرم¬افزارها با به کارگیری فرآیندهای پیچیده¬ای از الگوهای منطبق سازی که بر روی باگ¬های مسائل توزیع می¬کنند، سعی در حل این مسائل دارند. قدرت¬ محاسباتی اخیر در کامپیوترها، شبکه های عصبی را قادر به شناسایی تصاویر، سخنرانی-ها، و چهره¬ها می¬سازد و به لطف قدرت زیادی که در فناوری محاسبات به وجود آمده است، این کار را همانند یک انسان بسیار باهوش انجام می¬دهند. بسیاری از مهندسین کامپیوتر فکر می¬کنند که این تنها شروع کاری است که در نهایت به موفقیت منجر می¬شود. متاسفانه، سخت افزاری که ما برای آموزش شبکه¬های عصبی از آن استفاده می¬کنیم، تقریباً در مقایسه با ساختار شبکه¬¬های عصبی هیچ است. یعنی ممکن است برنامه ریزی کردن یک شبکه عصبی برای حل یک مساله، روزها و ماه¬ها به طول بیانجامد-حتی در یک محاسبه خوشه¬ای- و سپس بعد از انجام این برنامه ریزی هم قدرت بسیار زیادی لازم است تا بتواند مساله موردنظر را حل کند.
شاید محاسبات نیرومورفیک کلیدی برای حل الگوریتم باشد
محققین کمپانی بزرگ IBM با هدف تحولی در دنیای برنامه¬نویسی او فناوری دیگری شبیه به شبکه¬های عصبی استفاده کردند، که اولین بار در یک دهه پیش ظاهر شد. این فناوری را محاسبات مقاومتی نامیدند، مفهومی که در خود واحدهای محاسباتی را به شکل آنالوگ داشت، طبیعتی کوچک داشت، و به گونه¬ای بود که مهندسان توانستند در حین کار کردن بر روی آن به کشفیات مفیدی برسند. ترکیب کردن شبکه¬های عصبی با سخت افزار در شرکت IBM کار جدیدی نیست. این کمپانی اخیراً برخی از تراشه¬های TrueNorth خود را برای آزمایشگاه¬های Lawrence National Labs و به هدف استفاده در واحدهای تحقیقاتی AI به فروش رسانده است. محصول TrueNorth طراحی نیروموفیکی دارد، به این معنی که این تراشه¬ها با دقت بالا می¬توانند معماری مغز انسان را حدس بزنند و مشابه تماس¬های عصبی انسان کار می¬کنند. TrueNorth علی¬رقم نرخ سرعت پایین ۱KHz که دارد، می¬تواند شبکه¬های عصبی را با کارایی بالایی اجرا کند زیرا دارای دارای یک میلیون واحد ریز پردازش کننده می¬باشد که هرکدام از آنها شبیه به یک نورون هستند.
اگرچه تاکنون شتاب در پیشرفت شبکه¬های عصبی مانند پروژه TrueNorth به بخش حل مسایل در گسترش شبکه¬های عصبی محدود شده است. تربیت سیستم-فرآیندی که به سیستم اجازه می¬دهد با استفاده از مجموعه¬ای از داده¬ها خودش به خودش نمره دهد-، و اجرای ترفند بر روی پارامترها (که وزن¬ نامیده شده است) و تا زمانی این روند ادامه می¬یابد که پروژه به موفقیت برسد- و با این حال هنوز هم نیاز است که این کارها با استفاده از کامپیوترهای سنتی انجام شوند. با استفاده از GPU (کارت گرافیک) به جای CPU ها و همچنین استفاده از سیلیکون¬های مرسوم، عملکرد افزایش پیدا کرده است و باعث صرفه¬جویی در مصرف انرژی شده است، اما هنوز هم این فرآیند زمان¬گیر و دارای هزینه¬های زیاد است. یعنی زمانی که این کار را محققانی از شرکت IBM به نام¬های Tayfun Gokmen و Yuri Vlasiv شروع کردند، هدف آنها ساختن وسیله¬ای با معماری یک تراشه بود، و می¬خواستند این کار را با استفاده از محاسبات مقاومتی و با هدف ساخت هزاران واحد محاسبات مقاومتی (RPU) انجام دهند و در نتیجه بتوانند از این وسیله در بهبود خود وسیله و همچنین در شبکه¬های عصبی استفاده کنند.
استفاده از محاسبات مقاومتی برای از میان برداشتن تنگناهای شبکه¬های عصبی
محاسبات مقاوتی مبحثی بسیار گسترده دارد، اما اگر بخواهیم دقیق صحبت کنیم، در طراحی کمپانی IBM، هرکدام از واحدهای RPU در این تراشه شبیه به یک مغز انسان عمل می¬کنند. این تراشه انواع مختلفی از ورودی های آنالوگ را دریافت می کند-که به صورت ولتاژ وارد می¬شوند- و با استفاده از “تجربیات” گذشته خود این تراشه تصمیم می گیرد که از یک تابع وزنی استفاده کرده و نتیجه نهایی را برای محاسبات مورد نظر خود انتخاب کند. سیناپس¬ها (محل تماس دو عصب) لایه¬ای در مغز هستند که دارای ماهیت گیج کننده¬ای هستند و هنوز به صورت کامل درک نشده اند، اما این تراشه¬های IBM با استفاده از محاسبات مقاومتی قصد دارند این سیناپس¬ها در آرایه¬های دوبعدی سازماندهی کنند. برای مثال، کار اخیر IBM نحوه امکان سازماندهی این¬ها را در آرایه¬های ۴۰۹۶*۴۰۹۶ نشان می¬دهد.
به این دلیل که واحدهای محاسبات مقاومتی تخصصی هستند (در مقایسه با هسته¬های CPU و GPU) و نیازی به تبدیل داده¬ها و اطلاعات از آنالوگ به دیجیتال و یا دسترسی به حافظه¬ای به غیر از حافظه خودشان را ندارند، از این جهت می¬توانند بسیار سریع باشند و انرژی کمتری را مصرف کنند. از لحاظ تئوری، یک شبکه عصبی پیچیده-مانند یک شبکه که برای شناسایی علامت¬های جاده¬ای در یک ماشین بدون سرنشین استفاده شده است- را می¬توان به صورت مستقیم به وسیله اختصاص دادن یک محاسبه مقاومتی به هر یک از گره¬ها (باگ¬ها)ی یک نرم افزار مدل بندی کرد. اما به دلیل طبیعت آنالوگی در نرم افزارها و مقدار نویز مشخصی که هرکدام از این نرم افزارها در مدار خود دارند، محاسبات RPU دقیق نمی¬باشند. پس هر الگوریتمی که در بر روی آنها اجرا می¬شود باید در در مقابل عدم دقت ذاتی در محاسبات مقاومتی، مقاوم شده باشند.
الگوریتم¬های شبکه¬های عصبی قدیمی، چه برای اجرا و چه برای تمرین، با این فرض نوشته شده اند که دقت پردازش واحدها در هر سطحی از قدرت حافظه، بالا می¬باشد. پس نوشتن مجدد این الگوریتم¬ها با این هدف که به وسیله خودشان اجرا شوند و در مواقع تولید نتایج دقیق و کارا، به خوبی عمل کنند، نیازمند نرم افزارهای نوین و پیشرفته¬ای می¬باشد.
برای اینکه این الگوریتم ها در نرم افزارهای قدرتمند بازنویسی شوند، سخت افزار پیشرفته ای هم مورد نیاز است. با وجود فناوری هایی که برای ساختن “سیناپس¬ها” کافی نیستند، می توانیم این فناوری ها را روی هم جمع کرده و کاری کنیم که در محیط هایی که دارای نویز بالایی هستند، انرژی کمتری مصرف کنیم و مهتر از همه اینکه به جای رویکردهای قبلی از پردازش¬های مقاومتی استفاده کنیم. اجرای runtime ابتدا برای استفاده در شبکه¬های عصبی بر روی یک کامپیوتر مقاومتی ترکیبی استفاده شد و تا قبل از سال ۲۰۱۴ به وجود نیامده بود. در آن زمان، محققان در دانشگاه Pittsburg و دانشگاه Tsinghua ادعا کردند که چنین راه حلی می تواند با پایین آوردن تنها ۵ درصد از دقت موجود، سه یا چهار برابر در مصرف انرژی صرفه¬جویی کند.
از ایده تا عمل
این کار جدید از کمپانی IBM استفاده از محاسبات مقاومتی را بیشتر از قبل افزایش داده است، و یک سیستم را به گونه¬ای تغییر می¬دهد که تقریباً تمام انواع محاسبات را با استفاده از واحدهای RPU انجام دهد و در این حالت مدارهای قدیمی تنها برای پشتیبانی از توابع و ورودی ها و خروجی ها مورد استفاده قرار می¬گیرند. این نوآوری نیاز به ترکیب آن با نسخه¬ای از یک الگوریتم عملی شبکه عصبی، دارد تا بتواند بر روی یک ساختمان RPU و استفاده از سخت افزاری که توانایی اجرای RPU را دارد، به خوبی عمل کند.
تا زمانی که این ایده را به عمل تبدیل کنیم، تا آن روز محاسبه مقاومتی دارای ساختاری بیشتر شبیه به یک تئوری خواهد بود. اولین حافظه مقاومتی (RRAM) در سال ۲۰۱۲ برای نمونه¬سازی مورد استفاده قرار گرفت، و اصلاً کسی فکر نمی¬کرد که محصولی پایه¬ای و مبنا برای سال ¬های آینده باشد. همچنین این تراشه ها به مقیاس حافظه سیستم ها کمک می کنند و برای استفاده فناوری مقاومتی در محاسبات بسیار مفید هستند، ولی با این حال، مشکلات مربوط به اجرای فرآیندهای سیناپس را برطرف نکرده اند.
اگر RPUها قابل ساختن باشند، محدویت¬ها از بین می¬روند
از طراحی پیشنهادی RPUها انتظار می¬رود که بتوانند انواع مختلفی از شبکه¬های عصبی عمیق (DNN) را اجرا کنند، که شامل اتصال کامل و پیچشی می باشد، که همین استفاده از RPUها باعث می¬شود در زمینه کاربردهای شبکه¬های عصبی دارای فایده¬های بسیار زیادی باشند. با استفاده از فناوری موجود CMOS و با فرض اینکه RPUها در ترکیب¬های ۴۰۹۶*۴۰۹۶ با ۸ انس بر واحد زمان اجرا می¬شوند، هریک از این ترکیب¬ها می¬توانند ۵۱ گیگااپس بر ثانیه را اجرا کنند، و این کار را با استفاده از مقداری کمی مصرف انرژی انجام می¬دهند. یک تراشه با ۱۰۰ ترکیب و یک CPU مکمل می¬تواند یک شبکه با وزن ۱۶ بیلیون را متحمل شود درحالی که فقط ۲۲ وات انرژی مصرف می¬کند (فقط دو وات از این مقدار انرژی صرف RPU ها می¬شود و بقیه صرف هسته CPU جهت وارد و خارج کردن اطلاعات و همچنین اجرای کنترل کلی سیستم می¬شود).
این مقدار در مقایسه با استفاده از GPU ها تعداد قابل توجهی است (به ۱۶ میلیون مولفه محاسباتی فکر کنید، که هزاران برابر کمتر از قبلی است). محققان ادعا می¬کنند که زمانی که این وسیله ساخته شود، یک سیستم AI که برپایه محاسبات مقاومتی بنا شده است و از تراشه¬های قوی و RPU ها استفاده میکند، می¬تواند در مقایسه با کارایی های امروزی ۳۰۰۰۰ برابر بهتر و کاراتر شود، و همه این کارها با کارایی انرژی ۸۴۰۰۰ گیگااپس بر ثانیه بر وات انجام می¬شوند. اگر این رویا روزی به واقعیت تبدیل شود، ما می¬توانیم رویاهای فانتزی Isaak Asimov از یک روبات دارای مغز پوزیترونیک را در واقعیت مشاهده کنیم.