• ایمیل دانشگاه مجازی
  • تلگرام دانشگاه مجازی
دانشگاه مجازی

آموزش نصب CUDA (بخش دوم دوره ی شبکه های عصبی)

تعداد پسند ها : یک نفر پسندید
تاکنون 263 نفر این پست را مشاهده کرده اند

یادگیری ماشین


آموزش نصب CUDA (بخش  دوم دوره ی شبکه های عصبی)
دانشگاه مجازی

آموزش نصب CUDA (بخش دوم دوره ی شبکه های عصبی)

یادگیری ماشین

با سلام و احترام خدمت علاقه مندان و دانشجویان دانشگاه اینترنتی بین المللی (دانشگاه خوارزمی)

این ویدیوی آموزشی در راستای آموزش های شبکه عصبی عمیق می باشد، و در واقع بخش اول این مجموعه از آموزش ها است، مدرس این دوره سید علیرضا میرحبیبی، مخترع، پژوهشگر و محقق در حوزه ی هوش مصنوعی می باشد، با توجه به کاربرد های روز افزون شبکه های عصبی بخصوص مباحث مربوط به Deep Learning، این حوزه از آموزش ها نیاز بسیاری از دانشجویان تحصیلات تکمیلی می باشد.

البته این ویدیو به عنوان یکی از پیش نیاز های یادگیری عمیق (دیپ لرنینگ)  آموزش داده شده است، زمانی که نیاز به کار با CUDA باشد، نیاز به نصب درایور کارت گرافیک خواهید داشت، این ویدیو آموزش نصب درایور کارت گرافیک های Geforce را شامل می شود، و در آن نسخه ی مناسب و تست شده برای تنظیم روی اوبونتو 14.04 جهت استفاده از قدرت پردازشی GPU ارائه شده است. با مشاهده ی دوره ی آموزشی قبلی، از این پس می تواند در تمامی کارهای تحقیقاتی خود که نیاز به استفاده از GPU و سیستم عامل لینوکس دارند به راحتی درایور خود را فعال سازی کرده و از مزایای استفاده از کتابخانه های پرکاربردی مانند CUDA یا cuDNN بهره مند شوی

 

درباره ی مدرس و اساتید مدرس !

دوره ی آموزشی شبکه های عصبی که توسط سید علیرضا میرحبیبی در نظر گرفته شده است حاصل حضور ایشان در کلاس های درس پروفسور تمام، جناب آقای دکتر کریم فائز (عضو هیات علمی دانشگاه صنعتی امیرکبیر) از دانشمندان شناخته شده ی جهان در حوزه ی شناسایی الگو (Pattern Recognition) و شبکه های عصبی (Neural Networks) می باشد و فارغ التحصیل دانشگاه کالیفرنیا نیز هستند که البته استاد راهنمای ایشان نیز می باشند، همچنین حضور در کلاس های پروفسور محمد باقر منهاج (فارغ التحصیل دانشگاه OSU-OSU آمریکا) که ایشان نیز از اعضای هیات علمی دانشگاه صنعتی امیرکبیر و از دانشمندان برتر جهان در سال 2004 می باشند نیز تاثیر بسزایی در یادگیری میرحبیبی داشته است.

 تاریخچه :

 کودا (CUDA)

Cuda یک پلتفرم محاسبات موازی و محیط برنامه نویسی نرم افزار های کاربردی است که توسط شرکت Nvidia ارائه شده است.

کودا به توسعه دهندگان نرم افزار و مهندسان نرم افزار اجازه ی فعال سازی ویژگی استفاده از کارت گرافیک پرای اهداف پردازشی عمومی را می دهد، در واقع با کودا می توانید الگوریتم های خود را سریعتر اجرا کنید، برای مثال زمانی که Object Detector با نام YOLO9000 را می خواهید روی یک سیستم عادی با استفاده از قدرت پردازشی CPU اجرا کنید، ممکن است تا 15 دقیقه انجام مراحل پردازشی آن روی یک شبکه عصبی از قبل Train شده به طول بیانجامد، اما زمانی که نویسنده ی این پست با استفاده از مدل کودا و با فعال سازی کودا در یولو 9000 اقدام به اجرای سورس کد Object Detector معروف YOLO کرد چیزی در حدود 14 ثانیه زمان لازم بود تا با یک کارت گرافیک معمولی دارای چیپست جیفورس با مدل GT710 این سورس کد را اجرا کند! پس به خوبی تفاوت را حس کردید!

 

