Julia क्या है?
Julia एक अपेक्षाकृत नया प्रोग्रामिंग भाषा है, जिसे पहली बार 2012 में जारी किया गया था। भले ही Julia को आए केवल दस साल हुए हैं, यह तेजी से बढ़ी है और अक्टूबर 2022 के TIOBE इंडेक्स के अनुसार अब शीर्ष 30 प्रोग्रामिंग भाषाओं में शामिल है।

Julia की एक खासियत यह है कि इसे वैज्ञानिक कंप्यूटिंग के लिए बनाया गया है। इसका मतलब है कि Julia उपयोग में आसान और तेज़ है, साथ ही यह बहुत बड़े डेटा और जटिल गणनाओं को बेहद तीव्र गति से संभाल सकती है। Julia की एक मशहूर टैगलाइन है कि यह "C की तरह चलती है पर Python की तरह पढ़ी जाती है।"
Julia एक कम्पाइल्ड भाषा है जो पढ़ने में इंटरप्रेटेड भाषा जैसी लगती है। अधिकांश पारंपरिक कम्पाइल्ड भाषाएँ (जैसे C या C++) जो भारी कम्प्यूटेशनल समस्याएँ हल करने में सक्षम हैं, उन्हें चलाने से पहले मशीन-पठनीय प्रारूप में कम्पाइल करना पड़ता है।
वहीं, Julia इंटरप्रेटेड भाषा (जैसे Python) की सरलता के साथ समान प्रदर्शन हासिल कर सकती है, और चलाने से पहले अलग से कम्पाइल करने की जरूरत नहीं पड़ती। इसके बजाय, Julia रन-टाइम पर कम्पाइल करने वाला Just-In-Time (JIT) कम्पाइलर उपयोग करती है।
मशीन लर्निंग के लिए Julia क्यों चुनें?
Python लंबे समय से डेटा साइंस और मशीन लर्निंग के क्षेत्र में प्रमुख रहा है, और वाजिब कारणों से। यह बेहद शक्तिशाली और लचीली प्रोग्रामिंग भाषा है। हालांकि, Python की कुछ कमियाँ हैं जो Julia में समस्या नहीं बनतीं।
Julia की तुलना में Python की कुछ कमियाँ:
- Python एक धीमी, इंटरप्रेटेड भाषा है और इसकी गति बढ़ाने के विकल्प सीमित हैं। इसके कारण बड़े डेटा पर मशीन लर्निंग प्रोजेक्ट Julia की तुलना में कम कुशल हो सकते हैं।
- Python सिंगल डिस्पैच का उपयोग करता है, जो उन टाइप्स पर महत्वपूर्ण पाबंदी लगाता है जिन्हें फंक्शनों और लाइब्रेरियों के बीच उपयोग और साझा किया जा सकता है।
- पैरेलल कंप्यूटिंग और थ्रेडिंग Python भाषा की डिज़ाइन में अंतर्निहित नहीं हैं। भले ही कुछ लाइब्रेरियाँ थ्रेडिंग की अनुमति देती हैं, यह सर्वोत्तम नहीं है।
इस अनुभाग में, हम कई कारणों पर चर्चा करेंगे कि मशीन लर्निंग के लिए Julia बेहतरीन विकल्प क्यों है।
आप इस भाषा के उभार और क्या 2022 में Julia सीखना सार्थक है पर अलग ब्लॉग पोस्ट में और जानकारी ले सकते हैं।
1. सरलता और आसान उपयोग
Julia का सिन्टैक्स बहुत ही अनुकूल है और अंग्रेज़ी के काफ़ी करीब है। इससे इसे सीखना और अपनाना तेज़ हो जाता है क्योंकि कोड अक्सर सहज और आसानी से समझ आने वाला होता है।
Julia को इंस्टॉल करना और तुरंत शुरू करना भी तेज़ और आसान है। भाषा के विशेष वितरण (जैसे Python के साथ Anaconda) इंस्टॉल करने की जरूरत नहीं है और न ही किसी जटिल इंस्टॉलेशन प्रक्रिया (जैसे C और C++) का पालन करना पड़ता है।
मशीन लर्निंग प्रैक्टिशनर्स के लिए, जितनी जल्दी आप प्रोग्रामिंग से जुड़ी रुकावटें दूर कर लें, उतनी जल्दी आप अपने असली काम पर ध्यान दे सकते हैं: डेटा का विश्लेषण करना और मॉडल बनाना।
2. गति
Julia की सबसे बड़ी विशेषताओं में से एक इसकी गति है। ऊपर बताया गया कि Julia एक कम्पाइल्ड भाषा है, जो इंटरप्रेटेड भाषाओं की तुलना में पर्याप्त स्पीड बढ़त देती है।
Julia C, C++ और Fortran के साथ "पेटाफ्लॉप क्लब" में शामिल है। जी हाँ; इस अनोखे क्लब के केवल चार सदस्य हैं और इसमें शामिल होने की एक ही शर्त है: पीक प्रदर्शन पर प्रति सेकंड एक पेटाफ्लॉप (यानी, एक हजार ट्रिलियन ऑपरेशंस) की गति हासिल करना।
मशीन लर्निंग में बड़े डेटा से सामना होना सामान्य है, इसलिए तेज़ प्रोग्रामिंग भाषा का उपयोग करने से ट्रेनिंग समय में उल्लेखनीय कमी आ सकती है और मॉडल्स को प्रोडक्शन में डिप्लॉय करते समय लागत भी घट सकती है।
3. डिवेक्टराइज़्ड कोड तेज़ होता है
Julia में प्रदर्शन बढ़ाने के लिए कोड को वेक्टराइज़ करने की जरूरत नहीं है। लूप्स और नेटिव फंक्शनों के रूप में लिखा गया डिवेक्टराइज़्ड कोड पहले से ही तेज़ होता है। Julia में कोड को वेक्टराइज़ करने से मामूली गति बढ़त मिल सकती है, लेकिन यह आवश्यक नहीं है।
डिवेक्टराइज़्ड कोड लिखना और उपयोग करना मशीन लर्निंग मॉडल बनाते समय आपका काफी समय बचा सकता है क्योंकि स्पीड बढ़ाने के लिए आपको कोड को रिफैक्टर नहीं करना पड़ेगा।
4. कोड का पुन: उपयोग और मल्टिपल डिस्पैच
Julia फंक्शन के लिए उपयुक्त टाइप 'भांपने' के लिए डक-टाइपिंग का उपयोग करती है। इस फीचर का मतलब है: अगर कोई चीज़ बत्तख की तरह चलती है और बत्तख की तरह बोलती है, तो वह शायद बत्तख ही है। इसलिए, कोई भी ऑब्जेक्ट जो किसी फंक्शन की अंतर्निहित विनिर्देशों को पूरा करता है, समर्थित होगा - इसे स्पष्ट रूप से बताने की आवश्यकता नहीं है।
हालांकि, खास मामलों में डक-टाइपिंग हमेशा उपयुक्त नहीं होती, और यहीं मल्टिपल डिस्पैच काम आता है। मल्टिपल डिस्पैच का उपयोग करके, आप किसी फंक्शन के लिए कई विशेष केस परिभाषित कर सकते हैं, और किन शर्तों के पूरा होने पर रन-टाइम पर फंक्शन सबसे उपयुक्त विकल्प चुन लेगा।
मल्टिपल डिस्पैच मशीन लर्निंग में उपयोगी है क्योंकि आपको हर संभावित टाइप के बारे में सोचने की ज़रूरत नहीं पड़ती जिसे किसी फंक्शन को पास होने देना चाहिए। इसके बजाय, Julia में पैकेज अत्यंत लचीले रह सकते हैं और विभिन्न पैकेजों के बीच कोड और टाइप्स साझा कर सकते हैं।
उदाहरण के लिए तारीख़ प्रारूप पर विचार करें: कई पैकेज अपने-अपने कस्टम तारीख़ और तारीख़/समय प्रारूपों का उपयोग करते हैं। जैसे, Python में बिल्ट-इन datetime प्रारूप है और Pandas में datetime64[ns] प्रारूप। Julia में, बिल्ट-इन dates मॉड्यूल से एक ही तारीख़-आधारित प्रारूप सभी पैकेजों में साझा होता है।
5. इन-बिल्ट पैकेज प्रबंधन
Julia में Pkg के साथ पैकेज अपने-आप प्रबंधित होते हैं। Pkg Julia के लिए वही है जो Python के लिए Pip है, लेकिन कहीं बेहतर। Julia में एन्वायरनमेंट दो फाइलों से प्रबंधित होते हैं: Project.toml और Manifest.toml। ये फाइलें Julia को बताती हैं कि प्रोजेक्ट में कौन से पैकेज और उनके कौन से वर्ज़न उपयोग हो रहे हैं। अलग से विशेष एन्वायरनमेंट परिभाषित करने के बजाय, आपके Julia फाइलों का फ़ोल्डर लोकेशन (जिसमें Project और Manifest toml फाइलें हों) ही एन्वायरनमेंट बन जाता है।
पैकेज प्रबंधन का यह तरह-तरह से सरल, अंतर्निहित तरीका आपके मशीन लर्निंग प्रोजेक्ट्स और विश्लेषणों को साझा करना और पुनरुत्पादित करना आसान बना देता है।
6. टू-लैंग्वेज प्रॉब्लम
क्या आप जानते हैं कि Python के केवल 20-30% पैकेज वास्तव में Python कोड से बने हैं?

