AlexNet: مهندسی CUDA پشت جهش سال ۲۰۱۲

در سال ۲۰۱۲، جهش AlexNet ثابت کرد که شبکههای عصبی عمیق همراه با GPUهای پشتیبان CUDA میتوانند از دههها مهندسی سنتی بینایی ماشین پیشی بگیرند. در چالش بازشناسی دیداری در مقیاس بزرگ ImageNet (ILSVRC)، Alex Krizhevsky، Ilya Sutskever و Geoffrey Hinton به نرخ خطای top-5 برابر ۱۵٫۳٪ دست یافتند و با فاصلهٔ نزدیک به ۱۱ واحد درصد از نفر دوم با ۲۶٫۲٪ پیشی گرفتند.
گلوگاه سختافزاری و راهحل آن
در آن زمان چارچوبهای یادگیری عمیق مانند PyTorch و TensorFlow وجود نداشتند و GPUهای مصرفی محدودیتهای حافظهٔ شدیدی داشتند.
- سختافزار بازی مصرفی: تیم شبکه را در یک اتاق خواب با دو GPU مصرفی NVIDIA GTX 580 آموزش داد. هر کارت تنها ۳ GB حافظهٔ VRAM داشت که برای نگهداشتن کل شبکهٔ ۶۰ میلیون پارامتری روی یک تراشه کافی نبود.
- موازیسازی مدل از طریق CUDA: Alex Krizhevsky کرنلهای سفارشی CUDA C++ (به نام cuda-convnet) نوشت تا شبکه را بهصورت عمودی میان دو GPU تقسیم کند. هر GPU نیمی از نورونها و کرنلها را در استخر حافظهٔ ۳ GB خودش ذخیره میکرد.
- ارتباط انتخابی میان GPUها: چون انتقال داده میان GPUها از طریق گذرگاه PCIe مادربرد کند بود، Krizhevsky GPUها را طوری برنامهریزی کرد که فقط در لایههای مشخصی (مانند لایهٔ ۳) با هم ارتباط برقرار کنند. لایههای دیگر کاملاً مستقل روی هر کارت اجرا میشدند و گلوگاههای پهنای باند را به حداقل میرساندند.
پیشرفتهای معماری کلیدی
توان محاسباتی خام CUDA به تیم اجازه داد چند تکنیک حیاتی را که پیشتر برای آزمودن در مقیاس بزرگ بسیار کند بودند با هم ترکیب کند:
- معماری عمیق: AlexNet ۸ لایهٔ یادگرفتنی (۵ لایهٔ کانولوشنی و سپس ۳ لایهٔ کاملاً متصل) را روی هم قرار داد که بسیار عمیقتر از شبکههای عصبی پیشین بود.
- تابع فعالسازی ReLU: بهجای ریاضیات سنتی tanh یا sigmoid، از واحدهای یکسوساز خطی (ReLU) استفاده کردند. ReLU در CUDA از نظر محاسباتی ساده است و به شبکهٔ عمیق اجازه داد تقریباً شش برابر سریعتر و بدون ناپدید شدن گرادیانها آموزش ببیند.
- افزایش داده و Dropout: در حالی که GPUها محاسبات ماتریسی را انجام میدادند، CPU تبدیلهای لحظهای تصویر (برش و وارونهسازی) را برای جلوگیری از بیشبرازش تولید میکرد. آنها همچنین Dropout را به کار بردند، یعنی خاموش کردن تصادفی نورونها در طول آموزش تا شبکه ناچار شود ویژگیهای مقاوم یاد بگیرد.
چرا انقلاب یادگیری عمیق را برانگیخت
پیش از سپتامبر ۲۰۱۲، بیشتر پژوهشگران بینایی ماشین برای تشخیص لبهها و شکلها به الگوریتمهای دستساز (مانند SIFT و HOG) تکیه میکردند و شبکههای عصبی عمیق را نظریهای بنبست میدانستند.
- زمان آموزش: حتی با بهینهسازی سفارشی CUDA، آموزش AlexNet روی ۱٫۲ میلیون تصویر با وضوح بالا ۵ تا ۶ روز طول کشید. بدون CUDA، همین آزمایش روی CPUها ماهها زمان میبرد.
- تغییر در صنعت: وقتی AlexNet در ImageNet همهٔ روشهای سنتی را درهم کوبید، کل جامعهٔ پژوهش هوش مصنوعی تقریباً یکشبه ویژگیهای دستمهندسیشده را کنار گذاشت. پژوهشگران برای خرید GPUهای NVIDIA هجوم آوردند و NVIDIA را به سمت هوش مصنوعی سوق دادند و دو سال بعد cuDNN را منتشر کرد.