Odborná definice
Odborná definice
JIT compilation je překlad programu nebo jeho výpočetní části do optimalizovaného strojového kódu během běhu aplikace, když jsou známé relevantní typy, tvary a cílové zařízení. V ML frameworcích může kompilátor fúzovat operace, odstranit redundanci, plánovat paměť a generovat jádra pro CPU, GPU nebo TPU. První volání často zahrnuje trasování a kompilaci, další volání s kompatibilním podpisem používají cache. Dynamické tvary, Python vedlejší efekty a časté změny statických argumentů mohou způsobit opakovanou kompilaci nebo graph break.
Srozumitelné vysvětlení
Srozumitelné vysvětlení
Bez JIT provádí runtime množství malých operací jednu po druhé. JIT nejprve uvidí větší výpočetní úsek, spojí vhodné kroky a připraví kód přímo pro konkrétní akcelerátor. První batch proto může trvat déle, lebo se program analyzuje a kompiluje. Nasledujúce batche bývají rychleji, zatímco mají stejné tvary a statické volby. Pokud aplikace při každé požadavku mění délku, vetvení nebo konfiguraci, může neustále vytvářet nové kompilované varianty a stratit očekávaný výkon.
Časté otázky
Časté otázky
Proč je první volání pomalšie?
Runtime musí funkci zachytit, optimalizovat a preložit pro zařízení. Čas kompilace se potom amortizuje opakovaným použitím. Při krátkej jednorazovej úloze může být režijný čas větší než úspora z rýchlejšieho výpočtu.
Co spúšťa rekompilaci?
Změna statických argumentů, datového typu, tvaru nebo shardingu může vytvořit nový cache klúč. Přesné pravidla závisí na frameworku. Monitoring počtu kompilací pomáhá odhalit neúmyselné varianty.
Co je fúze operací?
Kompilátor spojí více elementových nebo susediacich kroků do jednoho jadra, čím sníží spúšťaci réžiu a presuny dat mezi pamětí a výpočtovou jednotkou. Fúze musí zachovat numerickou a dátovou závislost programu.
Jako dynamické tvary ovlivňují JIT?
Některé kompilátory potřebují pevné rozměry, jiné podporují polymorfné tvary pouze v určitém rozsahu. Padding, bucketing nebo horné limity mohou snížit počet variant, ale zvyšují nevyužitý výpočet.
Je JIT vždy rychlejší?
Ne. Malé operace, časté graph breaks, nepravidelné řízení toku a nízký počet opakování mohou přinést nulový nebo záporný efekt. Hodnotí se odděleně compile time, warm latency, steady-state throughput a paměť.
Související pojmy
Související pojmy
Zdroje a redakční stopa
Zdroje a redakční stopa
- 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.
