Ενίσχυση του Llama 2 70B με NVIDIA H100

Το ταξίδι της επιταχυνόμενης εξαγωγής συμπερασμάτων LLM

The journey of accelerated LLM inference

Η επιδίωξη της απόδοσης στη μηχανή απαντήσεων της Perplexity μας ωθεί να υιοθετούμε την πιο πρόσφατη τεχνολογία που προσφέρουν η NVIDIA και η AWS. Σε αυτό το ιστολόγιο, είμαστε ενθουσιασμένοι να μοιραστούμε τα αποτελέσματα των πιο πρόσφατων πειραμάτων μας: μια σύγκριση της εξαγωγής συμπερασμάτων (inference) του Llama 2 70B σε διάφορες ρυθμίσεις υλικού και λογισμικού.

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

Ποιο είναι το ακατέργαστο κέρδος απόδοσης από την αλλαγή των GPU μας από NVIDIA A100 σε NVIDIA H100, με όλες τις άλλες ρυθμίσεις να παραμένουν ίδιες;

Ποιο είναι το κέρδος αποδοτικότητας της κβάντωσης κινητής υποδιαστολής 8-bit (fp8), για την οποία η H100 προσθέτει εγγενή υποστήριξη; Ποιο είναι το κόστος ακρίβειας αυτής της κβάντωσης;

Πώς επηρεάζουν ο παραλληλισμός τανυστών (tensor parallelism) και το μέγεθος παρτίδας (batch size) την καθυστέρηση (latency) και την απόδοση (throughput) των token;

Λαμβάνοντας υπόψη τα παραπάνω, ποια διαμόρφωση έχει ως αποτέλεσμα την πιο κλιμακούμενη ισορροπία απόδοσης και αποδοτικότητας κόστους;

Πειραματική ρύθμιση

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

Βασικές μετρικές:

Καθυστέρηση (Latency): Ο συνολικός χρόνος που χρειάζεται ο διακομιστής εξαγωγής συμπερασμάτων για να δημιουργήσει την πλήρη απάντησή του.

Απόδοση (Throughput): Ο αριθμός των token εξόδου, ανά δεύτερο, ανά GPU, που μπορεί να δημιουργήσει ο διακομιστής εξαγωγής συμπερασμάτων σε όλους τους χρήστες και τα αιτήματα.

Σταθερές:

Οι ακόλουθοι παράγοντες θα επηρέαζαν τις βασικές μετρικές, γι' αυτό τους κρατήσαμε σταθερούς στις διάφορες δοκιμές του πειράματος.

Μοντέλο AI

Η απόδοση κλιμακώνεται με το μέγεθος του LLM. Περισσότερες παράμετροι απαιτούν περισσότερους υπολογισμούς, με αποτέλεσμα πιο αργή εξαγωγή συμπερασμάτων. Για παράδειγμα, το Llama 2 13B είναι ταχύτερο από το Llama 2 70B όταν οι υπόλοιπες ρυθμίσεις είναι ίδιες. Επιμένουμε στο Llama 2 70B σε αυτό το πείραμα επειδή θέλουμε να βελτιστοποιήσουμε την εξυπηρέτηση των πιο ικανών μοντέλων ανοιχτού κώδικα.

Σύνολο δεδομένων Token Εσόδου/Εξόδου

Η ποσότητα των token εισόδου και εξόδου σε κάθε ζεύγος αιτήματος/απόκρισης δείγματος μπορεί να επηρεάσει τις μετρήσεις απόδοσης. Γενικά, η δημιουργία token εξόδου κυριαρχεί στον συνολικό χρόνο απόκρισης. Όταν η δειγματοληψία δεδομένων προκαλεί μόνο απαντήσεις «ναι/όχι» από το LLM, τότε η απόκριση είναι ταχύτερη σε σύγκριση με δείγματα που ζητούν από το LLM να γράψει δοκίμια. Το σύνολο δεδομένων μας αποτελείται από συνθετικά αιτήματα με 1024 token εισόδου που προκαλούν 512 token εξόδου. Αυτή η κατανομή επιλέχθηκε ώστε να ταιριάζει με την παρατηρούμενη κατανομή της κίνησης στη δημόσια ανάπτυξή μας του Llama2 70B.

