Trénovanie a optimalizácia · Optimalizácia výpočtových grafov

Kompilácia just-in-time

JIT compilation

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

Odborná definícia

Význam a odborné vymedzenie pojmu

JIT compilation je preklad programu alebo jeho výpočtovej časti do optimalizovaného strojového kódu počas behu aplikácie, keď sú známe relevantné typy, tvary a cieľové zariadenie. V ML frameworkoch môže kompilátor fúzovať operácie, odstrániť redundanciu, plánovať pamäť a generovať jadrá pre CPU, GPU alebo TPU. Prvé volanie často zahŕňa trasovanie a kompiláciu, ďalšie volania s kompatibilným podpisom používajú cache. Dynamické tvary, Python vedľajšie efekty a časté zmeny statických argumentov môžu spôsobiť opakovanú kompiláciu alebo graph break.

Zrozumiteľné vysvetlenie

Ako sa pojem používa v praxi

Bez JIT vykonáva runtime množstvo malých operácií jednu po druhej. JIT najprv uvidí väčší výpočtový úsek, spojí vhodné kroky a pripraví kód priamo pre konkrétny akcelerátor. Prvý batch preto môže trvať dlhšie, lebo sa program analyzuje a kompiluje. Nasledujúce batche bývajú rýchlejšie, kým majú rovnaké tvary a statické voľby. Ak aplikácia pri každej požiadavke mení dĺžku, vetvenie alebo konfiguráciu, môže neustále vytvárať nové kompilované varianty a stratiť očakávaný výkon.

Časté otázky

Otázky, ktoré spresňujú význam

Prečo je prvé volanie pomalšie?

Runtime musí funkciu zachytiť, optimalizovať a preložiť pre zariadenie. Čas kompilácie sa potom amortizuje opakovaným použitím. Pri krátkej jednorazovej úlohe môže byť režijný čas väčší než úspora z rýchlejšieho výpočtu.

Čo spúšťa rekompiláciu?

Zmena statických argumentov, dátového typu, tvaru alebo shardingu môže vytvoriť nový cache kľúč. Presné pravidlá závisia od frameworku. Monitoring počtu kompilácií pomáha odhaliť neúmyselné varianty.

Čo je fúzia operácií?

Kompilátor spojí viac elementových alebo susediacich krokov do jedného jadra, čím zníži spúšťaciu réžiu a presuny dát medzi pamäťou a výpočtovou jednotkou. Fúzia musí zachovať numerickú a dátovú závislosť programu.

Ako dynamické tvary ovplyvňujú JIT?

Niektoré kompilátory potrebujú pevné rozmery, iné podporujú polymorfné tvary iba v určitom rozsahu. Padding, bucketing alebo horné limity môžu znížiť počet variantov, ale zvyšujú nevyužitý výpočet.

Je JIT vždy rýchlejší?

Nie. Malé operácie, časté graph breaks, nepravidelné riadenie toku a nízky počet opakovaní môžu priniesť nulový alebo záporný efekt. Hodnotí sa oddelene compile time, warm latency, steady-state throughput a pamäť.

Súvisiace pojmy

Významové a tematické súvislosti

Pojem v rozhodovaní

Odborné články, ktoré tento pojem používajú v praxi

Zdroje a redakčná stopa

Použité východiská a odborná revízia

  • JAX, Just-in-time compilation OpenXLA documentation

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.