پست وبلاگ

کدام کارت گرافیک برای یادگیری عمیق مناسب است؟ (بخش دوم :مقایسه بین CPU و GPU )

کدام کارت گرافیک برای یادگیری عمیق مناسب است؟ (بخش دوم :مقایسه بین CPU و GPU )

بسم الله الرحمن الرحیم

در بخش اول ما به بیان کلی اطلاعات پرداختیم که چه کارتهایی برای فعالیت در حوزه یادگیری عمیق مناسب هستن و توضیحات مختصری هم در این زمینه داده شد تا درک مطلب بهتر صورت بگیره. در این بخش انشاءالله ما با اطلاعات بیشتری روبرو میشیم که کار انتخاب رو برای ما راحت تر میکنه و همینطور اطلاعات عمومی جالبی هم بدست میاریم .

در بخش قبلی ما یک لیست از کارتهای مناسب رو با هم مرور کردیم . در زیر یک مقایسه نسبی بین چند مورد از این کارتها (۱۰۸۰,۱۰۷۰,۹۸۰TI,980,960,Titanx) رو میبینید. مشخصات سیستمی که بنچ مارکها با استفاده از اون گرفته شده رو در زیر ملاحظه میکنید:

بنچمارکهای مختلفی گرفته شده اما چیزی که برای ما اهمیت داره بیشتر از بقیه بنچمارکهای مربوط به اجرای AlexNet با کارتهای مختلف هست تا بما یه ایده قابل لمس از تفاوت بین این کارتها ارائه کنه (البته هنوز نه کاملا!)

چند تست زیر بنچمارکهای کسب شده در اجرای

از لحاظ نسبت وات/کارایی هم رتبه بندی این کارتها بصورت زیر هست :

سری دوم بنچمارک ها با حضور GTX1060! و تستهای مبتنی بر OpenCL

تمامی بنچمارکهای انجام شده دیگه رو میتونید از این لینک  و این لینک مشاهده کنید.

در زیر هم لیستی از جدیدترین کارتهای انویدیا و مقایسه انجام شده بین اونها رو میبینید:

در اینجا هم میتونید بنچ مارکهای دیگه ای که گرفته شده رو ببینید (اختصاصی دیپ لرنینگ و شبکه کانولوشن هست )

بنچمارکهای دیگه ای رو هم میتونید اینجا ببنید که کارتهای GTx1080 با TitanX پاسکال و TitanX مکسول مقایسه کرده و همینطور فریم ورکهای مختلف هم مورد بررسی قرار گرفته اند

خب تا اینجا کاملا مشخصه که نسل جدید کارتهای گرافیکی انویدیا چقدر خوب کار میکنن و کارایی هرکدوم نسبت به بقیه به چه صورت هست. البته تیم دتمرز در وبلاگش توضیحات خیلی خوبی داده و در یکی از بخشها هم اینطور گفته :

تیم دتمرس یکی از اولین کسایی هست که توضیحات خیلی خوبی در رابطه با خرید کارت گرافیک در وبلاگش ارائه کرد. که میتونید از این لینک  و این لینک برای دیدنش استفاده کنید.

خب چندتا مبحث هست که باید در موردش توضیح داده بشه .
یکی میزان تفاوت بین CPU و GPU هست که باید یکسری بنچ مارک قرار داده بشه .
یک مورد دیگه تفاوت بین استفاده از cuda و cudnn هست و همینطور تفاوت بین ورژن های مختلف Cudnn
مورد دیگه هم بنچ مارک بین کارتهای مختلف هست و داستان FP16

قبلا در مورد این صحبت شده بود که CPU گزینه مناسبی برای پردازش های سنگین یادگیری عمیق نیست . بنچ مارکهای زیر بخوبی این تفاوت رو نشون میدن :

دقت کنید بنچ مارکها مربوط به سالهای مختلف هستن. مثلا اولین تصویر مربوط به سال ۲۰۱۲ هست و الان سرعتها چندین برابر بیشتر از قبل شده (لینک به صفحات اصلی در انتها هست تا بیشتر مطالعه کنید)
بطور خاص به تفاوت روزهای صرف شده برای اموزش در حالت بدون cudnn و با اون دقت کنید و بعد با پردازش سمت cpu قیاش کنید:

43 روز در مقابل یک هفته و بعد 3 روز با استفاده از cudnn!

