Δυσκολεύεστε με το AI ή την ανάπτυξη πλήρους πακέτου; Οι ειδικοί μας είναι εδώ για να σας καθοδηγήσουν: εξατομικευμένες συμβουλές, τεχνική ενσωμάτωση και πολλά άλλα. Επικοινωνήστε μαζί μας στο [email protected].

Τεχνικές βελτιστοποίησης συμπερασμού LLM

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

Τεχνικές βελτιστοποίησης συμπερασμού LLM

Μια εστίαση στην αρχιτεκτονική LLMs

Τα μεγάλα γλωσσικά μοντέλα (LLM) βασίζονται όλα στην αρχιτεκτονική μετασχηματιστή που εφευρέθηκε το 2017 από τους Vaswani et al. Η αρχιτεκτονική μετασχηματιστή επιτυγχάνει ανώτερη ακρίβεια, εκμάθηση με λίγες λήψεις και σχεδόν ανθρώπινες ικανότητες σε διάφορες γλωσσικές εργασίες. Ωστόσο, αυτά τα θεμελιώδη μοντέλα, που συχνά περιλαμβάνουν δεκάδες έως εκατοντάδες δισεκατομμύρια παραμέτρους, είναι δαπανηρά για την εκπαίδευσή τους και απαιτητικά σε πόρους κατά την εξαγωγή συμπερασμάτων. Το κόστος εξαγωγής συμπερασμάτων κλιμακώνεται με μακρά συμφραζόμενα εισόδου, τα οποία απαιτούν σημαντική επεξεργαστική ισχύ λόγω των μεγάλων δεδομένων εισόδου. Αυτό καθιστά την αποτελεσματική εξαγωγή συμπερασμάτων μια κρίσιμη πρόκληση, ιδίως όσον αφορά τη διαχείριση της μνήμης και των υπολογιστικών πόρων.

Η αρχιτεκτονική του μετασχηματιστή
Η αρχιτεκτονική του μετασχηματιστή

Πιο συγκεκριμένα, οι περισσότερες γνωστές LLM είναι LLM μόνο για αποκωδικοποιητές, όπως οι GPT-3, GPT-4, LLaMA, Mistral, DeepSeek, κ.λπ. Αυτά τα μοντέλα προ-εκπαιδεύονται σε ένα έργο αιτιώδους μοντελοποίησης, λειτουργώντας ως προγνωστικά επόμενης λέξης. Επεξεργάζονται μια ακολουθία λέξεων ως είσοδο και παράγουν αυτοπαλινδρομικά τις επόμενες λέξεις μέχρι να επιτευχθεί μια συνθήκη διακοπής.

Η εξαγωγή συμπερασμάτων LLM σε μοντέλα μόνο με αποκωδικοποιητή περιλαμβάνει δύο βασικές φάσεις: τη φάση της προπλήρωσης και τη φάση της αποκωδικοποίησης. Στη φάση προ-συμπλήρωσης, το μοντέλο επεξεργάζεται μάρκες εισόδου για τον υπολογισμό ενδιάμεσων καταστάσεων (κλειδιά και τιμές) για τη δημιουργία της πρώτης νέας μάρκας. Αυτή η φάση, που μοιάζει με λειτουργία πίνακα-πίνακα, είναι ιδιαίτερα παραλληλισμένη και χρησιμοποιεί αποτελεσματικά τις δυνατότητες της GPU. Αντίθετα, η φάση αποκωδικοποίησης παράγει μάρκες, μία κάθε φορά, βασιζόμενη στις καταστάσεις προηγούμενων μαρκών. Αυτή η λειτουργία μήτρας-διανύσματος δεσμεύεται από τη μνήμη, καθώς η μεταφορά δεδομένων στη GPU, και όχι η ταχύτητα υπολογισμού, υπαγορεύει κυρίως την καθυστέρηση, οδηγώντας σε υποαξιοποίηση της υπολογιστικής ισχύος της GPU.

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

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

