गूगल जैक्स: Difference between revisions

From Vigyanwiki
(Created page with "{{Short description|Machine Learning framework designed for parallelization and autograd.}} {{Infobox software | title = JAX | name = | logo = Google JAX logo.svg | logo capt...")
 
m (7 revisions imported from alpha:गूगल_जैक्स)
 
(6 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Short description|Machine Learning framework designed for parallelization and autograd.}}
{{Short description|Machine Learning framework designed for parallelization and autograd.}}
{{Infobox software
{{Infobox software
| title = JAX
| title = जैक
| name =  
| name =  
| logo = Google JAX logo.svg
| logo = Google JAX logo.svg
Line 13: Line 13:
| caption =  
| caption =  
| author =  
| author =  
| developer = [[Google]]
| developer = [[गूगल]]
| released = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} -->
| released = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} -->
| latest release version =  
| latest release version =  
Line 20: Line 20:
| latest preview date = {{Start date and age|2022|05|16|df=yes}}
| latest preview date = {{Start date and age|2022|05|16|df=yes}}
| repo = {{URL|https://github.com/google/jax}}
| repo = {{URL|https://github.com/google/jax}}
| programming language = [[Python (programming language)|Python]], [[C++]]
| programming language = [[पायथन (प्रोग्रामिंग भाषा)|पायथन]], [[सी ++]]
| middleware =  
| middleware =  
| operating system = [[Linux]], [[macOS]], [[Windows]]
| operating system = [[लिनक्स]], [[मैकओएस]], [[विंडोज]]
| platform = [[Python (programming language)|Python]], [[NumPy]]
| platform = [[पायथन (प्रोग्रामिंग भाषा)|पायथन]], [[नमपाई]]
| size = 9.0 MB
| size = 9.0 MB
| language count = <!-- Number only -->
| language count = <!-- Number only -->
| language footnote =  
| language footnote =  
| genre = [[Machine learning]]
| genre = [[मसीन लर्निंग]]
| license = [[Apache 2.0]]
| license = [[अपाचे 2.0]]
| website = <!-- {{URL|example.org}} or {{official URL}} -->
| website = <!-- {{URL|example.org}} or {{official URL}} -->
}}
}}
Google JAX संख्यात्मक कार्यों को बदलने के लिए एक मशीन लर्निंग फ्रेमवर्क है।<ref name=":0">{{Citation |title=JAX: Autograd and XLA |date=2022-06-18 |url=https://github.com/google/jax |archive-url=https://web.archive.org/web/20220618205214/https://github.com/google/jax |publisher=Google |bibcode=2021ascl.soft11002B |access-date=2022-06-18 |archive-date=2022-06-18|last1=Bradbury |first1=James |last2=Frostig |first2=Roy |last3=Hawkins |first3=Peter |last4=Johnson |first4=Matthew James |last5=Leary |first5=Chris |last6=MacLaurin |first6=Dougal |last7=Necula |first7=George |last8=Paszke |first8=Adam |last9=Vanderplas |first9=Jake |last10=Wanderman-Milne |first10=Skye |last11=Zhang |first11=Qiao |journal=Astrophysics Source Code Library }}</ref><ref>{{Cite journal |last1=Frostig |first1=Roy |last2=Johnson |first2=Matthew James |last3=Leary |first3=Chris |date=2018-02-02 |year=2018 |title=उच्च-स्तरीय ट्रेसिंग के माध्यम से मशीन लर्निंग प्रोग्राम संकलित करना|url=https://mlsys.org/Conferences/doc/2018/146.pdf |url-status=live |journal=MLsys |pages=1–3 |archive-url=https://web.archive.org/web/20220621153349/https://mlsys.org/Conferences/doc/2018/146.pdf |archive-date=2022-06-21}}</ref><ref>{{Cite web |title=हमारे अनुसंधान में तेजी लाने के लिए JAX का उपयोग करना|url=https://www.deepmind.com/blog/using-jax-to-accelerate-our-research |url-status=live |archive-url=https://web.archive.org/web/20220618205746/https://www.deepmind.com/blog/using-jax-to-accelerate-our-research |archive-date=2022-06-18 |access-date=2022-06-18 |website=www.deepmind.com |language=en}}</ref> इसे [https://github.com/HIPS/autograd autograd] (फ़ंक्शन के विभेदन के माध्यम से ग्रेडिएंट फ़ंक्शन की स्वचालित प्राप्ति) और TensorFlow के [https://www.tensorflow.org/' के एक संशोधित संस्करण को एक साथ लाने के रूप में वर्णित किया गया है। xla XLA] (त्वरित रैखिक बीजगणित)। इसे NumPy की संरचना और वर्कफ़्लो का यथासंभव बारीकी से पालन करने के लिए डिज़ाइन किया गया है और यह TensorFlow और PyTorch जैसे विभिन्न मौजूदा फ़्रेमवर्क के साथ काम करता है।<ref>{{Cite web |last=Lynley |first=Matthew |title=प्रभुत्व के लिए आखिरी बड़ा धक्का मेटा द्वारा ग्रहण किए जाने के बाद Google चुपचाप अपनी AI उत्पाद रणनीति की रीढ़ को बदल रहा है|url=https://www.businessinsider.com/facebook-pytorch-beat-google-tensorflow-jax-meta-ai-2022-6 |archive-url=https://web.archive.org/web/20220621143905/https://www.businessinsider.com/facebook-pytorch-beat-google-tensorflow-jax-meta-ai-2022-6 |archive-date=2022-06-21 |access-date=2022-06-21 |website=Business Insider |language=en-US}}</ref><ref>{{Cite web |date=2022-04-25 |title=Why is Google's JAX so popular? |url=https://analyticsindiamag.com/why-is-googles-jax-so-popular/ |url-status=live |archive-url=https://web.archive.org/web/20220618210503/https://analyticsindiamag.com/why-is-googles-jax-so-popular/ |archive-date=2022-06-18 |access-date=2022-06-18 |website=Analytics India Magazine |language=en-US}}</ref> JAX के प्राथमिक कार्य हैं:<ref name=":0" />


# ग्रेड: स्वचालित भेदभाव
'''गूगल जैक्स''' न्यूमेरिकल फ़ंक्शन को परिवर्तित करने के लिए एक प्रकार का मशीन लर्निंग फ्रेमवर्क है।<ref name=":0">{{Citation |title=JAX: Autograd and XLA |date=2022-06-18 |url=https://github.com/google/jax |archive-url=https://web.archive.org/web/20220618205214/https://github.com/google/jax |publisher=Google |bibcode=2021ascl.soft11002B |access-date=2022-06-18 |archive-date=2022-06-18|last1=Bradbury |first1=James |last2=Frostig |first2=Roy |last3=Hawkins |first3=Peter |last4=Johnson |first4=Matthew James |last5=Leary |first5=Chris |last6=MacLaurin |first6=Dougal |last7=Necula |first7=George |last8=Paszke |first8=Adam |last9=Vanderplas |first9=Jake |last10=Wanderman-Milne |first10=Skye |last11=Zhang |first11=Qiao |journal=Astrophysics Source Code Library }}</ref><ref>{{Cite journal |last1=Frostig |first1=Roy |last2=Johnson |first2=Matthew James |last3=Leary |first3=Chris |date=2018-02-02 |year=2018 |title=उच्च-स्तरीय ट्रेसिंग के माध्यम से मशीन लर्निंग प्रोग्राम संकलित करना|url=https://mlsys.org/Conferences/doc/2018/146.pdf |url-status=live |journal=MLsys |pages=1–3 |archive-url=https://web.archive.org/web/20220621153349/https://mlsys.org/Conferences/doc/2018/146.pdf |archive-date=2022-06-21}}</ref><ref>{{Cite web |title=हमारे अनुसंधान में तेजी लाने के लिए JAX का उपयोग करना|url=https://www.deepmind.com/blog/using-jax-to-accelerate-our-research |url-status=live |archive-url=https://web.archive.org/web/20220618205746/https://www.deepmind.com/blog/using-jax-to-accelerate-our-research |archive-date=2022-06-18 |access-date=2022-06-18 |website=www.deepmind.com |language=en}}</ref> इसे [https://github.com/HIPS/autograd ऑटोग्रैड] के माध्यम से ग्रेडिएंट फ़ंक्शन और टेंसरफ्लो फ्रेमवर्क के एक्सएलए फ़ंक्शन के एक संशोधित संस्करण को एक साथ प्रस्तुत करने के लिए वर्णित किया गया है। सामान्यतः इसको {{code|NumPy}} के स्ट्रक्चर और वर्कफ़्लो के ग्रेडिएंट फ़ंक्शन का उपयोग करने के लिए डिज़ाइन किया गया है। इसमे सम्मिलित विभिन्न फ्रेमवर्क टेंसरफ्लो और {{code|PyTorch}} एक साथ कार्य करते है।<ref>{{Cite web |last=Lynley |first=Matthew |title=प्रभुत्व के लिए आखिरी बड़ा धक्का मेटा द्वारा ग्रहण किए जाने के बाद Google चुपचाप अपनी AI उत्पाद रणनीति की रीढ़ को बदल रहा है|url=https://www.businessinsider.com/facebook-pytorch-beat-google-tensorflow-jax-meta-ai-2022-6 |archive-url=https://web.archive.org/web/20220621143905/https://www.businessinsider.com/facebook-pytorch-beat-google-tensorflow-jax-meta-ai-2022-6 |archive-date=2022-06-21 |access-date=2022-06-21 |website=Business Insider |language=en-US}}</ref><ref>{{Cite web |date=2022-04-25 |title=Why is Google's JAX so popular? |url=https://analyticsindiamag.com/why-is-googles-jax-so-popular/ |url-status=live |archive-url=https://web.archive.org/web/20220618210503/https://analyticsindiamag.com/why-is-googles-jax-so-popular/ |archive-date=2022-06-18 |access-date=2022-06-18 |website=Analytics India Magazine |language=en-US}}</ref> जेएएक्स फ़ंक्शन के प्राथमिक संस्करण हैं:<ref name=":0" />
# जिट: संकलन
# वीमैप: ऑटो-वेक्टराइजेशन
# pmap: एकल प्रोग्राम, एकाधिक डेटा प्रोग्रामिंग


== स्नातक ==
# ग्रैड: ऑटोडिफरेंसीएसन
{{Main|Automatic differentiation}}
# जिट: कंपाइलेशन
नीचे दिया गया कोड दर्शाता है {{code|grad}} फ़ंक्शन का स्वचालित विभेदन।
# वीमैप: ऑटोवेक्टराइजेशन
# पीमैप: एसपीएमडी डेटा प्रोग्रामिंग


<सिंटैक्सहाइलाइट लैंग= सुन्न लाइन= 1 >
== ग्रैड ==
#आयात
{{Main|ऑटोडिफरेंसीएसन}}
जैक्स इंपोर्ट ग्रेड से
नीचे दिया गया कोड {{code|grad}} फ़ंक्शन के ऑटोडिफरेंसीएसन को प्रदर्शित करता है:
jax.numpy को jnp के रूप में आयात करें
# imports
from jax import grad
import jax.numpy as jnp
# define the logistic function
def logistic(x): 
    return jnp.exp(x) / (jnp.exp(x) + 1)
# obtain the gradient function of the logistic function
grad_logistic = grad(logistic)
# evaluate the gradient of the logistic function at x = 1
grad_log_out = grad_logistic(1.0) 
print(grad_log_out)


# लॉजिस्टिक फ़ंक्शन को परिभाषित करें
0.19661194
डीईएफ़ लॉजिस्टिक(x):
    वापसी jnp.exp(x) / (jnp.exp(x) + 1)


# लॉजिस्टिक फ़ंक्शन का ग्रेडिएंट फ़ंक्शन प्राप्त करें
== जिट ==
ग्रैड_लॉजिस्टिक = ग्रैड(लॉजिस्टिक)
{{Main|कंपाइलेशन }}


# x = 1 पर लॉजिस्टिक फ़ंक्शन के ग्रेडिएंट का मूल्यांकन करें
नीचे दिया गया कोड फ़्यूज़न फ़ंक्शन के माध्यम से जिट फ़ंक्शन के कंपाइलेशन को प्रदर्शित करता है:
grad_log_out = grad_लॉजिस्टिक(1.0)
# imports
प्रिंट(grad_log_out)
from jax import jit
</सिंटैक्सहाइलाइट>
import jax.numpy as jnp
 
अंतिम पंक्ति को आउटपुट करना चाहिएː
# define the cube function
 
def cube(x):
 
    return x * x * x
सिंटैक्सहाइलाइट लैंग = आउटपुट >
0.19661194
# generate data
</सिंटैक्सहाइलाइट>
x = jnp.ones((10000, 10000))
 
== जीत ==
# create the jit version of the cube function
{{Main|Just-in-time compilation}}
jit_cube = jit(cube)
नीचे दिया गया कोड फ़्यूज़न के माध्यम से जिट फ़ंक्शन के अनुकूलन को दर्शाता है।
 
# apply the cube and jit_cube functions to the same data for speed comparison
<सिंटैक्सहाइलाइट लैंग= सुन्न लाइन= 1 >
cube(x)
#आयात
jit_cube(x)
जैक्स आयात जीआईटी से
{{code|jit_cube}} फ़ंक्शन (पंक्ति संख्या 17) के लिए कंपाइलर टाइम {{code|cube}} फ़ंक्शन (पंक्ति संख्या 16) की तुलना में अपेक्षाकृत कम होना चाहिए, क्योंकि पंक्ति संख्या 7 पर मान बढ़ने से अंतर बढ़ सकता है।
jax.numpy को jnp के रूप में आयात करें
 
# क्यूब फ़ंक्शन को परिभाषित करें
डेफ़ क्यूब(x):
    x * x * x लौटें
 
# डेटा जनरेट करें
x = jnp.ones((10000, 10000))
 
# क्यूब फ़ंक्शन का जिट संस्करण बनाएं
जिट_क्यूब = जिट(क्यूब)
 
# गति तुलना के लिए क्यूब और जिट_क्यूब फ़ंक्शन को समान डेटा पर लागू करें
घन(x)
जिट_क्यूब(x)
</सिंटैक्सहाइलाइट>
 
के लिए गणना समय {{code|jit_cube}} (पंक्ति संख्या 17) उससे काफ़ी छोटी होनी चाहिए {{code|cube}} (पंक्ति संख्या 16). लाइन नंबर पर मान बढ़ाना। 7, अंतर बढ़ जाएगा.


== वीमैप ==
== वीमैप ==
{{Main|Vectorization (mathematics)}}
{{Main|वेक्टराइजेशन}}
नीचे दिया गया कोड दर्शाता है {{code|vmap}} फ़ंक्शन का वैश्वीकरण।
नीचे दिया गया कोड {{code|vmap}} फ़ंक्शन के वेक्टराइजेशन को प्रदर्शित करता है:
 
# imports
<सिंटैक्सहाइलाइट लैंग= सुन्न लाइन= 1 >
from functools import partial
#आयात
from jax import vmap
functools से आंशिक आयात करें
import jax.numpy as jnp
जैक्स आयात वीमैप से
jax.numpy को jnp के रूप में आयात करें
# define function
 
def grads(self, inputs):
# फ़ंक्शन परिभाषित करें
    in_grad_partial = partial(self._net_grads, self._net_params)
डीईएफ़ ग्रेड (स्वयं, इनपुट):
    grad_vmap = vmap(in_grad_partial)
    in_grad_partial = आंशिक(self._net_grads, self._net_params)
    rich_grads = grad_vmap(inputs)
    grad_vmap = vmap(in_grad_partial)
    flat_grads = np.asarray(self._flatten_batch(rich_grads))
    rich_grads = grad_vmap(इनपुट)
    assert flat_grads.ndim == 2 and flat_grads.shape[0] == inputs.shape[0]
    फ़्लैट_ग्रेड्स = np.asarray(self._flatten_batch(rich_grads))
    return flat_grads
    फ्लैट_ग्रेड्स.एनडिम == 2 और फ्लैट_ग्रेड्स.शेप[0] == इनपुट्स.शेप[0] पर जोर दें
प्रायः यह फ़ंक्शन जीआईएफ वेक्टराइज्ड संबंध की धारणा को दर्शाता है।
    फ़्लैट_ग्रैड्स लौटाएँ
</सिंटैक्सहाइलाइट>
 
इस अनुभाग के दाईं ओर GIF वेक्टरकृत जोड़ की धारणा को दर्शाता है।
 
[[File:Vectorized-addition.gif|thumb|सदिशकृत जोड़ का चित्रण वीडियो]]
 
== pmap ==
{{Main|Automatic parallelization}}
नीचे दिया गया कोड दर्शाता है {{code|pmap}} मैट्रिक्स गुणन के लिए फ़ंक्शन का समानांतरीकरण।
 
<सिंटैक्सहाइलाइट लैंग= सुन्न लाइन= 1 >
# JAX से pmap और रैंडम आयात करें; JAX NumPy आयात करें
जैक्स आयात pmap से, यादृच्छिक
jax.numpy को jnp के रूप में आयात करें
 
# 5000 x 6000 आयामों के 2 यादृच्छिक मैट्रिक्स उत्पन्न करें, प्रति डिवाइस एक
रैंडम_कीज़ = रैंडम.स्प्लिट(रैंडम.PRNGKey(0), 2)
मैट्रिसेस = pmap(लैम्ब्डा कुंजी: रैंडम.नॉर्मल(कुंजी, (5000, 6000)))(random_keys)
 
# डेटा ट्रांसफर के बिना, समानांतर में, प्रत्येक सीपीयू/जीपीयू पर एक स्थानीय मैट्रिक्स गुणन करें
आउटपुट = pmap(लैम्ब्डा x: jnp.dot(x, x.T))(मैट्रिसेस)
 
# डेटा ट्रांसफर के बिना, समानांतर में, प्रत्येक सीपीयू/जीपीयू पर दोनों मैट्रिक्स के लिए अलग-अलग माध्य प्राप्त करें
मतलब = pmap(jnp.mean)(आउटपुट)
प्रिंट(मतलब)
</सिंटैक्सहाइलाइट>


अंतिम पंक्ति को मान मुद्रित करना चाहिएː
[[File:Vectorized-addition.gif|thumb|जीआईएफ वेक्टराइज्ड संबंध]]


== पीमैप ==
{{Main|ऑटोमैटिक पैरलाइजेसन }}
नीचे दिया गया कोड मैट्रिक्स गुणन के लिए {{code|pmap}} फ़ंक्शन के डिफरेंसीएसन को प्रदर्शित करता है:
# import pmap and random from JAX; import JAX NumPy
from jax import pmap, random
import jax.numpy as jnp
# generate 2 random matrices of dimensions 5000 x 6000, one per device
random_keys = random.split(random.PRNGKey(0), 2)
matrices = pmap(lambda key: random.normal(key, (5000, 6000)))(random_keys)
# without data transfer, in parallel, perform a local matrix multiplication on each CPU/GPU
outputs = pmap(lambda x: jnp.dot(x, x.T))(matrices)
# without data transfer, in parallel, obtain the mean for both matrices on each CPU/GPU separately
means = pmap(jnp.mean)(outputs)
print(means)


सिंटैक्सहाइलाइट लैंग = आउटपुट >
[1.1566595 1.1805978]
[1.1566595 1.1805978]
</सिंटैक्सहाइलाइट>


== JAX का उपयोग करने वाली लाइब्रेरी ==
== जैक्स का उपयोग करने वाली लाइब्रेरी ==
कई पायथन लाइब्रेरीज़ JAX को बैकएंड के रूप में उपयोग करती हैं, जिनमें शामिल हैं:
कई पायथन लाइब्रेरी जैक्स को बैकएंड के रूप में उपयोग करती हैं, जिनमें निम्नलिखित सम्मिलित हैं:


* फ़्लैक्स, एक उच्च स्तरीय न्यूरल नेटवर्क लाइब्रेरी जिसे प्रारंभ में [[Google Brain]] द्वारा विकसित किया गया था।<ref>{{Citation |title=Flax: A neural network library and ecosystem for JAX designed for flexibility |date=2022-07-29 |url=https://github.com/google/flax |publisher=Google |access-date=2022-07-29}}</ref>
* फ्लेक्स, यह एक प्रकार की न्यूरल नेटवर्क लाइब्रेरी है जिसे [[Google Brain|गूगल ब्रेन]] द्वारा विकसित किया गया था।<ref>{{Citation |title=Flax: A neural network library and ecosystem for JAX designed for flexibility |date=2022-07-29 |url=https://github.com/google/flax |publisher=Google |access-date=2022-07-29}}</ref>
* इक्विनॉक्स, एक लाइब्रेरी जो पैरामीटरयुक्त कार्यों (न्यूरल नेटवर्क सहित) को PyTrees के रूप में प्रस्तुत करने के विचार के इर्द-गिर्द घूमती है। इसे पैट्रिक किडगर ने बनाया था।<ref>{{Citation |last=Kidger |first=Patrick |title=Equinox |date=2022-07-29 |url=https://github.com/patrick-kidger/equinox |access-date=2022-07-29}}</ref>
* इक्विनॉक्स, एक लाइब्रेरी जो पैरामीटरयुक्त फ़ंक्शन (न्यूरल नेटवर्क सहित) को {{code|PyTrees}} के रूप में प्रस्तुत करती है।<ref>{{Citation |last=Kidger |first=Patrick |title=Equinox |date=2022-07-29 |url=https://github.com/patrick-kidger/equinox |access-date=2022-07-29}}</ref>
* डिफ्रैक्स, साधारण अंतर समीकरणों के लिए संख्यात्मक तरीकों के लिए एक पुस्तकालय, जैसे साधारण अंतर समीकरण और स्टोचैस्टिक अंतर समीकरण।<ref>{{Citation |last=Kidger |first=Patrick |title=Diffrax |date=2023-08-05 |url=https://github.com/patrick-kidger/diffrax |access-date=2023-08-08}}</ref>
* डिडिफ्रेक्स, साधारण डिफरेंशियल फ़ंक्शन और स्टोकेस्टिक डिफरेंशियल फ़ंक्शन जैसे फ़ंक्शन के संख्यात्मक समाधान के लिए लाइब्रेरी।<ref>{{Citation |last=Kidger |first=Patrick |title=Diffrax |date=2023-08-05 |url=https://github.com/patrick-kidger/diffrax |access-date=2023-08-08}}</ref>
* ऑप्टैक्स, [[डीपमाइंड]] द्वारा विकसित ग्रेडिएंट प्रोसेसिंग और गणितीय अनुकूलन के लिए एक पुस्तकालय।<ref>{{Citation |title=Optax |date=2022-07-28 |url=https://github.com/deepmind/optax |publisher=DeepMind |access-date=2022-07-29}}</ref>
* ऑप्टैक्स, [[डीपमाइंड]] द्वारा विकसित ग्रेडिएंट प्रोसेसिंग और ऑप्टिमाइज़ेशन के लिए लाइब्रेरी।<ref>{{Citation |title=Optax |date=2022-07-28 |url=https://github.com/deepmind/optax |publisher=DeepMind |access-date=2022-07-29}}</ref>
* Lineax, रैखिक समीकरणों की प्रणाली और रैखिक न्यूनतम वर्गों के लिए संख्यात्मक तरीकों के लिए एक पुस्तकालय।<ref>{{Citation |title=Lineax |date=2023-08-08 |url=https://github.com/google/lineax |access-date=2023-08-08 |publisher=Google}}</ref>
* लाइनेक्स, संख्यात्मक रूप से लीनियर सिस्टम को हल करने के लिए लाइब्रेरी।<ref>{{Citation |title=Lineax |date=2023-08-08 |url=https://github.com/google/lineax |access-date=2023-08-08 |publisher=Google}}</ref>
* RLax, डीपमाइंड द्वारा विकसित सुदृढीकरण शिक्षण एजेंटों को विकसित करने के लिए एक पुस्तकालय।<ref>{{Citation |title=RLax |date=2022-07-29 |url=https://github.com/deepmind/rlax |publisher=DeepMind |access-date=2022-07-29}}</ref>
* लक्स, डीपमाइंड द्वारा विकसित रिइंफोर्समेंट लर्निंग के एजेंटों को विकसित करने के लिए लाइब्रेरी।<ref>{{Citation |title=RLax |date=2022-07-29 |url=https://github.com/deepmind/rlax |publisher=DeepMind |access-date=2022-07-29}}</ref>
* जेराफ, ग्राफ न्यूरल नेटवर्क के लिए एक लाइब्रेरी, जिसे डीपमाइंड द्वारा विकसित किया गया है।<ref>{{Citation |title=Jraph - A library for graph neural networks in jax. |date=2023-08-08 |url=https://github.com/deepmind/jraph |access-date=2023-08-08 |publisher=DeepMind}}</ref>
* जेराफ, ग्राफ न्यूरल नेटवर्क के लिए एक लाइब्रेरी, जिसे डीपमाइंड द्वारा विकसित किया गया है।<ref>{{Citation |title=Jraph - A library for graph neural networks in jax. |date=2023-08-08 |url=https://github.com/deepmind/jraph |access-date=2023-08-08 |publisher=DeepMind}}</ref>
* जैक्सटाइपिंग, टाइप सिग्नेचर जोड़ने के लिए एक लाइब्रेरी<ref>{{Cite web |title=typing — Support for type hints |url=https://docs.python.org/3/library/typing.html |access-date=2023-08-08 |website=Python documentation}}</ref> सरणियों या टेंसरों के आकार और डेटा प्रकार (dtype) के लिए।<ref>{{Citation |title=jaxtyping |date=2023-08-08 |url=https://github.com/google/jaxtyping |access-date=2023-08-08 |publisher=Google}}</ref>
* जैक्सटाइपिंग, टेबल या टेन्सर्स के आकार और डेटा टाइप ("डीटाइप") के लिए टाइप एनोटेशन इन्सर्ट करने के लिए लाइब्रेरी।<ref>{{Cite web |title=typing — Support for type hints |url=https://docs.python.org/3/library/typing.html |access-date=2023-08-08 |website=Python documentation}}</ref><ref>{{Citation |title=jaxtyping |date=2023-08-08 |url=https://github.com/google/jaxtyping |access-date=2023-08-08 |publisher=Google}}</ref>
कुछ R (प्रोग्रामिंग भाषा) लाइब्रेरी JAX को बैकएंड के रूप में भी उपयोग करती हैं, जिनमें शामिल हैं:
कुछ आर (प्रोग्रामिंग लैंग्वेज) लाइब्रेरी जेएएक्स को बैकएंड के रूप में भी उपयोग करती हैं, जिनमें प्रायः फास्टरेरैंडमाइज़ सम्मिलित हैं:
* fastrerandomize, एक लाइब्रेरी जो Rerandomization के रूप में ज्ञात प्रयोग प्रक्रिया के डिजाइन में संतुलित रैंडमाइजेशन के चयन में तेजी लाने के लिए JAX में रैखिक-बीजगणित अनुकूलित कंपाइलर का उपयोग करती है।<ref>{{Citation |last=Jerzak |first=Connor |title=fastrerandomize |date=2023-10-01 |url=https://github.com/cjerzak/fastrerandomize-software |access-date=2023-10-03}}</ref>
* फास्टरेरैंडमाइज़, सामान्यतः यह लाइब्रेरी जेएएक्स में लीनियर ऑप्टिमाइजेशन कंपाइलर का उपयोग करती है जिससे परीक्षण प्रक्रिया के डिजाइन में रैंडमाइजेशन के चयन को अधिक तीव्रता से किया जा सकता है, जिसके कारण इसे रीरैंडमाइजेशन के रूप में भी जाना जाता है।<ref>{{Citation |last=Jerzak |first=Connor |title=fastrerandomize |date=2023-10-01 |url=https://github.com/cjerzak/fastrerandomize-software |access-date=2023-10-03}}</ref>
 
 
== यह भी देखें ==
== यह भी देखें ==


* नम्पी
* टेंसरफ्लो
* टेंसरफ्लो
*पाइटोरच
*पाइटॉर्च
* क्यूडा
* क्यूडा
* [[स्वचालित भेदभाव]]
* [[स्वचालित भेदभाव|ऑटोमैटिक डिफरेंसीएसन]]
* सही समय पर संकलन
* कंपाइलेशन
* वैश्वीकरण (बहुविकल्पी)
* वेक्टराइजेशन
* [[स्वचालित समानांतरीकरण]]
* [[स्वचालित समानांतरीकरण|एक्सेलरेटेड लीनियर एल्जेब्रा (रैखिक बीजगणित)]]


== बाहरी संबंध ==
== बाहरी संबंध ==
Line 177: Line 152:
* {{YouTube|id=WdTeDXsOSj4|title=Intro to JAX: Accelerating Machine Learning research}}
* {{YouTube|id=WdTeDXsOSj4|title=Intro to JAX: Accelerating Machine Learning research}}
* Original paperː {{URL|https://mlsys.org/Conferences/doc/2018/146.pdf}}
* Original paperː {{URL|https://mlsys.org/Conferences/doc/2018/146.pdf}}
== संदर्भ ==
== संदर्भ ==
{{reflist}}
{{reflist}}
{{Differentiable computing}}
{{Google LLC}}
[[Category: यंत्र अधिगम]] [[Category: गूगल|जेएक्स]]  
[[Category: यंत्र अधिगम]] [[Category: गूगल|जेएक्स]]  


Line 190: Line 160:
[[Category: Machine Translated Page]]
[[Category: Machine Translated Page]]
[[Category:Created On 07/12/2023]]
[[Category:Created On 07/12/2023]]
[[Category:Vigyan Ready]]

Latest revision as of 22:21, 2 February 2024

जैक
Developer(s)गूगल
Preview release
v0.3.13 / 16 May 2022; 2 years ago (2022-05-16)
Repositorygithub.com/google/jax
Written inपायथन, सी ++
Operating systemलिनक्स, मैकओएस, विंडोज
Platformपायथन, नमपाई
Size9.0 MB
Typeमसीन लर्निंग
Licenseअपाचे 2.0

गूगल जैक्स न्यूमेरिकल फ़ंक्शन को परिवर्तित करने के लिए एक प्रकार का मशीन लर्निंग फ्रेमवर्क है।[1][2][3] इसे ऑटोग्रैड के माध्यम से ग्रेडिएंट फ़ंक्शन और टेंसरफ्लो फ्रेमवर्क के एक्सएलए फ़ंक्शन के एक संशोधित संस्करण को एक साथ प्रस्तुत करने के लिए वर्णित किया गया है। सामान्यतः इसको NumPy के स्ट्रक्चर और वर्कफ़्लो के ग्रेडिएंट फ़ंक्शन का उपयोग करने के लिए डिज़ाइन किया गया है। इसमे सम्मिलित विभिन्न फ्रेमवर्क टेंसरफ्लो और PyTorch एक साथ कार्य करते है।[4][5] जेएएक्स फ़ंक्शन के प्राथमिक संस्करण हैं:[1]

  1. ग्रैड: ऑटोडिफरेंसीएसन
  2. जिट: कंपाइलेशन
  3. वीमैप: ऑटोवेक्टराइजेशन
  4. पीमैप: एसपीएमडी डेटा प्रोग्रामिंग

ग्रैड

नीचे दिया गया कोड grad फ़ंक्शन के ऑटोडिफरेंसीएसन को प्रदर्शित करता है:

# imports
from jax import grad
import jax.numpy as jnp

# define the logistic function
def logistic(x):  
    return jnp.exp(x) / (jnp.exp(x) + 1)

# obtain the gradient function of the logistic function
grad_logistic = grad(logistic)

# evaluate the gradient of the logistic function at x = 1 
grad_log_out = grad_logistic(1.0)   
print(grad_log_out)
0.19661194

जिट

नीचे दिया गया कोड फ़्यूज़न फ़ंक्शन के माध्यम से जिट फ़ंक्शन के कंपाइलेशन को प्रदर्शित करता है:

# imports
from jax import jit
import jax.numpy as jnp

# define the cube function
def cube(x):
    return x * x * x

# generate data
x = jnp.ones((10000, 10000))

# create the jit version of the cube function
jit_cube = jit(cube)

# apply the cube and jit_cube functions to the same data for speed comparison
cube(x)
jit_cube(x)

jit_cube फ़ंक्शन (पंक्ति संख्या 17) के लिए कंपाइलर टाइम cube फ़ंक्शन (पंक्ति संख्या 16) की तुलना में अपेक्षाकृत कम होना चाहिए, क्योंकि पंक्ति संख्या 7 पर मान बढ़ने से अंतर बढ़ सकता है।

वीमैप

नीचे दिया गया कोड vmap फ़ंक्शन के वेक्टराइजेशन को प्रदर्शित करता है:

# imports
from functools import partial
from jax import vmap
import jax.numpy as jnp

# define function
def grads(self, inputs):
    in_grad_partial = partial(self._net_grads, self._net_params)
    grad_vmap = vmap(in_grad_partial)
    rich_grads = grad_vmap(inputs)
    flat_grads = np.asarray(self._flatten_batch(rich_grads))
    assert flat_grads.ndim == 2 and flat_grads.shape[0] == inputs.shape[0]
    return flat_grads

प्रायः यह फ़ंक्शन जीआईएफ वेक्टराइज्ड संबंध की धारणा को दर्शाता है।

जीआईएफ वेक्टराइज्ड संबंध

पीमैप

नीचे दिया गया कोड मैट्रिक्स गुणन के लिए pmap फ़ंक्शन के डिफरेंसीएसन को प्रदर्शित करता है:

# import pmap and random from JAX; import JAX NumPy
from jax import pmap, random
import jax.numpy as jnp

# generate 2 random matrices of dimensions 5000 x 6000, one per device
random_keys = random.split(random.PRNGKey(0), 2)
matrices = pmap(lambda key: random.normal(key, (5000, 6000)))(random_keys)

# without data transfer, in parallel, perform a local matrix multiplication on each CPU/GPU
outputs = pmap(lambda x: jnp.dot(x, x.T))(matrices)

# without data transfer, in parallel, obtain the mean for both matrices on each CPU/GPU separately
means = pmap(jnp.mean)(outputs)
print(means)
[1.1566595 1.1805978]

जैक्स का उपयोग करने वाली लाइब्रेरी

कई पायथन लाइब्रेरी जैक्स को बैकएंड के रूप में उपयोग करती हैं, जिनमें निम्नलिखित सम्मिलित हैं:

  • फ्लेक्स, यह एक प्रकार की न्यूरल नेटवर्क लाइब्रेरी है जिसे गूगल ब्रेन द्वारा विकसित किया गया था।[6]
  • इक्विनॉक्स, एक लाइब्रेरी जो पैरामीटरयुक्त फ़ंक्शन (न्यूरल नेटवर्क सहित) को PyTrees के रूप में प्रस्तुत करती है।[7]
  • डिडिफ्रेक्स, साधारण डिफरेंशियल फ़ंक्शन और स्टोकेस्टिक डिफरेंशियल फ़ंक्शन जैसे फ़ंक्शन के संख्यात्मक समाधान के लिए लाइब्रेरी।[8]
  • ऑप्टैक्स, डीपमाइंड द्वारा विकसित ग्रेडिएंट प्रोसेसिंग और ऑप्टिमाइज़ेशन के लिए लाइब्रेरी।[9]
  • लाइनेक्स, संख्यात्मक रूप से लीनियर सिस्टम को हल करने के लिए लाइब्रेरी।[10]
  • लक्स, डीपमाइंड द्वारा विकसित रिइंफोर्समेंट लर्निंग के एजेंटों को विकसित करने के लिए लाइब्रेरी।[11]
  • जेराफ, ग्राफ न्यूरल नेटवर्क के लिए एक लाइब्रेरी, जिसे डीपमाइंड द्वारा विकसित किया गया है।[12]
  • जैक्सटाइपिंग, टेबल या टेन्सर्स के आकार और डेटा टाइप ("डीटाइप") के लिए टाइप एनोटेशन इन्सर्ट करने के लिए लाइब्रेरी।[13][14]

कुछ आर (प्रोग्रामिंग लैंग्वेज) लाइब्रेरी जेएएक्स को बैकएंड के रूप में भी उपयोग करती हैं, जिनमें प्रायः फास्टरेरैंडमाइज़ सम्मिलित हैं:

  • फास्टरेरैंडमाइज़, सामान्यतः यह लाइब्रेरी जेएएक्स में लीनियर ऑप्टिमाइजेशन कंपाइलर का उपयोग करती है जिससे परीक्षण प्रक्रिया के डिजाइन में रैंडमाइजेशन के चयन को अधिक तीव्रता से किया जा सकता है, जिसके कारण इसे रीरैंडमाइजेशन के रूप में भी जाना जाता है।[15]

यह भी देखें

बाहरी संबंध

संदर्भ

  1. 1.0 1.1 Bradbury, James; Frostig, Roy; Hawkins, Peter; Johnson, Matthew James; Leary, Chris; MacLaurin, Dougal; Necula, George; Paszke, Adam; Vanderplas, Jake; Wanderman-Milne, Skye; Zhang, Qiao (2022-06-18), "JAX: Autograd and XLA", Astrophysics Source Code Library, Google, Bibcode:2021ascl.soft11002B, archived from the original on 2022-06-18, retrieved 2022-06-18
  2. Frostig, Roy; Johnson, Matthew James; Leary, Chris (2018-02-02). "उच्च-स्तरीय ट्रेसिंग के माध्यम से मशीन लर्निंग प्रोग्राम संकलित करना" (PDF). MLsys: 1–3. Archived (PDF) from the original on 2022-06-21.{{cite journal}}: CS1 maint: date and year (link)
  3. "हमारे अनुसंधान में तेजी लाने के लिए JAX का उपयोग करना". www.deepmind.com (in English). Archived from the original on 2022-06-18. Retrieved 2022-06-18.
  4. Lynley, Matthew. "प्रभुत्व के लिए आखिरी बड़ा धक्का मेटा द्वारा ग्रहण किए जाने के बाद Google चुपचाप अपनी AI उत्पाद रणनीति की रीढ़ को बदल रहा है". Business Insider (in English). Archived from the original on 2022-06-21. Retrieved 2022-06-21.
  5. "Why is Google's JAX so popular?". Analytics India Magazine (in English). 2022-04-25. Archived from the original on 2022-06-18. Retrieved 2022-06-18.
  6. Flax: A neural network library and ecosystem for JAX designed for flexibility, Google, 2022-07-29, retrieved 2022-07-29
  7. Kidger, Patrick (2022-07-29), Equinox, retrieved 2022-07-29
  8. Kidger, Patrick (2023-08-05), Diffrax, retrieved 2023-08-08
  9. Optax, DeepMind, 2022-07-28, retrieved 2022-07-29
  10. Lineax, Google, 2023-08-08, retrieved 2023-08-08
  11. RLax, DeepMind, 2022-07-29, retrieved 2022-07-29
  12. Jraph - A library for graph neural networks in jax., DeepMind, 2023-08-08, retrieved 2023-08-08
  13. "typing — Support for type hints". Python documentation. Retrieved 2023-08-08.
  14. jaxtyping, Google, 2023-08-08, retrieved 2023-08-08
  15. Jerzak, Connor (2023-10-01), fastrerandomize, retrieved 2023-10-03