علم البيانات المدعوم من وحدة معالجة الرسومات (وليس التعلم العميق) باستخدام RAPIDS

عقدة المصدر: 997659

علم البيانات المدعوم من وحدة معالجة الرسومات (وليس التعلم العميق) باستخدام RAPIDS

كيفية الاستفادة من قوة وحدة معالجة الرسومات الخاصة بك في علوم البيانات المنتظمة والتعلم الآلي حتى لو لم تقم بالكثير من أعمال التعلم العميق.



صورة رأس
مصدر الصورةPixabay (صورة مجانية)

هل تبحث عن "علم البيانات المدعوم بوحدة معالجة الرسومات"؟

 
 
تخيل نفسك عالم بيانات، أو محلل أعمال، أو باحثًا أكاديميًا في الفيزياء/الاقتصاد/علم الأعصاب...

أنت تفعل الكثير الجدل حول البيانات، والتنظيف، والاختبارات الإحصائية، والتصورات على أساس منتظم. أنت أيضًا تعبث بالكثير من نماذج خطية تركيب البيانات والمغامرة في بعض الأحيان RandomForest. أنت أيضا في المجموعات مجموعات البيانات الكبيرة. يبدو مألوفا بما فيه الكفاية؟

ومع ذلك، نظرًا لطبيعة مجموعات البيانات التي تعمل عليها (معظمها جدولية ومنظمة)، فإنك لا تغامر بالتعلم العميق كثيرًا. تفضل استثمار جميع موارد الأجهزة المتوفرة لديك في الأشياء التي تقوم بها فعليًا على أساس يومي، بدلاً من الإنفاق على بعض نماذج التعلم العميق الفاخرة. مرة أخرى، مألوفة؟

تسمع عن القوة الهائلة والبراعة الحسابية فائقة السرعة أنظمة GPU مثل تلك التي تقدمها NVidia لجميع أنواع التطبيقات الصناعية والعلمية.

وتستمر في التفكير - "ما هو هناك بالنسبة لي؟ كيف يمكنني الاستفادة من هذه القطع القوية من أشباه الموصلات في سير العمل الخاص بي؟؟ "

أنت تبحث عن علم البيانات الذي يعمل بتقنية GPU.

أحد أفضل (وأسرع) خياراتك لتقييم هذا النهج هو استخدام مزيج من زحل سحابة + رابيدزاسمحوا لي أن أشرح بالتفصيل…

كانت وحدات معالجة الرسومات في الفولكلور AI/ML مخصصة في المقام الأول للتعلم العميق

 
 
في حين أن استخدام وحدات معالجة الرسومات والحوسبة الموزعة تتم مناقشته على نطاق واسع في الدوائر الأكاديمية والتجارية لمهام الذكاء الاصطناعي/التعلم الآلي الأساسية (مثل تشغيل شبكة عصبية عميقة مكونة من 1000 طبقة لتصنيف الصور أو بيرت مليار المعلمة نموذج تركيب الكلام)، فقد وجدوا تغطية أقل عندما يتعلق الأمر بفائدتهم في مهام علوم البيانات وهندسة البيانات العادية.

ومع ذلك، المهام المتعلقة بالبيانات هي مقدمة أساسية لأي عبء عمل ML في خط أنابيب AI وغالبا ما يشكلون نسبة أغلبية من الوقت والجهد الفكري يقضيها عالم بيانات أو حتى مهندس تعلم الآلة. في الآونة الأخيرة، رائد الذكاء الاصطناعي الشهير
أندرو نغ تحدث عن الانتقال من النهج المرتكز على النموذج إلى النهج المرتكز على البيانات في الذكاء الاصطناعي تطوير الأدوات. وهذا يعني قضاء المزيد من الوقت في التعامل مع البيانات الأولية ومعالجتها مسبقًا قبل تنفيذ عبء عمل فعلي للذكاء الاصطناعي على خط الأنابيب الخاص بك.

لذا فإن السؤال المهم هو: هل يمكننا الاستفادة من قوة وحدة معالجة الرسومات والحوسبة الموزعة في مهام معالجة البيانات العادية؟?



مصدر الصورة: قام المؤلف بإنشاء مجموعة من الصور المجانية (Pixabay)

 

في حين أن استخدام وحدات معالجة الرسومات والحوسبة الموزعة تتم مناقشته على نطاق واسع في الدوائر الأكاديمية والتجارية لمهام الذكاء الاصطناعي/التعلم الآلي الأساسية، فقد وجدوا تغطية أقل في فائدتها لمهام علوم البيانات وهندسة البيانات العادية.

نظام RAPIDS البيئي الرائع

 
 
