Pytea, statický analyzátor pro detekci chyb tvaru tenzoru v kódu Pytorch, zpracovává komplexní cesty provádění pomocí několika strategií:
1. Konzervativní prořezávání: Pytea používá konzervativní techniku prořezávání ke snížení počtu prováděcích cest. Tato metoda pomáhá předcházet explozi cesty, ke které může dojít při analýze kódu s četnými podmíněnými větvemi. Prořezáním méně relevantních cest se Pytea zaměřuje na nejkritičtější cesty provádění, které pravděpodobně obsahují chyby tvaru tenzoru [1] [2].
2. Symbolická abstrakce: Pytea se spoléhá na symbolickou abstrakci, aby zjednodušila analýzu smyček a podmíněných prohlášení. Tato abstrakce umožňuje Pytea analyzovat kód, aniž by jej musela provádět, což zefektivňuje manipulaci s komplexními cestami [1] [2].
3. manipulace s smyčkou: Pro smyčky Pytea rozpouští smyčky s konstantním vázáním a analyzují jejich verzi přímého kódu. Pro smyčky s neznámými hranicemi, jako jsou ty, které iterují přes datové sady, analyzuje Pytea tělo smyčky pro dva případy: minibatch s pevnou velikostí a menší zbytkový minibatch. Tento přístup zjednodušuje analýzu smyček, které by jinak mohly komplikovat analýzu cesty provádění [1] [2].
4. mechanismus časového limitu: Pokud se počet cest provádění stává stále příliš velkým i přes prořezávání, Pytea používá mechanismus časového limitu. To zajišťuje, že analýza nezabere příliš dlouho, i když to znamená plně prozkoumat všechny možné cesty [1] [2].
Kombinací těchto strategií Pytea účinně zpracovává komplexní cesty provádění v Pytorch Code, což mu umožňuje rychle a přesně detekovat chyby tvaru tenzoru.
Citace:[1] https://sf.snu.ac.kr/publications/pytea.pdf
[2] https://arxiv.org/pdf/2112.09037.pdf
[3] https://sf.snu.ac.kr/pytea/
[4] https://www.researchgate.net/publication/357114953_a_static_analyzer_for_detecting_tensor_shape_errors_in_deep_neural_network_training_code
[5] https://dl.acm.org/doi/10.1145/3510454.3528638
[6] https://discuss.pytorch.org/t/pytorch-coding-conventions/42548
[7] https://www.computer.org/csdl/Proceedings-article/icse-companion/2022/959800a337/1apbpbou12
[8] https://stackoverflow.com/questions/57410835/Define-a-relative--forld-inside-a-function-That-RUN-CODE-On-Both-CMD-AND