کالبدشکافی پردازش موازی در GPU: چرا کارتهای گرافیک برای هوش مصنوعی و بازی ضروری هستند؟
پردازندههای گرافیکی (GPU) با استفاده از هزاران هسته کوچک و معماری پردازش موازی، محاسبات سنگین را به طور همزمان انجام میدهند. این مقاله به بررسی تفاوت معماری CPU و GPU، نحوه عملکرد هستههای CUDA و دلیل اهمیت حیاتی آنها در اجرای مدلهای هوش مصنوعی میپردازد.
به قلم کاوان رامین
این خبر را به اشتراک بگذارید
- توسعهدهندگان هوش مصنوعی
- تمرکز بر قدرت پردازش خام و پهنای باند حافظه برای کاهش زمان آموزش مدلها.
- طراحان معماری CPU
- تأکید بر اهمیت پردازش متوالی، مدیریت سیستم و کاهش تأخیر.
- تحلیلگران مستقل
- بررسی بیطرفانه تفاوتهای معماری و کاربردهای بهینه هر پردازنده.
دیدگاههایی که این گزارش پوشش نداده
- توسعهدهندگان بازیهای ویدیویی مستقل که با محدودیتهای سختافزاری کاربران نهایی مواجهاند.
- سازندگان پردازندههای گرافیکی رقیب و رویکرد آنها به استانداردهای متنباز پردازش موازی.
پرسشهای متداول
چرا نمیتوانیم از پردازنده گرافیکی به جای پردازنده مرکزی استفاده کنیم؟
پردازندههای گرافیکی برای انجام همزمان هزاران محاسبه ساده طراحی شدهاند، اما در مدیریت کارهای پیچیده، شرطی و متوالی که سیستمعاملها به آن نیاز دارند، بسیار کند و ناکارآمد هستند.
آیا همه کارتهای گرافیک از CUDA پشتیبانی میکنند؟
خیر، پلتفرم CUDA به طور اختصاصی توسط شرکت انویدیا توسعه یافته و تنها روی پردازندههای گرافیکی همین شرکت قابل اجرا است.
چرا هوش مصنوعی به کارت گرافیک نیاز دارد؟
شبکههای عصبی و مدلهای هوش مصنوعی نیازمند انجام میلیاردها عملیات ضرب و جمع ماتریسی هستند که پردازندههای گرافیکی به دلیل معماری موازی خود، این کار را هزاران بار سریعتر از پردازندههای مرکزی انجام میدهند.
نکات کلیدی
- پردازندههای مرکزی (CPU) برای کارهای متوالی و تصمیمگیریهای پیچیده با تأخیر پایین طراحی شدهاند.
- پردازندههای گرافیکی (GPU) دارای هزاران هسته کوچک هستند که محاسبات ساده را به صورت همزمان انجام میدهند.
- معماری SIMD به GPU اجازه میدهد یک دستورالعمل ریاضی را همزمان روی میلیونها داده اعمال کند.
- پلتفرم CUDA به برنامهنویسان امکان داد تا از قدرت کارتهای گرافیک برای محاسبات غیرگرافیکی استفاده کنند.
- مدلهای هوش مصنوعی به دلیل نیاز به میلیاردها ضرب ماتریسی، به شدت به پردازش موازی وابستهاند.
اگر بخواهید یک آسمانخراش بسازید، دو راه دارید: یا یک مهندس نابغه استخدام کنید که با سرعت و دقت بینظیری آجرها را یکییکی روی هم میچیند، یا دههزار کارگر معمولی بیاورید که همزمان هر کدام یک آجر را سر جایش میگذارند. تفاوت پردازنده مرکزی (CPU) و پردازنده گرافیکی (GPU) دقیقاً در همین نقطه خلاصه میشود. در حالی که CPU همان مهندس همهفنحریف است که سیستمعامل را مدیریت میکند، GPU ارتش کارگرانی است که محاسبات ساده را به صورت موازی و در کسری از ثانیه انجام میدهند.
بازاریابی شرکتهای فناوری معمولاً پردازندههای گرافیکی را به عنوان «مغز جادویی» هوش مصنوعی معرفی میکند، اما واقعیت فیزیکی آنها بسیار سادهتر و البته مکانیکیتر است. پردازندههای گرافیکی در ابتدا تنها برای یک هدف طراحی شدند: محاسبه رنگ میلیونها پیکسل روی صفحه نمایش در هر فریم از یک بازی ویدیویی. رندر کردن یک محیط سهبعدی با وضوح 4K نیازمند محاسبه نور، سایه و بافت برای بیش از ۸ میلیون پیکسل در هر فریم، آن هم ۶۰ بار در ثانیه است.
این کار نیازمند انجام یک عملیات ریاضی یکسان روی دادههای متفاوت بود؛ مفهومی که در علوم کامپیوتر به آن SIMD (یک دستورالعمل، چند داده) میگویند. وقتی قرار است نور محیط در یک بازی ۱۰ درصد تاریکتر شود، نیازی نیست پردازنده برای هر پیکسل یک تصمیم منطقی جدید بگیرد؛ بلکه باید یک فرمول ضرب ساده را همزمان روی میلیونها عدد اعمال کند. این دقیقاً همان کاری است که معماری موازی برای آن متولد شد.
معماری CPU برای کارهای متوالی و حساس به تأخیر بهینهسازی شده است. یک پردازنده مرکزی مدرن معمولاً بین ۸ تا ۲۴ هسته بسیار قدرتمند دارد که میتوانند با فرکانسهای بالای ۵ گیگاهرتز کار کنند. بخش عمدهای از میلیاردها ترانزیستورِ یک CPU به حافظه پنهان و واحدهای پیشبینی پرش اختصاص یافته تا بتواند تصمیمات پیچیده سیستمعامل، اجرای مرورگرها و مدیریت پایگاههای داده را در لحظه مدیریت کند.
اما وقتی نوبت به ضرب ماتریسهای عظیم میرسد، این هستههای قدرتمند در صف طولانی محاسبات گیر میافتند. یک CPU میتواند یک رشته دستور را با سرعتی خیرهکننده اجرا کند، اما وقتی با مدلی مواجه میشود که نیازمند انجام میلیاردها محاسبه مستقل است، رویکرد خطی و متوالی آن به یک گلوگاه فیزیکی تبدیل میشود.
در مقابل، یک GPU مدرن مانند تراشههای پرچمدار انویدیا، به جای چند هسته بزرگ، دارای هزاران هسته کوچکتر است. به عنوان مثال، پردازنده گرافیکی RTX 4090 دارای ۱۶۳۸۴ هسته پردازشی است. بر اساس مستندات رسمی راهنمای برنامهنویسی CUDA از شرکت انویدیا: «پردازنده گرافیکی برای محاسبات به شدت موازی تخصصی شده است و بنابراین به گونهای طراحی شده که ترانزیستورهای بیشتری به جای کش کردن دادهها و کنترل جریان، به پردازش دادهها اختصاص یابند.»[1]
راز اصلی این قدرت در پلتفرم CUDA (معماری دستگاه یکپارچه محاسباتی) نهفته است که انویدیا آن را در سال ۲۰۰۶ معرفی کرد. پیش از CUDA، برنامهنویسان برای استفاده از قدرت GPU در کارهای غیرگرافیکی مجبور بودند محاسبات خود را به شکل پیکسل و سایهزن درآورند تا کارت گرافیک بتواند آنها را بفهمد. CUDA این مانع را از بین برد و به توسعهدهندگان اجازه داد تا از زبانهای استانداردی مانند C++ برای ارسال مستقیم دستورات ریاضی به هستههای GPU استفاده کنند.[1]
راز اصلی این قدرت در پلتفرم CUDA (معماری دستگاه یکپارچه محاسباتی) نهفته است که انویدیا آن را در سال ۲۰۰۶ معرفی کرد.
در این مدل برنامهنویسی، یک تابع که توسط CPU فراخوانی شده اما روی GPU اجرا میشود، «کرنل» نام دارد. وقتی یک برنامه هوش مصنوعی اجرا میشود، CPU دادهها را آماده کرده و یک کرنل را به سمت GPU میفرستد. GPU این کرنل را دریافت کرده و آن را روی شبکهای از هزاران رشته پردازشی کپی میکند تا همگی به صورت همزمان روی بخشهای مختلف داده کار کنند.[1]
در سطح سختافزار، این هستهها در گروههایی به نام Warp دستهبندی میشوند که هر کدام معمولاً شامل ۳۲ رشته است. تمام ۳۲ رشته در یک Warp یک دستورالعمل واحد را در یک پالس زمانی اجرا میکنند. اگر یکی از رشتهها به دلیل یک شرط منطقی مسیر متفاوتی را طی کند، سایر رشتهها باید منتظر بمانند. به همین دلیل است که برنامهنویسی برای GPU نیازمند ساختارشکنی کدهای سنتی و حذف شروط پیچیده است.[1]
همین معماری است که GPU را به موتور محرک انقلاب هوش مصنوعی تبدیل کرده است. شبکههای عصبی عمیق و مدلهای زبانی بزرگ مانند GPT-4، در هسته خود چیزی جز میلیاردها عملیات ضرب و جمع ماتریسی نیستند. در فرآیند آموزش یک مدل، وزنهای شبکه عصبی باید تریلیونها بار با دادههای جدید تنظیم شوند.
وقتی از یک چتبات سوالی میپرسید، تولید هر کلمه نیازمند میلیاردها محاسبه ریاضی است تا مدل بتواند محتملترین کلمه بعدی را حدس بزند. CPU این مراحل را یکییکی طی میکند و ممکن است برای تولید یک جمله چند دقیقه زمان ببرد، اما GPU هزاران مرحله را در یک لحظه پردازش میکند و پاسخ را در کسری از ثانیه روی صفحه ظاهر میسازد.
یکی دیگر از تفاوتهای حیاتی، پهنای باند حافظه است. هستههای پردازشی بدون دسترسی سریع به دادهها بیفایدهاند. پردازندههای گرافیکی از حافظههای تخصصی مانند GDDR6 یا HBM استفاده میکنند که میتوانند ترابایتها داده را در هر ثانیه جابهجا کنند. این پهنای باند عظیم به GPU اجازه میدهد تا هزاران هسته خود را دائماً با دادههای جدید تغذیه کند و از بیکار ماندن آنها جلوگیری نماید.
با این حال، نباید فریب هیاهوی تبلیغاتی را خورد. پردازندههای گرافیکی به تنهایی نمیتوانند یک کامپیوتر را اداره کنند و هرگز جایگزین CPU نخواهند شد. آنها به شدت وابسته به CPU هستند تا سیستمعامل را اجرا کند، دادهها را از حافظه ذخیرهسازی بخواند و دستورات را به سمت کارت گرافیک هدایت کند. GPU در واقع یک شتابدهنده است، نه یک پردازنده مستقل.[2]
انتقال داده بین CPU و GPU خود یکی از گلوگاههای اصلی در پردازشهای سنگین است. دادهها باید از طریق درگاه PCIe از حافظه اصلی سیستم به حافظه گرافیکی منتقل شوند. در مدلهای هوش مصنوعی بسیار بزرگ که در حافظه یک کارت گرافیک جا نمیشوند، این رفت و برگشت مداوم دادهها میتواند تمام مزیت سرعت پردازش موازی را خنثی کند.[2]
شرکتهای سختافزاری برای حل این مشکل در حال توسعه معماریهای یکپارچهتری هستند. تراشههایی مانند سری M اپل، حافظه را بین CPU و GPU به اشتراک میگذارند تا نیازی به کپی کردن مداوم دادهها نباشد. با این حال، در دیتاسنترهای عظیم که مدلهای هوش مصنوعی را آموزش میدهند، همچنان استفاده از هزاران GPU مجزا تنها راهکار عملی است. مسیر آینده پردازش نه در حذف یکی از این دو معماری، بلکه در همکاری بهینهتر میان پردازش متوالی و موازی رقم خواهد خورد.[2]
چرا مهم است
بدون پردازش موازی، آموزش مدلهای زبانی بزرگ مانند ChatGPT سالها طول میکشید و گرافیک بازیهای مدرن غیرممکن میشد. درک این معماری نشان میدهد که چرا شرکتها میلیاردها دلار برای خرید تراشههای گرافیکی هزینه میکنند و آینده پردازش به کدام سمت میرود.
اصطلاحات کلیدی
- پردازش موازی (Parallel Processing)
- انجام همزمان چندین عملیات محاسباتی توسط هستههای پردازشی متعدد برای کاهش زمان اجرای یک برنامه.
- معماری SIMD
- مخفف Single Instruction, Multiple Data؛ معماری که در آن یک دستورالعمل واحد به طور همزمان روی مجموعهای از دادههای مختلف اجرا میشود.
- پلتفرم CUDA
- یک رابط برنامهنویسی توسعهیافته توسط انویدیا که به توسعهدهندگان اجازه میدهد از پردازندههای گرافیکی برای محاسبات عمومی استفاده کنند.
- کرنل (Kernel)
- تابعی در برنامهنویسی موازی که توسط پردازنده مرکزی فراخوانی شده اما روی هزاران هسته پردازنده گرافیکی اجرا میشود.
- گلوگاه PCIe
- محدودیت سرعت در انتقال دادهها بین حافظه اصلی سیستم و حافظه کارت گرافیک از طریق درگاه اتصال سختافزاری.
منابع
[1]NVIDIA Docsتوسعهدهندگان هوش مصنوعیCUDA C++ Programming Guide: Introduction and Architecture
مطالعه در NVIDIA Docs →
[2]تیم سردبیری کوهستانتحلیلگران مستقلتحلیل تیم سردبیری کوهستان
مطالعه در تیم سردبیری کوهستان →
نظرات
بیشتر در فناوری
مشاهده همه →باتری لیپموتور
لیپموتور با معماری جدید، باتری ۱۲ ولتی سربی-اسیدی را از خودروهای برقی حذف کرد
4 منبع
طراحی تراشه
کالبدشکافی معماری پردازندهها: چرا تراشههای موبایل (ARM) اینقدر کممصرفتر از تراشههای دسکتاپ (x86) هستند؟
6 منبع
فناوری صوتی
چگونه پوشش شنیداری به الگوریتمهای MP3 اجازه میدهد ۸۰ درصد از یک فایل صوتی را بدون تغییر در صدای آن دور بریزند
6 منبع
فناوری خودرو
تعویق اجرای قانون فدرال پایش بیومتریک رانندگان در خودرو به دلیل نگرانیهای حریم خصوصی و آمادگی فنی
7 منبع
هر زاویه. هر روز.
دریافت فناوری اخبار همراه با پوشش کامل منابع و تحلیل دیدگاهها، مستقیم در صندوق ورودی شما.