अन्य भाषाओं पर यह निर्भरता इसलिए है क्योंकि कुशल और प्रभावी पैकेज विकसित करने के लिए उन्हें C और C++ जैसी लो-लेवल भाषाओं में बनाना पड़ता है।
वैज्ञानिक कंप्यूटिंग में आमतौर पर समाधान और पैकेज विकसित करने में दो प्रोग्रामिंग भाषाएँ शामिल होती हैं: आसान, प्रोटोटाइपिंग के लिए भाषा (जैसे Python) जिसमें समाधान का तेज़ प्रारंभिक इम्प्लीमेंटेशन बनाया जाता है, और फिर तेज़ भाषा (जैसे C++) जिसमें अंतिम संस्करण के लिए सारा कोड दोबारा लिखा जाता है।
आप कल्पना कर सकते हैं, यह प्रक्रिया न सिर्फ शुरुआती विकास के लिए धीमी और अप्रभावी है बल्कि दीर्घकालिक रखरखाव और नई सुविधाओं के लिए भी।
दूसरी ओर, Julia में पैकेजों का प्रोटोटाइप, विकास और रखरखाव Julia में ही किया जा सकता है। नतीजतन, पूरा विकास चक्र काफी हद तक कम समय में पूरा हो जाता है।
Julia मशीन लर्निंग पैकेज
Julia के जनरल रजिस्ट्रि में अब 7,400 से अधिक पैकेज हैं। भले ही यह संख्या Python में उपलब्ध पैकेजों (2,00,000 से अधिक) की तुलना में कम हो, फिर भी किसी खास समस्या के लिए सही पैकेज ढूंढ़ना चुनौतीपूर्ण हो सकता है।
इस अनुभाग में हम उन मुख्य पैकेजों का पता लगाएंगे जिनकी आपको डेटा का विश्लेषण करने और मशीन लर्निंग मॉडल बनाने के लिए ज़रूरत पड़ेगी।
हालाँकि, अगर आप Julia में मशीन लर्निंग की शुरुआत ही कर रहे हैं, तो पहले पैकेज टूलबॉक्स आज़माएँ: MLJ। यह पैकेज खास तौर पर सबसे लोकप्रिय मशीन लर्निंग पैकेजों को एक ही, आसानी से उपलब्ध जगह पर इकट्ठा करने के लिए बनाया गया है, ताकि आपको अपने प्रोजेक्ट के लिए सबसे अच्छा पैकेज ढूंढ़ने में समय न लगे। MLJ फिलहाल 20 से अधिक अलग-अलग मशीन लर्निंग पैकेजों को सपोर्ट करता है।
नीचे कुछ सबसे आम पैकेजों की सूची है जिनसे आप मशीन लर्निंग प्रोजेक्ट्स में रूबरू होंगे — डेटा को इम्पोर्ट करने, साफ़ करने और विज़ुअलाइज़ करने से लेकर मॉडल बनाने तक:
- नोटबुक: Pluto, IJulia, Jupyter
- पैकेज/एन्वायरनमेंट प्रबंधन: Pkg
- डेटा इम्पोर्ट और हैंडलिंग: CSV, DataFrames
- प्लॉटिंग और आउटपुट: Plots, StatsPlots, LaTeXStrings, Measures, Makie
- सांख्यिकी और गणित: Random, Statistics, LinearAlgebra, StatsBase, Distributions, HypothesisTests, KernelDensity, Lasso, Combinatorics, SpecialFunctions, Roots
- व्यक्तिगत मशीन लर्निंग पैकेज:
- जनरलाइज़्ड लीनियर मॉडल्स (जैसे लीनियर रिग्रेशन, लॉजिस्टिक रिग्रेशन): GLM
- डीप लर्निंग: Flux, Knet
- सपोर्ट वेक्टर मशीनें: LIBSVM
- डिसीज़न ट्री, रैंडम फॉरेस्ट, AdaBoost: DecisionTree
- K-नियरस्ट नेबर्स: NearestNeighbors
- K-मीन्स क्लस्टरिंग: Clustering
- प्रिंसिपल कंपोनेंट एनालिसिस: MultivariateStats
लोकप्रिय Python पैकेजों जैसे Scikit-Learn और Tensorflow के लिए कई इम्प्लीमेंटेशन और रैपर्स भी उपलब्ध हैं। हालांकि, इन पैकेजों का उपयोग करना आवश्यक नहीं है, क्योंकि आप Julia के कई शक्तिशाली लाभों (जैसे स्पीड और मल्टिपल डिस्पैच) से वंचित रह सकते हैं।
मशीन लर्निंग के लिए Julia के साथ शुरुआत करना
Julia के साथ शुरुआत करने के सबसे अच्छे तरीकों में से एक है Pluto नोटबुक एन्वायरनमेंट। इस अनुभाग में, हम Pluto का उपयोग करने के फायदे बताते हैं, खासकर आपके डेटा साइंस सफर की शुरुआत में जब आप अभी Julia के साथ मशीन लर्निंग प्रोजेक्ट बनाना सीख रहे होते हैं। हम Julia और मशीन लर्निंग के बारे में और सीखने के लिए कुछ बेहतरीन संसाधनों पर भी नज़र डालेंगे।
Pluto

