Pytea, un analyseur statique pour détecter les erreurs de forme du tenseur dans le code Pytorch, gère les chemins d'exécution complexes en utilisant plusieurs stratégies:
1. Élagage conservateur: Pytea utilise une technique d'élagage conservatrice pour réduire le nombre de chemins d'exécution. Cette méthode aide à prévenir l'explosion du chemin, ce qui peut se produire lors de l'analyse du code avec de nombreuses branches conditionnelles. En élagant les chemins moins pertinents, Pytea se concentre sur les chemins d'exécution les plus critiques qui sont susceptibles de contenir des erreurs de forme du tenseur [1] [2].
2. Abstraction symbolique: Pytea repose sur l'abstraction symbolique pour simplifier l'analyse des boucles et des déclarations conditionnelles. Cette abstraction permet à Pytea d'analyser le code sans avoir à l'exécuter, ce qui le rend plus efficace pour gérer des chemins complexes [1] [2].
3. Manipulation des boucles: pour les boucles, Pytea dérange les boucles constantes et analyse leur version de code en ligne droite. Pour les boucles avec des limites inconnues, telles que celles itération des ensembles de données, Pytea analyse le corps de la boucle pour deux cas: un minibatch de taille fixe et un minibatch résiduel plus petit. Cette approche simplifie l'analyse des boucles qui pourraient autrement compliquer l'analyse du chemin d'exécution [1] [2].
4. Mécanisme de délai d'expiration: Si le nombre de chemins d'exécution devient toujours trop grand malgré l'élagage, Pytea utilise un mécanisme de délai d'expiration. Cela garantit que l'analyse ne prend pas beaucoup de temps, même si cela signifie ne pas explorer pleinement tous les chemins possibles [1] [2].
En combinant ces stratégies, Pytea gère efficacement les chemins d'exécution complexes dans le code pytorch, lui permettant de détecter rapidement et avec précision les erreurs de forme du tenseur.
Citations:[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-path-folder-inside-a-function-that-run-code-on-both-cmd-and-id