Η βελτιστοποίηση της ταχύτητας κατασκευής για Pytorch και Pytorch/XLA περιλαμβάνει αρκετές στρατηγικές:
Βελτιστοποίηση της ταχύτητας κατασκευής Pytorch
1. Χρησιμοποιήστε τα προ-κατασκευασμένα δυαδικά αρχεία: Αντί να χτίζετε από την πηγή, χρησιμοποιήστε προ-κατασκευασμένα δυαδικά αρχεία που διατίθενται από την επίσημη ιστοσελίδα της Pytorch. Αυτά τα δυαδικά αρχεία βελτιστοποιούνται με βιβλιοθήκες όπως το MKL και το μάγμα, οι οποίες είναι ζωτικής σημασίας για την απόδοση [5].
2. Βελτιστοποιήστε τη διαδικασία δημιουργίας: Εάν πρέπει να δημιουργήσετε από την πηγή, χρησιμοποιήστε εργαλεία όπως "ccache` σε cache compiled αρχεία. Αυτό μειώνει σημαντικά τις ώρες ανοικοδόμησης μετά από μικρές αλλαγές στον κώδικα [7].
3. Παραλληλιστικά σύνταξη: Χρησιμοποιήστε τους επεξεργαστές πολλαπλών πυρήνων ρυθμίζοντας τον αριθμό των εργασιών δημιουργίας για να ταιριάζει με τον αριθμό των διαθέσιμων πυρήνων CPU. Αυτό μπορεί να γίνει χρησιμοποιώντας σημαίες όπως `-j` με` make` ή παρόμοιες επιλογές στο σύστημα κατασκευής σας.
Βελτιστοποίηση της απόδοσης pytorch/xla
1. Χρησιμοποιήστε τεμπέλης εκτέλεσης: Το Pytorch/XLA χρησιμοποιεί την εκτέλεση τεμπέλης τανυστή, η οποία καταγράφει τις λειτουργίες σε ένα γράφημα πριν από την εκτέλεση. Αυτό επιτρέπει τη βελτιστοποίηση με τη συγχώνευση πολλαπλών λειτουργιών σε μία μόνο βελτιστοποιημένη λειτουργία [4] [6].
2. Δεδομένα προφόρτισης: Χρησιμοποιήστε το `mpdeviceLoader` για να προφορτώσετε δεδομένα σε συσκευές XLA, μειώνοντας τα γενικά έξοδα επικοινωνίας μεταξύ της CPU κεντρικού υπολογιστή και της συσκευής [8].
3. Ελαχιστοποίηση επικοινωνίας CPU-συσκευής: Μειώστε ή αφαιρέστε τις λειτουργίες που απαιτούν συγχρονισμό μεταξύ της συσκευής CPU και XLA, όπως δηλώσεις εκτύπωσης ή επανάκλησης καταγραφής [8].
4. Χρησιμοποιήστε φραγμούς για βελτιστοποίηση: Εισαγάγετε εμπόδια όπως το `xm.mark_step ()` για να σπάσετε μεγάλα γραφήματα υπολογισμού σε μικρότερα, επιτρέποντας στον μεταγλωττιστή XLA να τα βελτιστοποιήσει πιο αποτελεσματικά [8].
5. Αξιοποιήστε το σύννεφο TPU: Για εκπαίδευση μεγάλης κλίμακας, χρησιμοποιήστε το σύννεφο TPU με PYTORCH/XLA για να επιτύχετε υψηλής απόδοσης και οικονομικά αποδοτική εκπαίδευση [2] [9].
Αναφορές:[1] https://www.reddit.com/r/machinelearning/comments/kvs1ex/d_here_are_17_ways_of_making_pytorch_training/
[2] https://www.youtube.com/watch?v=pspmrtwums8
[3] https://sebastianraschka.com/blog/2023/pytorch-faster.html
[4] https://pytorch.org/xla/release/r2.4/index.html
[5] https://discuss.pytorch.org/t/is-building-from-source-really-speed-peed-peed-peed/91057
[6] https://pytorch.org/xla/release/2.2/index.html
[7] https://discuss.pytorch.org/t/any-tips-for-speeding-up-the-source-build-process/184558
[8] https://pytorch.org/xla/master/learn/xla-overview.html
[9] https://cloud.google.com/blog/topics/developers-practitioners/scaling-deep-learning-workloads-pytorch-xla-and-cloud-pu-vm