با سلام و احترام خدمت علاقه مندان و دانشجویان دانشگاه اینترنتی بین المللی (دانشگاه خوارزمی)
این ویدیوی آموزشی در راستای آموزش های شبکه عصبی عمیق می باشد، و در واقع بخش اول این مجموعه از آموزش ها است، مدرس این دوره سید علیرضا میرحبیبی، مخترع، پژوهشگر و محقق در حوزه ی هوش مصنوعی می باشد، با توجه به کاربرد های روز افزون شبکه های عصبی بخصوص مباحث مربوط به Deep Learning، این حوزه از آموزش ها نیاز بسیاری از دانشجویان تحصیلات تکمیلی می باشد.
البته این ویدیو به عنوان یکی از پیش نیاز های یادگیری عمیق (دیپ لرنینگ) آموزش داده شده است، زمانی که نیاز به کار با CUDA باشد، نیاز به نصب درایور کارت گرافیک خواهید داشت، این ویدیو آموزش نصب درایور کارت گرافیک های Geforce را شامل می شود، و در آن نسخه ی مناسب و تست شده برای تنظیم روی اوبونتو 14.04 جهت استفاده از قدرت پردازشی GPU ارائه شده است. با مشاهده ی دوره ی آموزشی قبلی، از این پس می تواند در تمامی کارهای تحقیقاتی خود که نیاز به استفاده از GPU و سیستم عامل لینوکس دارند به راحتی درایور خود را فعال سازی کرده و از مزایای استفاده از کتابخانه های پرکاربردی مانند CUDA یا cuDNN بهره مند شوی
درباره ی مدرس و اساتید مدرس !
دوره ی آموزشی شبکه های عصبی که توسط سید علیرضا میرحبیبی در نظر گرفته شده است حاصل حضور ایشان در کلاس های درس پروفسور تمام، جناب آقای دکتر کریم فائز (عضو هیات علمی دانشگاه صنعتی امیرکبیر) از دانشمندان شناخته شده ی جهان در حوزه ی شناسایی الگو (Pattern Recognition) و شبکه های عصبی (Neural Networks) می باشد و فارغ التحصیل دانشگاه کالیفرنیا نیز هستند که البته استاد راهنمای ایشان نیز می باشند، همچنین حضور در کلاس های پروفسور محمد باقر منهاج (فارغ التحصیل دانشگاه OSU-OSU آمریکا) که ایشان نیز از اعضای هیات علمی دانشگاه صنعتی امیرکبیر و از دانشمندان برتر جهان در سال 2004 می باشند نیز تاثیر بسزایی در یادگیری میرحبیبی داشته است.
تاریخچه :
Cuda یک پلتفرم محاسبات موازی و محیط برنامه نویسی نرم افزار های کاربردی است که توسط شرکت Nvidia ارائه شده است.
کودا به توسعه دهندگان نرم افزار و مهندسان نرم افزار اجازه ی فعال سازی ویژگی استفاده از کارت گرافیک پرای اهداف پردازشی عمومی را می دهد، در واقع با کودا می توانید الگوریتم های خود را سریعتر اجرا کنید، برای مثال زمانی که Object Detector با نام YOLO9000 را می خواهید روی یک سیستم عادی با استفاده از قدرت پردازشی CPU اجرا کنید، ممکن است تا 15 دقیقه انجام مراحل پردازشی آن روی یک شبکه عصبی از قبل Train شده به طول بیانجامد، اما زمانی که نویسنده ی این پست با استفاده از مدل کودا و با فعال سازی کودا در یولو 9000 اقدام به اجرای سورس کد Object Detector معروف YOLO کرد چیزی در حدود 14 ثانیه زمان لازم بود تا با یک کارت گرافیک معمولی دارای چیپست جیفورس با مدل GT710 این سورس کد را اجرا کند! پس به خوبی تفاوت را حس کردید!
با استفاده از دیدگاه GPGPU (General-Purpose Computing on Graphics Processing Units) می توان از کارت گرافیک برای انجام پردازش های الگوریتم ها استفاده کرد.
پلتفرم CUDA یک لایه ی نرم افزاری است که به شما دسترسی مستقیم جهت استفاده از مجموعه ساختار های مجازی مربوط به کارت های گرافیک و المان های پردازش موازی برای اجرای هسته های محاسباتی را می دهد.
پلتفرم CUDA برای کار با زبان های برنامه نویسی ای مانند C، C++ و فرترن طراحی شده است. این موارد دسترسی آسان تر به منابع مربوط به واحد پردازش گرافیکی را آسان تر می کند و در نتیجه به متخصصان حوزه ی پردازش موازی اجازه ی استفاده از منابع GPU را می دهد، به صورت واضح تر می توان گفت API هایی مانند Direct3D و OpenGL که نیازمند مهارت های بالایی در برنامه نویسی گرافیکی هستند نیز می توانند از آن بهره ببرند.همچنین، CUDA از فریم ورک هایی مانند OpenACC و OpenCL پشتیبانی می کند.
واحد پردازش گرافیکی (Graphics processing unit) به عنوان یک پردازشگر ویژه ی کامپیوتری، تقاضا های در لحظه (real-time) دارای رزولوشن بالا (high-resolution) مربوط به وظایف محاسباتی سنگین گرافیک های 3 بعدی (3D graphics) را انجام می دهد.
تا سال 2012، پردازنده های گرافیکی به سیستم های چند هسته ای بسیار موازی تبدیل شده بودند که امکان دستکاری بسیار بالایی را از بلوک های بزرگ داده فراهم می آورد. این نوع طراحی بسیار تاثیر گذار تر از واحد پردازش مرکزی همه منظوره (CPU) برای الگوریتم ها در شرایطی است که پردازش بلوک های بزرگ داده به طور موازی انجام می شود، مانند:
برای نصب و گرفتن عملکرد صحیح از پلتفرم کودا می بایست درایور کارت گرافیک ها همان GPU را به درستی نصب کنید، نصب درایور کارت گرافیک در UBUNTU 14.04 LTS خود می تواند یک چالش باشد، اما با آموزش هایی که در ابتدای این ویدیوی آموزشی ارائه شده است به راحتی می توانید درایور کارت گرافیک خود را نصب کرده و به نرم افزار مدیریت کارت گرافیک ارائه شده توسط شرکت NVIDIA دسترسی پیدا کنید.
توانایی های برنامه نویسی
پلتفرم CUDA برای توسعه دهندگان نرم افزار از طریق کتابخانه های شتاب دهنده کودا (CUDA-accelerated) ، دستورالعمل کامپایلر از قبیل OpenACC و فرمت های مربوط به زبان های برنامه نویسی استاندارد صنعتی شامل C، C ++ و Fortran قابل دسترسی است. برنامه نویسان C / C ++ می توانند از CUDA C / C ++ استفاده کنند، کامپایلر nvcc، کامپایلر C / C ++ مبتنی بر LLVM مبتنی بر Nvidia است. همچنین برنامه نویسان Fortran می توانند از CUDA Fortran استفاده کنند که با کامپایلر PGI CUDA Fortran از The Portland Group گردآوری شده است.
مثالی از روند جریان پردازشی CUDA
علاوه بر کتابخانه ها، دستورالعمل کامپایلر، CUDA C / C ++ و CUDA Fortran، پلتفرم CUDA از سایر محیط های محاسباتی مانند OpenCL گروه Khronos، DirectCompute مایکروسافت، OpenGL و C++ AMP پشتیبانی می کند. همچنین پلاگین های دیگری نیز برای Python، Perl، Fortran، Java، Ruby، Lua، Common Lisp، Haskell، R، MATLAB، IDL، Julia و پشتبانی بومی در Mathematica در دسترس هستند.
CUDA ارائه کننده ی API ها در سطوح پایین تا بالا می باشد. اولین CUDA SDK در 15 فوریه سال 2007، برای ماکروسافت ویندوز و لینوکس ارائه شد. بخش پشتیبانی Mac OS X بعدا ورژن 2.0 را که بعدا با نسخه ی بتا جایگزین شد در 14 فوریه ی سال 2008 منتشر کرد. CUDA با تمام GPU های Nvidia از سری G8X شامل GeForce، Quadro و Tesla line کار می کند. CUDA با اکثر سیستم عامل های استاندارد نیز سازگار است.
CUDA نسخه ی 8 با کتابخانه های زیر همراه می باشد (برای کامپایل کردن و اجرا)
CUDA نسخه ی 8 با سایر امکانات نرم افزاری به ترتیب زیر ارائه می شود
CUDA 9.0 – 9.2 با کامپوننت های زیر ارائه می گردد
CUDA نسخه ی 10 با سایر کامپوننت ها به ترتیب زیر ارائه می شود
کاربردهای CUDA در بازی
در صنعت بازی کامپیوتر، پردازنده های گرافیکی برای رندر گرافیکی و برای محاسبات فیزیک بازی (اثرات فیزیکی مانند آوار، دود، آتش، مایعات) مورد استفاده قرار می گیرند. مثالها شامل PhysX و Bullet هستند. CUDA همچنین برای تسریع کاربرد برنامه های غیر گرافیکی در محاسبات بیولوژیکی، رمزنگاری و سایر زمینه ها به ترتیب موارد ذکر شده استفاده می شود.
تنسور فلو
با استفاده از کودا می توان موارد مربوط به TensorFlow را نیز با سرعت بیشتری با استفاده از gpu اجرا کرد.
Object Detector ها
object detector های معروفی همچون faster-rcnn یا yolo را می توان با استفاده از cuda با سرعت بسیار بیشتری اجرا کرد.