गूगल जैक्स: Difference between revisions
(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 (Arti Shah moved page गूगल JAX to गूगल जैक्स without leaving a redirect) |
(No difference)
|
Revision as of 12:37, 13 December 2023
Developer(s) | |
---|---|
Preview release | v0.3.13
/ 16 May 2022 |
Repository | github |
Written in | Python, C++ |
Operating system | Linux, macOS, Windows |
Platform | Python, NumPy |
Size | 9.0 MB |
Type | Machine learning |
License | Apache 2.0 |
Google JAX संख्यात्मक कार्यों को बदलने के लिए एक मशीन लर्निंग फ्रेमवर्क है।[1][2][3] इसे autograd (फ़ंक्शन के विभेदन के माध्यम से ग्रेडिएंट फ़ंक्शन की स्वचालित प्राप्ति) और TensorFlow के के एक संशोधित संस्करण को एक साथ लाने के रूप में वर्णित किया गया है। xla XLA (त्वरित रैखिक बीजगणित)। इसे NumPy की संरचना और वर्कफ़्लो का यथासंभव बारीकी से पालन करने के लिए डिज़ाइन किया गया है और यह TensorFlow और PyTorch जैसे विभिन्न मौजूदा फ़्रेमवर्क के साथ काम करता है।[4][5] JAX के प्राथमिक कार्य हैं:[1]
- ग्रेड: स्वचालित भेदभाव
- जिट: संकलन
- वीमैप: ऑटो-वेक्टराइजेशन
- pmap: एकल प्रोग्राम, एकाधिक डेटा प्रोग्रामिंग
स्नातक
नीचे दिया गया कोड दर्शाता है grad
फ़ंक्शन का स्वचालित विभेदन।
<सिंटैक्सहाइलाइट लैंग= सुन्न लाइन= 1 >
- आयात
जैक्स इंपोर्ट ग्रेड से jax.numpy को jnp के रूप में आयात करें
- लॉजिस्टिक फ़ंक्शन को परिभाषित करें
डीईएफ़ लॉजिस्टिक(x):
वापसी jnp.exp(x) / (jnp.exp(x) + 1)
- लॉजिस्टिक फ़ंक्शन का ग्रेडिएंट फ़ंक्शन प्राप्त करें
ग्रैड_लॉजिस्टिक = ग्रैड(लॉजिस्टिक)
- x = 1 पर लॉजिस्टिक फ़ंक्शन के ग्रेडिएंट का मूल्यांकन करें
grad_log_out = grad_लॉजिस्टिक(1.0) प्रिंट(grad_log_out) </सिंटैक्सहाइलाइट>
अंतिम पंक्ति को आउटपुट करना चाहिएː
सिंटैक्सहाइलाइट लैंग = आउटपुट >
0.19661194
</सिंटैक्सहाइलाइट>
जीत
नीचे दिया गया कोड फ़्यूज़न के माध्यम से जिट फ़ंक्शन के अनुकूलन को दर्शाता है।
<सिंटैक्सहाइलाइट लैंग= सुन्न लाइन= 1 >
- आयात
जैक्स आयात जीआईटी से jax.numpy को jnp के रूप में आयात करें
- क्यूब फ़ंक्शन को परिभाषित करें
डेफ़ क्यूब(x):
x * x * x लौटें
- डेटा जनरेट करें
x = jnp.ones((10000, 10000))
- क्यूब फ़ंक्शन का जिट संस्करण बनाएं
जिट_क्यूब = जिट(क्यूब)
- गति तुलना के लिए क्यूब और जिट_क्यूब फ़ंक्शन को समान डेटा पर लागू करें
घन(x) जिट_क्यूब(x) </सिंटैक्सहाइलाइट>
के लिए गणना समय jit_cube
(पंक्ति संख्या 17) उससे काफ़ी छोटी होनी चाहिए cube
(पंक्ति संख्या 16). लाइन नंबर पर मान बढ़ाना। 7, अंतर बढ़ जाएगा.
वीमैप
नीचे दिया गया कोड दर्शाता है vmap
फ़ंक्शन का वैश्वीकरण।
<सिंटैक्सहाइलाइट लैंग= सुन्न लाइन= 1 >
- आयात
functools से आंशिक आयात करें जैक्स आयात वीमैप से jax.numpy को jnp के रूप में आयात करें
- फ़ंक्शन परिभाषित करें
डीईएफ़ ग्रेड (स्वयं, इनपुट):
in_grad_partial = आंशिक(self._net_grads, self._net_params) grad_vmap = vmap(in_grad_partial) rich_grads = grad_vmap(इनपुट) फ़्लैट_ग्रेड्स = np.asarray(self._flatten_batch(rich_grads)) फ्लैट_ग्रेड्स.एनडिम == 2 और फ्लैट_ग्रेड्स.शेप[0] == इनपुट्स.शेप[0] पर जोर दें फ़्लैट_ग्रैड्स लौटाएँ
</सिंटैक्सहाइलाइट>
इस अनुभाग के दाईं ओर GIF वेक्टरकृत जोड़ की धारणा को दर्शाता है।
pmap
नीचे दिया गया कोड दर्शाता है 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)(आउटपुट) प्रिंट(मतलब) </सिंटैक्सहाइलाइट>
अंतिम पंक्ति को मान मुद्रित करना चाहिएː
सिंटैक्सहाइलाइट लैंग = आउटपुट >
[1.1566595 1.1805978]
</सिंटैक्सहाइलाइट>
JAX का उपयोग करने वाली लाइब्रेरी
कई पायथन लाइब्रेरीज़ JAX को बैकएंड के रूप में उपयोग करती हैं, जिनमें शामिल हैं:
- फ़्लैक्स, एक उच्च स्तरीय न्यूरल नेटवर्क लाइब्रेरी जिसे प्रारंभ में Google Brain द्वारा विकसित किया गया था।[6]
- इक्विनॉक्स, एक लाइब्रेरी जो पैरामीटरयुक्त कार्यों (न्यूरल नेटवर्क सहित) को PyTrees के रूप में प्रस्तुत करने के विचार के इर्द-गिर्द घूमती है। इसे पैट्रिक किडगर ने बनाया था।[7]
- डिफ्रैक्स, साधारण अंतर समीकरणों के लिए संख्यात्मक तरीकों के लिए एक पुस्तकालय, जैसे साधारण अंतर समीकरण और स्टोचैस्टिक अंतर समीकरण।[8]
- ऑप्टैक्स, डीपमाइंड द्वारा विकसित ग्रेडिएंट प्रोसेसिंग और गणितीय अनुकूलन के लिए एक पुस्तकालय।[9]
- Lineax, रैखिक समीकरणों की प्रणाली और रैखिक न्यूनतम वर्गों के लिए संख्यात्मक तरीकों के लिए एक पुस्तकालय।[10]
- RLax, डीपमाइंड द्वारा विकसित सुदृढीकरण शिक्षण एजेंटों को विकसित करने के लिए एक पुस्तकालय।[11]
- जेराफ, ग्राफ न्यूरल नेटवर्क के लिए एक लाइब्रेरी, जिसे डीपमाइंड द्वारा विकसित किया गया है।[12]
- जैक्सटाइपिंग, टाइप सिग्नेचर जोड़ने के लिए एक लाइब्रेरी[13] सरणियों या टेंसरों के आकार और डेटा प्रकार (dtype) के लिए।[14]
कुछ R (प्रोग्रामिंग भाषा) लाइब्रेरी JAX को बैकएंड के रूप में भी उपयोग करती हैं, जिनमें शामिल हैं:
- fastrerandomize, एक लाइब्रेरी जो Rerandomization के रूप में ज्ञात प्रयोग प्रक्रिया के डिजाइन में संतुलित रैंडमाइजेशन के चयन में तेजी लाने के लिए JAX में रैखिक-बीजगणित अनुकूलित कंपाइलर का उपयोग करती है।[15]
यह भी देखें
- नम्पी
- टेंसरफ्लो
- पाइटोरच
- क्यूडा
- स्वचालित भेदभाव
- सही समय पर संकलन
- वैश्वीकरण (बहुविकल्पी)
- स्वचालित समानांतरीकरण
बाहरी संबंध
- Documentationː jax
.readthedocs .io - Colab (Jupyter/IPython) Quickstart Guideː colab
.research .google .com /github /google /jax /blob /main /docs /notebooks /quickstart .ipynb - TensorFlow's XLAː www
.tensorflow .org /xla (Accelerated Linear Algebra) - Intro to JAX: Accelerating Machine Learning research on YouTube
- Original paperː mlsys
.org /Conferences /doc /2018 /146 .pdf
संदर्भ
- ↑ 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
- ↑ 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) - ↑ "हमारे अनुसंधान में तेजी लाने के लिए JAX का उपयोग करना". www.deepmind.com (in English). Archived from the original on 2022-06-18. Retrieved 2022-06-18.
- ↑ Lynley, Matthew. "प्रभुत्व के लिए आखिरी बड़ा धक्का मेटा द्वारा ग्रहण किए जाने के बाद Google चुपचाप अपनी AI उत्पाद रणनीति की रीढ़ को बदल रहा है". Business Insider (in English). Archived from the original on 2022-06-21. Retrieved 2022-06-21.
- ↑ "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.
- ↑ Flax: A neural network library and ecosystem for JAX designed for flexibility, Google, 2022-07-29, retrieved 2022-07-29
- ↑ Kidger, Patrick (2022-07-29), Equinox, retrieved 2022-07-29
- ↑ Kidger, Patrick (2023-08-05), Diffrax, retrieved 2023-08-08
- ↑ Optax, DeepMind, 2022-07-28, retrieved 2022-07-29
- ↑ Lineax, Google, 2023-08-08, retrieved 2023-08-08
- ↑ RLax, DeepMind, 2022-07-29, retrieved 2022-07-29
- ↑ Jraph - A library for graph neural networks in jax., DeepMind, 2023-08-08, retrieved 2023-08-08
- ↑ "typing — Support for type hints". Python documentation. Retrieved 2023-08-08.
- ↑ jaxtyping, Google, 2023-08-08, retrieved 2023-08-08
- ↑ Jerzak, Connor (2023-10-01), fastrerandomize, retrieved 2023-10-03