Έκδοση λογισμικού

Το NVIDIA TensorRT-LLM (έκδοση v0.5.0) είναι μια βιβλιοθήκη ανοιχτού κώδικα για τη βελτιστοποίηση της εξαγωγής συμπερασμάτων LLM. Κυκλοφόρησε στα τέλη του 2023, συνθέτει τις πολλές βελτιστοποιήσεις εξαγωγής συμπερασμάτων της NVIDIA και παρέχει ένα ευέλικτο επίπεδο προσαρμογής για τις βασικές παραμέτρους αυτού του πειράματος: μέγεθος παρτίδας, κβάντωση και παραλληλισμό τανυστών.

Μεταβλητές

Πειραματιστήκαμε σε 4 άξονες διαμόρφωσης: παραλληλισμό τανυστών, αρχιτεκτονική GPU, κβάντωση και μέγιστο μέγεθος παρτίδας. Αυτοί οι άξονες είναι διασυνδεδεμένοι επειδή ο καθένας αντιπροσωπεía μια αντιστάθμιση (tradeoff) όσον αφορά τον κρίσιμο πόρο στενό λαιμού (bottleneck) της μνήμης GPU.

Αρχιτεκτονική GPU

Η αρχιτεκτονική GPU Hopper ένατης γενιάς (H100-HBM3-80GB / p5.48xlarge) περιλαμβάνει μια τεράστια λίστα χαρακτηριστικών σε σύγκριση με τον προκάτοχό της, Ampere (A100-SXM4-80GB / p4de.24xlarge), συμπεριλαμβανομένων 2x-6x ταχυτήτων υπολογισμού και σχεδόν 2x εύρους ζώνης μνήμης GPU. Το εύρος ζώνης μνήμης GPU είναι μια κρίσιμη μετρική για την εξαγωγή συμπερασμάτων επειδή ένα βασικό εμπόδιο καθυστέρησης των πολλαπλασιασμών μήτρας (matrix multiplications) προέρχεται από τη φόρτωση gigabytes δεδομένων μοντέλου από τη μνήμη GPU σε καταχωρητές υπολογισμού. Με βάση αυτά τα στατιστικά στοιχεία, διατυπώσαμε την υπόθεση ότι μια άμεση σύγκριση μεταξύ των NVIDIA H100 και A100 θα παρουσιάσει 2x βελτίωση τόσο στην καθυστέρηση όσο και στην απόδοση.

Μια ακόμη βασική διαφορά μεταξύ των NVIDIA H100 και A100 είναι ότι ο πυρήνας τανυστών του H100 προσθέτει εγγενώς υποστήριξη για εντολές κινητής υποδιαστολής 8-bit (fp8), γεγονός που ανοίγει τον δρόμο για περαιτέρω βελτιστοποιήσεις που περιγράφονται παρακάτω. Γι' αυτόν τον λόγο χρησιμοποιούμε fp8 και fp16 ειδικά για το H100.

Για να διατηρήσουμε τη μνήμη ανά GPU σταθερή σε αυτό το πείραμα, μείναμε σε κόμβους με μνήμη GPU 8x80GB τόσο για τις NVIDIA A100 όσο και για τις H100 μας. Εκτός από το ότι επιτρέπει μεγαλύτερα μεγέθη παρτίδας, η μνήμη GPU είναι σημαντική επειδή οι παράμετροι του μοντέλου φορτώνονται στη μνήμη GPU κατά την εκκίνηση του διακομιστή για γρήγορη πρόσβαση. Για παράδειγμα, εάν καθεμία από τις 70 δισεκατομμύρια παραμέτρους στο μοντέλο μας είναι ένας αριθμός κινητής υποδιαστολής 16-bit, τότε το μοντέλο έχει μέγεθος περίπου 140GB, το οποίο δεν χωράει σε μία μόνο GPU. Ως εκ τούτου, υπάρχει ανάγκη για παραλληλισμό τανυστών, τον οποίο εξηγούμε παρακάτω.

Παραλληλισμός Τανυστών (Tensor Parallelism)