• مجموعة RAPIDS من مكتبات البرامج وواجهات برمجة التطبيقات يمنحك - عالم بيانات منتظم (وليس بالضرورة ممارسًا للتعلم العميق) - الخيار والمرونة للتنفيذ علوم البيانات الشاملة وخطوط تحليل البيانات بالكامل على وحدات معالجة الرسومات.

احتضنت Nvidia هذا المشروع مفتوح المصدر من خلال بناء أدوات للاستفادة من بدايات CUDA. ويركز بشكل خاص على الكشف عن توازي وحدة معالجة الرسومات وميزات سرعة الذاكرة ذات النطاق الترددي العالي من خلال لغة بايثون الصديقة لعلم البيانات.

إعداد البيانات المشتركة والمهام الخلافية تحظى بتقدير كبير في نظام RAPIDS البيئي. كما أنه يقرض كمية كبيرة من دعم النشر متعدد العقد ووحدات معالجة الرسومات المتعددة والمعالجة الموزعة. حيثما أمكن، فإنه يتكامل مع المكتبات الأخرى التي تصنع خارج الذاكرة (أي حجم مجموعة البيانات أكبر من ذاكرة الوصول العشوائي للكمبيوتر الفردي) معالجة البيانات بسهولة ويسهل الوصول إليها لعلماء البيانات الفرديين.



مصدر الصورة: أنشأ المؤلف الكولاج

 

المكونات الثلاثة الأبرز (والبايثونية) - والتي تهم بشكل خاص علماء البيانات المشتركين - هي:

  • كوبي: مكتبة مصفوفة تعمل بنظام CUDA تبدو وكأنها Numpy تمامًا، أثناء استخدام مكتبات CUDA المختلفة، على سبيل المثال، cuBLAS، وcuDNN، وcuRand، وcuSolver، وcuSPARSE، وcuFFT، وNCCL لتحقيق الاستفادة الكاملة من بنية GPU الموجودة تحتها.
  • CuDF: هذه مكتبة GPU DataFrame لتحميل البيانات وتجميعها والانضمام إليها وتصفيتها ومعالجتها باستخدام واجهة برمجة التطبيقات الشبيهة بالباندا. يمكن لمهندسي البيانات وعلماء البيانات استخدامها لتسريع تدفقات مهامهم بسهولة باستخدام وحدات معالجة الرسومات القوية دون تعلم أساسيات برمجة CUDA.
  • CuML: تتيح هذه المكتبة لعلماء البيانات والمحللين والباحثين تشغيل خوارزميات تعلم الآلة التقليدية/الكلاسيكية ومهام المعالجة المرتبطة بها مع الاستفادة الكاملة من قوة وحدة معالجة الرسومات. وبطبيعة الحال، يتم استخدام هذا في الغالب مع مجموعات البيانات الجدولية. فكر في Scikit-learn وما يمكن أن يفعله مع كل تلك المئات من Cuda و Tensor Cores الموجودة على بطاقة GPU الخاصة بك! في إشارة إلى ذلك، في معظم الحالات، تتطابق واجهة برمجة تطبيقات Python الخاصة بـ cuML مع واجهة Scikit-learn. وعلاوة على ذلك، فإنه يحاول أن يقدم دعم متعدد GPU ومتعدد وحدات معالجة الجرافيكس by دمج بأمان مع داسك، حيثما كان ذلك ممكنًا، للاستفادة من المعالجة الموزعة الحقيقية/الحوسبة العنقودية.


هل يمكننا الاستفادة من قوة وحدة معالجة الرسومات والحوسبة الموزعة لوظائف معالجة البيانات المنتظمة والتعلم الآلي باستخدام البيانات المنظمة؟

هل يختلف عن استخدام Apache Spark؟

 
 
قد تتساءل عن مدى اختلاف معالجة البيانات التي تدعمها وحدة معالجة الرسومات عن استخدام Apache Spark. في الواقع، هناك بعض الاختلافات الدقيقة، ومؤخرًا فقط، مع Spark 3.0، أصبحت وحدات معالجة الرسومات مصدرًا رئيسيًا لأحمال عمل Spark.

تسريع Apache Spark 3.0 باستخدام وحدات معالجة الرسومات وRAPIDS | مدونة مطوري NVIDIA
 

ليس لدينا الوقت أو المساحة لمناقشة الاختلافات الفريدة بين نهج علم البيانات المدعوم بوحدة معالجة الرسومات مقابل مهام البيانات الضخمة المناسبة بشكل خاص لـ Apache Spark. لكن اسأل نفسك هذه الأسئلة وربما ستفهم الفرق الدقيق،

"باعتباري عالم بيانات يقوم بصياغة المعاملات الاقتصادية وإدارة المحافظ الاستثمارية، أريد حل مشكلة نظام المعادلات الخطية مع 100,000 المتغيرات. هل أستخدم مكتبة الجبر الخطي النقي أو مكتبة Apache Spark؟ "

