NPU چیست؟ مقایسه پردازشگر هوش مصنوعی با CPU و GPU
هوش مصنوعی در حال تغییر دنیای اطراف ماست و پیشبینی میشود طی سالهای آینده بخش بزرگی از رشد اقتصادی جهان توسط AI رقم بخورد. از طرفی تقاضا برای اجرای برنامههای هوش مصنوعی روی کامپیوترهای شخصی و دستگاههای قابل حمل مثل لپتاپ و گوشیهای هوشمند نیز در حال افزایش است. اینجاست که پردازشگر هوش مصنوعی یا پردازنده NPU برای آوردن قابلیتهای هوش مصنوعی به دستگاههای مصرفی پا به عرصه میگذارد. در این مقاله واحد پردازش عصبی را معرفی کرده و از تفاوتها و شباهتهای آن با CPU و GPU خواهیم گفت.
مقدمه
هر چه مسائلی که تلاش داریم با استفاده از کامپیوترها حل کنیم پیچیدهتر میشوند، تعداد محاسبات لازم برای این مسائل نیز به شکل نمایی افزایش مییابد. این افزایش نیاز به توان پردازشی، منجر به توسعه انواع جدیدی از پردازندهها شده که به شتابدهنده یا Accelerator معروف هستند. وظیفه این پردازندهها این است که در کنار CPU قرار بگیرند و انجام بعضی انواع خاص محاسبات که برای آن توسعه یافتهاند را عهدهدار شوند.
پردازندههای گرافیکی یا GPU یکی از اولین شتابدهندهها به شمار میروند که برای پردازش دادههای گرافیکی که به حجم عظیمی از پردازش موازی احتیاج دارند توسعه داده شدند.
طی چند سال اخیر، هوش مصنوعی به نیروی پیشران نوآوری در دنیای فناوری تبدیل شده. الگوریتمهای هوش مصنوعی مثل یادگیری ماشینی (Machine Learning) و یادگیری عمیق (Deep Learning) هر روز بیشتر در حل مسائل پیچیده و تحلیل دادههای بزرگ به کار میروند. از طرفی ظهور مدلهای زبانی بزرگ یا LLM مثل ChatGPT، هوش مصنوعی را به زندگی روزمره بسیاری از ما آورده و باعث شده AI دیگر فقط یک اصطلاح بازاریابی یا موضوع پروژههای دانشگاهی نباشد.
واحد پردازش عصبی یا NPU نیز نوع جدیدی از شتابدهندهها است که برای اجرای برنامههای هوش مصنوعی ساخته شده. در ادامه این مقاله ابتدا پردازش شتابیافته و پردازنده NPU را معرفی میکنیم و سپس به مقایسه NPU با CPU و GPU میپردازیم.
پردازش شتاب یافته
پردازنده مرکزی یا CPU یک پردازنده همه منظوره است که از دو بخش اصلی تشکیل شده: بخش حساب و منطق یا ALU و بخش کنترل. وظیفه ALU انجام محاسبات ریاضی مثل جمع و تفریق در کنار عملیات منطقی مثل مقایسه اندازه اعداد است. بخش کنترل وظیفه هدایت ALU، حافظه و ورودی و خروجی را بر عهده دارد.
برای درک بهتر نحوه کار CPU میتوان آن را به صورت یک دستگاه با ورودی و خروجی دید. CPU بعد از دریافت یک درخواست ورودی، به حافظه مراجعه میکند تا دادهها و دستورالعملهای لازم برای پاسخ به ورودی را بیاید و پس از انجام محاسبات و ذخیره جوابها در حافظه، پاسخ لازم را در قالب خروجی ارائه میکند. فرایند توضیح داده شده که CPUهای امروزی بر اساس آن کار میکنند به معماری «فون نیومان» معروف است و اولین بار توسط دانشمند آمریکایی-مجارستانی به همین نام در سال 1945 مطرح شد.
همانطور که گفته شد، پردازنده برای دریافت دستورالعملها، بارگذاری دادهها و ذخیره نتایج به حافظه مراجعه میکند و گذرگاه یا Bus که وظیفه انتقال دادهها میان پردازنده و حافظه را دارد، بین دستورالعملها و حافظه مشترک است. همین موضوع میتواند باعث ایجاد محدودیت در عملکرد سیستم شود که به آن «گلوگاه فون نیومان» یا «Von Neumann bottleneck» گفته میشود.
در گذشته به دلیل عملکرد کندتر پردازندهها در مقایسه با حافظه، این گلوگاه مشکلی در عملکرد سیستم ایجاد نمیکرد اما با بهبود سرعت CPU و ظهور پردازندههای چند هستهای از یکسو و نیاز بیشتر بارهای پردازشی جدید مثل گرافیک، پردازش ویدئو و هوش مصنوعی به قدرت محاسباتی و پهنای باند حافظه بالا از سوی دیگر، لزوم توجه به گلوگاه حافظه بیش از پیش خود را نشان میدهد.
یک راه حل، استفاده از تراشههایی است که برای انجام نوع خاصی از محاسبات بهینه شدهاند. این پردازندهها برخلاف CPU یک محاسبهگر همه منظوره نیستند؛ به این معنی که توانایی انجام بسیاری از دستورالعملها را ندارند اما در انجام وظایفی که برای آن طراحی شدهاند، بسیار بهتر از پردازنده مرکزی عمل میکنند. در این مواقع واحد کنترل CPU وظیفه انجام این نوع محاسبات را به شتابدهندههای کمکی میسپارد.
واحد پردازش گرافیک یا GPU
یکی از اولین کاربردهایی که استفاده از پردازندههای کمکی شتابدهنده در آنها رواج یافت، محاسبات گرافیکی بودند. در محاسبات مربوط به گرافیک باید محاسبات لازم برای تعداد زیادی از پیکسلها انجام شود.
یکی از ویژگیهای بارهای پردازشی گرافیکی این است که در آنها یک دستورالعمل باید برای تعداد زیادی از دادههای ورودی انجام شود که در علوم کامپیوتر به این نوع پردازش موازی Single Instruction Multiple Data یا SIMD گفته میشود. به همین دلیل ساختار هستههای گرافیکی یا پردازندههای جریانی (SM) به گونهای است که یک واحد کنترل، وظیفه تخصیص وظایف به تعداد زیادی ALU را بر عهده دارد. همین ساختار موجب میشود بخش بسیار بیشتری از تراشه به واحدها محاسباتی ALU اختصاص یابد و GPU را به پردازندههایی ایدهآل برای پردازش موازی تبدیل میکند.
تا مدتها از توان محاسباتی بالای GPU تنها برای اجرای برنامههای گرافیکی مانند بازیها استفاده میشد تا اینکه Nvidia، یکی از بازیگران مطرح بازار کارت گرافیک، پلتفرم اختصاصی پردازش موازی خود به نام CUDA را معرفی کرد. کودا به برنامهنویسان اجازه میداد از دستورالعملها و تعداد زیاد هستههای پردازشی گرافیک برای اجرای برنامههای غیر گرافیکی که با پردازش موازی SIMD سازگار بودند، استفاده کنند.
همین اقدام، CUDA و پردازندههای انویدیا را برای مدتها به گزینه اصلی برای انجام محاسبات سنگین که به پردازش موازی احتیاج داشتند تبدیل کرد به گونهای که اولین مدلهای یادگیری عمیق با استفاده از GPUهای انویدیا توسعه داده شدند.
البته امروزه پلتفرمهای متن باز مثل OpenCL نیز توسعه داده شدهاند که امکان اجرای پردازش موازی روی GPUهای انویدیا و سایر شرکتها از جمله AMD و اینتل را نیز فراهم میکنند.
واحد پردازش عصبی یا NPU
یکی دیگر از انواع شتابدهندهها که طی سالهای گذشته با رواج بیشتر هوش مصنوعی محبوبیت بیشتری پیدا کردهاند پردازشگر هوش مصنوعی یا پردازنده NPU است. وظیفه اصلی این نوع پردازندهها اجرای بهینه الگوریتمهای هوش مصنوعی است که مثل گرافیک، به تعداد زیادی عملیات موازی نیاز دارند. در این بخش به معرفی ویژگیهای الگوریتمهای هوش مصنوعی و ساختار NPU میپردازیم.
الگوریتمهای هوش مصنوعی
امروزه شبکههای عصبی الگوریتمهای غالب هوش مصنوعی را تشکیل میدهند و پردازشگرهای هوش مصنوعی نیز برای شتابدهی به فرایند آموزش و استنتاج شبکههای عصبی بهینه میشوند. در این نوع شبکهها از مدل سادهسازی شده نورونهای عصبی موجودات زنده استفاده میشود که یک نمونه آن را در تصویر زیر میبینید.
هر نورون به مجموعهای از ورودیها متصل است که با توجه به وزن سیناپس مربوطه، مقدار هر ورودی به نورون منتقل میشود و خروجی نورون نیز با جمع مقادیر ورودیها که در وزنهای مربوطه ضرب شدهاند به دست میآید. این محاسبات به صورت ضرب ماتریسها نیز قابل نمایش هستند.
اجرای الگوریتمهای هوش مصنوعی به محاسبات پیچیدهای احتیاج ندارد. اما به تعداد بسیار زیادی از این محاسبات نیاز است. خیلی زیاد!
ماتریس در مثال گفته شده، حالت خاصی از یک تنسور است که میتواند ابعاد بالاتری نیز داشته باشد. با بزرگتر و پیچیدهتر شدن شبکه عصبی، تعداد محاسبات لازم برای محاسبه خروجی شبکه نیز به شکل تصاعدی افزایش مییابد.
نوعی از محاسبات ماتریسی که در شبکههای عصبی کاربرد زیادی دارند با نام «General Matrix Multplication» یا به اختصار GEMM شناخته میشوند.
همانطور که گفتیم اجرای الگوریتمهای هوش مصنوعی به محاسبات پیچیدهای احتیاج ندارد. اما به تعداد بسیار زیادی از این محاسبات نیاز است.
ساختار واحد پردازش عصبی (NPU)
حال که با ساختار محاسبات هوش مصنوعی آشنا شدیم میتوانیم حدس بزنیم که پردازشگرهای هوش مصنوعی چه ویژگیهایی باید داشته باشد و وظایف NPU در هوش مصنوعی چیست:
- واحد پردازش عصبی باید قدرت پردازش موازی لازم برای انجام محاسبات تنسور بیشماری را داشته باشند این به معنای آن است که درست مثل GPU، به تعداد زیادی هسته محاسباتی ALU نیاز است. تعداد محاسبات لازم برای اجرای مدلهای هوش مصنوعی جدید آنقدر زیاد است که توان محاسباتی NPU و GPU را با «تریلیون عملیات در ثانیه» یا TOPS بیان میکنند.
- انجام انبوه محاسبات تنسور به انتقال حجم عظیمی از اطلاعات بین پردازنده NPU و حافظه رم احتیاج دارد. به همین دلیل این پردازندهها باید از انواع سلسله مراتب حافظه پشتیبانی کنند و حجم و پهنای باند حافظه بالایی داشته باشند. دلیل رواج استفاده از حافظههای HBM در ساخت پردازشگرهای هوش مصنوعی نیز همین موضوع است.
- این پردازندهها باید برای انجام عملیات ماتریسی بهینه شوند و بتوانند از ترفندهای محاسباتی برای تسریع روند پردازش استفاده کنند. به عنوان مثال میتوان به ماتریسهای تنک یا Sparse اشاره کرد که تعداد زیادی از المانهای آنها صفر است و میتوان با در نظر گرفتن آنها تعداد عملیات ریاضی لازم را به شکل محسوسی کاهش داد.
- پردازنده NPU باید توان پشتیبانی از انواع دادهها با دقت کمتر مثل INT8 را داشته باشند چراکه برخلاف گرافیک، اغلب در محاسبات عصبی نیازی به استفاده از دادههای با دقت بالا مثل اعداد ممیز شناور FP64 و FP32 نیست. این مسئله در پست وبلاگ گوگل برای معرفی نسل اول پردازندههای تنسور این شرکت به خوبی توضیح داده شده است:
اگر باران در حال باریدن باشد، ممکن است این سوال برایتان پیش بیاید که بارش باران شدید است یا نمنم و برای رسیدن به پاسخ این سوال نیازی به دانستن تعداد دقیق قطرههای باران ندارید. به همین ترتیب، پیشبینیهای هوش مصنوعی نیز در بیشتر اوقات نیازی به محاسبات ممیز شناور 32 یا حتی 16 بیتی نیست. با اندکی تلاش میتوان با استفاده از اعداد صحیح 8 بیتی نیز محاسبات شبکه عصبی را انجام داد و به دقت مناسبی رسید.
با توجه به این توضیحات، واحد پردازش عصبی، پردازندهای است که برای انجام انبوه محاسبات ماتریس و تنسور بهینهسازی شده و شیوه نامگذاری شرکتهای مختلف مثل هستههای تنسور، NPU، Neural Engine، Hexagon و ... به این ویژگیها اشاره دارد.
مقایسه NPU با CPU
همانگونه که پیشتر گفته شد، پردازنده مرکزی یک رایانه همه منظوره به حساب میآید که باید توان انجام انواع محاسبات را داشته باشد. هرچند پردازش موازی در CPU طی سالهای گذشته پیشرفت زیادی داشته و واحدهای SIMD با توان اجرای دستورالعملهایی مثل MMX و AVX در اکثر پردازندههای مدرن موجود است، اما برای اجرای الگوریتمهای هوش مصنوعی به توان محاسباتی بسیار بیشتری نیاز است.
در مقابل پردازشگر NPU برای انجام محاسبات مورد استفاده در هوش مصنوعی توسعه یافته و بخشهای دیگر که در CPU مورد نیاز است از آن حذف شده. به همین دلیل بخش بیشتری از فضای تراشه به واحدهای محاسباتی اختصاص مییابد.
از دیگر مزایای NPU نسبت به CPU میتوان به بهرهوری انرژی NPU در کاربردهای هوش مصنوعی اشاره کرد. به دلیل بهینهسازیهای گفته شده در بخش قبل، واحد پردازنده عصبی میتواند با مصرف انرژی به مراتب کمتری نسبت به CPU به توان محاسباتی بالاتر در کاربردهای هوش مصنوعی دست یابد.
مصرف انرژی بهینهتر NPU باعث شده که پردازشگر هوش مصنوعی در دستگاههای موبایل کاربرد بیشتری داشته باشد و به عنوان بخشی از APUهای موبایل مثل سری A اپل و Snapdragon کوالکام به کار بروند. همچین در APUهای لپتاپ نیز شاهد استفاده از NPU هستیم.
مقایسه NPU با GPU
در مقایسه با پردازنده مرکزی، GPU شباهت بسیار بیشتری به NPU دارد. مثل پردازشگر عصبی، پردازنده گرافیکی نیز یک شتابدهنده به حساب میآید با این تفاوت که برای اجرای برنامههای گرافیکی توسعه یافته است. GPU ها هم به پهنای باند حافظه بالا و تعداد بسیار زیادی هستهپردازشی مجهز هستند که توان پردازش موازی بالایی به آنها میدهد.
از تفاوتهای NPU و GPU میتوان به مجموعه دستورالعملهای قابل اجرا توسط آنها اشاره کرد. پردازندههای گرافیکی توان اجرای طیف وسیعتری از دستورالعملها را دارند به همین دلیل آنها در شتابدهی به انواع پردازشهای موازی استفاده میشود در حالی که در حال حاضر NPU تنها برای کاربردهای مربوط به یادگیری عمیق به کار میرود.
با وجود آنکه GPU و NPU هردو از توان انجام عملیات موازی بالایی برخوردارند، اما به این دلیل که پردازشگر هوش مصنوعی برای اجرای بهتر الگوریتمهای هوش مصنوعی بهینه شده است، در این زمینه عملکرد بهینهتری داشته و با مصرف انرژی کمتری به توان محاسباتی مورد نیاز دست مییابد.
البته بسیاری از GPUهای امروزی واحدهای پردازش عصبی را نیز در خود جای دادهاند که از جمله آنها میتوان به کارتگرافیکهای نسل Volta به بعد انویدیا، محصولات ای ام دی از RDNA 3 و همچنین GPUهای سری ARC اینتل اشاره کرد.
امروزه در APUهای موبایل و لپتاپ، GPU و NPU نیز در کنار CPU وجود دارد و هر کدام وظیفه اجرای پردازشهایی که برای آن بهینه شدهاند را بر عهده دارند.
جمعبندی
هوش مصنوعی هر روز کاربرد بیشتری پیدا میکند و با پیچیدهتر شدن مدلهای AI، نیاز به توان پردازش موازی برای اجرای الگوریتمهای هوش مصنوعی نیز به شکل تصاعدی در حال افزایش است. درست مثل گرافیک که از GPU برای شتابدهی به پردازش آن استفاده میکنیم، در کاربردهای هوش مصنوعی و یادگیری عمیق نیز میتوان از واحد پردازش عصبی یا NPU برای شتابدهی به اجرای محاسبات عصبی استفاده کرد.
پردازشگر هوش مصنوعی نوعی شتابدهنده است که برای اجرای محاسبات تنسور مورد نیاز در کاربردهایی مثل تحلیل دادههای بزرگ، پردازش ویدئو، یادگیری عمیق و سایر برنامههای هوش مصنوعی بهینه شده است. کارایی NPU در هوش مصنوعی نسبت به CPU بسیار بیشتر است چراکه واحد پردازش عصبی نسبت به CPU توان پردازش موازی بسیار بیشتری دارد. همچنین بهرهوری انرژی NPU در هوش مصنوعی نیز آن را به گزینه بهتری نسبت GPU تبدیل کرده.
این موضوع به خصوص در کامپیوترهای قابل حمل که عمر باتری در آنها مهم است، باعث شده پردازشگر هوش مصنوعی در دستگاههای موبایل کاربرد بیشتری داشته باشد. به همین دلیل است که امروزه اکثر APUهایی که برای گوشی هوشمند و لپتاپها معرفی میشوند، به واحد پردازش عصبی نیز مجهز هستند.
سوالات پرتکرار
NPU چیست و چه کاربردهایی دارد؟
پردازنده NPU یا واحد پردازش عصبی، یک پردازشگر هوش مصنوعی است که وظیفه آن اجرای بهتر و بهینهتر الگوریتمهای هوش مصنوعی است. این پردازنده در مقایسه با GPU و CPU توان اجرای انواع دستورالعملهای کمتری را دارد اما برای اجرای بهینه محاسبات عصبی طراحی شده است.
تفاوت اصلی بین NPU و CPU چیست؟
پردازنده مرکزی یا CPU یک پردازنده همه منظوره است که میتواند انواع مختلف دستورالعملها و محاسبات را انجام دهد و تفاوت اصلی NPU با CPU آن است که پردازشگر هوش مصنوعی، برای انجام محاسبات عصبی که در هوش مصنوعی کاربرد دارند مثل محاسبات ماتریسی و تنسور بهینه شده است.
تفاوت اصلی بین NPU و GPU چیست؟
پردازنده گرافیکی یا GPU هم مثل NPU قدرت پردازش موازی بالایی دارد. اما GPU با هدف شتابدهی بار پردازشی گرافیکی طراحی شده و به همین دلیل بسیاری از بخشهای آن در محاسبات هوش مصنوعی کاربردی ندارد. اما واحد پردازش عصبی تنها با هدف اجرای محاسبات عصبی طراحی شده و این نوع عملیات را با مصرف توان بسیار کمتری اجرا میکند.
کاربردهای NPU در دستگاههای هوشمند چیست؟
وظیفه اصلی NPU در دستگاههای هوشمند و قابل حمل، اجرای بهینه برنامههای هوش مصنوعی با کمتری مصرف باتری ممکن است. به همین دلیل در APU به کار رفته در دستگاههای هوشمند از NPU نیز استفاده میشود.
آیا NPUها در دستگاههای خانگی هم استفاده میشوند؟
هوش مصنوعی در حال وارد شدن به تمام عرصههای زندگی ماست و دستگاههای خانگی هم از این قاعده مستثنی نیستند. بسیاری از تولید کنندگان لوازم خانگی از جمله سامسونگ محصولات مجهز به پردازشگر هوش مصنوعی را معرفی کردهاند و پیشبینی میشود این در آینده اکثر دستگاههای خانگی به قابلیتهای هوش مصنوعی مجهز شوند.
منبع: شهر سخت افزار