Při použití `torch.compile` může nastat několik běžných úskalí:
1. Variabilita výkonu: `Torch.compile` ne vždy zlepšuje výkon a někdy může vést k pomalejšímu provedení nebo zvýšenému využití paměti. Je zásadní porovnat výkon kompilovaného modelu s původním modelem [2] [4].
2. rozbití grafů: Pokud se `Torch.compile narazí na nepodporované kód nebo komplexní operace, může zavést„ přestávky grafů “, rozdělit kód na optimalizované a neoptimalizované části. I když to není fatální, tyto přestávky mohou omezit optimalizační výhody. Přepisování problematických sekcí může pomoci [2] [4].
3. kryptické chybové zprávy: Poruchy kompilace často vytvářejí kryptické chybové zprávy, které je obtížné ladit bez pomoci týmu Pytorch. To může způsobit řešení problémů náročné [2] [4].
4. Dlouhé doby kompilace: Samotný proces kompilace může být časově náročný, někdy trvá několik minut nebo dokonce pro větší modely. Díky tomu je vhodné vyhodnotit „Torch.compile“ až do konce vývoje, než během počátečních fází [1] [4].
5. Dynamické tvary a rekonstrukce: `Torch.compile` původně předpokládá statické tvary tenzoru. Pokud se změní tvary, může dojít k rekonstrukce, pokud nejsou povoleny dynamické tvary. To může vést k pomalejším počátečním běhu v důsledku rekonstrukce [1].
6. Problémy s multithreadingem: V současné době je multithreading s `torch.compile` buggy, což může omezit jeho použití v souběžném prostředí [3].
7. Nepodporované vlastnosti: Některé funkce NUMPY nebo komplexní operace nemusí být podporovány `Torch.compile`, což vede k problémům s kompilací nebo zlomů grafů [5].
Pro zmírnění těchto problémů se doporučuje použít „Torch.compile“ na funkce na vysoké úrovni, v případě potřeby používat dynamické tvary a důkladně otestovat výkon kompilovaného modelu ve srovnání s původním [1] [2].
Citace:[1] https://pytorch.org/docs/stable/torch.compiler_troubleshooting.html
[2] https://lightning.ai/docs/fabric/2.2.3/advanced/compile.html
[3] http://blog.ezyang.com/2024/11/ways-to-use-torch-copile/
[4] https://lightning.ai/docs/pytorch/stable/advanced/compile.html
[5] https://pytorch.org/docs/stable/torch.compiler_faq.html
[6] https://stackoverflow.com/questions/75886125/how-shold-isuse-torch-copile-properly
[7] https://www.aionlinecourse.com/blog/how-shold-isuse-copile-properly
[8] https://github.com/patrick-kidger/jaxtyping/issues/196