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

16 6,011

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

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

در بخش قبلی ما یک لیست از کارتهای مناسب رو با هم مرور کردیم . در زیر یک مقایسه نسبی بین چند مورد از این کارتها (۱۰۸۰,۱۰۷۰,۹۸۰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://www.slideshare.net/DataScienceMD/deep-learning-with-gpus

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

https://devblogs.nvidia.com/parallelforall/cudnn-v2-higher-performance-deep-learning-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

https://devblogs.nvidia.com/parallelforall/inference-next-step-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 ها توضیحات مورد نیاز رو بدم همینطور یکسری اطلاعات دیگه مربوط به کارتها که موقع انتخاب و خرید بشه انتخاب بهتری داشت . انشاءالله سرم خلوت تر شد سعی میکنم تو بخش سوم به این مباحث بپردازم .
اگه این بخش هم زیاد خوب نشده به بزرگواری خودتون ببخشید اگه همینقدر رو هم منتشر نمیکردم شاید میرفت برای چند ماه دیگه!

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

 

16 نظرات
  1. سید حسین حسن پور متی کلایی می گوید

    تیم دتمرس هم امروز پست وبلاگش رو در رابطه با کارتهای گرافیک جدید بروز کرد . پینشهاد میکنم حتما ببینید :
    http://timdettmers.com/2017/04/09/which-gpu-for-deep-learning/

  2. […] بخش دوم :مقایسه بین CPU و GPU و کاراتهای مختلف با هم  […]

  3. farzaneh می گوید

    خیلی ممنون به خاطر این اطلاعات خوب! پاینده باشید

  4. محسن می گوید

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

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

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

  5. محسن می گوید

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

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

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

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

  6. محمد می گوید

    سلام
    ممنون از توضیحات بسیار خوب و کاربردیتون. یه سوال داشتم از خدمتتون ممنون میشم اگر جواب بدید.
    ما یه سرور چند وقت پیش خریداری کردیم که در زمان خرید خیلی به گرافیک اهمیت داده نشده اما الان به دلیل اینکه نیاز داریم کدهای یادگیری عمیق رو روش اجرا کنیم مجبور هستیم که یه GPU قوی خریداری کنیم و به این سرور اضافه کنیم. سوالم اینه که برای این سرور که مشخصاتش رو نوشتم چه کارت گرافیکی مناسب هست که برای کار یادگیری عمیق هم بدرد بخوره؟
    از طرف دیگه الان خودم کارت گرافیک nvidia geforce gtx 1080ti مد نظرم هست. میخوام بدونم که این کارت گرافیک برای نصب روی این سرور مناسب هست؟
    یه سوال دیگه هم اینکه من با زبان برنامه نویسی مت لب کدنویسی میکنم و از جعبه ابزار جدیدی که مت لب از ۲۰۱۷ در مورد شبکه های کانوولوشنی اضافه کرده استفاده میکنم. میخوام بدونم که این کارت گرافیک مناسب اجرای کدهای این زبان هست؟
    مشخصات سرور:
    https://drive.google.com/open?id=0B_ltiDoapf03Q0pwOGwyT0phYk0

    ممنون از وقتی که میذارید

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

      سلام.
      برای سرور باید از سری کارتهای Tesla استفاده کنید. میتونید این لینک رو برای اطلاعات بیشتر چک کنید.(ضمنا یادتون باشه K40 یا K80 نگیرید چون قدیمیه و کارایی خوبی نداره. اگر قراره چیزی بگیرید غیر از سری تسلا (بخاطر هزینه و…) مثل کارتهای معمولی( یا titanxp 1080ti) باید حتما مشخصات سرور رو چک کنید ).
      این لینک رو هم برای اطلاعات بیشتر از تفاوت بین کارتهایی که صحبتش رفت ببینید خوبه
      برای کار در حوزه یادگیری عمیق اصلا طرف متلب نرید. متلب بدرد تحقیق یا فعالیت در حوزه یادگیری عمیق اصلا و ابدا نمیخوره.
      کارت گرافیک منظورتون ۱۰۸۰TI هست؟ بستگی به کار شما داره ولی برای ۹۰ درصد فعالیت ها میشه گفت بله مناسبه

  7. محمد می گوید

    عکسی که توی پست قبلی گذاشتم ممکنه باز نشه.
    سروری که ما خریداری کردیم از سری HPE ProLiant هست مدل DL380P GEN 9

  8. محمد می گوید

    ممنون دوست عزیز بابت وقتی که گذاشتی

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

      خواهش میکنم
      در پناه خدا انشاءالله موفق و سربلند باشید

  9. احسان می گوید

    باسلام
    ممنون از مطالب مفیدتون
    جناب مهندس یک راهنمایی از خدمتتون می خواستیم
    براساس کارتهایی که ذکر کردید و عدم تجربه کافی بنده، تصمیم گیری در انتخاب سیستم مناسب برای کارهای اینچنینی
    سخت می باشد.
    ممنون میشم اگه به بنده در جمع کردن یک سیستم مناسب کمک کنید( قیمت هم مهم نیست).

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

      سلام
      اگه قیمت مهم نیست که بالاترین مدل رو بگیرید .
      نکته خاصی نداره و سریعا سیستم رو جمع کنید تا قیمتها بالاتر نرفته.فقط موارد زیر رو توجه کنید.
      پاور بالای ۶۵۰ سعی کنید بگیرید از برندهای معروف (حداقل گرین و یا بهتر از برندهای معتبر مثل کولرمستر و…)
      رم حداقل ۱۶ گیگ تهیه کنید(نسل جدید یعنی DDR4 سراغ نسل قبل نرید) اگر بودجه مشکلی نیست برید بالا ۳۲ یا ۶۴ .
      برای مادربرد و سی پی یو هم از نسل جدید استفاده کنید و ترجیحا چیپست z270 یا z370 انتخاب کنید چون کیفیت قطعات مادربرد و قابلیتهاش مهمه.
      یه کیس جادار هم بگیرید برای قطعات.
      برای هارد هم یه هارد معمولی بگیرید کفایت میکنه نیازی به SSD نیست. (باز اگر بودجه مشکلی نیست میتونید SSD‌هم تهیه کنید)

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

      1. احسان می گوید

        ممتون از لطفتون

  10. […] بخش بعدی :مقایسه بین CPU و GPU و کاراتهای مختلف با هم  […]

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.