علم داده مبتنی بر GPU (نه یادگیری عمیق) با RAPIDS

گره منبع: 997659

علم داده مبتنی بر GPU (نه یادگیری عمیق) با RAPIDS

چگونه از قدرت GPU خود برای علم داده و یادگیری ماشینی معمولی استفاده کنید، حتی اگر کار یادگیری عمیق زیادی انجام ندهید.



تصویر سربرگ
منبع تصویرPixabay (تصویر رایگان)

آیا به دنبال «علم داده مبتنی بر GPU» هستید؟

 
 
تصور کنید که یک دانشمند داده، یا یک تحلیلگر تجاری، یا یک محقق دانشگاهی در فیزیک/اقتصاد/علوم اعصاب…

شما خیلی کارها را انجام می دهید جدال داده ها، تمیز کردن، آزمون های آماری، تجسم به طور منظم. شما همچنین با بسیاری از مدل های خطی برازش داده ها و گاه به گاه وارد آن شوید RandomForest. شما هم درگیر هستید خوشه بندی مجموعه داده های بزرگ به نظر به اندازه کافی آشنا به نظر می رسد؟

با این حال، با توجه به ماهیت مجموعه داده‌هایی که روی آن‌ها کار می‌کنید (عمدتاً جدولی و ساختاری)، شما آنقدر به یادگیری عمیق نمی‌پردازید. شما ترجیح می دهید تمام منابع سخت افزاری خود را در کارهایی که در واقع به صورت روزانه انجام می دهید قرار دهید تا اینکه برای یک مدل یادگیری عمیق شیک خرج کنید. بازم آشنا؟

شما در مورد قدرت فوق العاده و قدرت محاسباتی سریع می شنوید سیستم‌های گرافیکی مانند NVidia برای انواع کاربردهای صنعتی و علمی.

و شما به فکر کردن ادامه می دهید - "چه چیزی برای من وجود دارد؟ چگونه می توانم از این قطعات نیمه هادی قدرتمند در جریان کاری خاص خود استفاده کنم؟ "

شما به دنبال علم داده های مبتنی بر GPU هستید.

یکی از بهترین (و سریع ترین) گزینه های شما برای ارزیابی این رویکرد، استفاده از ترکیبی است ابر زحل + سریعاجازه بدهید مفصل توضیح دهم…

پردازنده‌های گرافیکی در فرهنگ AI/ML عمدتاً برای یادگیری عمیق بوده‌اند

 
 
در حالی که استفاده از GPU و محاسبات توزیع شده به طور گسترده در محافل دانشگاهی و تجاری برای وظایف اصلی AI/ML مورد بحث قرار گرفته است (مانند اجرای یک شبکه عصبی عمیق 1000 لایه برای طبقه بندی تصاویر یا BERT میلیارد پارامتری مدل سنتز گفتار)، زمانی که نوبت به کاربردشان برای کارهای معمولی علم داده و مهندسی داده می‌رسد، پوشش کمتری پیدا کرده‌اند.

با این وجود، وظایف مرتبط با داده، پیشرو ضروری برای هر بار کاری ML در خط لوله هوش مصنوعی هستند و اغلب تشکیل می دهند اکثریت درصد زمان و تلاش فکری توسط یک دانشمند داده یا حتی یک مهندس ML خرج شده است. به تازگی، پیشگام معروف هوش مصنوعی
اندرو نانگ دربارهی حرکت از یک رویکرد مدل محور به یک رویکرد داده محور به هوش مصنوعی توسعه ابزار این به معنای صرف زمان بسیار بیشتری با داده های خام و پیش پردازش آن ها قبل از اجرای یک حجم کاری واقعی هوش مصنوعی در خط لوله شما است.

بنابراین، سؤال مهم این است: آیا می‌توانیم از قدرت GPU و محاسبات توزیع‌شده برای کارهای معمولی پردازش داده استفاده کنیم?



منبع تصویر: نویسنده از تصاویر رایگان کلاژ ایجاد کرد (Pixabay)

 

در حالی که استفاده از پردازنده‌های گرافیکی و محاسبات توزیع‌شده به طور گسترده در محافل دانشگاهی و تجاری برای وظایف اصلی AI/ML مورد بحث قرار می‌گیرد، آنها پوشش کمتری در کاربردشان برای کارهای معمولی علم داده و مهندسی داده پیدا کرده‌اند.

اکوسیستم فوق العاده RAPIDS

 
 
