PYTEA, một trình phân tích tĩnh để phát hiện các lỗi hình dạng tenx
1. Cắt tỉa bảo thủ: PYTEA sử dụng một kỹ thuật cắt tỉa bảo thủ để giảm số lượng đường dẫn thực hiện. Phương pháp này giúp ngăn ngừa vụ nổ đường dẫn, có thể xảy ra khi phân tích mã với nhiều nhánh có điều kiện. Bằng cách cắt tỉa các đường dẫn ít liên quan hơn, PYTEA tập trung vào các đường thực hiện quan trọng nhất có khả năng chứa các lỗi hình dạng tenxơ [1] [2].
2. Trừu tượng tượng trưng: PyTea dựa vào sự trừu tượng tượng trưng để đơn giản hóa việc phân tích các vòng lặp và các câu lệnh có điều kiện. Sự trừu tượng hóa này cho phép PYTEA phân tích mã mà không cần thực hiện nó, làm cho nó hiệu quả hơn để xử lý các đường dẫn phức tạp [1] [2].
3. Xử lý vòng lặp: Đối với các vòng lặp, PYTEA không kiểm soát các vòng lặp liên tục và phân tích phiên bản mã đường thẳng của chúng. Đối với các vòng với các giới hạn không xác định, chẳng hạn như các vòng lặp trên các bộ dữ liệu, PYTEA phân tích cơ thể vòng lặp cho hai trường hợp: một minibatch có kích thước cố định và một minibatch còn lại nhỏ hơn. Cách tiếp cận này đơn giản hóa việc phân tích các vòng lặp có thể làm phức tạp phân tích đường dẫn thực thi [1] [2].
4 Điều này đảm bảo rằng phân tích không mất quá nhiều thời gian, ngay cả khi điều đó có nghĩa là không khám phá đầy đủ tất cả các đường dẫn có thể [1] [2].
Bằng cách kết hợp các chiến lược này, PYTEA xử lý hiệu quả các đường dẫn thực hiện phức tạp trong mã pytorch, cho phép nó phát hiện các lỗi hình dạng tenxơ một cách nhanh chóng và chính xác.
Trích dẫn:[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-both-cmd-and-id