A Pytea, um analisador estático para detectar erros de forma de tensor no código Pytorch, lida com caminhos complexos de execução, empregando várias estratégias:
1. Poda conservadora: Pytea usa uma técnica de poda conservadora para reduzir o número de caminhos de execução. Esse método ajuda a evitar a explosão do caminho, que pode ocorrer ao analisar o código com inúmeras ramificações condicionais. Ao podar os caminhos menos relevantes, a Pytea se concentra nos caminhos de execução mais críticos que provavelmente conterão erros de forma de tensor [1] [2].
2. Abstração simbólica: A pytea baseia -se na abstração simbólica para simplificar a análise de loops e declarações condicionais. Essa abstração permite que a Pytea analise o código sem precisar executá -lo, tornando -o mais eficiente para lidar com caminhos complexos [1] [2].
3. Manuseio de loop: Para loops, o pytea desenrola loops com ligações constantes e analisa sua versão de código linear. Para loops com limites desconhecidos, como aqueles que iteram sobre os conjuntos de dados, a Pytea analisa o corpo do loop por dois casos: um minibatch de tamanho fixo e um minibatch residual menor. Essa abordagem simplifica a análise de loops que, de outra forma, poderiam complicar a análise do caminho da execução [1] [2].
4. Mecanismo de tempo limite: Se o número de caminhos de execução ainda for muito grande, apesar da poda, a Pytea usa um mecanismo de tempo limite. Isso garante que a análise não leve um tempo excessivamente longo, mesmo que signifique não explorar completamente todos os caminhos possíveis [1] [2].
Ao combinar essas estratégias, a Pytea lida com eficiência de caminhos de execução complexos no código Pytorch, permitindo detectar erros de forma de tensor com rapidez e precisão.
Citações:[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/proecedings-article/icse-companion/2022/959800a337/1eapbpbou12
[8] https://stackoverflow.com/questions/57410835/define-a-relative-path-folder-inside-a-function-that-run-cod-on-both-cmd-e-id