Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Что такое обычные ловушки при использовании Torch.compile


Что такое обычные ловушки при использовании Torch.compile


При использовании `torch.compile` может возникнуть несколько общих ошибок:

1. Изменчивость производительности: `torch.compile` не всегда улучшает производительность и иногда может привести к более медленному выполнению или увеличению использования памяти. Крайне важно сравнить производительность скомпилированной модели с исходной моделью [2] [4].

2. Разрывы графика: если `torch.compile` встречается с неподдерживаемым кодом или сложными операциями, он может ввести« разрывы графика », разделяя код на оптимизированные и нептимизированные части. Хотя эти перерывы не являются смертельными, могут ограничить преимущества оптимизации. Переписывание проблемных разделов может помочь [2] [4].

3. Cryptic Сообщения об ошибках: сбои компиляции часто создают загадочные сообщения об ошибках, которые трудно отлаживать без помощи от команды Pytorch. Это может сделать устранение неполадок сложным [2] [4].

4. Длинное время компиляции: сам процесс компиляции может быть трудоемким, иногда занимающим несколько минут или даже дольше для более крупных моделей. Это делает целесообразным оценить «torch.compile» в конце разработки, а не на начальных этапах [1] [4].

5. Динамические формы и перекомпиляция: `torch.compile` изначально принимает статические формы тензора. Если формы изменяются, может произойти перекомпиляция, если не включены динамические формы. Это может привести к более медленным начальным прогонам из -за перекомпиляции [1].

6. Проблемы с многопользованием: в настоящее время многопоточности с `torch.compile` - это глюка, что может ограничить его использование в одновременных средах [3].

7. Неподдерживаемые функции: некоторые функции Numpy или сложные операции не могут быть поддержаны `torch.compile`, что приводит к проблемам компиляции или разрывам графиков [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-use-torch-compile-properly
[7] https://www.aionlinecourse.com/blog/how-should-i-use-torch-compile-properly
[8] https://github.com/patrick-kidger/jaxtyping/issues/196