Ο παραλληλισμός τανυστών αναφέρεται στον αριθμό των συσκευών GPU που καταναλώνονται για την εκτέλεση του διακομιστή εξαγωγής συμπερασμάτων. Όταν δεσμεύουμε έναν αριθμό GPU, το TensorRT-LLM συνενώνει τους πόρους τους για να μας βοηθήσει να φτάσουμε στον ελάχιστο απαιτούμενο προϋπολογισμό μνήμης για την εκτέλεση του Llama2 70B. Η υπόθεσή μας είναι ότι ο χαμηλότερος παραλληλισμός τανυστών θα οδηγήσει σε υψηλότερη καθυστέρηση (λόγω λιγότερων πόρων που καταναλώνονται για την ικανοποίηση κάθε παρτίδας), αλλά σε υψηλότερη απόδοση ανά GPU (λόγω καλύτερης αξιοποίησης) σε σύγκριση με υψηλότερο παραλληλισμό τανυστών.

Κβάντωση (Quantization)

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

Οι υλοποιήσεις της κβάντωσης έχουν τη δυνατότητα να υποβαθμίσουν την ακρίβεια. Επομένως, αξιολογήσαμε την ακρίβεια για διαφορετικές ακρίβειες συγκρίνοντας τη στατιστική τους perplexity, ένα μέτρο του πόσο καλά προβλέπει το LLM κάθε επόμενο token σε μια πρόταση, στο corpus WikiText. Για την κινητή υποδιαστολή 8-bit και το βάρος 8-bit με ενεργοποίηση 8-bit και SmoothQuant (w8a8 SQ), δεν υπήρξε σημαντική αλλαγή στο perplexity (< 1%) σε σύγκριση με το fp16 στο WikiText, οπότε αισθανθήκαμε σίγουροι να προχωρήσουμε. Ωστόσο, το w4a16 παρουσίασε μια ουσιαστική αλλαγή 7% στο perplexity, η οποία πιθανόν να αποδίδεται στην ακόμη χαμηλότερη ακρίβεια και στις απαραίτητες δυναμικές μετατροπές μεταξύ int4 και fp16.

Μέγεθος Παρτίδας (Batch Size)

Ο παραλληλισμός μέσω της ομαδοποίησης (batching) είναι μια κλασική στρατηγική για την εξαγωγή απόδοσης από ένα σύστημα περιορισμένων πόρων. Με την επεξεργασία πολλαπλών αιτημάτων σε κάθε πέρασμα προς τα εμπρός (forward pass) μέσω του νευρωνικού δικτύου, η ομαδοποίηση είναι γνωστό ότι αυξάνει την απόδοση με τίμημα κάποια καθυστέρηση. Η ομαδοποίηση επιφέρει επίσης υψηλότερη κατανάλωση μνήμης GPU επειδή το μέγεθος της κρυφής μνήμης KV (KV cache) που διαχειρίζεται τον μηχανισμό προσοχής αυξάνεται γραμμικά με το μέγεθος της παρτίδας.

Στην περίπτωση του Llama 2 70B (το οποίο διαθέτει 80 στρώσεις), fp16 με μέγεθος παρτίδας 32 για μέγεθος πλαισίου 4096, το μέγεθος της κρυφής μνήμης KV ανέρχεται στα σημαντικά 40 GB. Αυτό τελικά εμποδίζει το Llama 2 70B fp16, του οποίου μόνο τα βάρη καταλαμβάνουν 140GB, να χωρέσει άνετα στα 160GB μνήμης GPU που είναι διαθέσιμη στον παραλληλισμό τανυστών 2 (TP-2).

Αποτελέσματα

Εξετάσαμε συμβατικούς συνδυασμούς των 4 μεταβλητών του πειράματος και παρουσιάζουμε τις πιο διορατικές τάσεις παρακάτω.

