Pytea, statyczny analizator wykrywania błędów kształtu tensora w kodzie Pytorcha, obsługuje złożone ścieżki wykonywania, stosując kilka strategii:
1. Konserwatywne przycinanie: Pytea stosuje konserwatywną technikę przycinania w celu zmniejszenia liczby ścieżek wykonania. Ta metoda pomaga zapobiegać eksplozji ścieżki, która może wystąpić podczas analizy kodu z licznymi gałęziami warunkowymi. Przycinając mniej istotne ścieżki, Pytea koncentruje się na najbardziej krytycznych ścieżkach wykonania, które mogą zawierać błędy kształtu tensora [1] [2].
2. Abstrakcja symboliczna: Pytea opiera się na symbolicznej abstrakcji w celu uproszczenia analizy pętli i instrukcji warunkowych. Ta abstrakcja pozwala Pytea analizować kod bez konieczności wykonywania go, czyniąc go bardziej wydajnym w obsłudze złożonych ścieżek [1] [2].
3. Obsługa pętli: W przypadku pętli Pytea rozwija ciągłe pętle i analizuje ich wersję kodu prostego. W przypadku pętli z nieznanymi granicami, takimi jak te iteracyjne nad zestawami danych, Pytea analizuje korpus pętli w dwóch przypadkach: minibatch o stałej wielkości i mniejszy resztkowy minibatch. Takie podejście upraszcza analizę pętli, które w przeciwnym razie mogłyby skomplikować analizę ścieżki wykonania [1] [2].
4. Mechanizm limitu czasu: Jeśli liczba ścieżek wykonania nadal staje się zbyt duża pomimo przycinania, Pytea stosuje mechanizm limitu czasu. Zapewnia to, że analiza nie zajmuje nadmiernie długo, nawet jeśli oznacza nie w pełni zbadanie wszystkich możliwych ścieżek [1] [2].
Łącząc te strategie, Pytea skutecznie obsługuje złożone ścieżki wykonania w kodzie Pytorcha, umożliwiając szybkie i dokładne wykrywanie błędów kształtu tensora.
Cytaty:[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/proedioning-article/icse-companion/2022/959800a337/1apbpbou12
[8] https://stackoverflow.com/questions/57410835/define-a-relave-path-folder-inside-a-function-that-Run-Code-on-both-cmd-and-id