La مجموعه ای از کتابخانه های نرم افزاری و API های RAPIDS به شما - یک دانشمند داده معمولی (و نه لزوماً یک متخصص یادگیری عمیق) - این گزینه و انعطاف پذیری را برای اجرا می دهد. خطوط لوله علوم داده و تجزیه و تحلیل انتها به انتها به طور کامل بر روی GPU ها.

این پروژه منبع باز توسط انویدیا با ساخت ابزارهایی برای استفاده از مزایای اولیه CUDA انکوبه شد. به طور خاص بر روی آن تمرکز می کند افشای موازی سازی GPU و ویژگی های سرعت حافظه با پهنای باند بالا از طریق زبان پایتون سازگار با علم داده.

وظایف متداول آماده سازی داده ها و بحث در اکوسیستم RAPIDS بسیار ارزشمند هستند. همچنین مقدار قابل توجهی وام می دهد پشتیبانی از چند گره، استقرار چند GPU و پردازش توزیع شده. تا جایی که امکان دارد، با کتابخانه های دیگری که ایجاد می کنند ادغام می شود از حافظه خارج شده (یعنی اندازه مجموعه داده بزرگتر از RAM رایانه شخصی) پردازش داده ها برای دانشمندان داده به راحتی و در دسترس است.



منبع تصویر: نویسنده کلاژ ایجاد کرد

 

سه مؤلفه برجسته (و پایتونیک) - که مورد توجه ویژه دانشمندان داده رایج هستند - عبارتند از:

  • CupPy: یک کتابخانه آرایه‌ای مبتنی بر CUDA که ظاهر و احساسی درست مانند Numpy دارد، در حالی که از کتابخانه‌های مختلف CUDA مانند cuBLAS، cuDNN، cuRand، cuSolver، cuSPARSE، cuFFT، و NCCL برای بهره‌گیری کامل از معماری GPU زیر آن استفاده می‌کند.
  • CuDF: این یک کتابخانه DataFrame GPU برای بارگیری، تجمیع، پیوستن، فیلتر کردن و دستکاری داده ها با پاندا مانند API. مهندسان داده و دانشمندان داده می توانند از آن برای سرعت بخشیدن به جریان وظایف خود با استفاده از پردازنده های گرافیکی قدرتمند استفاده کنند، بدون اینکه هرگز نکات و پیچ و مهره های برنامه نویسی CUDA را یاد بگیرند.
  • CuML: این کتابخانه دانشمندان داده، تحلیلگران و محققان را قادر می سازد تا الگوریتم های سنتی/کلاسیک ML و وظایف پردازش مرتبط را با استفاده از قدرت یک GPU اجرا کنند. به طور طبیعی، این بیشتر با مجموعه داده های جدولی استفاده می شود. به Scikit-learn فکر کنید و با صدها هسته Cuda و Tensor روی کارت GPU شما چه کاری می تواند انجام دهد! به نشانه آن، در بیشتر موارد، API Python cuML با Scikit-learn مطابقت دارد. علاوه بر این، سعی در ارائه دارد پشتیبانی از چند GPU و چند گره از GPU by ادغام برازنده با داسک، هر کجا که می تواند، برای بهره گیری از پردازش توزیع شده واقعی/ محاسبات خوشه ای.


آیا می‌توانیم از قدرت GPU و محاسبات توزیع‌شده برای کارهای معمولی پردازش داده و یادگیری ماشینی با داده‌های ساختاریافته استفاده کنیم؟

آیا با استفاده از اسپارک آپاچی تفاوت دارد؟

 
 
ممکن است بپرسید که چگونه این پردازش داده های مبتنی بر GPU با استفاده از Apache Spark متفاوت است. در واقع، تفاوت‌های ظریفی وجود دارد، و اخیراً، با Spark 3.0، GPUها منبع اصلی برای بارهای کاری Spark هستند.

سرعت بخشیدن به Apache Spark 3.0 با پردازنده گرافیکی و RAPIDS | وبلاگ توسعه دهندگان NVIDIA
 

ما زمان یا فضایی برای بحث در مورد تفاوت‌های منحصربه‌فرد این رویکرد علم داده مبتنی بر GPU در مقابل وظایف Big Data که مخصوصاً برای Apache Spark مناسب هستند، نداریم. اما این سوالات را از خود بپرسید و احتمالاً تفاوت ظریف را درک خواهید کرد،

"به عنوان یک دانشمند داده که معاملات اقتصادی و مدیریت پرتفوی را مدل می کند، می خواهم یک مشکل را حل کنم سیستم معادلات خطی با 100,000 متغیر آیا از کتابخانه جبر خطی خالص یا Apache Spark استفاده می کنم؟؟ "

