Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Pytea는 Pytorch 코드에서 복잡한 실행 경로를 어떻게 처리합니까?


Pytea는 Pytorch 코드에서 복잡한 실행 경로를 어떻게 처리합니까?


Pytorch 코드에서 텐서 모양 오류를 감지하기위한 정적 분석기 인 Pytea는 몇 가지 전략을 사용하여 복잡한 실행 경로를 처리합니다.

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-t that-run-code-on-both-cmd-and-id