Pytorchコードのテンソル形状エラーを検出するための静的分析器であるPyteaは、いくつかの戦略を採用して複雑な実行パスを処理します。
1。保守的な剪定:Pyteaは、保守的な剪定技術を使用して、実行パスの数を減らします。この方法は、多数の条件付きブランチを使用してコードを分析するときに発生する可能性のある経路爆発を防ぐのに役立ちます。関連性の低いパスを剪定することにより、Pyteaはテンソル形状エラーを含む可能性が高い最も重要な実行パスに焦点を当てています[1] [2]。
2。シンボリック抽象化:Pyteaは、ループと条件付きステートメントの分析を簡素化するために、シンボリック抽象化に依存しています。この抽象化により、Pyteaはコードを実行する必要なく分析することができ、複雑なパスを処理するためにより効率的になります[1] [2]。
3。ループ処理:ループの場合、Pyteaは一定のバウンドループを展開し、その直線コードバージョンを分析します。データセットを繰り返しているような境界が不明なループの場合、Pyteaは、固定サイズのミニバッチと小さな残留ミニバッチの2つのケースでループ本体を分析します。このアプローチは、実行パス分析[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-that-run-code-on-both-cmd-and-id