"به عنوان بخشی از خط لوله فشرده سازی تصویر، می خواهم از آن استفاده کنم تجزیه مقدار منفرد روی یک ماتریس بزرگ از میلیون ها ورودی. آیا آپاچی اسپارک انتخاب خوبی برای آن است؟ "

اندازه بزرگ مشکل همیشه به معنای Apache Spark یا اکوسیستم Hadoop نیست. Big Computation معادل Big Data نیست. به عنوان یک دانشمند داده کاملاً جامع، برای مقابله با انواع مشکلات باید هر دو را بدانید.

RAPIDS به طور خاص بر روی افشای موازی سازی GPU و ویژگی های سرعت حافظه با پهنای باند بالا از طریق API های پایتون.

در این مقاله چه چیزی را نشان می دهیم؟

 
 

نمونه‌های واضح فقط CuPy و CuML

 
بنابراین، در این مقاله، ما فقط نمونه‌های واضح CuPy و CuML را نشان خواهیم داد.

  • چگونه آنها (در سرعت) با توابع / برآوردگرهای Numpy و Scikit-learn مربوطه مقایسه می کنند
  • چگونه اندازه داده/مشکل در این مقایسه سرعت اهمیت دارد.

نمونه های CuDF در مقاله بعدی

 
اگرچه نمونه‌های مهندسی داده مشابه پردازش داده‌های پانداها مورد توجه بسیاری از دانشمندان داده است، ما در مقاله بعدی به نمونه‌های CuDF خواهیم پرداخت.

پلتفرم سخت افزاری مبتنی بر GPU من چیست؟

 
من از a استفاده می کنم ابر زحل نمونه GPU تسلا T4 زیرا به معنای واقعی کلمه 5 دقیقه کار برای چرخش یک است منبع محاسباتی کاملاً برجسته و بارگذاری شده (با کتابخانه های DS و AI) روی ابر برای همه کار علم داده من با خدمات آنها. تا زمانی که از 10 ساعت استفاده از نوت بوک Jupyter در ماه تجاوز نکنم، رایگان است! اگر می خواهید در مورد خدمات آنها بیشتر بخوانید،

Saturn Cloud Hosted راه اندازی شد: GPU Data Science برای همه!

محاسبات GPU آینده علم داده است. بسته‌هایی مانند RAPIDS، TensorFlow و PyTorch سرعت رعد و برق را فعال می‌کنند…

جدا از داشتن GPU تسلا T4این یک پردازنده 4 هسته ای Intel(R) Xeon(R) Platinum 8259CL @ 2.50GHz با 16 گیگابایت رم و 10 گیگابایت دیسک پایدار است. بنابراین، از نظر پیکربندی سخت‌افزار، این یک راه‌اندازی کاملاً عادی است (هارد دیسک محدود به دلیل سطح رایگان) یعنی هر دانشمند داده ممکن است این نوع سخت‌افزار را در اختیار داشته باشد. تنها عامل متمایز کننده وجود GPU و راه اندازی تمام کتابخانه های CUDA و Python به روشی مناسب است تا مجموعه RAPIDS بدون هیچ مشکلی کار کند.


اندازه بزرگ مشکل همیشه به معنای Apache Spark یا اکوسیستم Hadoop نیست. Big Computation معادل Big Data نیست. به عنوان یک دانشمند داده کاملاً جامع، برای مقابله با انواع مشکلات باید هر دو را بدانید.

حل یک سیستم خطی معادلات

 
ما سیستم های خطی معادلات را با اندازه های مختلف ایجاد می کنیم و از Numpy (و CuPy) استفاده می کنیم. linalg.solveروتین برای حل آن با کد زیر،



و کد با یک حرف (در چند فراخوانی) برای پیاده سازی CuPy تغییر می کند!



همچنین توجه داشته باشید که چگونه می توانیم آرایه های CuPy را از آرایه های Numpy به عنوان آرگومان ایجاد کنیم.

نتیجه هر چند چشمگیر است. CuPy آهسته یا با سرعتی مشابه با Numpy شروع می شود، اما برای اندازه های بزرگ مسئله (تعداد معادلات) آن را کاملاً شکست می دهد.



تجزیه مقدار منفرد

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



توجه به این نکته قابل توجه است که الگوریتم CuPy عملکرد بهتری نسبت به الگوریتم Numpy در این کلاس مشکل نشان نمی دهد. شاید، این چیزی است که باید توسط توسعه دهندگان Cupy برای بهبود آن انجام شود.