"كجزء من خط أنابيب ضغط الصور، أريد استخدامه تحليل القيمة المفردة على مصفوفة كبيرة من ملايين الإدخالات. هل يعتبر Apache Spark خيارًا جيدًا لذلك؟ "

حجم المشكلة الكبير لا يعني دائمًا وجود نظام Apache Spark أو Hadoop البيئي. الحساب الكبير لا يعادل البيانات الضخمة. باعتبارك عالم بيانات ذو خبرة جيدة، فأنت بحاجة إلى معرفة كليهما لمعالجة جميع أنواع المشكلات.

يركز RAPIDS بشكل خاص على الكشف عن توازي وحدة معالجة الرسومات وميزات سرعة الذاكرة ذات النطاق الترددي العالي من خلال واجهات برمجة تطبيقات Python.

ماذا نعرض في هذا المقال؟

 
 

أمثلة واضحة على CuPy وCuML فقط

 
لذا، في هذه المقالة، سنعرض أمثلة واضحة عن CuPy وCuML،

  • كيفية مقارنتها (في السرعة) مع مقدرات/مقدرات Numpy وScikit-learn المقابلة
  • مدى أهمية حجم البيانات/المشكلة في مقارنة السرعة هذه.

أمثلة CuDF في مقالة لاحقة

 
على الرغم من أن أمثلة هندسة البيانات المشابهة لمعالجة بيانات Pandas تحظى باهتمام كبير لدى العديد من علماء البيانات، إلا أننا سنغطي أمثلة CuDF في مقالة لاحقة.

ما هو النظام الأساسي للأجهزة المعتمد على وحدة معالجة الرسومات (GPU) الخاص بي؟

 
أنا أستخدم ملف زحل سحابة مثيل Tesla T4 GPU لأنه يستغرق حرفيًا 5 دقائق من العمل لتدوير ملف موارد حوسبة مميزة ومحملة بالكامل (مع مكتبات DS وAI) على السحابة لجميع أعمالي في علم البيانات مع خدمتهم. طالما أنني لا أتجاوز 10 ساعات من استخدام Jupyter Notebook شهريًا، فهو مجاني! إذا كنت ترغب في قراءة المزيد عن خدمتهم،

تم إطلاق Saturn Cloud Hosted: علم بيانات GPU للجميع!

حوسبة GPU هي مستقبل علم البيانات. تتيح الحزم مثل RAPIDS وTensorFlow وPyTorch سرعة البرق...

وبصرف النظر عن وجود GPU تسلا T4، إنه جهاز Intel(R) Xeon(R) Platinum 4CL CPU @ 8259 جيجا هرتز رباعي النواة مع 2.50 جيجابايت من ذاكرة الوصول العشوائي وقرص ثابت 16 جيجابايت. لذلك، يعد هذا إعدادًا طبيعيًا تمامًا من وجهة نظر تكوين الأجهزة (محرك أقراص ثابت محدود بسبب الطبقة المجانية)، أي أن أي عالم بيانات قد يكون لديه هذا النوع من الأجهزة في حوزته. العامل المميز الوحيد هو وجود وحدة معالجة الرسوميات (GPU) وإعداد جميع مكتبات CUDA وPython بطريقة صحيحة بحيث تعمل مجموعة RAPIDS دون أي عوائق.


حجم المشكلة الكبير لا يعني دائمًا وجود نظام Apache Spark أو Hadoop البيئي. الحساب الكبير لا يعادل البيانات الضخمة. باعتبارك عالم بيانات ذو خبرة جيدة، فأنت بحاجة إلى معرفة كليهما لمعالجة جميع أنواع المشكلات.

حل نظام المعادلات الخطية

 
نقوم بإنشاء أنظمة خطية من المعادلات بأحجام مختلفة ونستخدم Numpy (و CuPy) linalg.solveروتين لحل ذلك مع الكود التالي ،



ويتغير الكود بحرف واحد (في استدعاءات متعددة) لتنفيذ CuPy!



لاحظ أيضًا كيف يمكننا إنشاء صفائف CuPy من صفائف Numpy كوسائط.

والنتيجة مثيرة بالرغم من ذلك. يبدأ CuPy ببطء أو بوتيرة مماثلة لـ Numpy، لكنه يتفوق عليه بشكل مباشر بالنسبة لأحجام المشكلات الكبيرة (عدد المعادلات).



تحلل القيمة المفرد

 
بعد ذلك، سنتعامل مع مشكلة تحليل القيمة المفردة باستخدام مصفوفة مربعة تم إنشاؤها عشوائيًا (مأخوذة من التوزيع الطبيعي) بأحجام مختلفة. نحن لا نكرر مقطع التعليمات البرمجية هنا ولكننا نعرض النتيجة للإيجاز فقط.