Εικόνα 1 - Η καθυστέρηση αιτημάτων με ποικίλο μέγεθος παρτίδας σε πέντε διαφορετικές διαμορφώσεις, όλες με παραλληλισμό τανυστών 8, ο οποίος αποφέρει την καλύτερη καθυστέρηση με 8 διαθέσιμες GPU. Μعσα σε κάθε διαμόρφωση, η καθυστέρηση γενικά διπλασιάζεται κατά την αύξηση του μεγέθους παρτίδας από 1 → 32, και διπλασιάζεται ξανά από 32 → 128. Σε επαρκώς μεγάλα μεγέθη παρτίδας, η H100 μειώνει κατά το ήμισυ περίπου την καθυστέρηση σε σύγκριση με την A100. Η A100 χρησιμοποιεί μικτή ακρίβεια επειδή η αρχιτεκτονική στερείται εγγενούς υποστήριξης για fp8. Το w8a8 με SmoothQuant (SQ) προορίζεται να μοιάζει με fp8.

Η βελτίωση της καθυστέρησης της κβάντωσης κυμαίνεται γύρω στο 10% όταν συγκρίνουμε H100 fp16 → fp8 και A100 fp16 → w8a8 με SmoothQuant. Ωστόσο, η μικτή ακρίβεια w4a16 αποδίδει στην πραγματικότητα καλύτερα σε χαμηλά μεγέθη παρτίδας και χειρότερα σε υψηλότερα μεγέθη παρτίδας σε σύγκριση με το fp16. Αυτό μπορεί να οφείλεται σε διάφορους παράγοντες, συμπεριλαμβανομένων λιγότερο βελτιστοποιημένων πυρήνων υπολογισμού, χρόνου μετατροπής τύπων (casting) μεταξύ int4 και fp16, και του γεγονότος ότι το w4a16 εξακολουθεί να χρησιμοποιεί κινητές υποδιαστολές 16-bit για τις ενεργοποιήσεις, με αποτέλεσμα να μην υπάρχουν εξοικονομήσεις στις διαστάσεις της κρυφής μνήμης KV. Επειδή το w4a16 έδειξε επίσης χαμηλότερη ακρίβεια, καταλήγουμε στο συμπέρασμα ότι πρέπει να εμμένουμε στο w8a8 SQ για τις A100 και στο fp8 για τις H100.

Εικόνα 2 - Η απόδοση σε διαμορφώσεις TP-8 με διαφορετική αρχιτεκτονική, κβάντωση και μέγεθος παρτίδας. Για κάθε αρχιτεκτονική και κβάντωση, το μέγεθος παρτίδας επιλέχθηκε ως το μεγαλύτερο που τηρούσε μια απαίτηση καθυστέρησης 25600ms (20 token ανά δευτερόλεπτο για 512 token), έτσι ώστε να συγκρίνουμε διαμορφώσεις που έχουν παρόμοια καθυστέρηση. Υπό αυτή την απαίτηση, η H100 με BS-128 φτάνει στο 228% της απόδοσης σε σύγκριση με την A100 BS-64 χρησιμοποιώντας την ίδια κβάντωση (fp16) και έχει ακόμη χαμηλότερη καθυστέρηση απόκρισης παρά το διπlασιασμένο μέγεθος παρτίδας. Η κβάντωση με fp8 βελτιώνει αυτόν τον παράγοντα στο 251%.

Στις δύο πρώτες εικόνες μας, παρουσιάζουμε μόνο διαμορφώσεις TP-8. Η H100 επιτυγχάνει 54% καθυστέρηση και 184% απόδοση σε σύγκριση με την A100 όταν και οι δύο χρησιμοποιούν fp16 / BS-128 / TP-8, η οποία βελτιώνεται σε 49% καθυστέρηση και 202% απόδοση όταν χρησιμοποιείται fp8 στην H100. Αυτή η βελτίωση στην απόδοση μπορεί να αποδοθεί στις αυξήσεις στην ισχύ υπολογισμού και στο εύρος ζώνης μνήμης μεταξύ H100 και A100. Αξιοσημείωτα, η διαφορά είναι λιγότερο αισθητή σε χαμηλότερα μεγέθη παρτίδας όπου η αξιοποίηση μπορεί να είναι χαμηλότερη.

