Η Pytea, ένας στατικός αναλυτής για την ανίχνευση σφαλμάτων σχήματος τανυστή στον κώδικα Pytorch, χειρίζεται σύνθετες διαδρομές εκτέλεσης χρησιμοποιώντας διάφορες στρατηγικές:
1. Συντηρητικό κλάδεμα: Η Pytea χρησιμοποιεί μια συντηρητική τεχνική κλάδεσης για να μειώσει τον αριθμό των διαδρομών εκτέλεσης. Αυτή η μέθοδος βοηθά στην πρόληψη της έκρηξης διαδρομής, η οποία μπορεί να συμβεί κατά την ανάλυση κώδικα με πολυάριθμους κλάδους υπό όρους. Με το κλάδεμα λιγότερο συναφείς διαδρομές, η Pytea επικεντρώνεται στις πιο κρίσιμες διαδρομές εκτέλεσης που είναι πιθανό να περιέχουν σφάλματα σχήματος τανυστή [1] [2].
2. Συμβολική αφαίρεση: Η Pytea βασίζεται στη συμβολική αφαίρεση για να απλοποιήσει την ανάλυση των βρόχων και των δηλώσεων υπό όρους. Αυτή η αφαίρεση επιτρέπει στην Pytea να αναλύσει τον κώδικα χωρίς να χρειάζεται να την εκτελέσει, καθιστώντας την πιο αποτελεσματική για τη διαχείριση σύνθετων διαδρομών [1] [2].
3. Χειρισμός βρόχου: Για βρόχους, η Pytea ξετυλίγει σταθερούς βρόχους και αναλύει την έκδοση κώδικα ευθείας γραμμής. Για τους βρόχους με άγνωστα όρια, όπως αυτά που επαναλαμβάνονται σε σύνολα δεδομένων, η Pytea αναλύει το σώμα του βρόχου για δύο περιπτώσεις: ένα μίνι σταθερού μεγέθους και ένα μικρότερο υπολειμματικό μίνι μίνιο. Αυτή η προσέγγιση απλοποιεί την ανάλυση των βρόχων που θα μπορούσαν διαφορετικά να περιπλέξουν την ανάλυση διαδρομής εκτέλεσης [1] [2].
4. Μηχανισμός χρονικού ορίου: Εάν ο αριθμός των διαδρομών εκτέλεσης εξακολουθεί να γίνεται πολύ μεγάλος παρά το κλάδεμα, η Pytea χρησιμοποιεί έναν μηχανισμό χρονικού ορίου. Αυτό εξασφαλίζει ότι η ανάλυση δεν παίρνει υπερβολικά μεγάλο χρονικό διάστημα, ακόμη και αν σημαίνει ότι δεν διερευνά πλήρως όλες τις πιθανές διαδρομές [1] [2].
Συνδυάζοντας αυτές τις στρατηγικές, η Pytea χειρίζεται αποτελεσματικά σύνθετες διαδρομές εκτέλεσης στον κώδικα Pytorch, επιτρέποντάς του να ανιχνεύει γρήγορα και με ακρίβεια τα σφάλματα σχήματος τανυστή.
Αναφορές:[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/1EAPBPBOU12
[8] https://stackoverflow.com/questions/57410835/define-a-relative-path-folder-inside-a-function-that-run-code-on-cmd-and-id