Νέα

Η ομάδα PyTorch κάνει το ντεμπούτο της στον τεχνικό χάρτη πορείας της, με σχεδόν εκατό σελίδες εγγράφων που αποκαλύπτουν την κατεύθυνση ανάπτυξής της το δεύτερο εξάμηνο του 2024.

2024-07-15

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


Νέα Έκθεση Σοφίας

Επιμέλεια: Qiao Yang

[Εισαγωγή στη Νέα Σοφία]Πρόσφατα, η ομάδα της PyTorch ανακοίνωσε για πρώτη φορά τον οδικό χάρτη ανάπτυξης, ο οποίος τροποποιήθηκε άμεσα από εσωτερικά τεχνικά έγγραφα, αποκαλύπτοντας την επόμενη κατεύθυνση ανάπτυξης αυτής της κλασικής βιβλιοθήκης ανοιχτού κώδικα.

Εάν αναπτύσσεστε στην Python στον τομέα της AI, ο PyTorch πρέπει να είναι ένας από τους παλιούς σας φίλους. Το 2017, η Meta AI κυκλοφόρησε αυτήν τη βιβλιοθήκη ανοιχτού κώδικα στον τομέα της μηχανικής μάθησης και της βαθιάς μάθησης, η οποία διανύει τώρα τον έβδομο χρόνο της.

Σύμφωνα με τα στατιστικά στοιχεία του Assembly AI για το 2021, τα κορυφαία 30 πιο δημοφιλή μοντέλα στο HuggingFace μπορούν όλα να εκτελεστούν στο PyTorch και το 92% των μοντέλων είναι αποκλειστικό του PyTorch. Αυτή η αναλογία κάνει πολλούς ανταγωνιστές, συμπεριλαμβανομένου του TensorFlow.


Μόλις στις 10 Ιουλίου, η ομάδα μηχανικών της PyTorch κυκλοφόρησε δημόσια το έγγραφο του οδικού χάρτη της για πρώτη φορά, που καθορίζει την κατεύθυνση ανάπτυξης κατά το δεύτερο εξάμηνο του 2024.

Ο Soumith Chintala, συνιδρυτής της Meta και επικεφαλής της ομάδας PyTorch, ανακοίνωσε επίσημα τα νέα στο Twitter.

Είπε ότι ελπίζει να δημοσιοποιήσει τα ερευνητικά κίνητρα και τους στόχους των μηχανικών.

"Ενώ όλη η ανάπτυξη του PyTorch είναι δημόσια στο GitHub, τα έγγραφα σχεδιασμού και οδικού χάρτη που γράφτηκαν από ομάδες σε διάφορες θυγατρικές της PyTorch δεν είναι δημόσια, γι' αυτό αποφασίσαμε να κάνουμε αλλαγές για να αυξήσουμε τη διαφάνεια."


Ο Gott Brath, τεχνικός διευθυντής έργου της ομάδας PyTorch, έκανε επίσης μια παρόμοια δήλωση στο φόρουμ.


Σκεφτήκαμε πώς να μοιραστούμε έναν οδικό χάρτη της δουλειάς που κάνει η ομάδα στο PyTorch. Σχεδιάζουμε ανά διετία, επομένως αυτές είναι μερικές δημόσιες εκδόσεις των σχεδίων μας H2 OSS 2024 για αρκετές βασικές περιοχές στο PyTorch.

Αυτά τα αρχεία είναι βασικά τα εσωτερικά έγγραφα και τα σχέδια εργασίας της ομάδας PyTorch Μετά τη διαγραφή κάποιου περιεχομένου, δημοσιεύτηκαν ως οδικός χάρτης, ο οποίος περιλαμβάνει τις ακόλουθες πτυχές του PyTorch:

- Βιβλιοθήκες πυρήνων και βασική απόδοση

- Διανέμονται

- torchune, Torchrec, TorchVision

- PyTorch Edge

- Φόρτωση δεδομένων (DataLoading)

- Πυρήνας και ανάπτυξη μεταγλωττιστή

- Υποδομή προγραμματιστών

Κάθε έγγραφο περιέχει τουλάχιστον τρία μέρη, βασισμένα σε ιδέες OKR:

- Ιστορικό

- Οι κορυφαίοι 5 τομείς εστίασης και στόχοι: στόχοι, βασικά αποτελέσματα, γνωστοί ή άγνωστοι κίνδυνοι και αντίστοιχα μέτρα μετριασμού (μέγιστο μία σελίδα)

- Κορυφαίες 3~5 πτυχές για τη βελτίωση του επιπέδου μηχανικής: Ταξινόμηση πυλώνα BE, στόχοι, δείκτες/κατάσταση/ειδικοί στόχοι, γνωστοί ή άγνωστοι κίνδυνοι και μέτρα μετριασμού, αντίκτυπος/κόστος, προτεραιότητα/επίπεδο εμπιστοσύνης (μέγιστο μία σελίδα)

Μεταξύ αυτών, ο πυλώνας BE μπορεί να θεωρηθεί ως τα "πέντε μέγιστα" που έγραψε η Meta στην ομάδα ανάπτυξης Τα συγκεκριμένα περιεχόμενα είναι:

Better Code, Better Doc, Empowering teams, Modern Code, Better Architecture

Δεν ξέρω αν κάποιοι προγραμματιστές έχουν προβληματίσει το μήκος των εγγράφων λόγω του κανόνα "μέγιστης σελίδας", τα έγγραφα είναι πιο ακριβά από τα μεγάλα έγγραφα Η συμπύκνωση πολλών απαιτήσεων ανάπτυξης σε μια σελίδα δεν εξοικονομεί μόνο χρόνο δοκιμάζει επίσης τις ικανότητες του συγγραφέα.

Επιπλέον, μερικές εξαιρετικές ιδέες της ομάδας ανάπτυξης Meta μπορούν επίσης να φανούν στο έγγραφο, όπως η έμφαση στη συνεργασία διαφόρων ομάδων λειτουργιών, η έμφαση στην ενοποίηση API και η κοινή ανάπτυξη με εξωτερικούς συνεργάτες και η έμφαση στην αλληλεπίδραση με την κοινότητα ανοιχτού κώδικα και τους προγραμματιστές.

Όταν ξεκινάει μια νέα βάση κώδικα όπως το ExecuTorch, ή θέλει να αυξήσει την επιρροή του μεταγλωττιστή PyTorch, η ομάδα ξεκινά συνήθως από δύο πτυχές: η μία είναι να καταβάλει πλήρεις προσπάθειες για να βελτιώσει την απόδοση και να στοχεύσει άμεσα το SOTA, από την άλλη βαθιά ενσωμάτωση Ξεκινήστε με περισσότερες θήκες χρήσης εκτός συσκευασίας.

Ίσως αυτά να είναι τα κλειδιά της επιτυχίας της Meta στο πεδίο ανοιχτού κώδικα όλα αυτά τα χρόνια.

Ακολουθεί ένα μερικό απόσπασμα και περίληψη του περιεχομένου κάθε εγγράφου.


Αρχική διεύθυνση: https://dev-discuss.pytorch.org/t/meta-pytorch-team-2024-h2-roadmaps/2226

Βιβλιοθήκες πυρήνων και βασική απόδοση

Οι βασικές βιβλιοθήκες που εμπλέκονται στο έγγραφο περιλαμβάνουν τις TendorDict, torchao, NN, TorchRL, κ.λπ.

Όσον αφορά την απόδοση, η ομάδα της PyTorch έχει προτείνει τον στόχο της επίτευξης απόδοσης SOTA στην εκπαίδευση μοντέλων και την εξαγωγή συμπερασμάτων.

Το περασμένο έτος υπήρξε μάρτυρας της ταχείας ανάπτυξης του GenAI Πολλές εξωτερικές βιβλιοθήκες έχουν εμφανιστεί για να υποστηρίξουν την ανάπτυξη στον τομέα της έρευνας, αλλά πολλές από αυτές δεν βασίζονται άμεσα στην PyTorch, κάτι που θα απειλήσει την κυριαρχία της PyTorch στον τομέα της επιστημονικής έρευνας.

Προκειμένου να συμβαδίσει και πάλι με το ρυθμό, η PyTorch θα παρέχει υποστήριξη για κοινές τεχνολογίες ανάπτυξης, όπως η κβαντοποίηση, η αραίωση, το MoE και η εκπαίδευση χαμηλής ακρίβειας, συμπεριλαμβανομένων δομικών στοιχείων και API (κυρίως ενσωματωμένα σε torchao) για να βοηθήσει μοντέλα διαφόρων αρχιτεκτονικών Transformer βελτίωση της απόδοσης.

Η βιβλιοθήκη torchao μπορεί να υποστηρίξει τους ερευνητές να προσαρμόσουν τεχνικές dtype, διάταξης και βελτιστοποίησης υψηλής απόδοσης εντός του πλαισίου PyTorch, επεκτείνοντας το εύρος χρήσης σε διάφορα σενάρια όπως εκπαίδευση, συμπερασματικά και συντονισμός.

Επιπλέον, οι ενημερώσεις στη βασική βιβλιοθήκη θα περιλαμβάνουν τα εξής:

- Ο πυρσός της βιβλιοθήκης αυτόματης βελτιστοποίησης έχει επιτύχει σημαντική επιτυχία.

- Αντιμετωπίζει τη βασική αρθρωτή διάταξη του TendorDict, υποστηρίζει τη σειριοποίηση φορτίων/αποθηκών και το κάνει να εκτελείται 2 φορές πιο γρήγορα σε λειτουργία ανυπομονησίας

- Συνεχίζοντας την επιτυχία του φορτίου χαρτογραφημένης μνήμης το πρώτο εξάμηνο του έτους, συνεχίστε να βελτιώνετε την απόδοση και την ασφάλεια της φόρτωσης/αποθήκευσης του μοντέλου

- Μειώστε τα γενικά έξοδα TorchRL κατά 50%

- Προστέθηκε βασική υποστήριξη για NoGIL

- Διορθώθηκε το πρόβλημα ότι η μεταβλητή TORCH_env που αναφέρθηκε από τους χρήστες δεν λειτουργεί

Το έγγραφο αναφέρει επίσης την κατάργηση της μονάδας nn.transformer, λέγοντας ότι θα κυκλοφορήσει μια σειρά από σεμινάρια και περιπτώσεις χρήσης που θα δείχνουν πώς να χρησιμοποιείτε τα torch.compile, sdpa, NJT, FlexAttention, custom_op, torchao και άλλες μονάδες για την κατασκευή του Transformer.

διανέμονται

Η προεκπαίδευση LLM συνήθως εκτείνεται σε δεκάδες ή και χιλιάδες GPU, και καθώς η κλίμακα παραμέτρων του μοντέλου αυξάνεται σταδιακά, η εξαγωγή συμπερασμάτων και η λεπτομέρεια είναι δύσκολο να ολοκληρωθούν σε μία μόνο GPU.

Επομένως, η επόμενη "κατανεμημένη" διάταξη του PyTorch καλύπτει πλήρως τους τρεις συνδέσμους εκπαίδευσης, συμπερασμάτων και λεπτομέρειας και προτείνει την επίτευξη κατανεμημένης εκπαίδευσης εξαιρετικά μεγάλης κλίμακας, μικροσυντονισμού υψηλής απόδοσης στη μνήμη και κατανεμημένης συλλογιστικής πολλαπλών κεντρικών υπολογιστών .

τρένο

Οι παράλληλες λειτουργίες που υποστηρίζονται εγγενώς από το PyTorch περιλαμβάνουν κυρίως τα ακόλουθα:

- Πλήρης μοιρασμένα δεδομένα παράλληλα (FSDP)

-Hybrid Sharing Data Parallel (HSDP)

-Παράλληλος τανυστήρας (TP)

- Παράλληλος αγωγός (PP)

- Παράλληλη ακολουθία (SP)

-Παράλληλο περιβάλλοντος (CP)

Το PyTorch ελπίζει να διαμορφώσει περαιτέρω διάφορες παράλληλες μεθόδους στο TorchTitan, επιτρέποντας στους προγραμματιστές να συνδυάσουν ελεύθερα και να επιτύχουν παραλληλισμό Ν-διαστάσεων όπως απαιτείται.


Το έγγραφο αναφέρει συγκεκριμένα την ανάγκη προσθήκης υποστήριξης για δύο αναδυόμενες αρχιτεκτονικές, το MoE και το multi-modality, όπως ο ειδικός παραλληλισμός και η βελτιστοποίηση των αλγορίθμων δρομολόγησης.

Εκτός από την ενημέρωση του ίδιου του TorchTitan, η διανεμημένη ομάδα πρέπει επίσης να συνεργαστεί στενά με την ομάδα μεταγλωττιστή για να ενσωματωθεί καλύτερα με τη μονάδα torch.compile για να φέρει πρόσθετες βελτιώσεις απόδοσης σε μεγάλης κλίμακας κατανεμημένα σενάρια.

Τελειοποίηση και συμπέρασμα

Βελτιστοποίηση: Σε συνδυασμό με πυρσό, θέτουν σε χρήση τη λύση FSDP2 LoRA/QLoRA και υποστηρίζουν την κβαντοποίηση NF4 του λεξικού κατάστασης μοντέλου

Συλλογισμός: Το PP και το DP έχουν γίνει ο πυρήνας των κατανεμημένων API Στη συνέχεια, πρέπει να δώσουμε προσοχή στον κατανεμημένο συλλογισμό του torchtitan, ο οποίος υποστηρίζει ασύγχρονες μεθόδους PP.

Το έγγραφο αναφέρει επίσης ότι το API συμπερασμάτων του HuggingFace θα μεταφερθεί από το PiPPy στο PyTorch (ολοκληρώθηκε από το HuggingFace).

torchtune, TorchRec, TorchVision

δαυλός

Η κυκλοφορία του torchtune στοχεύει να βοηθήσει τους χρήστες να βελτιστοποιήσουν το LLM πιο βολικά. Αυτή είναι επίσης η επίσημη λύση για τη λεπτομέρεια του μοντέλου Llama.

Το "fine-tuning" που ορίζεται από το torchtune έχει ένα πολύ ευρύ φάσμα, το οποίο μπορεί να συνοψιστεί σε τρεις τύπους σεναρίων:

- Προσαρμογή μοντέλου σε σύνολα δεδομένων συγκεκριμένου τομέα ή εργασίες κατάντη

- Μοντελοποίηση ανταμοιβής και προτιμήσεων, όπως RLHF, DPO, κ.λπ.

- Εκπαιδευτική διαδικασία συμπεριλαμβανομένης της απόσταξης και της κβαντοποίησης

Οι ενημερώσεις κατά το δεύτερο εξάμηνο του έτους θα υποστηρίξουν τη λεπτομέρεια για τις ροές εργασιών των αντιπροσώπων, ενώ θα επικεντρωθούν σε βελτιώσεις στην απόδοση μικρορύθμισης.

Η ομάδα θα συνεργαστεί με compile, core, distributed και άλλες ενότητες για να παρέχει αποτελεσματική λεπτομέρεια και να δημιουργήσει αντιπροσωπευτικά σημεία αναφοράς απόδοσης μικρορύθμισης εντός του οικοσυστήματος PyTorch.

Δεδομένου ότι το torchtune είναι επίσης μια νεότερη βιβλιοθήκη ανοιχτού κώδικα, η αλληλεπίδραση με την κοινότητα ανοιχτού κώδικα είναι επίσης απαραίτητη.

Το έγγραφο προτείνει τη δημοσίευση άρθρων ιστολογίου και σεμιναρίων, τη διεξαγωγή τεχνικών διαλέξεων, κ.λπ. για τη βελτίωση της κατανόησης των χρηστών, θα καθορίσει επίσης ποσοτικούς δείκτες για τη μέτρηση του μεριδίου της συμβολής της φανέλας στο οικοσύστημα LLM.

Εκτός από την κοινότητα ανοιχτού κώδικα, το torchune θα ενσωματωθεί με τουλάχιστον έναν συνεργάτη και θα συμμετέχει στην κοινότητά του για να προωθήσει τη χρήση του πυρσού.