استفاده از کارت گرافیک (GPU) برای پردازش

با استفاده از دیدگاه 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) برای الگوریتم ها در شرایطی است که پردازش بلوک های بزرگ داده به طور موازی انجام می شود، مانند:

  • الگوریتم حداکثر جریان push-relabel -    push-relabel maximum flow algorithm
  • الگوریتم مرتب کردن سریع لیست های بزرگ -     fast sort algorithms of large lists
  • تبدیل موجک دو بعدی -     two-dimensional fast wavelet transform
  • شبیه سازی دینامیک مولکولی -     molecular dynamics simulations

نصب درایور کارت گرافیک در اوبونتو

برای نصب و گرفتن عملکرد صحیح از پلتفرم کودا می بایست درایور کارت گرافیک ها همان 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

  • کپی کردن داده از حافظه ی اصلی به حافظه ی GPU
  • CPU آغاز کننده ی هسته ی محاسباتی GPU می باشد
  • هسته های GPU کودا Kernel را به صورت موازی اجزا می کنند
  • کپی کردن داده های حاصله از حافظه ی GPU به حافظه ی اصلی

علاوه بر کتابخانه ها، دستورالعمل کامپایلر، 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 با کتابخانه های زیر همراه می باشد (برای کامپایل کردن و اجرا)

  • CUBLAS – کتابخانه ی زیر روال های مربوط به جبر خطی به صورت پایه ای برای CUDA
  • CUDART – کتابخانه ی RunTime برای CUDA
  • CUFFT – کتابخانه ی تبدیل سریع فوریه(Fast Fourier Transform)  CUDA
  • CURAND – کتابخانه ی تولید اعداد تصادفی برای CUDA
  • CUSOLVER - مجموعه CUDA مبتنی بر حل کننده های مستقیم به صورت sparse و dense است
  • CUSPARSE – کتابخانه ی مربوط به ماتریس خلوت (sparse) برای CUDA می باشد
  • NPP – کتابخانه ی توانایی های اولیه ی NVIDIA
  • NVGRAPH – کتابخانه ی تحلیل نمودار  NVIDIA
  • NVML – کتابخانه ی مدیریت NVIDIA
  • NVRTCکتابخانه ی RunTime Compilation برای CUDA C++

 

CUDA نسخه ی 8 با سایر امکانات نرم افزاری به ترتیب زیر ارائه می شود

  • nView – نرم افزار nView برای مدیریت دسکتاپ
  • NVWMI – جعبه ابزار تجاری مدیریتی NVIDIA
  • PhysXGameWorks PhysX یک موتور فیزیک مالتی پلتفرم (قابل اجرا روی اکثر پلتفرم ها) برای بازی ها است

CUDA 9.0 – 9.2  با کامپوننت های زیر ارائه می گردد

  • CUTLASS 1.0 الگوریتم سفارشی برای جبر خطی
  • N – NVIDIA که یک دیکد کننده ی ویدیو می باشد در CUDA 9.2 منسوخ می گردد، این کامپوننت هم اکنون در SDK کدک های ویدیویی NVIDIA موجود می باشد.

CUDA نسخه ی 10 با سایر کامپوننت ها به ترتیب زیر ارائه می شود

  • nvJPEGپردازش کننده ی هایبرید JPEG

 

کاربردهای CUDA در بازی

در صنعت بازی کامپیوتر، پردازنده های گرافیکی برای رندر گرافیکی و برای محاسبات فیزیک بازی (اثرات فیزیکی مانند آوار، دود، آتش، مایعات) مورد استفاده قرار می گیرند. مثالها شامل PhysX و Bullet هستند. CUDA همچنین برای تسریع کاربرد برنامه های غیر گرافیکی در محاسبات بیولوژیکی، رمزنگاری و سایر زمینه ها به ترتیب موارد ذکر شده استفاده می شود.

تنسور فلو

با استفاده از کودا می توان موارد مربوط به TensorFlow را نیز با سرعت بیشتری با استفاده از gpu اجرا کرد.

Object Detector ها

object detector های معروفی همچون faster-rcnn یا yolo را می توان با استفاده از cuda با سرعت بسیار بیشتری اجرا کرد.


بیشترین جستجوها در دانشگاه اینترنتی