Framework pre výskum strojového učenia

JAX

Knižnica pre transformovateľné numerické výpočty

JAX je knižnica pre numerické výpočty v Pythone, ktorá poskytuje NumPy podobné rozhranie a transformácie funkcií pre automatickú diferenciáciu, JIT kompiláciu, vektorizáciu a paralelizáciu. Výpočty sa zapisujú ako kompozície čistých operácií nad poľami a kompilujú cez ekosystém OpenXLA pre CPU, GPU alebo TPU. JAX sleduje funkciu do medzireprezentácie jaxpr, preto má osobitné pravidlá pre stav, náhodnosť a riadenie toku. Samotný JAX nie je kompletný tréningový framework, ale základ, na ktorom stoja knižnice ako Flax, Equinox alebo Optax.

Posledná odborná revízia
30. júla 2026
Odborný garant
Miroslav Schmiedt
ID
AI-GEO-J-10

Odborná definícia

Odborná definícia

JAX je knižnica pre numerické výpočty v Pythone, ktorá poskytuje NumPy podobné rozhranie a transformácie funkcií pre automatickú diferenciáciu, JIT kompiláciu, vektorizáciu a paralelizáciu. Výpočty sa zapisujú ako kompozície čistých operácií nad poľami a kompilujú cez ekosystém OpenXLA pre CPU, GPU alebo TPU. JAX sleduje funkciu do medzireprezentácie jaxpr, preto má osobitné pravidlá pre stav, náhodnosť a riadenie toku. Samotný JAX nie je kompletný tréningový framework, ale základ, na ktorom stoja knižnice ako Flax, Equinox alebo Optax.

Zrozumiteľné vysvetlenie

Zrozumiteľné vysvetlenie

Výskumník napíše matematickú funkciu podobne ako v NumPy. JAX môže tú istú funkciu automaticky diferencovať, skompilovať pre akcelerátor a aplikovať na celý batch bez ručne písaného cyklu. Táto sila vzniká tým, že JAX funkciu analyzuje ako výpočtový program, nie iba vykoná riadok po riadku ako bežný Python. Kód preto musí rešpektovať určité pravidlá, napríklad explicitne pracovať s náhodným kľúčom a neukrývať meniaci sa stav v globálnej premennej. Odmenou je skladateľnosť transformácií a vysoký výkon.

Časté otázky

Časté otázky

Je JAX náhradou za NumPy?

Rozhranie jax.numpy pokrýva veľkú časť NumPy, ale polia sú navrhnuté pre akcelerátory, transformácie a funkčný štýl. Nie všetky dynamické Python operácie sa dajú trasovať alebo kompilovať, preto prenos kódu môže vyžadovať zmenu štruktúry.

Ako JAX počíta gradienty?

Transformácia grad vytvorí funkciu, ktorá využíva automatickú diferenciáciu. JAX podporuje forward aj reverse mode a poskytuje JVP a VJP primitíva. Derivácie sa skladajú podľa pravidiel jednotlivých operácií, nie cez konečné diferencie.

Prečo je náhodnosť explicitná?

Čistá funkcia má pri rovnakých vstupoch vrátiť rovnaký výsledok. JAX preto používa explicitné pseudonáhodné kľúče, ktoré sa rozdeľujú a odovzdávajú operáciám. Tak je tok náhodnosti reprodukovateľný a kompatibilný s paralelnými transformáciami.

Kedy JAX nemusí byť vhodný?

Pri aplikácii s množstvom dynamických objektov, častými vedľajšími efektmi alebo malými jednorazovými výpočtami môže transformačný model a čas kompilácie priniesť viac režijných nákladov než úžitku. Výber závisí od pracovnej záťaže a tímových skúseností.

Aký je vzťah JAX a XLA?

JAX pripraví výpočtový program a odovzdá ho kompilátorovému ekosystému OpenXLA, ktorý optimalizuje operácie pre konkrétne zariadenie. Používateľ pracuje s JAX API, zatiaľ čo XLA rieši fúziu operácií, rozloženie a generovanie nízkoúrovňového kódu.

Súvisiace pojmy

Súvisiace pojmy

Zdroje a redakčná stopa

Zdroje a redakčná stopa

  • JAX, Quickstart JAX, API Reference

Definícia je autorská odborná syntéza. Pri právnych a regulačných rozhodnutiach má prednosť aktuálne oficiálne znenie predpisu a posúdenie konkrétneho prípadu.