TorchVision

Ως ο απόλυτος κυρίαρχος παίκτης στον τομέα του βιογραφικού σημειώματος, η τεχνολογία της TorchVision είναι σχετικά ώριμη, επομένως υπάρχουν πολύ λίγες ενημερώσεις που προτείνονται στον οδικό χάρτη.

Η ομάδα θα συνεχίσει να εργάζεται προς την κατεύθυνση της προεπεξεργασίας, θα υποστηρίζει περισσότερες μορφές (όπως WebP, HEIC) και πλατφόρμες (όπως CUDA) στον χώρο κωδικοποίησης/αποκωδικοποίησης εικόνας και βελτιώνει την απόδοση κωδικοποίησης/αποκωδικοποίησης της μορφής jpeg σε GPU.

TorchRec

Το TorchRec στοχεύει να παρέχει πρωτόγονα αραιότητας και παραλληλισμού που χρησιμοποιούνται συνήθως σε συστήματα συστάσεων μεγάλης κλίμακας Η πρώτη σταθερή έκδοση, η TorchRec 1.0, θα κυκλοφορήσει το φθινόπωρο.

Ακρη

Επί του παρόντος, η βιβλιοθήκη ανοιχτού κώδικα ExecuTorch έχει κυκλοφορήσει μια έκδοση Alpha, η οποία βασίζεται κυρίως στο torch.compile και στο torch.export για την υποστήριξη ανάλυσης μοντέλων, εντοπισμού σφαλμάτων και συμπερασμάτων σε κινητές συσκευές και συσκευές άκρων (όπως AR/VR, φορητές συσκευές).

Το δεύτερο εξάμηνο του έτους, η ομάδα του Edge θα κυκλοφορήσει την έκδοση Beta του xecuTorch και θα παρέχει λύσεις εντός του οικοσυστήματος PyTorch για τα μοντέλα της σειράς Llama της Meta και άλλα μοντέλα ανοιχτού κώδικα.

Οι βασικοί στόχοι καλύπτουν κυρίως δύο κατευθύνσεις. Το πρώτο είναι να παρέχει βασικές λειτουργίες και αξιόπιστη υποδομή για τεχνητή νοημοσύνη στη συσκευή, όπως:

- Διασφάλιση σταθερότητας API για C++ και Python

- Εφαρμογή μιας σειράς βασικών λειτουργιών: υποστήριξη συμπίεσης μοντέλου, διαχείριση θέσης προσωρινής μνήμης διακομιστή μεσολάβησης, διαχωρισμός δεδομένων και προγραμμάτων

Το δεύτερο είναι η προστασία αυτής της εκκολαπτόμενης βάσης κώδικα, η καλλιέργεια επιρροής στην κοινότητα ανοιχτού κώδικα και η διατήρηση καλών σχέσεων συνεργασίας με εταιρείες όπως η Arm, η Apple και η Qualcomm.

Ο στόχος της επιρροής της κοινότητας έχει ακόμη ποσοτικοποιηθεί, απαιτώντας από τον κώδικα να πάρει 3k αστέρια στο GitHub και να κλωνοποιηθεί (fork) 500 φορές. Οι ενδιαφερόμενοι αναγνώστες μπορούν να συνεχίσουν να δίνουν προσοχή και να δουν αν η ομάδα μπορεί να ολοκληρώσει αυτό το OKR μέχρι το τέλος του έτους.

Φόρτωση δεδομένων

Η βιβλιοθήκη συνόλων δεδομένων HuggingFace που βασίζεται στη μορφή Apache Arrow εμφανίστηκε ξαφνικά τα τελευταία χρόνια με τη φόρτωση/αποθήκευση υψηλής ταχύτητας χωρίς περιορισμούς μνήμης και φαίνεται να έχει κλέψει το προσκήνιο των λειτουργιών που σχετίζονται με το PyTorch.

Το έγγραφο σχετικά με τη φόρτωση δεδομένων ξεκινά με τη φιλοδοξία να γίνει ξανά εξαιρετική η βιβλιοθήκη TorchData και να αποκατασταθεί η κυριαρχία της PyTorch στη φόρτωση δεδομένων.

Για να επιτευχθεί αυτός ο στόχος, είναι απαραίτητο να γίνουν οι σχετικές λειτουργίες ευέλικτες, επεκτάσιμες, υψηλής απόδοσης και αποδοτικές στη μνήμη, επιτυγχάνοντας παράλληλα λειτουργία σαν ανόητη και υποστηρίζοντας πολλαπλή εκπαίδευση σε διάφορες κλίμακες.

Οι συγκεκριμένοι στόχοι ενημέρωσης περιλαμβάνουν τις ακόλουθες πτυχές:

- Η λειτουργική ανάπτυξη και η διεπαφή του DataLoader θα εφαρμόσει πρώτα την αρχή του GitHub και τα DataPipes και DataLoader v2 θα καταργηθούν σταδιακά και θα διαγραφούν.

- Εξασφαλίστε σαφή όρια και καλή διαλειτουργικότητα μεταξύ TorchTune, TorchTitan, HuggingFace και TorchData και υποστηρίξτε σύνολα δεδομένων πολλαπλών δεδομένων και πολλαπλή φόρτωση δεδομένων

- Το HuggingFace χρησιμοποιεί το API του StatefulDataLoader για να διασφαλίσει τη συμβατότητα και την έγκαιρη ενημέρωση δειγμάτων και υποθέσεων δοκιμών.

Πυρήνας μεταγλωττιστή και ανάπτυξη

Οι βασικές λειτουργίες του μεταγλωττιστή της PyTorch γίνονται όλο και πιο τέλειες μετά από χρόνια ανάπτυξης Αυτό που πρέπει να γίνει προς το παρόν είναι βαθύτερη ενοποίηση και περισσότερη υποστήριξη βελτιστοποίησης στους τομείς του LLM και του GenAI.

Ο οδικός χάρτης προτείνει τη μεταφορά της συνάρτησης torch.compile() σε όλες τις πτυχές του κύκλου χρήσης του LLM και του GenAI (συμπεράσματα, τελειοποίηση, προ-εκπαίδευση), έτσι ώστε σημαντικά μοντέλα να μπορούν να μεταγλωττιστούν με το εγγενές PyTorch όταν κυκλοφορήσουν.

Για να επιτευχθεί αυτός ο στόχος, το έγγραφο προτείνει πολλά συγκεκριμένα μέτρα, όπως η συνεργασία με ομάδες torchtune και TorchTitan για τη βελτίωση της απόδοσης της μεταγλώττισης και η κυκλοφορία εγγενών εκδόσεων μεταγλωττισμένων από την PyTorch τουλάχιστον δύο μοντέλων υψηλού προφίλ το δεύτερο εξάμηνο του έτους.

Επιπλέον, ο μεταγλωττιστής μπορεί να προσθέσει δυνατότητες οπτικοποίησης για να δημιουργήσει γραφήματα μοντέλων που εκφράζουν τη διαδικασία μπροστινού υπολογισμού/πίσω διάδοσης σε λειτουργία εκπαίδευσης χωρίς ανυπομονησία.

Υπάρχουν επίσης πολλά σχέδια για υποστήριξη χρηστών, όπως η βελτίωση της παρακολούθησης και της παρατηρησιμότητας του συστήματος και η παροχή βοήθειας στους χρήστες να διορθώνουν τα προβλήματα μεταγλώττισης από μόνοι τους. Οι βασικοί στόχοι περιλαμβάνουν επίσης τη δημιουργία μιας ομάδας υποστήριξης χρηστών για την αντιμετώπιση ζητημάτων που εγείρονται από προγραμματιστές σε πλατφόρμες όπως το GitHub σε διάφορους βασικούς τομείς (τάξεις δεδομένων, διαχείριση περιβάλλοντος κ.λπ.).

Βιβλιογραφικές αναφορές:

https://dev-discuss.pytorch.org/t/meta-pytorch-team-2024-h2-roadmaps/2226

https://x.com/soumithchintala/status/1811060935211049046

https://www.assemblyai.com/blog/pytorch-vs-tensorflow-in-2023/