NVIDIA ने आखिरकार CUDA में native Python support जोड़ा
(thenewstack.io)- कई वर्षों तक C/C++ केंद्रित रहे NVIDIA के CUDA toolkit में 2024 GTC में native Python support आधिकारिक रूप से जोड़ा गया
- अब सिर्फ Python के जरिए GPU पर सीधे algorithm-केंद्रित high-speed computation चलाना संभव हो गया है
- CUDA architect Stephen Jones ने समझाया कि “Python CUDA केवल C code को Python syntax में बदलना नहीं है,
बल्कि इसे Python developers के लिए स्वाभाविक तरीके से नए सिरे से डिज़ाइन किया गया है”
native Python support से खुलने वाली नई संभावनाएँ
- पहले CUDA उपयोगकर्ताओं को C++ या Fortran जानना ज़रूरी था, लेकिन अब सिर्फ Python से भी high-performance GPU computation संभव है
- 2024 GitHub open source survey के अनुसार Python, JavaScript को पीछे छोड़कर सबसे लोकप्रिय भाषा बन गई
- CUDA उपयोगकर्ताओं की संख्या 2020 में 20 लाख → 2023 में 40 लाख तक बढ़ी,
लेकिन Python developers की संख्या कई करोड़ है, खासकर भारत और ब्राज़ील जैसे उभरते देशों के developers के लिए यह बड़ी अच्छी खबर है - इससे वैश्विक GPU infrastructure के विस्तार पर भी सकारात्मक असर की उम्मीद है
Pythonic CUDA की संरचना
- CUDA में libraries, SDK, compiler, runtime, tools और algorithms शामिल हैं
- Python integration सिर्फ kernel उपलब्ध कराने तक सीमित नहीं है, बल्कि पूरे stack को Python-friendly बनाया गया है
- मुख्य तरीका: JIT(Just-In-Time) compilation आधारित, ताकि compiler dependency को न्यूनतम रखा जा सके
मुख्य घटक
- cuPyNumeric: NumPy जैसा ही API देने वाली और GPU acceleration को support करने वाली Python library
- CUDA Core: CUDA runtime को Python शैली में फिर से डिज़ाइन किया गया execution-flow आधारित system
- NVMath Python: host/device library calls के लिए unified interface प्रदान करता है
- high-performance C++ libraries के साथ सीधे integration करने योग्य Python API
- performance profiling और code analysis tools भी साथ में उपलब्ध हैं
> “यह मौजूदा high-performance C++ code से सीधे जुड़ा है, इसलिए performance loss लगभग नहीं के बराबर है” — Stephen Jones
नया programming model: CuTile
- Python developers के लिए डिज़ाइन किया गया high-level array-केंद्रित model
- जहाँ पारंपरिक CUDA में thread-आधारित बारीक नियंत्रण की ज़रूरत पड़ती थी, वहीं CuTile tile-स्तरीय abstraction के जरिए अधिक संक्षिप्त और समझने में आसान संरचना देता है
- CuTile arrays को GPU tile units पर map करता है, जिससे debugging और optimization आसान हो जाती है, जबकि performance बनी रहती है
- आगे चलकर इसे C++ CUDA तक भी बढ़ाने की योजना है
> “क्योंकि compiler GPU संरचना को बेहतर समझता है, इसलिए performance optimization भी अपने-आप अच्छी तरह हो जाती है”
संक्षेप
- CUDA में native Python integration GPU programming की entry barrier को काफी कम करने वाला बदलाव है
- अब जटिल भाषा-ज्ञान के बिना भी सिर्फ Python से GPU पर AI और scientific computation संभव है
- Python-केंद्रित AI ecosystem के विस्तार और NVIDIA GPU उपयोग के लिए एक नए दौर की शुरुआत करने वाला निर्णायक मोड़
3 टिप्पणियां
क्या यह Cupy, pytorch जैसे मौजूदा Cuda wrapper से भी तेज़ होगा? Cupy और torch की खासियत यह थी कि उनका API numpy से लगभग एक जैसा है, इसलिए numpy में लिखा हुआ test code ज़्यादा मेहनत के बिना आसानी से port किया जा सकता था; यह कैसा है, इसे इस्तेमाल करके देखना पड़ेगा।
Hacker News राय
मैं GPU प्रोग्रामर नहीं हूँ, लेकिन लगता है कि मेरे जैसे लोग भी इसे आसानी से इस्तेमाल कर सकेंगे। मैंने GPU और CPU का उपयोग करने वाला एक सरल डेमो बनाया। नतीजे इस प्रकार हैं
मैं सोच रहा हूँ कि ऐसी चीज़ों के लिए Python ही लक्ष्य क्यों बनता है। मैंने कई प्रोजेक्ट्स को Python support जोड़ते देखा है। सोचता हूँ कि क्या Python codebase दूसरी चीज़ों की तुलना में अलग-अलग targets पर compile करना आसान होता है
अच्छा हुआ कि Pytorch ने इसके आने से पहले ही बड़ा momentum हासिल कर लिया। अब हमारे पास parallel computation के लिए सचमुच एक platform-independent अर्ध-मानक है। यह सिर्फ NVIDIA तक सीमित नहीं है
CuTile कई मायनों में OpenAI के Triton के उत्तराधिकारी जैसा लगता है। tile/block स्तर की primitive functionality और TileIR के साथ-साथ, CuPy में एक ठीक-ठाक SIMT programming model भी मिल रहा है। लगता है इस साल GTC में भी बहुत लोगों ने इस पर ध्यान नहीं दिया। यह बहुत शानदार है
यह JAX से कैसे तुलना करता है, इसे लेकर मैं बहुत उत्सुक हूँ
यह कमाल का है। AI क्षेत्र में NVIDIA के विकल्प के रूप में AMD + ROCm पर विचार करने वाला शायद अब कोई नहीं रहेगा
क्या अगला नंबर Rust support का है? अभी मैं अपने data structures को kernel तक/से manually byte arrays में [de]serialize कर रहा हूँ। अच्छा होगा अगर CUDA, C++ में जैसे देता है, वैसी सचमुच shared data structures मिलें
Python सचमुच programming languages की lingua franca बनती जा रही है। FOSS renaissance में इसकी adoption तेज़ी से बढ़ रही है, और मुझे लगता है कि यह हमारे पास मौजूद सबसे नज़दीकी general-purpose tool है
शायद इससे वही आगे बढ़ेगा जिसकी अगुवाई Python आम तौर पर करती आई है: ज़्यादा चीज़ें जल्दी आज़माई जाएँगी और जो टिकेंगी वे तेज़ भाषाओं में चली जाएँगी। कुल मिलाकर यह शानदार कदम है। मैं निश्चित रूप से इसके साथ खेलकर देखने के लिए उत्साहित हूँ
CUDA की शुरुआत C और C++ से हुई थी। काश C++ को extend करके उसे CUDA C कहने के बजाय, वे सच में CUDA का C variant implement करते
पहली स्पीड सच में है क्या? यह तो बहुत धीमा है...