एक मल्टी-GPU बॉक्स पर सभी GPUs का उपयोग करना चाहते हैं।
dask-cuda से LocalCUDACluster शुरू करें और एक Client कनेक्ट करें; प्रति GPU एक वर्कर पिन किया जाता है।
क्यों: LocalCUDACluster प्रत्येक Dask वर्कर को एक विशिष्ट GPU से जोड़ता है ताकि शेड्यूलर कार्य को संतुलित कर सके।
एक मल्टी-स्टेप Dask पाइपलाइन बनाना जो बहुत बार पुनर्गणना करती है।
आलस्यपूर्वक लिखें और अंत में एक बार .compute() कॉल करें; GPU मेमोरी में पुन: उपयोग किए गए इंटरमीडिएट्स को कैश करने के लिए persist() का उपयोग करें।
क्यों: Dask आलसी है - बहुत जल्दी या बार-बार गणना शुरू करने से काम दोहराया जाता है।
तिरछे विभाजन के कारण कुछ GPU वर्कर पीछे रह जाते हैं।
संतुलित आकारों में पुन: विभाजन करें और विभाजन कुंजियों को डाउनस्ट्रीम जॉइन/ग्रुपबाय के साथ संरेखित करें।
क्यों: असमान विभाजन ऐसे स्ट्रगलर बनाते हैं जो पूरे कार्य को बाधित करते हैं।
एक ETL → ट्रेन → स्कोर वर्कफ़्लो को पूरी तरह से GPU पर रखें।
बीच में pandas में परिवर्तित किए बिना cuDF तैयारी को cuML/XGBoost में चेन करें, जिससे डेटा डिवाइस पर ही रहे।
क्यों: प्रत्येक CPU राउंड-ट्रिप ट्रांसफर लागत जोड़ता है; ऑन-डिवाइस रहने से एंड-टू-एंड गति बनी रहती है।
समीक्षा के लिए समान रूप से पुन: चलने वाले वर्कफ़्लो की आवश्यकता है।
RAPIDS/CUDA संस्करणों को पिन करें, रैंडम सीड सेट करें, और इनपुट को पैरामीटराइज़ करें ताकि पाइपलाइन नियतात्मक और पुन: निष्पादन योग्य हो।
वर्णनात्मक विश्लेषण और विज़ुअलाइज़ेशन
एक अरब-पंक्ति तालिका में सारांश आंकड़े कंप्यूट करें।
cuDF describe/mean/std/quantile और corr का उपयोग करें; एग्रीगेशन GPU कर्नेल के रूप में चलते हैं।
100M बिंदुओं का स्कैटर प्लॉट ओवरप्लॉट करता है और अपठनीय है।
Datashader के साथ रेंडर करें, जो प्रत्येक मार्कर को खींचने के बजाय GPU पर बिंदुओं को घनत्व छवि में रैस्टराइज़ करता है।
क्यों: Datashader पिक्सेल में एकत्रित होता है, इसलिए प्लॉट लागत छवि आकार से बंधी होती है, न कि बिंदु संख्या से।
एक विशाल GPU DataFrame पर एक इंटरेक्टिव क्रॉस-फ़िल्टरिंग डैशबोर्ड की आवश्यकता है।
cuDF डेटा पर GPU-त्वरित क्रॉस-फ़िल्टरिंग के साथ चार्ट को लिंक करने के लिए cuxfilter का उपयोग करें।
क्यों: cuxfilter डेटा को ऑन-डिवाइस रखता है ताकि ब्रशिंग/फ़िल्टरिंग बड़े पैमाने पर इंटरैक्टिव बनी रहे।
एक बड़े न्यूमेरिक कॉलम के वितरण को विज़ुअलाइज़ करें।
GPU पर cuDF/CuPy के साथ बिन करें, फिर Plotly या Matplotlib के साथ छोटे एकत्रित परिणाम को प्लॉट करें।
क्यों: पहले GPU पर एकत्रित करें; केवल छोटे सारांश को प्लॉटिंग लाइब्रेरी तक पहुंचने की आवश्यकता है।
मॉडलिंग से पहले फ़ीचर संबंधों का आकलन करें।
GPU पर cuDF में df.corr() कंप्यूट करें, फिर छोटे मैट्रिक्स को हीटमैप के रूप में रेंडर करें।
GPU डेटा द्वारा समर्थित घोषणात्मक इंटरेक्टिव चार्ट चाहते हैं।
उच्च-मात्रा, इंटरेक्टिव विज़ुअलाइज़ेशन के लिए HoloViews/hvPlot को Datashader और cuDF के साथ जोड़ें।
त्वरित डेटा साइंस की नींव
एक डेटा वर्कलोड के लिए GPU एक्सेलेरेशन को उचित ठहराएं।
बड़े डेटासेट पर बड़े पैमाने पर डेटा-समानांतर, थ्रूपुट-बाउंड ऑप्स के लिए GPUs का उपयोग करें; छोटे, ब्रांच वाले, या लेटेंसी-संवेदनशील काम को CPU पर रखें।
क्यों: GPUs कई तत्वों में SIMT समानांतरता पर जीतते हैं; वे छोटे या नियंत्रण-भारी कार्यों पर हारते हैं।
बताएं कि RAPIDS cuDF, CuPy, और ML libs के बीच बिना कॉपी के डेटा कैसे साझा करता है।
RAPIDS Apache Arrow columnar मेमोरी फ़ॉर्मेट पर बना है, जो GPU लाइब्रेरीज़ के बीच ज़ीरो-कॉपी इंटरचेंज को सक्षम बनाता है।
क्यों: एक साझा ऑन-डिवाइस कॉलम लेआउट घटकों को बिना क्रमबद्धता के डेटा सौंपने देता है।
एक पाइपलाइन GPU-त्वरित है लेकिन शायद ही तेज़ है।
डेटा मूवमेंट को प्रोफ़ाइल करें; बार-बार होस्ट↔डिवाइस कॉपी अक्सर हावी होती हैं। चरणों के बीच डेटा को GPU पर ही रखें।
क्यों: PCIe ट्रांसफर एक छिपा हुआ टैक्स है - कॉपी को कम करना आमतौर पर सबसे बड़ी एकल जीत है।
समझें कि GPU पर क्या कार्य निष्पादित करता है।
CUDA SIMT मॉडल के तहत ब्लॉक/ग्रिड में समूहित हजारों थ्रेड्स में कर्नेल लॉन्च करता है; RAPIDS लाइब्रेरीज़ इन्हें रैप करती हैं ताकि आप शायद ही कभी खुद कर्नेल लिखें।
एक सिंगल GPU पर वर्कलोड आउट-ऑफ-मेमोरी त्रुटि देता है।
dtype आकार कम करें, चंक्स में संसाधित करें, या Dask के साथ स्केल आउट करें; GPU VRAM होस्ट RAM से बहुत छोटा है।
क्यों: डिवाइस मेमोरी GPU डेटा साइंस में पहली बाधा है - इसके इर्द-गिर्द डिज़ाइन करें।
एक CPU डेटा-साइंस कार्य को सही RAPIDS लाइब्रेरी से मैप करें।
DataFrames के लिए cuDF, ML के लिए cuML, ग्राफ़ के लिए cuGraph, भू-स्थानिक के लिए cuSpatial, स्केल-आउट के लिए Dask।