Introduction
क्या आपने कभी सोचा है कि कैसे डेटा साइंस और AI को तेजी से और कुशलता से किया जा सकता है? आज हम बात करेंगे दो शक्तिशाली टूल्स, Ray और RAPIDS, के बारे में जो मिलकर डेटा एनालिटिक्स पाइपलाइन्स को तेज़ करने में मदद करते हैं। ये दोनों टूल्स GPU-accelerated हैं, जिसका मतलब है कि वे आपके डेटा प्रोसेसिंग कार्यों को गति देने के लिए ग्राफिक्स प्रोसेसिंग यूनिट्स का उपयोग करते हैं। चलिए, इस यात्रा की शुरुआत करते हैं और जानते हैं कि Ray और RAPIDS कैसे एक साथ मिलकर काम करते हैं।
Full Article
RAPIDS एक ओपन-सोर्स GPU-accelerated डेटा साइंस और AI लाइब्रेरी का सेट है, जो Spark और Dask जैसे वितरित इंजनों के साथ स्केल आउट के लिए अच्छी तरह से समर्थित है। दूसरी ओर, Ray एक लोकप्रिय ओपन-सोर्स वितरित Python ढांचा है, जिसे AI और मशीन लर्निंग (ML) एप्लिकेशन को स्केल करने के लिए उपयोग किया जाता है। Ray विशेष रूप से प्रशिक्षण और इनफेरेंस पाइपलाइनों को सरल और स्केल करने में माहिर है, और यह CPU और GPU दोनों डिवाइसों को आसानी से लक्षित कर सकता है।
Ray Actors
Ray उच्च स्तर के एब्स्ट्रक्शंस प्रदान करता है, जो ML मॉडल के प्रशिक्षण और सर्विंग के लिए उपयोग किए जाते हैं। हम Ray के कोर के साथ प्रयोग करेंगे, खासकर Ray Actors के साथ। Actors राज्यपूर्ण कार्यकर्ता होते हैं, जिसका मतलब है कि प्रत्येक कार्यकर्ता डेटा को स्टोर, प्रबंधित और परिवर्तित कर सकता है।
उदाहरण के लिए, यदि आप cuDF का उपयोग करके GPU पर कुछ डेटा लोड करना चाहते हैं, तो आप इसे इस तरह कर सकते हैं:
“`python
@ray.remote(num_gpus=1)
class cuDFActor:
def init(self):
…
def read_parquet(self, filepath: str, columns: list = None) -> cudf.DataFrame:
return cudf.read_parquet(filepath, columns=columns)
Start 4 Workers
pool_size = 4
actor_pool = [cuDFActor.remote() for i in range(pool_size)]
“`
यह उदाहरण Ray का उपयोग करके चार GPU पर चार Actors बनाता है और cuDF का उपयोग करके IO को तेज करता है। Ray Actors वास्तव में बहुत सामान्य होते हैं और Python लाइब्रेरीज़ को समानांतर करने के लिए जल्दी से उपयोग किए जा सकते हैं।
NCCL and cuGraph
RAPIDS में कई लोकप्रिय एल्गोरिदम के लिए कार्यान्वयन पहले से ही C++ में वितरित त्वरित GPU कंप्यूटिंग के लिए बनाए गए हैं। ये कार्यान्वयन अत्यधिक ट्यून किए गए हैं और NCCL और RAFT में पाए जाने वाले प्राइमिटिव और सॉल्वर पर निर्भर करते हैं।
उदाहरण के लिए, cuGraph का weakly connected components (WCC) कार्यान्वयन पहले से साफ किए गए डेटा को जल्दी से डिस्क से CUDA C++ कार्यान्वयन में पिपलाइन करने पर आधारित है। WCC यह दिखाने के लिए एक अच्छा लक्ष्य है कि डेवलपर्स RAPIDS (cuGraph) और Ray का उपयोग करके शक्तिशाली, वितरित, त्वरित एल्गोरिदम तक कैसे पहुंच सकते हैं।
WCC को लागू करने के लिए निम्नलिखित आवश्यकताएँ हैं:
- GPU मेमोरी में डेटा लोड करना
- NCCL कम्युनिकेशन शुरू करना
- आंतरिक मल्टी-GPU cuGraph कार्यान्वयन को स्थापित और कॉन्फ़िगर करना
- WCC का निष्पादन करना
हम पहले कदम का प्रदर्शन कर चुके हैं। Ray के पास NCCL हुक्स हैं, लेकिन हम RAFT NCCL इंटरफेस पर निर्भर करेंगे क्योंकि cuGraph को संचार प्रबंधन के लिए इसकी कठिन निर्भरता है।
“`python
class RAFTActor:
def init(self, index, pool_size, session_id):
…def broadcast_root_unique_id(self):
broadcast root/rank-0 to all actors
def _setup_nccl(self):
start NCCL with identified rank-0 actor
def _setup_raft(self):
configure RAFT and NCCL together
def set_root_unique_id(self, root_uniqueId):
To be set rank-0 for all actors
@ray.remote(num_gpus=1)
class WCCActor(RAFTActor):
def init(self, index, pool_size, session_id):
super().init(index=index, pool_size=pool_size, session_id=session_id)def weakly_connected_components(self, df):
src_array = df[‘src’]
dst_array = df[‘dst’]
weights = df[‘wgt’]
graph = MGGraph(src_array, dst_array, weights, …)
weakly_connected_components(graph)Initialize Ray and Run WCC algorithm
“`
यह दो कक्षाओं को चलाने के लिए आवश्यक है। अधिक जानने के लिए, आप एक कार्यान्वयन देख सकते हैं जो WCC कार्यान्वयन का विवरण देता है।
Conclusion
Ray एक एक्सप्रेसिबल और स्केलेबल Actor इंटरफेस प्रदान करता है, जिसे RAPIDS के साथ आसानी से जोड़ा जा सकता है। हमने देखा कि कैसे Ray Actors को CUDA C++ और NCCL कार्यान्वयन के साथ जोड़ा जा सकता है। यह अन्वेषण Ray Actors के स्तर 1 एकीकरण पर केंद्रित है।
यदि आप GPU-accelerated डेटा प्रोसेसिंग के बारे में अधिक जानना चाहते हैं, तो RAPIDS Slack समुदाय में 3,500+ सदस्यों में शामिल हों।
FAQs Section
1. Ray और RAPIDS क्या हैं?
Ray एक ओपन-सोर्स वितरित Python ढांचा है, जबकि RAPIDS एक ओपन-सोर्स GPU-accelerated डेटा साइंस और AI लाइब्रेरी का सेट है। ये दोनों टूल्स मिलकर डेटा प्रोसेसिंग को तेज करने में मदद करते हैं।
2. Ray Actors क्या होते हैं?
Ray Actors राज्यपूर्ण कार्यकर्ता होते हैं, जो डेटा को स्टोर और प्रबंधित कर सकते हैं। ये मल्टी-GPU और वितरित कार्यों को सरल बनाते हैं।
3. cuDF का उपयोग कैसे किया जाता है?
cuDF का उपयोग डेटा को GPU पर लोड करने और प्रोसेसिंग करने के लिए किया जाता है। आप Ray Actors के माध्यम से इसे आसानी से कर सकते हैं।
4. NCCL और cuGraph का क्या महत्व है?
NCCL और cuGraph GPU-accelerated संचार और गणनाओं को तेजी से करने में मदद करते हैं। ये बड़े डेटा सेटों पर कार्य करने के लिए आवश्यक हैं।
5. क्या मैं Ray और RAPIDS का उपयोग करके अपनी मशीन लर्निंग परियोजनाओं को तेज़ कर सकता हूँ?
हाँ, Ray और RAPIDS का उपयोग करके आप अपनी मशीन लर्निंग परियोजनाओं को काफी तेज़ और कुशलता से चला सकते हैं। ये टूल्स आपको GPU की शक्ति का उपयोग करने की अनुमति देते हैं।
**Tags**
Ray, RAPIDS, GPU, Data Science, AI, Machine Learning, cuDF, NCCL, cuGraph, Data Processing