使用“ Torch.compile”时,可能会出现几个常见的陷阱:
1。性能变异性:`torch.compile`并不总是提高性能,有时会导致执行速度较慢或增加内存使用情况。将编译模型与原始模型的性能进行比较至关重要[2] [4]。
2.图形断裂:如果``torch.compile`遇到了不支持的代码或复杂的操作'',它可能会引入“图形断裂”,将代码分配到优化和不优化的零件中。尽管不是致命的,但这些休息时间可以限制优化益处。重写有问题的部分可以帮助[2] [4]。
3.隐秘错误消息:汇编失败通常会产生隐秘的错误消息,而无需Pytorch团队的协助,这些消息很难调试。这可以使故障排除具有挑战性[2] [4]。
4。较长的汇编时间:汇编过程本身可能耗时,有时需要几分钟甚至更长的时间才能用于较大的型号。这使得建议在开发结束时评估“ torch.compile”,而不是在初始阶段[1] [4]。
5。动态形状和重新编译:`torch.compile`最初假定静态张量形状。如果形状变化,除非启用动态形状,否则可能会进行重新编译。这可能会导致由于重新编译而导致初始运行较慢[1]。
6。多线程问题:当前,使用`torch.compile'的多线程是错误的,它可能会限制其在并发环境中的使用[3]。
7。不支持的功能:``torch.compile''可能不支持一些Numpy功能或复杂的操作,从而导致编译问题或图形断裂[5]。
为了减轻这些问题,建议将“ Torch.compile”应用于高级功能,在必要时使用动态形状,并与原始模型相比进行彻底测试所编译的模型的性能[1] [2]。
引用:[1] https://pytorch.org/docs/stable/torch.compiler_troubleshooting.html
[2] https://lightning.ai/docs/fabric/2.2.3/advanced/compile.html
[3] http://blog.ezyang.com/2024/11/ways-to-use-torch-compile/
[4] https://lightning.ai/docs/pytorch/stable/advanced/compile.html
[5] https://pytorch.org/docs/stable/torch.compiler_faq.html
[6] https://stackoverflow.com/questions/75886125/how-should-i-i-i-is-i-i-i-is-torch-compile-properly
[7] https://www.aionlinecourse.com/blog/how-should-i-is-i-is---------compile-properly
[8] https://github.com/patrick-kidger/jaxtyping/issues/196