Pytea, penganalisa statis untuk mendeteksi kesalahan bentuk tensor dalam kode pytorch, menangani jalur eksekusi yang kompleks dengan menggunakan beberapa strategi:
1. Pemangkasan Konservatif: Pytea menggunakan teknik pemangkasan konservatif untuk mengurangi jumlah jalur eksekusi. Metode ini membantu mencegah ledakan jalur, yang dapat terjadi ketika menganalisis kode dengan banyak cabang bersyarat. Dengan memangkas jalur yang kurang relevan, Pytea berfokus pada jalur eksekusi paling kritis yang cenderung mengandung kesalahan bentuk tensor [1] [2].
2. Abstraksi Simbolik: Pytea bergantung pada abstraksi simbolik untuk menyederhanakan analisis loop dan pernyataan bersyarat. Abstraksi ini memungkinkan Pytea untuk menganalisis kode tanpa perlu menjalankannya, membuatnya lebih efisien untuk menangani jalur kompleks [1] [2].
3. Penanganan loop: Untuk loop, pytea membuka gulungan loop yang terikat konstan dan menganalisis versi kode garis lurus mereka. Untuk loop dengan batasan yang tidak diketahui, seperti yang berulang di atas kumpulan data, Pytea menganalisis badan loop untuk dua kasus: minibatch berukuran tetap dan minibatch residu yang lebih kecil. Pendekatan ini menyederhanakan analisis loop yang mungkin menyulitkan analisis jalur eksekusi [1] [2].
4. Mekanisme Timeout: Jika jumlah jalur eksekusi masih menjadi terlalu besar meskipun pemangkasan, Pytea menggunakan mekanisme batas waktu. Ini memastikan bahwa analisis tidak memakan waktu yang terlalu lama, bahkan jika itu berarti tidak sepenuhnya mengeksplorasi semua jalur yang mungkin [1] [2].
Dengan menggabungkan strategi ini, Pytea secara efisien menangani jalur eksekusi yang kompleks dalam kode Pytorch, memungkinkannya mendeteksi kesalahan bentuk tensor dengan cepat dan akurat.
Kutipan:[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_train_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/proedings-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