نکته بعدی بحث cudnn هست. قبلا توضیح دادیم که cudnn یک کتابخونه سطح بالا برای کار با شبکه های عصبی مصنوعی عمیق هست که بعنوان یک شتاب دهنده ازش استفاده میشه . مخفف CUDA® Deep Neural Network library (cuDNN)  هست. نکته ای که باید بهش توجه کنید اینه که نه تنها افزایش کارایی بسیار زیادی صرفا با استفاده از اون بدست میاد بلکه با استفاده از ورژن جدیدتر کارایی چند برابر نسبت به ورژن قبل بهبود پیدا میکنه.

بهبود نسبت به cudnnv1:

افزایش کارایی با بروزاوری cudnn طی ۲۰۱۲ تا ۲۰۱۵ :

در حال حاضر هم بعنوان مثال cudnnv5.1  به مقدار ۲٫۷ برابر سریعتر از ورژن ۴ هست و cudnn6 هم در کارتهای جدید (سری پاسکال) ۲ برابر سریعتر از سری ۵٫۱ هستند.

تست های انجام شده مدت زمان صرف شده به همراه افزایش سرعت بدست اومده در انجام عملیات forward pass و بعد بک پراپگیشن رو نشون میده :

نکات مهم برای خرید (توضیحات بعدا):

مادربرد اگر دارید تهیه میکنید سعی کنید هزینه بیشتر کنید و یه مادربرد خوب بگیرید.

خرید یک پاور قدرتمند رو فراموش نکنید. موقع خرید حتما سعی کنید یک پاور ۶۰۰ وات به بالا بگیرید

سیستم کولینگ مناسب تهیه بشه خوبه

هارد SSD باشه خوبه اما ضروری نیست . خصوصا اگه گلوگاه کارت گرافیک و قدرت پردازشی شما باشه نه سرعت IO شما.

لینکهای مفید دیگه میشه به موارد زیر اشاره کرد :

http://timdettmers.com/2015/03/09/deep-learning-hardware-guide/

https://developer.nvidia.com/cudnn

https://blogs.nvidia.com/blog/2015/03/17/digits-devbox/

Turn Your Deep Learning Model into a Serverless Microservice

http://adarshpatil.in/timewarp/projects/caffe-optimization-for-multicore-cpu.html

GPUs Power Over 90% of ImageNet Deep-Learning Visual Recognition Challenge Entries

cuDNN v2: Higher Performance for Deep Learning on GPUs

https://www.bdti.com/InsideDSP/2015/07/23/NVIDIA

https://github.com/tobigithub/tensorflow-deep-learning/wiki/tf-benchmarks

CPU, GPU Put to Deep Learning Framework Test

Inference: The Next Step in GPU-Accelerated Deep Learning

http://www.hpc.co.jp/benchmark20160610.html

https://blogs.nvidia.com/blog/2016/01/12/accelerating-ai-artificial-intelligence-gpus/

http://wccftech.com/nvidia-new-titan-x-pascal-performance/

GTX 980Ti, 1060, 1070 or 1080 for deep learning? from nvidia

 

بخش اول : کدام کارت گرافیک برای یادگیری عمیق مناسب است؟ (بخش اول)

 

نکته :
این مطلب قرار بود سال قبل منتشر بشه اما بلعت مشغله خیلی زیاد تو draft مونده بود. من هنوز فرصت نکردم در مورد fp16 ها توضیحات مورد نیاز رو بدم همینطور یکسری اطلاعات دیگه مربوط به کارتها که موقع انتخاب و خرید بشه انتخاب بهتری داشت . انشاءالله سرم خلوت تر شد سعی میکنم تو بخش سوم به این مباحث بپردازم .
اگه این بخش هم زیاد خوب نشده به بزرگواری خودتون ببخشید اگه همینقدر رو هم منتشر نمیکردم شاید میرفت برای چند ماه دیگه!

سید حسین حسن پور
فروردین ۹۶

 

سید حسین حسن پور متی کلایی

درباره ی سید حسین حسن پور متی کلایی

موسس و مدیر سایت. اطلاعات در مورد فعالیت های کاری و تحصیلی : linkedIn . برای ارتباط از بخش تماس با ما یا در باره من استفاده کنید.

مقالات مرتبط