Pluto एक सरल, इंटरैक्टिव नोटबुक एन्वायरनमेंट है जिसमें उपयोगकर्ता-अनुकूल UI है। यह सरलता Julia से शुरुआत करने वाले शुरुआती लोगों के लिए इसे बहुत उपयुक्त बनाती है। Pluto में कई अतिरिक्त फीचर्स भी हैं जो आपको लगभग बिना मेहनत के और भी आकर्षक मशीन लर्निंग समाधान बनाने देते हैं:
Reactive
जब एक सेल का मूल्यांकन होता है, तो Pluto यह भी देखता है कि किन अन्य सेल्स को चलाना जरूरी है। यह फीचर सुनिश्चित करता है कि कोई भी आश्रित सेल वर्तमान सेल के मूल्यांकन से पहले अपडेट हो जाए।
Pluto की एक बेहतरीन बात यह है कि यह इतना स्मार्ट है कि बिल्कुल वही सेल्स चलाता है जो वर्तमान सेल के साथ चलने जरूरी हैं, ताकि अगर आप नोटबुक में कहीं बदलाव करें तो हर सेल को अपडेट करने की समस्या न आए।
Pluto पुराने या हटाए गए कोड को साफ़ करता है और किसी भी आश्रित सेल के आउटपुट को भी उसी अनुरूप अपडेट कर देता है। यदि आप किसी सेल में एक वैरिएबल परिभाषित करते हैं और बाद में उस सेल को हटा देते हैं, तो Pluto उस वैरिएबल को अपने नेमस्पेस से भी हटा देगा। साथ ही, कोई भी आश्रित कोड सेल यह दिखाने के लिए एक त्रुटि संदेश दिखाएगा कि जिस वैरिएबल की उसे जरूरत थी वह अब हटा दिया गया है।
Interactive
रिएक्टिविटी सेल्स के बीच स्वचालित इंटरैक्टिविटी पैदा करती है। यह विशेष रूप से इंटरैक्टिव चार्ट या ऑब्जेक्ट्स को जल्दी बनाने में उपयोगी है, जो किसी वैरिएबल में परिवर्तन होने पर अपने-आप अपडेट हो जाते हैं।
Pluto की खूबी यह है कि वह वैरिएबल नोटबुक में इंटरैक्टिव विजेट भी हो सकता है, जैसे बिल्ट-इन स्लाइडर या टेक्स्ट बॉक्स। अगर आपको Javascript आती है तो आप अपने खुद के विजेट भी बना सकते हैं।
रिएक्टिविटी और इंटरैक्टिविटी आपको अपने मशीन लर्निंग मॉडल्स और डेटा विश्लेषणों के आधार पर डायनेमिक रिपोर्ट्स और डैशबोर्ड बनाने देती है। किसी मशीन लर्निंग प्रोजेक्ट की सफलता की कुंजी संचार है और Pluto आपके प्रोजेक्ट को दिखाने और समझाने को कहीं अधिक सरल बना देता है।
स्वचालित पैकेज प्रबंधन
Pluto आपके नोटबुक्स में स्वचालित पैकेज प्रबंधन की अनुमति देने के लिए Pkg के साथ बिना किसी रुकावट के इंटीग्रेट होता है। इतना ही नहीं, आपको Pluto के बाहर पैकेज इंस्टॉल करने की भी जरूरत नहीं होती। Pluto (और Julia) को आपका नोटबुक चलाने और पुनरुत्पादित करने के लिए जो भी जानकारी चाहिए, वह सब नोटबुक के अंदर ही सुरक्षित रहती है!
इसका मतलब है कि आप अपना नोटबुक सहकर्मियों या सहपाठियों के साथ साझा कर सकते हैं, और निश्चिंत रह सकते हैं कि उस नोटबुक को चलाने के लिए आवश्यक सभी सही पैकेज उसके साथ ही जाएंगे।
वर्ज़न कंट्रोल
सभी Pluto नोटबुक निष्पादन योग्य .jl फाइल के रूप में सेव होती हैं। यदि आप किसी नोटबुक को टेक्स्ट एडिटर में खोलते हैं, तो यह आपके ब्राउज़र में दिखने वाली नोटबुक से थोड़ी अलग दिखेगी। फाइल में नोटबुक के लिए आवश्यक सारी जानकारी होगी, जैसे कोड, सेल निर्भरताएँ और निष्पादन क्रम। हालांकि, इन फाइलों में कोई आउटपुट शामिल नहीं होता। यह सब Git और GitHub के साथ वर्ज़न कंट्रोल को बहुत आसान बना देता है।
एक्सपोर्ट और शेयरिंग
Pluto नोटबुक्स को .jl निष्पादन योग्य फाइल, स्टैटिक PDF, या स्टैटिक HTML फाइल के रूप में एक्सपोर्ट किया जा सकता है। अगर आप HTML के रूप में एक्सपोर्ट करते हैं, तो जिससे आप इसे साझा करेंगे उसे Julia अपनी मशीन पर इंस्टॉल किए बिना ही कच्ची नोटबुक फाइल डाउनलोड और एडिट करने का विकल्प भी मिलेगा।
Pluto यह Binder के साथ भागीदारी करके संभव बनाता है — एक मुफ्त प्लेटफ़ॉर्म जो Pluto नोटबुक्स को ऑनलाइन होस्ट करता है (यह अन्य प्रोग्रामिंग भाषाओं जैसे Python और R के साथ भी काम करता है)।
यह फीचर मशीन लर्निंग वर्कफ़्लो का अंतिम चरण है: पहले आप विश्लेषण करते हैं, फिर परिणामों को दिखाने के लिए अपनी नोटबुक में एक इंटरैक्टिव रिपोर्ट बनाते हैं, और अंत में आप नोटबुक को तकनीकी सहकर्मियों के साथ साझा कर पाते हैं, जो विश्लेषण को पुनरुत्पादित और संपादित कर सकते हैं, साथ ही उन लोगों के साथ भी जो तकनीकी नहीं हैं।
Julia सीखने के संसाधन
Julia प्रोग्रामिंग भाषा और इसे डेटा साइंस व मशीन लर्निंग में उपयोग करने के बारे में सीखने के लिए ये कुछ अत्यधिक अनुशंसित संसाधन हैं:
- यदि आप इंटरैक्टिव वातावरण में सीखना पसंद करते हैं, तो हमारे पास Introduction to Julia कोर्स है
- Julia प्रोग्रामिंग भाषा की व्यापक व्याख्या के लिए, Think Julia: How to Think Like a Computer Scientist पुस्तक बेहतरीन संसाधनों में से एक है।
- शुरुआती लोगों के लिए हमारा Julia ट्यूटोरियल देखें, जो Julia से शुरुआत करने के लिए चरण-दर-चरण मार्गदर्शिका है
- Julia प्रोग्रामिंग की ज़रूरी बातों के लिए हमारा चीट शीट देखें।