Όταν χρησιμοποιείτε το `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. Πολλαπλασιαστικά ζητήματα: Επί του παρόντος, το MultIthreading με το `torch.compile` είναι buggy, το οποίο μπορεί να περιορίσει τη χρήση του σε ταυτόχρονα περιβάλλοντα [3].
7. Μη υποστηριζόμενα χαρακτηριστικά: Ορισμένα χαρακτηριστικά ή πολύπλοκες λειτουργίες μπορεί να μην υποστηρίζονται από το `torch.compile`, που οδηγούν σε θέματα συλλογής ή διαλείμματα γραφημάτων [5].
Για να μετριάσετε αυτά τα ζητήματα, συνιστάται να εφαρμόσετε λειτουργίες `torch.compile 'σε υψηλού επιπέδου, χρησιμοποιήστε δυναμικά σχήματα όταν είναι απαραίτητο και δοκιμάστε διεξοδικά την απόδοση του μοντέλου σε σύγκριση με το πρωτότυπο [1] [2].
Αναφορές:[1] https://pytorch.org/docs/stable/torch.compiler_troubleshooting.html
[2] https://lightning.ai/docs/fabric/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-prowerly
[7] https://www.aionlinecourse.com/blog/how-should-i-use-torch-compile-prowerly
[8] https://github.com/patrick-kidger/jaxteping/issues/196