Καθώς χτίζουμε την πλατφόρμα μας, θέλουμε να τηρούμε ορισμένες απαιτήσεις καθυστέρησης για τους χρήστες μας μεγιστοποιώντας παράλληλα την απόδοση. Επομένως, αντί να συγκρίνουμε την A100 έναντι της H100 στο ίδιο μέγεθος παρτίδας, έχει στην πραγματικότητα περισσότερο νόημα για εμάς να συγκρίνουμε την απόδοσή τους μόνο υπό διαμορφώσεις όπου ικανοποιούν μια απαίτηση καθυστέρησης. Θέσαμε ένα όριο στα 25600ms καθυστέρησης για την ολοκλήρωση των 512 token εξόδου και διαπιστώσαμε ότι η H100 / TP-8 / fp8 / BS-128 αποφέρει 251% απόδοση σε σύγκριση με την A100 / TP-8 / fp16 / BS-64, δεδομένου ότι είναι ικανή να επεξεργαστεί διπλάσιο μέγεθος παρτίδας σε χαμηλότερη καθυστέρηση. Δεδομένου ότι η κβάντωση παρέχει εξοικονόμηση μνήμης GPU, πρέπει τώρα να αξιολογήσουμε πώς ο παραλληλισμός τανυστών μπορεί να προσθέσει ένα επόμενο επίπεδο βελτιστοποίησης.

Εικόνα 3 - Η καθυστέρηση σε διάφορα μεγέθη παρτίδας και παραλληλισμό τανυστών για την H100 fp8. Η καθυστέρηση γενικά διπλασιάζεται κατά την αύξηση του μεγέθους παρτίδας από 1 → 32, και διπλασιάζεται ξανά από 32 → 128. Το TP-2 είναι σταθερά περίπου διπλάσιο πιο αργό από το TP-8 όταν τα μεγέθη παρτίδας είναι ίσα. Ο διπλασιασμός του παραλληλισμού τανυστών ενώ διπλασιάζεται το μέγεθος παρτίδας διατηρεί την καθυστέρηση σχετικά σταθερή καθώς ο αριθμός των παρτίδων που υποβάλλονται σε επεξεργασία ανά GPU παραμένει ίσος.

Όσον αφορά την κβάντωση και την αρχιτεκτονική, υπάρχουν ξεκάθαροι νικητές: η H100 κυριαρχεί στην A100 και η κβάντωση μειωμένης ακρίβειας βελτιώνει την αξιοποίηση της μνήμης, την καθυστέρηση και την απόδοση. Ωστόσο, το μέγεθος παρτίδας και ο παραλληλισμός τανυστών παρουσιάζουν μια αντιστάθμιση στις βασικές μας μετρικές. Ένα μεγαλύτερο μέγεθος παρτίδας βελτιστοποιεί την απόδοση με κόστος την αυξημένη καθυστέρηση και κατανάλωση μνήμης. Από την άλλη πλευρά, ο υψηλότερος παραλληλισμός τανυστών αυξάνει τη συνολική δεξαμενή διαθέσιμης μνήμης και βελτιστοποιεί την καθυστέρηση, αλλά έρχεται σε αντιστάθμιση με την απόδοση λόγω του κόστους συγχρονισμού του κατανεμημένου πολλαπλασιασμού μητρών και λόγω της δέσμευσης περισσότερων πόρων GPU.

Εικόνα 4 - Η απόδοση σε διάφορα μεγέθη παρτίδας και παραλληλισμό τανυστών για την H100 fp8. Η υψηλότερη απόδοση προέρχεται από το TP-2 BS-128, στο 460% σε σύγκριση με τη βάση αναφοράς της A100/TP-8/fp16/BS-64. Ωστόσο, το TP-2 BS-128 είναι επίσης το πιο αργό αποτέλεσμα στην Εικόνα 3.