7 دیدگاه در “کدام کارت گرافیک برای یادگیری عمیق مناسب است؟ (بخش دوم :مقایسه بین CPU و GPU )

  1. سلام
    خیلی ممنون از نکاتی که فرمودید. از کجا می توان فهمید که کارت گرافیکی که می خواهیم تهیه کنیم (مثلا Titan XP یا GTX 1080 Ti) بر روی مادربورد ما نصب می شود یا خیر؟
    سوال دیگر من از خدمت شما این است که آیا این کارت گرافیک های فوق بر روی سرور (مثلا سرور HP DL580 Gen9) نصب می شود؟
    با تشکر

    1. سلام
      این کارتها همه PCIExpress 3.0 هستند . چک کنید اگه مادربرد شما از PCI Express 3 پشتیبانی میکنه مشکلی نباید داشته باشید (معمولا همه مادربردهای ۴ ۵ سال اخیر pciexpress 3 هستن)
      علاوه بر اون دقت کنید کارت ها تو کیس شما جا بشن . اندازه این کارتها تو مشخصاتشون هست و معمولا تو کیس های معمولی جا نمیشن.
      اینکه روی یک مدل خاص سرور نصب میشه یا نه باید به مشخصات سرور نگاه کنید ببینید اصلا پشتیبانی میکنن یا نه نیاز به درگاه خاصی دارن .

  2. با سلام مجدد
    خیلی ممنونم از نکاتی که پاسخ دادید. یک سوال دیگر نیز از خدمتتان داشتم. شرکتهای مختلفی مانند Nvidia, MSI, Asus, Gigabyte, EVGA و غیره کارتهای گرافیک فوق (مثلا GTX 1080) را تولید می کنند. آیا تفاوت خاصی بین محصولات این شرکتها وجود دارد؟ به عبارت دقیقتر آیا اگر هر کدام از کارت گرافیک های مربوط به یکی از این شرکتها را تهیه کنیم در مورد کد نویسی یادگیری عمیق با مشکلی مواجه نمی شویم؟
    با تشکر فراوان

    1. سلام
      خواهش میکنم .
      شرکت Nvidia چیپست و برد اصلی رو طراحی و ارائه میکنه. شرکتهای دیگه شریک تجاری انویدیا هستند که بعد از مدتی از زمان عرضه کارت اجازه دارن بردهای کاستمایزد شده از کارتهای مختلف رو تولید کنند. بردهای کاستمایزد شده کاراییشون همیشه از بردهای رفرنس یا Founders Edition (بصورت FE هم گفته میشن) کارایی بهتری دارن .
      در خرید کارتها ترجیح خرید از برندهای مشهور هست مثل برندهایی که نام بردید. حتما هم سعی کنید مقایسه بین برندها رو انجام بدید بنچ مارک های مختلف الان به وفور در دسترس هست و میتونه بشما کمک کنه کارت بهتر رو انتخاب کنید. بعضی از برندها در یکسری از کارتها خوب عمل میکنن و یکسری دیگه نه . با سرچ کردن و خوندن review ها از سایتهایی مثل newegg و امازون و review های فنی از سایتهایی مثل techpowerup و امثالهم میتونید به اطلاعات خیلی خوبی برسید برای انتخاب کارت.
      نکته بسیار مهمی که سوای همه این موارد باید رعایت کنید اینه که ترجیحا از خرید کارتهایی که اورکلاک بالایی دارن خود داری کنید. کارتهایی که اورکلاک بالایی دارن قیمتشون نسبت به مدلهای دیگه خیلی گرونتره. این نوع کارتها در بازی ها هیچ اشکالی ایجاد نمیکنن اما در محاسبات مربوط به یادگیری عمیق ممکنه باعث ایجاد ناپایداری بشن و ممکنه شبکه بخاطر numerical instability کلا دایورج کنه و یا میبینید بعد از گذشت کمی از فرایند ترینینگ یکدفعه کرش میکنید. (برای خودم اتفاق افتاده این قضیه)
      پس ۱٫ اول از برندهای معتبر بگیرید برای کیفیت برد و طراحی بالاتر
      ۲٫از گرفتن مدلهای با اورکلاک خیلی بالا ترجیحا پرهیز کنید.

      یه نکته دیگه هم میگم . همیشه از بین دو مدل بالاتر و پایین تر از دو برند معروف و غیرمعروف مدل بالاتر رو انتخاب کنید. مثلا عرض میکنم شما ممکنه ببینید یه مدل GTX1080 هست از طرف شرکت زوتاک یا Galax یا هر شرکت کمتر معروف دیگه با قیمت مثلا ۲ تومن . از طرف دیگه میبینید که یک مدل از ایسوز هست GTX1070 با قیمت ۲۱۰۰ . شما اینجا توجه به برند ایسوز نکنید! یک مدل بالاتر همیشه ارجحیت داره نسبت به یک مدل پایینتر .

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *