چگونه سختافزار مناسب برای پروژه یادگیری ماشین خود را انتخاب کنیم؟
به گزارش اپست به نقل از cherryservers ، همانطور که پیشرفتهای تکنولوژیکی به ما اجازه میدهند تا به پتانسیل دست نخوردهی تحلیل دادهها نفوذ کنیم، یادگیری ماشین به عنوان یک مدل تازه که در سراسر جهان مورد استقبال قرار گرفته است.
از مراقبتهای بهداشتی تا بخش خودرو و از بازاریابی تا حمل و نقل – یادگیری ماشین به سازمانها اجازه داده است تا بینشهای ارزشمندی را کشف کنند، بهرهوری را بهبود بخشند و به طور کارآمد عمل کنند.
اما چگونه کار میکند و چگونه باید سختافزار یادگیری ماشین را برای پروژه یادگیری ماشین خود انتخاب کنید؟
یادگیری ماشین چیست؟
تعریف واحدی برای یادگیری ماشین وجود ندارد. Nvidia آن را به عنوان “استفاده از الگوریتم ها برای تجزیه و تحلیل داده ها، یادگیری از آنها و سپس تصمیم گیری یا پیش بینی در مورد چیزی در جهان” تعریف می کند. در حالی که McKinsey&Company بیشتر اضافه می کند که یادگیری ماشین “بر اساس الگوریتم هایی است که می توانند بدون تکیه بر برنامه نویسی مبتنی بر قوانین، از داده ها بیاموزند.”
به عبارت ساده، یادگیری ماشین شاخه ای از هوش مصنوعی (AI) است که بر توسعه برنامه ها و سیستم هایی متمرکز است که می توانند بدون برنامه ریزی برای انجام این کار، یاد بگیرند و بهبود یابند. به عنوان مثال، چت بات مبتنی بر هوش مصنوعی چگونه از طریق تعاملات گذشته می آموزد تا در آینده قضاوت های آگاهانه تری انجام دهد.
فرض کنیم که باید بفهمیم آیا یک نوشیدنی قهوه است یا چای. ما باید سیستمی بسازیم تا بر اساس داده های جمع آوری شده به این سوال پاسخ دهیم.
ما از آموزش برای ساختن مدلی برای چنین سوالی استفاده می کنیم. هدف داشتن سیستمی است که تا حد امکان دقیق به سوالات پیشنهادی ما پاسخ دهد.
جمع آوری و گردآوری داده ها
مرحله اولیه، جمع آوری داده هایی است که برای “آموزش” “مدل” ما مورد نیاز است. کیفیت داده های جمع آوری شده مستقیماً بر دقت مدل یادگیری ماشین شما تأثیر می گذارد، به همین دلیل اطمینان از آماده سازی و دستکاری داده ها برای مدل انتخابی شما بسیار مهم است.
در مثال ما، می توانیم از فنجان های چای و قهوه به عنوان داده استفاده کنیم. ما می توانیم از بسیاری از اجزا استفاده کنیم، اما برای اهداف ما، دو مورد ساده را انتخاب می کنیم – رنگ نوشیدنی و مقدار کافئین.
ابتدا باید انواع مختلف چای و قهوه را آماده کرده و تجهیزات اندازه گیری را تهیه کنیم – یک اسپکتروفتومتر برای اندازه گیری رنگ و یک اسپکتروفتومتر طیف سنجی UV برای اندازه گیری میزان کافئین.
سپس، از داده های جمع آوری شده برای ایجاد جدولی از رنگ، میزان کافئین و اینکه آیا چای یا قهوه است استفاده خواهیم کرد. این داده های آموزشی خواهد بود.
انتخاب الگوریتم
پس از جمعآوری دادههای با کیفیت از طریق حاشیهنویسی و جمعآوری داده، مرحله بعدی انتخاب بهترین مدل متناسب است.
بسیاری از مهندسان و دانشمندان داده، انتخاب الگوریتم صحیح را یک کار دشوار میدانند. با وجود فراوانی مدلهای الگوریتمی موجود، باید اطمینان حاصل کنید که مدلهای انتخابشده با دادههای موجود و الزامات پروژه همسو هستند.
در مورد ما، فقط دو نقطه داده داریم – رنگ و درصد کافئین. بنابراین، میتوانیم از یک مدل خطی ساده مانند الگوریتم رگرسیون لجستیک استفاده کنیم.
فرمول تابع لجستیک y = 1 / (1 + e^-(β۰ + β۱×۱ + … + βnxn)) است و خروجی بین ۰ تا ۱ است. ما به تنظیم مقادیر β ادامه میدهیم تا دقت پیشبینی را به حداکثر برسانیم و تابع هزینه را به حداقل برسانیم.
مهندسی ویژگی
مرحله بعدی شامل تبدیل داده ها برای تسهیل تفسیر آنها برای مدل و افزایش دقت آن است. تجسم داده های شما برای مشاهده اینکه آیا شما هرگونه رابطه ای بین متغیرهای مختلف را از دست داده اید یا هرگونه عدم تعادل داده ای را تنظیم کرده اید ضروری است.
مهندسی ویژگی به شما امکان می دهد داده های حیاتی را برجسته کنید و به مدل اجازه دهید بر مهمترین معیارها تمرکز کند. همچنین به شما امکان می دهد تخصص دامنه را در مدل وارد کنید و سطح دقت را بیشتر افزایش دهید.
آموزش مدل
در هسته اصلی یادگیری ماشین، فرآیند آموزش مدل قرار دارد. با استفاده از مثالی که ارائه کردیم، از دادههای خود برای افزایش تدریجی توانایی مدل در پیشبینی دقیق اینکه نوشیدنی قهوه است یا چای استفاده خواهیم کرد.
از آنجایی که ما از یک مدل خطی استفاده کردهایم، تنها متغیرهایی که میتوانیم تحت تأثیر قرار دهیم یا تغییر دهیم شیب و عرض از مبدأ هستند.
در یادگیری ماشین، مجموعه متغیرهای ذکر شده معمولاً در یک ماتریس تشکیل میشوند که با w برای وزنها و b برای بایاسها نشان داده میشوند. اکنون مقادیر تصادفی را برای w و b مقداردهی اولیه میکنیم و تلاش میکنیم خروجیها را پیشبینی کنیم.
این یک فرآیند تکراری است که تنها از طریق آزمون و خطا به کمال میرسد. هر تکرار منجر به بهروزرسانی وزنها و بایاسها میشود که یک مرحله آموزشی نامیده میشود. با پیشرفت هر مرحله، مدل ما گام به گام به خط جداسازی ایدهآل بین قهوه و چای نزدیکتر میشود.
پس از نهایی شدن آموزش، بررسی میکنیم که آیا مدل ما مطابق با انتظارات ما عمل میکند یا خیر.
عملکرد مدلهای خود را با استفاده از مجموعه دادههای آزمایشی ارزیابی میکنیم. این کار برای مشاهده عملکرد مدل در برابر دادههای جدید انجام میشود. این بازتابی از عملکرد احتمالی مدل در استفاده عملی است.
پس از ایجاد یک چارچوب قوی برای مدل خود، میتوانیم ابزارهای خارجی را برای تقویت اثربخشی آن ادغام کنیم.
به عنوان مثال، استفاده از ابزار API وباسکرپینگ ZenRows میتواند استخراج دادههای ارزشمند اضافی را از منابع مختلف امکانپذیر کند.
استنتاج
پس از انجام تمام کارهای سخت، به نقطه واقعی یادگیری ماشین می رسیم: یافتن پاسخ ها. استنتاج جایی است که ما به آن پاسخ ها می رسیم. پروژه خود را اجرا می کنیم و می بینیم که مدل ما چقدر دقیق پیش بینی می کند که آیا نوشیدنی قهوه است یا چای با استفاده از داده های ارائه شده.
زیبایی اینجا این است که ما می توانیم با مدل خود به عنوان جایگزینی برای قضاوت انسانی بین قهوه و چای تمایز قائل شویم.
و همین فرآیند با کمی تغییر در هر زمینه یا حوزه ای قابل اعمال به هر سوال یا مشکلی است.
با این حال، عملکرد یک سیستم یادگیری ماشین بسیار به سخت افزاری که مستقر شده است بستگی دارد. یک مدل ممکن است فوق العاده باشد، اما اگر سخت افزار یادگیری ماشین به اندازه کافی قوی نباشد، این فرآیند می تواند بسیار خسته کننده شود.
انتخابهای ممکن سختافزار یادگیری ماشین برای پروژههای یادگیری ماشین
الگوریتمهای یادگیری ماشین از نظر شدت محاسباتی متفاوت هستند. محبوبترین الگوریتمهای امروزی مانند شبکههای عصبی عمیق یا ماشینهای بردار پشتیبان، بسیار محاسباتی هستند. آموزش چنین مدلهایی به منابع محاسباتی عظیمی نیاز دارد.
انتخاب سختافزار صحیح یادگیری ماشین، یک فرآیند پیچیده است. بیایید به سه گزینه اصلی سختافزاری برای یادگیری ماشین نگاه کنیم: واحدهای پردازش، حافظه و ذخیرهسازی.
واحدهای پردازش
واحد پردازش مرکزی (CPU)
با توجه به اینکه بیشتر مدلهای یادگیری ماشین امروزه بر روی GPU اجرا میشوند، CPUها عمدتاً برای پیشپردازش اطلاعات استفاده میشوند. طراحی آنها با عملیاتهای سریالی سازگار است، بنابراین از حافظه کش افزایشیافته و هستههای کمتر برای تکمیل سریع دستورالعملهای پیچیده پشتیبانی میکنند.
قدرت CPU در اجرای سریعترین ممکن چندین عملیات پیچیده به صورت متوالی است، در حالی که یادگیری ماشین معمولاً شامل مقادیر زیادی از محاسبات جبر خطی نسبتاً ساده است که بهتر است به صورت موازی پردازش شوند.
با این حال، اگر شما روی پروژههای یادگیری ماشینی کار میکنید که از الگوریتمهای پیچیده استفاده نمیکنند و به منابع محاسباتی زیادی نیاز ندارند، ممکن است نیازی به GPU نباشد.
به عنوان مثال، CPU i7-7500U یک گزینه عالی برای در نظر گرفتن است اگر پروژه یادگیری ماشین شما سبکوزن باشد زیرا میتواند بیش از ۱۰۰ نمونه در ثانیه پردازش کند. Threadripper 1900x، یک CPU هشت هستهای با ۱۶ رشته فرعی از AMD، گزینه عالی دیگری است اگر مایل به استفاده از CPU هستید.
با این حال، CPUها نمیتوانند با GPU رقابت کنند زیرا CPU اغلب قدرتمند اما کمکارمند است.
Intel Phi تلاش کرد با GPUهای NVIDIA/AMD رقابت کند، اما عملکرد آن هنوز هم ضعیف است، همانطور که در نمودار زیر مشاهده میشود.

اگر وظایف شما برای پردازش توسط CPU مناسب نیستند، گزینه های عالی GPU برای بررسی وجود دارد.
واحد پردازش گرافیکی (GPU)
در مقایسه با CPUهای معمولی، GPUها از هزاران هسته کوچکتر تشکیل شدهاند که امکان محاسبات موازی گسترده و توان عملیاتی بالاتر را فراهم میکنند – محاسبات بیشتری میتوانند در یک لحظه انجام شوند.
GPU در ابتدا برای پردازش گرافیکی ایجاد شد، اما بعداً مشخص شد که برای محاسبات عمومی در علم، طراحی محصول و سایر زمینهها بسیار مفید است. دادههای یادگیری ماشین معمولاً به صورت ماتریس ذخیره میشوند و ضرب ماتریس در ماتریس رایجترین روش است. محاسبات GPU برای چنین محاسباتی عالی است و میتواند سرعت آنها را تا ۷ برابر افزایش دهد.
در مورد حافظه، مهم است که اندازه مدل یادگیری ماشین خود را در نظر بگیرید و اینکه آیا در حافظه VRAM GPU شما جا میشود یا خیر. به عنوان مثال، ۱۰ گیگابایت حافظه VRAM برای کسبوکارهایی که نمونهسازی یادگیری عمیق و آموزش مدل انجام میدهند، باید کافی باشد.
کارتهای GPU مدرن، مانند سری RTX، از حافظه VRAM 16 بیتی پشتیبانی میکنند که به شما کمک میکند تقریباً دو برابر عملکرد را برای مقدار حافظه یکسان در مقایسه با معماری ۳۲ بیتی قدیمیتر به دست آورید.
GPUهای NVIDIA معمولاً گزینه بسیار خوبی برای یادگیری ماشین هستند. رابطهای برنامهنویسی CUDNN و CUDA با کتابخانههای فعلی یادگیری ماشین مانند Keras، Tensorflow یا PyTorch بسیار سازگار هستند.
دو مدل زیر انتخاب های بسیار خوبی هستند، زیرا عملکرد فوق العاده ای ارائه می دهند که توصیه می کنیم هنگام انتخاب GPU برای پروژه یادگیری ماشین خود به آنها توجه کنید.
- Nvidia RTX 3080 (8704 هسته CUDA، ۱۰ گیگابایت حافظه GDDR6)
- Nvidia RTX 3070 (5888 هسته CUDA، ۸ گیگابایت حافظه GDDR6)
RTX 3080 Ti از ۲۰ تا ۵۰ درصد سریعتر از RTX 3070 است، اگرچه گرانتر نیز هست. اگرچه این مدل ها احتمالاً امروزه محبوب ترین هستند، اما گزینه های دیگری نیز برای GPU های یادگیری ماشین در دسترس است.
اگر بودجه نگرانی شماست، می توانید با خرید یک GPU کمی ارزان تر و صرفاً اجرای طولانی تر محاسبات خود، هزینه خود را کاهش دهید. مدل هایی مانند GTX 1080 یا GTX 1070 گزینه های مقرون به صرفه عالی هستند.
آرایه دروازههای قابل برنامهریزی میدانی (FPGA)
FPGAها به دلیل کارایی بالای انرژی، معماریهای انعطافپذیری را برای منابع سختافزاری قابل برنامهریزی و همچنین بلوکهای DPS و BRAM ارائه میدهند. این امکان را فراهم میکند که مسیر داده در زمان اجرا از طریق بازآرایی جزئی پیکربندی مجدد شود. به همین دلیل، کاربر هیچ محدودیتی ندارد و میتواند با محاسبات موازی پیش برود.
علاوه بر این، FPGAها در مقایسه با CPU و GPU انعطافپذیری بینظیری ارائه میدهند. این امکان را برای آنها فراهم میکند که هر گونه اتصال I/O را داشته باشند و به کاربران اجازه میدهد بدون نیاز به CPU به هر دستگاه یا شبکهای متصل شوند.
FPGAها در مناطقی استفاده میشوند که ایمنی عملکرد نقش اساسی دارد. بنابراین، FPGAها برای برآورده کردن الزامات ایمنی طیف گستردهای از کاربردهای مختلف طراحی شدهاند.
Xilinx Zynq-7000، همراه با Ultrascale+TM MPSoC، نمونههایی هستند که از برنامههای کاربردی حیاتی ایمنی پشتیبانی میکنند.
مدار مجتمع ویژه کاربردی (ASIC)
همانطور که از نام آن پیداست، ASICها مدارهایی هستند که برای کاربرد خاصی طراحی شدهاند. این دستگاههای تخصصی برای انجام محاسبات از پیش تعریف شده با کارایی بالاتر ساخته شدهاند.
در مقابل، CPUها را میتوان برای اهداف عمومی استفاده کرد. حتی GPUها از پردازندههای موازی تشکیل شدهاند که میتوانند چندین الگوریتم مختلف را همزمان اجرا کنند. بر خلاف FPGAها، ASICها پس از ساخت قابل برنامهریزی مجدد نیستند. در حالی که ممکن است یک FPGA را پس از اتمام هدف خود مجدداً برنامهریزی کنید، منطق ASICها دائمی است.
با این حال، مزیت اصلی ASICها کارایی آنها است زیرا آنها فقط برای انجام یک کار از پیش تعریف شده طراحی شدهاند. این امر همچنین منجر به افزایش کارایی میشود.
به عنوان مثال، آلفاگو را در نظر بگیرید. هنگامی که نسخههای اصلی آلفاگو بر روی TPUها اجرا میشدند، انرژی کمتری نسبت به زمانی که بر روی خوشههای CPU و GPU اجرا میشدند، مصرف میکردند.
همه غولهای فناوری علاقهمند به توسعه و سرمایهگذاری در ASICها هستند. در حال حاضر، گوگل سومین نسل واحد پردازش تنسور (TPU) را معرفی کرده است، یک ASIC که برای آموزش و استنباط ایجاد شده است.
حافظه
با افزایش نمایی قابلیتهای یادگیری ماشین، برنامههای هوش مصنوعی نیازمند ویژگیهای حافظهای پیشرفتهای هستند که بتوانند با افزایش حجم کارها کنار بیایند و در عین حال کارایی خود را حفظ کنند. سه نوع اصلی حافظه برای در نظر گرفتن در برنامههای یادگیری ماشین عبارتند از:
- حافظه درون تراشه
- HBM (حافظه با پهنای باند بالا)
- حافظه GDDR
حافظه درون تراشه سریعترین نوع حافظه است که در بالای سلسله مراتب حافظه قرار دارد. این حافظه در نزدیکی هستههای محاسباتی CPU و GPU شما قرار دارد که باعث میشود حافظه درون تراشه بسیار سریع باشد، اما ظرفیت آن نیز محدود است. این حافظه به عنوان یک حافظه پنهان محلی برای میکروپروسسورها عمل میکند تا اطلاعاتی که اخیراً به آنها دسترسی پیدا کردهاند را ذخیره کند.
HBM یک گزینه حافظه ۳ بعدی است که بر روی معماری DRAM ساخته شده است. این حافظه برای افزایش عملکرد طراحی شده است و به شما امکان میدهد از پهنای باند و ظرفیت افزایش یافته بهرهمند شوید. اگرچه به اندازه حافظه درون تراشه کارآمد نیست، اما با حفظ نرخ دادههای پایین، عملکرد کارآمدی را تضمین میکند.
آخرین نسخه HBM، یعنی HBME2، یک گزینه حافظه قابل توجه است که برای برنامههای مختلف یادگیری ماشین مناسب است.
در نهایت، حافظه GDDR در ابتدا در برنامههای بازی قابل ردیابی است، اما افراد کارایی آنها را در برنامههای یادگیری ماشین تشخیص دادند. GDDR6 فعلی میتواند از نرخ دادههای بالایی که به ۱۶ گیگابایت در ثانیه میرسد پشتیبانی کند.
ذخیره سازی
ذخیره سازی معمولاً منبع نگرانی برای یادگیری ماشین نیست و معمولاً به بودجه بستگی دارد. داشتن هر هارد دیسک یا SSD بزرگتر از ۳ ترابایت برای داده ها کافی خواهد بود.
اگر بودجه شما اجازه می دهد، یک SSD NVMe M2 500 گیگابایتی گزینه خوبی است.
ذخیره سازی در طول آموزش مهم نیست زیرا داده های شما در RAM یا VRAM GPU قرار خواهند گرفت، اگرچه داشتن SSD نسبت به HDD هنوز بهتر است زیرا عملکرد ارزش قیمت را دارد.
چگونه سختافزار میتواند به تسریع بار کاری یادگیری ماشین کمک کند
بار کاری حجم پردازشی است که یک کامپیوتر باید در یک زمان مشخص انجام دهد. سختافزار با کیفیت در همه جای خط لوله مورد نیاز است، خواه شما معماریهای موجود را تطبیق دهید یا معماریهای جدیدی را توسعه دهید.
چه پیشرفت هایی را می توان انتظار داشت؟
پیشرفت هایی که سخت افزار مناسب به همراه می آورد بسیار زیاد است، اما مهمترین آنها عبارتند از:
- استنتاج با تأخیر کمتر (Latency)،
- آموزش با توان عملیاتی بالاتر (Throughput)، و
- مصرف انرژی کمتر، منجر به کاهش هزینه های برق.
هزاران محصول سخت افزاری یادگیری ماشین در بازار موجود است، اما درک اینکه کدام یک ارزش ارتقا را دارند و چگونه بر عملکرد شما تأثیر می گذارند ضروری است.