Pytea, staattinen analysaattori tensorinmuotovirheiden havaitsemiseksi Pytorch -koodissa, käsittelee monimutkaisia suorituspolkuja käyttämällä useita strategioita:
1. Konservatiivinen karsinta: PYTEA käyttää konservatiivista karsintatekniikkaa suorituspolkujen määrän vähentämiseksi. Tämä menetelmä auttaa estämään polun räjähdyksen, joka voi tapahtua analysoitaessa koodia lukuisilla ehdollisilla haaroilla. Kuluttamalla vähemmän merkityksellisiä polkuja, PYTEA keskittyy kriittisimpiin suorituspolkuihin, jotka todennäköisesti sisältävät tensorin muotovirheitä [1] [2].
2. Symbolinen abstraktio: Pytea luottaa symboliseen abstraktioon silmukoiden ja ehdollisten lausuntojen analysoinnin yksinkertaistamiseksi. Tämä abstraktio antaa PYTEA: n analysoida koodia tarvitsematta suorittaa sitä, mikä tekee siitä tehokkaamman monimutkaisten polkujen käsittelemiseen [1] [2].
3. Silmukan käsittely: silmukoita varten Pytea purkaa jatkuvasti sidottuja silmukoita ja analysoi niiden suoraviivaista koodiversiota. Silmukoissa, joilla on tuntemattomia rajoja, kuten iteroivat tietojoukkoja, PYTEA analysoi silmukkakappaleen kahdessa tapauksessa: kiinteän kokoisen minibatchin ja pienemmän jäännös minibatchin. Tämä lähestymistapa yksinkertaistaa silmukoiden analysointia, jotka saattavat muuten vaikeuttaa suorituspolun analyysiä [1] [2].
4. Aikakatkaisumekanismi: Jos suorituspolkujen lukumäärä muuttuu edelleen liian suureksi karsinnasta huolimatta, PYTEA käyttää aikakatkaisumekanismia. Tämä varmistaa, että analyysi ei vie liian pitkää aikaa, vaikka se tarkoittaa, että se ei tutkita kaikkia mahdollisia polkuja [1] [2].
Yhdistämällä nämä strategiat PYTEA käsittelee tehokkaasti Pytorch -koodin monimutkaisia suorituspolkuja, jolloin se voi havaita tensorin muotovirheet nopeasti ja tarkasti.
Viittaukset:[1] https://sf.snu.ac.kr/publications/pyTea.pdf
[2] https://arxiv.org/pdf/2112.09037.pdf
[3] https://sf.snu.ac.kr/pyTea/
.
[5] https://dl.acm.org/doi/10.1145/3510454.3528638
[6] https://discuss.pytorch.org/t/pytorch-coding-conventions/42548
.
.