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/proceceings-article/icse-companion/2022/959800a337/1eapbpbou12
[8] https://stackoverflow.com/questions/57410835/define-a-relative-path-folder-inside-a-function-that-run-code-on-both-cmd-and-id-id