Η διαμόρφωση του πειράματος που μεγιστοποιεί την απόδοση είναι η H100 / fp8 / TP-2 / BS-128, στα 767 token εξόδου ανά δεύτερο ανά GPU. Αυτή είναι μια βελτίωση 460% σε σχέση με την A100 / fp16 / TP-8 / BS-64. Ωστόσο, έρχεται με το κόστος της διπlasιασμένης καθυστέρησης - πλησιέστερα στα 42000ms για 512 token εξόδου - επομένως μπορεί να είναι ακατάλληλη ως διαμόρφωση παραγωγής. Τα αποτελέσματα των TP-4 BS-128 (626 tok/sec/gpu σε χρόνο απόκρισης 26188ms) και TP-2 BS-32 (435 tok/sec/gpu σε χρόνο απόκρισης 18821ms) μπορεί να αντιπροσωπεύουν καλύτερες αντισταθμίσεις στις βασικές μας μετρικές.

Συμπέρασμα

Τα αποτελέσματά μας δείχνουν ότι:

Φτάνουμε σε καθυστέρηση 54% και απόδοση 184% χρησιμοποιώντας την H100 σε σύγκριση με την A100 δεδομένης της ίδιας διαμόρφωσης, η οποία βελτιώνεται σε 49% και 202% αντίστοιχα όταν η H100 εκμεταλλεύεται την εγγενή υποστήριξή της για fp8.

Όταν μεγιστοποιούμε την απόδοση υπό περιορισμό καθυστέρησης, η H100 / fp8 / TP-8 / BS-128 αποφέρει απόδοση 251% σε σύγκριση με την A100 / fp16 / TP-8 / BS-64, καθώς μπορεί να επεξεργαστεί διπλάσια παρτίδα με μεγαλύτερη ταχύτητα.

Αξιοποιώντας την H100 με TP-2 και fp8, μπορούμε να πετύχουμε απόδοση 373% της A100 / fp16 / TP-8 / BS-128, με λιγότερο από 10% αύξηση στην καθυστέρηση.

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

Αυτά τα αποτελέσματα μας κάνουν να αισθανόμαστε σίγουροι για μια πλήρη μετάβαση σε GPU H100 στη στοίβα υλικού μας που τροφοδοτούνταν προηγουμένως από A100. Είμαστε ενθουσιασμένοι που μπορούμε να επιβεβαιώσουμε τα κέρδη απόδοσης που διαφημίζονται από τη NVIDIA και ανυπομονούμε για τις επόμενες ανακαλύψεις της σε επιταχυμένο υλικό.

Τι ακολουθεί

Τα επόμενα σύνορά μας για βελτιστοποίηση είναι να εξετάσουμε την ακρίβεια και την επίδραση στην απόδοση της δομημένης αραίωσης (structured sparsity) και της ακρίβειας int4, η οποία θα μπορούσε να μειώσει σημαντικά το αποτύπωμα μνήμης GPU του Llama 2 70B και να αποδώσει έως και 2x βελτιώσεις στην καθυστέρηση. Είμαστε ενθουσιασμένοι να συνεχίσουμε το ταξίδι της αστραπιαίας εξαγωγής συμπερασμάτων και ελπίζουμε να δώσουμε τη δυνατότητα στους χρήστες μας να δημιουργήσουν ισχυρές εφαρμογές πάνω στην πλατφόρμα μας.

Στο εγγύς μέλλον, το pplx-api θα καταργήσει τα όρια ρυθμών (rate limits) και θα προσφέρει περισσότερα προσαρμοσμένα Perplexity LLM, συμπεριλαμβανομένου ενός LLM που τροφοδοτείται από το διαδίκτυο με θεμελίωση για γεγονότα (grounding for facts).

Εγγραφείτε στο Perplexity Pro στο perplexity.ai/pro. Αποκτήστε πρόσβαση στο πρωτοποριακό μας pplx-api και αξιοποιήστε αυτές τις προηγμένες δυνατότητες στα έργα σας. Ανακαλύψτε περισσότερα σχετικά με το pplx-api στο ιστολόγιό μας.

Ενδιαφέρεστε να διαμορφώσετε το μέλλον της τεχνητής νοημοσύνης; Προσλαμβάνουμε! Γίνετε μέλος μιας ομάδας που προωθεί υποδομές LLM γενετικής τεχνητής νοημοσύνης τεράστιας κλίμακας. Εξερευνήστε τις ευκαιρίες στις Καριέρες της Perplexity.

Συγγραφείς:

Aarash Heydari, Grigorii Alekseev, Kevin Hu, Denis Yarats