Δοσοληψία

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

Τεχνικές δοσοληψίας
Τεχνικές δοσοληψίας

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

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

Ανάπτυξη πολλαπλών GPU με παραλληλισμό μοντέλων

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

Πολλαπλές GPU NVIDIA
Πολλαπλές GPU NVIDIA

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

Αντίθετα, ο τανυστικός παραλληλισμός τεμαχίζει οριζόντια τα επιμέρους επίπεδα σε μικρότερα υπολογιστικά μπλοκ που μπορούν να εκτελεστούν ανεξάρτητα σε όλες τις συσκευές. Αυτό είναι ιδιαίτερα αποτελεσματικό για στοιχεία του μετασχηματιστή, όπως τα μπλοκ προσοχής και τα πολυεπίπεδα perceptrons (MLP), όπου, για παράδειγμα, διαφορετικές κεφαλές προσοχής μπορούν να ανατεθούν σε ξεχωριστές συσκευές για παράλληλο υπολογισμό. Ωστόσο, ο τανυστικός παραλληλισμός είναι λιγότερο αποτελεσματικός για λειτουργίες όπως το LayerNorm και το Dropout, οι οποίες δεν μπορούν να χωριστούν εύκολα και πρέπει να αναπαραχθούν σε όλες τις συσκευές, οδηγώντας σε περιττή χρήση μνήμης για την αποθήκευση των ενεργοποιήσεων. Αυτός ο περιορισμός αναδεικνύει την ανάγκη συμπληρωματικών προσεγγίσεων για τη βελτιστοποίηση της αποδοτικότητας της μνήμης.

Ο παραλληλισμός ακολουθίας αντιμετωπίζει τις ανεπάρκειες μνήμης λειτουργιών όπως οι LayerNorm και Dropout με την κατάτμησή τους κατά μήκος της διάστασης της ακολουθίας εισόδου, αξιοποιώντας την ανεξαρτησία τους μεταξύ των στοιχείων της ακολουθίας. Αυτή η μέθοδος μειώνει το αποτύπωμα μνήμης των περιττών ενεργοποιήσεων, καθιστώντας την πολύτιμο συμπλήρωμα του παραλληλισμού τανυστών. Αυτές οι τεχνικές παραλληλισμού δεν αποκλείουν η μία την άλλη και μπορούν να συνδυαστούν για την περαιτέρω βελτιστοποίηση μεγάλων γλωσσικών μοντέλων (LLM). Επιπλέον, ειδικές στρατηγικές βελτιστοποίησης για τη μονάδα προσοχής μπορούν να ενισχύσουν την επεκτασιμότητα και να μειώσουν τις απαιτήσεις μνήμης ανά GPU, επιτρέποντας την αποτελεσματικότερη εκπαίδευση και εξαγωγή συμπερασμάτων για μεγάλα μοντέλα.

Βελτιστοποίηση προσοχής

Η εργασία *Attention Is All You Need* των Vaswani et al. του 2017 εισήγαγε το μοντέλο Transformer, με ακρογωνιαίο λίθο την αυτοπροσοχή. Η αυτοπροσοχή επιτρέπει στο μοντέλο να αξιολογεί τη συνάφεια διαφορετικών λέξεων σε μια πρόταση σε σχέση μεταξύ τους, ενισχύοντας την κατανόηση του πλαισίου για εργασίες όπως η επεξεργασία φυσικής γλώσσας. Η εργασία επισημοποίησε την αυτοπροσοχή, ιδίως μέσω του μηχανισμού SDPA (Scaled dot-product attention), ο οποίος αντιστοιχίζει ζεύγη ερωτημάτων και κλειδιών-τιμών σε μια έξοδο, καθιστώντας την ένα βασικό συστατικό στα σύγχρονα νευρωνικά δίκτυα. Ακολουθούν μερικές από τις πιο σημαντικές τεχνικές για τη βελτιστοποίηση των υπολογισμών της προσοχής:

Το χαρτί της προσοχής
Το χαρτί της προσοχής

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

Η προσοχή πολλαπλών ερωτημάτων (MQA) βελτιστοποιεί την MHA για συμπερασμό, μοιράζοντας τις προβολές κλειδιών και τιμών σε πολλαπλές κεφαλές προσοχής, διατηρώντας παράλληλα πολλαπλές προβολές ερωτημάτων. Αυτό μειώνει τις απαιτήσεις σε εύρος ζώνης μνήμης και το μέγεθος της κρυφής μνήμης κλειδιού-τιμής (KV), επιτρέποντας μεγαλύτερα μεγέθη παρτίδων και καλύτερη αξιοποίηση των υπολογιστών. Ωστόσο, το MQA μπορεί να μειώσει ελαφρώς την ακρίβεια και τα μοντέλα που το αξιοποιούν απαιτούν εκπαίδευση ή λεπτομερή ρύθμιση με ενεργοποιημένο το MQA για να διατηρηθεί η απόδοση.

Η προσοχή σε ομαδοποιημένα ερωτήματα (GQA) εξισορροπεί την MHA και την MQA, ομαδοποιώντας τις κεφαλές των ερωτημάτων και μοιράζοντας προβολές τιμών-κλειδιών σε κάθε ομάδα, επιτυγχάνοντας ποιότητα σχεδόν MHA με υπολογιστική απόδοση πιο κοντά στην MQA. Μοντέλα όπως το Llama 2 70B χρησιμοποιούν την GQA, και εκείνα που εκπαιδεύονται με MHA μπορούν να προσαρμοστούν στην GQA με ελάχιστη πρόσθετη εκπαίδευση. Τόσο η MQA όσο και η GQA μειώνουν τις απαιτήσεις μνήμης της κρυφής μνήμης KV, αν και παραμένουν απαραίτητες περαιτέρω βελτιστοποιήσεις στη διαχείριση της κρυφής μνήμης.

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

Κρυφή αποθήκευση κλειδιού-τιμής

Η προσωρινή αποθήκευση KV είναι μια κρίσιμη τεχνική βελτιστοποίησης που χρησιμοποιείται κατά τη φάση αποκωδικοποίησης των μεγάλων γλωσσικών μοντέλων (LLM) για τη βελτίωση της αποδοτικότητας των υπολογισμών αυτοπροσοχής. Σε αυτή τη φάση, κάθε παραγόμενο διακριτικό εξαρτάται από τους τανυστές κλειδιού (K) και τιμής (V) όλων των προηγούμενων διακριτικών, συμπεριλαμβανομένων εκείνων που υπολογίζονται κατά το στάδιο της προ-πλήρωσης και τα επόμενα βήματα αποκωδικοποίησης. Αντί να υπολογίζονται εκ νέου αυτοί οι τανυστές για κάθε μάρκα σε κάθε χρονικό βήμα, η προσωρινή αποθήκευση KV τους αποθηκεύει στη μνήμη της GPU, προσθέτοντας νέους τανυστές στην προσωρινή μνήμη καθώς υπολογίζονται. Τυπικά, διατηρείται ξεχωριστή κρυφή μνήμη KV για κάθε επίπεδο του μοντέλου, μειώνοντας σημαντικά τους περιττούς υπολογισμούς και επιταχύνοντας τη διαδικασία αποκωδικοποίησης.

Κρυφή αποθήκευση κλειδιού-τιμής
Κρυφή αποθήκευση κλειδιού-τιμής

Οι απαιτήσεις μνήμης για τις LLM σε GPU καθοδηγούνται κυρίως από δύο στοιχεία: τα βάρη του μοντέλου και την κρυφή μνήμη KV. Τα βάρη του μοντέλου, τα οποία αποτελούνται από τις παραμέτρους του μοντέλου, καταλαμβάνουν σημαντική μνήμη- για παράδειγμα, ένα μοντέλο 7 δισεκατομμυρίων παραμέτρων όπως το Llama 2 7B σε ακρίβεια 16 bit απαιτεί περίπου 14 GB. Η κρυφή μνήμη KV, από την άλλη πλευρά, αποθηκεύει τανυστές αυτοπροσοχής για την αποφυγή επαναϋπολογισμού, με το μέγεθός της να καθορίζεται από παράγοντες όπως ο αριθμός των στρωμάτων, οι κεφαλές προσοχής, οι διαστάσεις των κεφαλών και η ακρίβεια. Για κάθε μάρκα, το μέγεθος της κρυφής μνήμης υπολογίζεται ως 2 * num_layers * (num_heads * dim_head) * precision_in_bytes, όπου ο παράγοντας 2 λαμβάνει υπόψη τόσο τους πίνακες K όσο και τους πίνακες V. Για μια παρτίδα εισόδων, το συνολικό μέγεθος της κρυφής μνήμης KV κλιμακώνεται με το μέγεθος της παρτίδας και το μήκος της ακολουθίας, φτάνοντας δυνητικά σε σημαντικά μεγέθη, όπως ~2 GB για ένα μοντέλο Llama 2 7B με μήκος ακολουθίας 4.096 και μέγεθος παρτίδας 1.

Η αποτελεσματική διαχείριση της κρυφής μνήμης KV δημιουργεί προκλήσεις λόγω της γραμμικής αύξησής της με το μέγεθος της παρτίδας και το μήκος της ακολουθίας, η οποία μπορεί να περιορίσει την απόδοση και να περιπλέξει τον χειρισμό εισόδων με μεγάλο περιεχόμενο. Μια συνήθης αναποτελεσματικότητα προκύπτει από τη στατική υπερπρομήθεια, όπου η μνήμη δεσμεύεται για το μέγιστο υποστηριζόμενο μήκος ακολουθίας (π.χ. 2.048 tokens), ανεξάρτητα από το πραγματικό μέγεθος εισόδου. Αυτό οδηγεί σε σημαντική σπατάλη μνήμης ή κατακερματισμό, καθώς μεγάλο μέρος του δεσμευμένου χώρου παραμένει συχνά αχρησιμοποίητο καθ' όλη τη διάρκεια ζωής της αίτησης, δεσμεύοντας πολύτιμους πόρους μνήμης της GPU.

Για να αντιμετωπιστούν αυτές οι αναποτελεσματικότητες, ο αλγόριθμος PagedAttention εισάγει μια νέα προσέγγιση εμπνευσμένη από τη σελιδοποίηση του λειτουργικού συστήματος. Διαιρεί την κρυφή μνήμη KV σε μπλοκ σταθερού μεγέθους, καθένα από τα οποία αντιπροσωπεύει έναν καθορισμένο αριθμό μαρκών, οι οποίες μπορούν να αποθηκευτούν μη συνεχόμενα στη μνήμη. Ένας πίνακας μπλοκ παρακολουθεί αυτά τα μπλοκ και τα φέρνει όταν χρειάζεται κατά τη διάρκεια των υπολογισμών προσοχής. Καθώς δημιουργούνται νέα tokens, επιπλέον μπλοκ κατανέμονται δυναμικά. Αυτή η μέθοδος ελαχιστοποιεί τη σπατάλη μνήμης εξαλείφοντας την ανάγκη για συνεχή κατανομή και υπερπρομήθεια, επιτρέποντας μεγαλύτερα μεγέθη παρτίδων και βελτιώνοντας την απόδοση, καθιστώντας την έτσι μια σημαντική πρόοδο στη διαχείριση της μνήμης κρυφής μνήμης KV για LLMs.

Βελτιστοποίηση μοντέλου

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

Η κβάντιση μειώνει την ακρίβεια των βαρών και των ενεργοποιήσεων ενός μοντέλου, συνήθως από 32 ή 16 bits σε 8 ή λιγότερα bits, επιτρέποντας στα μοντέλα να καταλαμβάνουν λιγότερη μνήμη και να μεταφέρουν δεδομένα πιο αποτελεσματικά. Ενώ η κβάντιση των βαρών είναι απλή λόγω της σταθερής φύσης τους μετά την εκπαίδευση, η κβάντιση των ενεργοποιήσεων είναι πιο σύνθετη λόγω των ακραίων τιμών που διευρύνουν το δυναμικό τους εύρος. Τεχνικές όπως η LLM.int8() αντιμετωπίζουν αυτό το πρόβλημα εφαρμόζοντας επιλεκτικά υψηλότερη ακρίβεια σε ορισμένες ενεργοποιήσεις ή επαναχρησιμοποιώντας το δυναμικό εύρος των κβαντισμένων βαρών για ενεργοποιήσεις, αν και οι GPU ενδέχεται να απαιτούν μετατροπή των βαρών σε υψηλότερη ακρίβεια για λειτουργίες.

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

Η απόσταξη μεταφέρει τη γνώση από ένα μεγαλύτερο μοντέλο "δασκάλου" σε ένα μικρότερο μοντέλο "μαθητή", συμπιέζοντας το μέγεθος και διατηρώντας την απόδοση. Για παράδειγμα, το DistilBERT επιτυγχάνει μείωση του μεγέθους κατά 40% και αύξηση της ταχύτητας κατά 60% σε σύγκριση με το BERT, διατηρώντας το 97% των δυνατοτήτων του. Η απόσταξη μπορεί να περιλαμβάνει τη μίμηση των αποτελεσμάτων του δασκάλου ή τη χρήση δεδομένων που δημιουργούνται από τον δάσκαλο για εκπαίδευση, με μεθόδους όπως το "Distilling Step by Step!" που ενσωματώνουν λογικές για αποτελεσματική μάθηση. Ωστόσο, οι περιοριστικές άδειες χρήσης πολλών προηγμένων LLM περιορίζουν τη διαθεσιμότητα κατάλληλων μοντέλων δασκάλων για απόσταξη.

Εικαστική συμπερασματολογία

Η κερδοσκοπική εξαγωγή συμπερασμάτων, γνωστή και ως κερδοσκοπική δειγματοληψία ή υποβοηθούμενη παραγωγή, είναι μια μέθοδος παραλληλισμού της εκτέλεσης αυτοπαλίνδρομων μεγάλων γλωσσικών μοντέλων (LLMs), όπως τα μοντέλα τύπου GPT, τα οποία συνήθως παράγουν κείμενο token προς token. Στην τυπική εκτέλεση, κάθε λέξη εξαρτάται από όλες τις προηγούμενες λέξεις για το πλαίσιο, καθιστώντας την παράλληλη παραγωγή αδύνατη, καθώς η n-οστή λέξη πρέπει να παραχθεί πριν από την (n+1)-οστή. Η κερδοσκοπική συμπερασματολογία αντιμετωπίζει αυτό το πρόβλημα χρησιμοποιώντας ένα "φθηνότερο" μοντέλο προσχεδίου για την πρόβλεψη πολλών μελλοντικών tokens ταυτόχρονα, τα οποία στη συνέχεια επαληθεύονται ή απορρίπτονται παράλληλα από το κύριο μοντέλο, επιτρέποντας την ταχύτερη παραγωγή κειμένου.

Η διαδικασία περιλαμβάνει τη δημιουργία ενός προσχεδίου συνέχειας αρκετών μαρκών χρησιμοποιώντας μια λιγότερο απαιτητική σε πόρους μέθοδο, ακολουθούμενη από παράλληλη επαλήθευση από το κύριο μοντέλο χρησιμοποιώντας το προσχέδιο ως κερδοσκοπικό πλαίσιο. Εάν το μοντέλο επαλήθευσης ταιριάζει με τα tokens του προσχεδίου, αυτά γίνονται αποδεκτά- διαφορετικά, τα μη ταιριαστά tokens και τα επόμενα απορρίπτονται και η διαδικασία επαναλαμβάνεται με ένα νέο προσχέδιο. Τα draft tokens μπορούν να παραχθούν χρησιμοποιώντας διάφορες προσεγγίσεις, όπως η εκπαίδευση πολλαπλών μοντέλων, η λεπτομερής ρύθμιση πολλαπλών κεφαλών σε ένα προ-εκπαιδευμένο μοντέλο για την πρόβλεψη μελλοντικών tokens, ή η χρησιμοποίηση ενός μικρότερου draft model παράλληλα με ένα μεγαλύτερο, πιο ικανό μοντέλο επαλήθευσης, το καθένα με τα δικά του tradeoffs.

Αποσυνδυασμένη συμπερασματολογία

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

Αποσυνδυασμένη συμπερασματολογία
Αποσυνδυασμένη συμπερασματολογία

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

Η αποκωδικοποίηση, αντίθετα, είναι δεσμευμένη στη μνήμη και περιλαμβάνει επαναληπτική παραγωγή συμβόλων, βασιζόμενη σε μεγάλο βαθμό στην πρόσβαση στις κρυφές μνήμες KV. Απαιτεί λιγότερη υπολογιστική ισχύ, αλλά χρειάζεται γρήγορη πρόσβαση στη μνήμη, καθιστώντας την κατάλληλη για λιγότερο ισχυρό, βελτιστοποιημένο στη μνήμη υλικό, όπως οι CPU ή οι συσκευές άκρων. Με τη μετακίνηση της αποκωδικοποίησης σε ξεχωριστό υλικό -πιθανώς πιο κοντά στον τελικό χρήστη, όπως σε τοπικούς διακομιστές ή συσκευές άκρου- η διαχωρισμένη εξαγωγή συμπερασμάτων μειώνει την καθυστέρηση και τις απαιτήσεις εύρους ζώνης δικτύου. Αυτός ο διαχωρισμός επιτρέπει την ευέλικτη ανάπτυξη, όπου η προσυμπλήρωση εκτελείται σε διακομιστές cloud υψηλών προδιαγραφών και η αποκωδικοποίηση γίνεται σε τοπικές ή ακραίες συσκευές, βελτιστοποιώντας την κατανομή των πόρων και επιτρέποντας την αποτελεσματική κλιμάκωση για εφαρμογές όπως chatbots πραγματικού χρόνου ή διαδραστικά συστήματα τεχνητής νοημοσύνης.

Συμπέρασμα

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

Η εφαρμογή αυτών των τεχνικών απαιτεί βαθιά κατανόηση της αρχιτεκτονικής LLM και του υλικού που χρησιμοποιείτε, οπότε είναι γενικά ευκολότερο να χρησιμοποιήσετε μια υπάρχουσα μηχανή εξαγωγής συμπερασμάτων που έχει ήδη εφαρμόσει αυτές τις τεχνικές, όπως η vLLM, η TensorRT-LLM, η LMDeploy κ.λπ. Στην πραγματικότητα έχουμε υλοποιήσει αυτές τις τεχνικές στη δική μας μηχανή εξαγωγής συμπερασμάτων στο NLP Cloud και έχουμε γράψει μια ανάρτηση στο blog σχετικά με τις μηχανές εξαγωγής συμπερασμάτων, αν θέλετε να αναπτύξετε τα δικά σας μοντέλα: μπορείτε να το διαβάσετε εδώ.

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

Αν έχετε ερωτήσεις σχετικά με τις μηχανές εξαγωγής συμπερασμάτων γενικά, μη διστάσετε να μας ρωτήσετε, είναι πάντα χαρά μας να σας συμβουλεύουμε!

Julien
CTO στο NLP Cloud