بازگشت به اصل: وارونگی ماتریس

 
در نهایت، ما به اصول اولیه باز می گردیم و مشکل اساسی وارونگی ماتریس (تقریباً در همه الگوریتم های یادگیری ماشین استفاده می شود) را در نظر می گیریم. نتیجه دوباره افزایش عملکرد بسیار مطلوب توسط الگوریتم CuPy را نسبت به بسته Numpy نشان می دهد.



مقابله با یک مشکل K-به معنای خوشه بندی است

 
در مرحله بعد، یک مشکل یادگیری بدون نظارت خوشه‌بندی را با استفاده از الگوریتم k-means بسیار آشنا در نظر می‌گیریم. در اینجا، ما یک تابع CuML را با یک برآوردگر معادل از بسته Scikit-learn مقایسه می کنیم.

فقط برای مرجع، در اینجا مقایسه API بین این دو برآوردگر است.



منبع تصویرScikit یاد بگیر و وب سایت CuML (پروژه های متن باز)

 

در اینجا نتیجه یک مجموعه داده با 10 ویژگی / ابعاد است.



و در اینجا نتیجه آزمایش دیگری با مجموعه داده 100 ویژگی است.



واضح است که هم اندازه نمونه (تعداد ردیف ها) و هم ابعاد (تعداد ستون ها) در عملکرد برتر شتاب مبتنی بر GPU اهمیت دارند.

مسئله رگرسیون خطی بسیار آشنا

 
چه کسی می‌تواند یک مسئله رگرسیون خطی را برای مقایسه سرعت در هنگام برخورد با مجموعه داده‌های جدولی نادیده بگیرد؟ به دنبال آهنگ قبلی، اندازه مسئله را تغییر می دهیم - این بار تعداد نمونه ها و ابعاد به طور همزمان - و عملکرد CuML را مقایسه می کنیم. LinearRegression برآوردگر به دست آمده از پایدار Scikit-learn.

محور X در شکل زیر اندازه مشکل را نشان می دهد - از 1,000 نمونه/50 ویژگی تا 20,000 نمونه/1000 ویژگی.

باز هم، برآوردگر CuML با افزایش پیچیدگی مسئله (اندازه نمونه و ابعاد) بسیار بهتر عمل می کند.



خلاصه

 
 
ما بر روی دو مورد از اساسی‌ترین مؤلفه‌های چارچوب RAPIDS تمرکز کردیم که هدف آن رساندن قدرت GPU به وظایف روزمره تجزیه و تحلیل داده‌ها و یادگیری ماشین است، حتی زمانی که دانشمند داده هیچ کار یادگیری عمیقی را انجام نمی‌دهد.



منبع تصویر: ساخته شده توسط نویسنده با تصاویر رایگان Pixabay (پیوند-1پیوند-2پیوند-3)

 

ما استفاده کردیم ابر زحل نمونه مبتنی بر تسلا T4 برای راه اندازی آسان، رایگان و سریع و چند ویژگی کتابخانه CuPy و CuML و مقایسه عملکرد الگوریتم های پرکاربرد را نشان داد.

  • همه الگوریتم‌های کتابخانه‌های RAPIDS بسیار برتر نیستند، اما اکثر آنها برتر هستند.
  • به طور کلی، با افزایش پیچیدگی مسئله (اندازه نمونه و ابعاد) افزایش عملکرد به سرعت افزایش می یابد
  • اگر یک پردازنده گرافیکی دارید، همیشه RAPIDS را امتحان کنید، اگر عملکردی به دست می‌آورید، مقایسه و آزمایش کنید، و آن را به یک ابزار قابل اعتماد در خط لوله علم داده خود تبدیل کنید.
  • تغییر کد حداقل است، تقریباً برای جابجایی وجود ندارد.

اجازه دهید قدرت GPU جریان کار تجزیه و تحلیل و علم داده شما را راه اندازی کند.

شما می توانید نویسنده را بررسی کنید GitHub مخازن برای کد، ایده ها و منابع در یادگیری ماشین و علم داده. اگر شما نیز مانند من به هوش مصنوعی/یادگیری ماشین/علم داده علاقه دارید، لطفاً با خیال راحت این کار را انجام دهید من را در لینکدین اضافه کنید or دنبال من در توییتر.

با تشکر از مل.

 
اصلی. مجدداً با اجازه دوباره ارسال شد.

مرتبط:

منبع: https://www.kdnuggets.com/2021/08/gpu-powered-data-science-deep-learning-rapids.html

تمبر زمان:

بیشتر از kdnuggets