من المهم ملاحظة أن خوارزمية CuPy لا تُظهر أداءً متفوقًا بشكل ملحوظ على أداء خوارزمية Numpy في فئة المشكلة هذه. ربما يكون هذا أمرًا يجب على مطوري CuPy تحسينه.

العودة إلى الأساسيات: انعكاس المصفوفة

 
أخيرًا، نعود إلى الأساسيات وننظر في المشكلة الأساسية المتمثلة في انعكاس المصفوفة (المستخدمة في جميع خوارزميات التعلم الآلي تقريبًا). تظهر النتيجة مرة أخرى مكاسب أداء مواتية للغاية بواسطة خوارزمية CuPy مقارنةً بحزمة Numpy.



معالجة مشكلة التجميع تعني K

 
بعد ذلك، سننظر في مشكلة التعلم غير الخاضعة للرقابة المتمثلة في التجميع باستخدام خوارزمية k-means المألوفة جدًا. نحن هنا نقارن دالة CuML مع مُقدِّر مكافئ من حزمة Scikit-learn.

للإشارة فقط، إليك مقارنة API بين هذين المقدرين.



مصدر الصورةScikit تعلم و  موقع كيو إم إل (مشاريع مفتوحة المصدر)

 

فيما يلي نتيجة مجموعة بيانات تحتوي على 10 ميزات/أبعاد.



وهذه نتيجة تجربة أخرى مع مجموعة بيانات مكونة من 100 ميزة.



من الواضح أن حجم العينة (عدد الصفوف) والأبعاد (عدد الأعمدة) كان لهما أهمية في كيفية أداء التسريع المعتمد على وحدة معالجة الرسومات بشكل أفضل.

مشكلة الانحدار الخطي مألوفة للغاية

 
من يمكنه تجاهل مشكلة الانحدار الخطي لمقارنة السرعة أثناء التعامل مع مجموعات البيانات الجدولية؟ باتباع الإيقاع كما كان من قبل، قمنا بتغيير حجم المشكلة - هذه المرة عدد العينات والأبعاد في وقت واحد - ومقارنة أداء CuML LinearRegression مقدر لتلك التي تم الحصول عليها من مستقر Scikit-Learn.

يمثل المحور X في الشكل التالي حجم المشكلة — من 1,000 عينة/50 ميزة إلى 20,000 عينة/1000 ميزة.

مرة أخرى، يعمل مقدر CuML بشكل أفضل مع زيادة تعقيد المشكلة (حجم العينة والأبعاد).



نبذة عامة

 
 
لقد ركزنا على اثنين من المكونات الأساسية لإطار عمل RAPIDS، والذي يهدف إلى جلب قوة وحدة معالجة الرسومات إلى المهام اليومية لتحليل البيانات والتعلم الآلي، حتى عندما لا يقوم عالم البيانات بأي مهمة تعلم عميقة.



مصدر الصورة: من صنع المؤلف باستخدام صور Pixabay المجانية (الارتباط 1الارتباط 2الارتباط 3)

 

استخدمنا زحل سحابة مثيل قائم على Tesla T4 لـ إعداد سهل ومجاني وسريع وأظهر بعض ميزات مكتبات CuPy وCuML ومقارنات أداء الخوارزميات المستخدمة على نطاق واسع.

  • ليست كل الخوارزميات من مكتبات RAPIDS متفوقة إلى حد كبير ولكن معظمها كذلك.
  • بشكل عام، يزيد الأداء المكتسب بسرعة مع زيادة تعقيد المشكلة (حجم العينة والأبعاد).
  • إذا كان لديك وحدة معالجة رسومات، فجرّب RAPIDS دائمًا، وقارن واختبر ما إذا كنت تحصل على أي أداء، واجعله بمثابة العمود الفقري الموثوق به لخط أنابيب علوم البيانات لديك.
  • تغيير الكود ضئيل للغاية، ويكاد يكون معدومًا للتبديل.

اسمح لقوة وحدة معالجة الرسومات (GPU) بتحفيز سير عمل التحليلات وعلوم البيانات لديك.

يمكنك التحقق من المؤلف GitHub جيثب: مستودعات للتعليمات البرمجية والأفكار والموارد في التعلم الآلي وعلوم البيانات. إذا كنت مثلي شغوفًا بالذكاء الاصطناعي / التعلم الآلي / علوم البيانات ، فلا تتردد في ذلك أضفني على LinkedIn or تابعني على تويتر.

شكرا لميل.

 
أصلي. تم إعادة النشر بإذن.

هذا الموضوع ذو علاقة بـ:

المصدر: https://www.kdnuggets.com/2021/08/gpu-powered-data-science-deep-learning-rapids.html

الطابع الزمني:

اكثر من KD nuggets