Pytorch Tensor Error Analyzer 인 Pytea는 루프 구조를 효과적으로 관리하고 분석하기 위해 기술의 조합을 사용하여 Pytorch 코드의 루프를 처리합니다. 루프를 처리하는 방법은 다음과 같습니다.
1. 일정한 결점 루프 : Pytea는 일정한 결석 루프를 끊어집니다. 즉, 루프 본체를 직선 코드 인 것처럼 분석합니다. 이 접근법은 루프 제어 로직의 복잡성없이 루프를 일련의 연산으로 취급하여 분석을 단순화합니다 [1].
2. 알 수없는 결점 루프 : 데이터 세트를 반복하는 것과 같은 알려지지 않은 경계가있는 루프의 경우 PYTEA는 두 가지 특정 조건에서 루프 본체를 분석합니다. 그것은 고정 크기의 미니 배치의 경우와 더 작고 잔류 미니 패치의 경우를 고려합니다. 이를 통해 PYTEA는 정확한 반복 수를 미리 알 필요없이 데이터 세트 크기에 의존하는 루프를 처리 할 수 있습니다 [1].
3. 경로 치기 : PYTEA는 경로 치기를 사용하여 분석 해야하는 실행 경로 수를 제한합니다. 이 기술은 경로 폭발을 방지하는 데 도움이되며, 이는 복잡한 조건부 논리 또는 루프를 다룰 때 발생할 수 있습니다. Pytea는 가장 관련성이 높은 경로에 중점을 두어 효율성과 확장 성을 유지합니다 [1].
전반적으로, 루프 취급 루프에 대한 Pytea의 접근 방식은 성능의 정밀도의 균형을 유지하도록 설계되어 지나치게 복잡하거나 시간이 많이 걸리지 않고 Pytorch 애플리케이션의 텐서 모양 오류를 효과적으로 감지 할 수 있습니다.
인용 :[1] https://sf.snu.ac.kr/publications/pytea.pdf
[2] https://discuss.pytorch.org/t/synchronization-mechanism-with-different-istration-counts of-for-loop/94234
[3] https://github.com/pytorch/pytorch/issues/3636
[4] https://community.intel.com/t5/blogs/tech-innovation/artificial-intelligence-ai/python-roop-replacement-condling-conditional-pytorch-numpy/post/1652052
[5] https://stackoverflow.com/questions/54203451/how-to-terate-over-layers-in-pytorch
[6] https://stackoverflow.com/questions/66358684/how-o-i-ileminate-for-loop-in-this-pytorch-code
[7] https://discuss.pytorch.org/t/how-to-parallelize-a-loop-over-the-s-batch/32698
[8] https://discuss.pytorch.org/t/replacing-a-for-loop-with-indexing/17730