Παρουσίαση του pplx-api
Γρήγορο και αποδοτικό API του Perplexity Lab για LLM ανοιχτού κώδικα

Σημείωση: Τα παρακάτω έχουν καταργηθεί στα τρέχοντα μοντέλα. Μάθετε περισσότερα για τα API μας
Είμαστε στην ευχάριστη θέση να ανακοινώσουμε το pplx-api, το οποίο έχει σχεδιαστεί για να αποτελεί έναν από τους ταχύτερους τρόπους πρόσβασης στα μοντέλα Mistral 7B, Llama2 13B, Code Llama 34B, Llama2 70B και replit-code-v1.5-3b. Το pplx-api διευκολύνει τους προγραμματιστές να ενσωματώσουν πρωτοποριακά LLM ανοιχτού κώδικα στα έργα τους.
Το pplx-api μας προσφέρει:
Ευκολία χρήσης: οι προγραμματιστές μπορούν να χρησιμοποιήσουν έτοιμα μοντέλα ανοιχτού κώδικα τεχνολογίας αιχμής και να ξεκινήσουν μέσα σε λίγα λεπτά με ένα οικείο REST API.
Εξαιρετικά γρήγορη εξαγωγή συμπερασμάτων (inference): το προσεκτικά σχεδιασμένο σύστημα εξαγωγής συμπερασμάτων μας είναι αποδοτικό και επιτυγχάνει έως και 2,9x μικρότερη καθυστέρηση από το Replicate και 3,1x μικρότερη καθυστέρηση από το Anyscale.
Δοκιμασμένη στη μάχη υποδομή: το pplx-api έχει αποδειχθεί αξιόπιστο, εξυπηρετώντας κίνηση επιπέδου παραγωγής τόσο στη μηχανή απαντήσεων Perplexity όσο και στο Labs playground μας.
Σημείο μίας στάσης για LLM ανοιχτού κώδικα: η ομάδα μας είναι αφοσιωμένη στην προσθήκη νέων μοντέλων ανοιχτού κώδικα καθώς αυτά κυκλοφορούν. Για παράδειγμα, προσθέσαμε τα μοντέλα Llama και Mistral μέσα σε λίγες ώρες από την κυκλοφορία τους χωρίς πρόσβαση πριν από την κυκλοφορία.
Το pplx-api βρίσκεται σε δημόσια δοκιμαστική λειτουργία (beta) και διατίθεται δωρεάν για χρήστες με συνδρομή Perplexity Pro.
Χρησιμοποιήστε το pplx-api για ένα χαλαρό hackathon Σαββατοκύριακου ή ως εμπορική λύση για τη δημιουργία νέων και καινοτόμων προϊόντων. Ελπίζουμε να μάθουμε πώς οι χρήστες μπορούν να κατασκευάσουν δροσερά και καινοτόμα προϊόντα με το API μας μέσω αυτής της κυκλοφορίας. Επικοινωνήστε στη διεύθυνση api@perplexity.ai εάν έχετε μια επιχειρη,ματική περίπτωση χρήσης για το pplx-api. Θα χαρούμε πολύ να ακούσουμε νέα σας!
Οφέλη του pplx-api
Ευκολία χρήσης
Η ανάπτυξη και η εξαγωγή συμπερασμάτων LLM απαιτούν σημαντική επένδυση σε υποδομές για να γίνουν η εξυπηρέτηση μοντέλων αποδοτική και οικονομική. Οι προγραμματιστές μπορούν να χρησιμοποιήσουν το API μας εκτός κουτιού (out-of-the-box), χωρίς βαθιά γνώση C++/CUDA ή πρόσβαση σε GPU, απολαμβάνοντας παράλληλα κορυφαία απόδοση. Η εξαγωγή συμπερασμάτων LLM αφαιρεί επίσης την πολυπλοκότητα και την ανάγκη διαχείρισης του δικού σας υλικού, συμβάλλοντας περαιτέρω στην ευκολία χρήσης.
Εξαιρετικά γρήγορη εξαγωγή συμπερασμάτων
Το LLM API της Perplexity είναι προσεκτικά σχεδιασμένο και βελτιστοποιημένο για γρήγορη εξαγωγή συμπερασμάτων. Για να το πετύχουμε αυτό, δημιουργήσαμε μια ιδιόκτητη υποδομή εξαγωγής συμπερασμάτων LLM γύρω από το TensorRT-LLM της NVIDIA, η οποία εξυπηρετείται σε GPU A100 που παρέχονται από το AWS. Μάθετε περισσότερα στην ενότητα Επισκόπηση της υποδομής pplx-api. Ως αποτέλεσμα, το pplx-api είναι ένα από τα ταχύτερα API Llama και Mistral που διατίθενται εμπορικά.
Για να πραγματοποιήσουμε benchmark σε σύγκριση με τις υπάρχουσες λύσεις, συγκρίναμε την καθυστέρηση του pplx-api με άλλες βιβλιοθήκες εξαγωγής συμπερασμάτων LLM. Στα πειράματά μας, το pplx-api επιτυγχάνει έως και 2,92x ταχύτερη συνολική καθυστέρηση σε σύγκριση με το Text Generation Inference (TGI) και έως και 4,35x ταχύτερη αρχική καθυστέρηση απόκρισης. Για αυτό το πείραμα, συγκρίναμε το TGI και την εξαγωγή συμπερασμάτων της Perplexity για σενάρια μίας ροής (single-stream) και διακομιστή σε 2 GPU A100 χρησιμοποιώντας ένα μοντέλο Llama-2-13B-chat καταμερισμένο (sharded) και στις δύο GPU. Για το σενάριο μίας ροής, ο διακομιστής επεξεργάζεται το ένα αίτημα μετά το άλλο. Στο σενάριο διακομιστή, ο πελάτης στέλνει αιτήματα σύμφωνα με μια κατανομή Poisson με ποικίλους ρυθμούς αιτημάτων για να προσομοιώσει μεταβαλλόμενο φόρτο. Για τον ρυθμό αιτημάτων, πραγματοποιούμε μια μικρή σάρωση έως το μέγιστο 1 αίτημα / δευτερόλεπτο, τη μέγιστη απόδοση που υποστηρίζεται από το TGI. Χρησιμοποιήσαμε δεδομένα πραγματικού κόσμου με ποικιλία μηκών token εισόδου και εξόδου για να προσομοιώσουμε τη συμπεριφορά παραγωγής. Τα αιτήματα έχουν κατά μέσο όρο ~700 token εισόδου και ~550 token εξόδου.
Χρησιμοποιώντας τις ίδιες εισόδους και στέλνοντας μία μόνο ροή αιτημάτων, μετρήσαμε επίσης τις μέσες καθυστερήσεις των API του Replicate και του Anyscale για το ίδιο μοντέλο, ώστε να συγκεντρώσουμε μια γραμμή βάσης απόδοσης σε σχέση με άλλα υπάρχοντα API.


Χρησιμοποιώντας την ίδια πειραματική ρύθμιση, συγκρίναμε τη μέγιστη απόδοση του pplx-api με το TGI, με την ταχύτητα αποκωδικοποίησης ως περιορισμό καθυστέρησης. Στα πειράματά μας, το pplx-api επεξεργάζεται τα token 1,90x-6,75x ταχύτερα από το TGI, και το TGI αποτυγχάνει πλήρως να ικανοποιήσει τους αυστηρότερους περιορισμούς καθυστέρησής μας σε 60 και 80 token/δευτερόλεπτο. Αξιολογούμε το TGI υπό τις ίδιες συνθήκες υλικού και φόρτου που χρησιμοποιήσαμε για την αξιολόγηση του pplx-api. Η σύγκριση αυτής της μέτρησης με το Replicate και το Anyscale δεν είναι δυνατή, καθώς δεν μπορούμε να ελέγξουμε τους παράγοντες υλικού και φόρτου τους.
Για λόγους σύγκρισης, η μέση ταχύτητα ανάγνωσης ενός ανθρώπου είναι 5 token/δευτερόλεπτο, πράγμα που σημαίνει ότι το pplx-api είναι σε θέση να εξυπηρετεί με ρυθμό ταχύτερο από αυτόν που μπορεί κανείς να διαβάσει.

Επισκόπηση της υποδομής pplx-api
Η επίτευξη αυτών των αριθμών καθυστέρησης απαιτεί έναν συνδυασμό λογισμικού και υλικού τεχνολογίας αιχμής.
Τα instances p4d του AWS που τροφοδοτούνται από GPU NVIDIA A100 θέτουν τα θεμέλια ως η πιο οικονομικά αποδοτική και αξιόπιστη επιλογή για την κλιμάκωση GPU με κορυφαίες ταχύτητες ρολογιού στην κατηγορία τους.
Για να αξιοποιήσει το λογισμικό αυτό το υλικό, εκτελούμε το TensorRT-LLM της NVIDIA, μια βιβλιοθήκη ανοιχτού κώδικα που επιταχύνει και βελτιστοποιεί την εξαγωγή συμπερασμάτων LLM. Το TensorRT-LLM περιτυλίγει τον μεταγλωττιστή βαθιάς μάθησης του TensorRT και περιλαμβάνει τους πιο πρόσφατους βελτιστοποιημένους πυρήνες (kernels) που κατασκευάστηκαν για εφαρμογές αιχμής των FlashAttention και masked multi-head attention (MHA) για τις φάσεις πλαισίου και παραγωγής της εκτέλεσης μοντέλων LLM.
Α από εδώ και πέρα, η ραχοκοκαλιά του AWS και η ισχυρή ενσωμάτωσή της με το Kubernetes μάς δίνουν τη δυνατότητα να κλιμακώσουμε ελαστικά πέρα από εκατοντάδες GPU και να ελαχιστοποιήσουμε τον χρόνο διακοπής λειτουργίας και το υπερβολικό φορτίο δικτύου.
Περίπτωση χρήσης: Το API μας σε παραγωγή
pplx-api στο Perplexity: Μείωση κόστους και αξιοπιστία
Το API μας τροφοδοτεί ήδη ένα από τα βασικά χαρακτηριστικά προϊόντος του Perplexity. Η απλή αλλαγή ενός χαρακτηριστικού από ένα εξωτερικό API σε pplx-api είχε ως αποτέλεσμα εξοικονόμηση κόστους 0,62 εκατομμυρίων δολαρίων/έτος, περίπου 4x μείωση του κόστους. Εκτελέσαμε δοκιμές A/B και παρακολουθήσαμε μετρήσεις υποδομής για να διασφαλίσουμε ότι δεν υπήρξε υποβάθμιση της ποιότητας. Στη διάρκεια 2 εβδομάδων, δεν παρατηρήσαμε καμία στατιστικά σημαντική διαφορά στη δοκιμή A/B. Επιπλέον, το pplx-api μπορούσε να υποστηρίξει ημερήσιο φόρτο άνω του ενός εκατομμυρίου αιτημάτων, συνολικά σχεδόν ένα δισεκατομμύριο επεξεργασμένα token ημερησίως.
Τα αποτελέσματα αυτής της αρχικής εξερεύνησης είναι πολύ ενθαρρυντικά και αναμένουμε ότι το pplx-api θα τροφοδοτήσει περισσότερα από τα χαρακτηριστικά των προϊόντων μας με την πάροδο του χρόνου.

Χρησιμοποιούμε επίσης το pplx-api για την τροφοδοσία του Perplexity Labs, του παιχνιδότοπου (playground) μοντέλων μας που εξυπηρετεί διάφορα μοντέλα ανοιχτού κώδικα.

Η ομάδα μας δεσμεύεται να παρέχει πρόσβαση στα πιο πρόσφατα LLM ανοιχτού κώδικα τεχνολογίας αιχμής. Ενσωματώσαμε τα Mistral 7B, Code Llama 34b και όλα τα μοντέλα Llama 2 μέσα σε λίγες ώρες από την κυκλοφορία τους, και σχεδιάζουμε να κάνουμε το ίδιο καθώς γίνονται διαθέσιμα πιο ικανά LLM ανοιχτού κώδικα.
Ξεκινήστε με το AI API του Perplexity
Μπορείτε να αποκτήσετε πρόσβαση στο REST API του pplx-api χρησιμοποιώντας αιτήματα HTTPS. Η πιστοποίηση ταυτότητας στο pplx-api περιλαμβάνει τα ακόλουθα βήματα:
Δημιουργήστε ένα κλειδί API μέσω της σελίδας ρυθμίσεων λογαριασμού Perplexity. Το κλειδί API είναι ένα διακριτικό πρόσβασης μεγάλης διάρκειας ζωής που μπορεί να χρησιμοποιηθεί μέχρι να ανανεωθεί ή να διαγραφεί με μη αυτόματο τρόπο.

Στείλτε το κλειδί API ως bearer token στην κεφαλίδα Authorization με κάθε αίτημα pplx-api.
Στο ακόλουθο παράδειγμα, το PERPLEXITY_API_KEY είναι μια μεταβλητή περιβάλλοντος δεμένη σε ένα κλειδί που δημιουργήθηκε χρησιμοποιώντας τις παραπάνω οδηγίες. Το CURL χρησιμοποιείται για την υποβολή αιτήματος συμπλήρωσης συνομιλίας.
curl -X POST \
--url https://perplexity.coolkeypoint.com/__p/api.perplexity.ai/chat/completions \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header "Authorization: Bearer ${PERPLEXITY_API_KEY}" \
--data '{
"model": "mistral-7b-instruct",
"stream": false,
"max_tokens": 1024,
"frequency_penalty": 1,
"temperature": 0.0,
"messages": [
{
"role": "system",
"content": "Be precise and concise in your responses."
},
{
"role": "user",
"content": "How many stars are there in our galaxy?"
}
]
}'Το οποίο αποφέρει την ακόλουθη απόκριση, έχοντας content-type: application/json
{
"id": "3fbf9a47-ac23-446d-8c6b-d911e190a898",
"model": "mistral-7b-instruct",
"object": "chat.completion",
"created": 1765322,
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": " The Milky Way galaxy contains an estimated 200-400 billion stars.."
},
"delta": {
"role": "assistant",
"content": " The Milky Way galaxy contains an estimated 200-400 billion stars.."
}
}
],
"usage": {
"prompt_tokens": 40,
"completion_tokens": 22,
"total_tokens": 62
}
}Ακολουθεί ένα παράδειγμα κλήσης Python:
from openai import OpenAI
YOUR_API_KEY = "INSERT API KEY HERE"
messages = [
{
"role": "system",
"content": (
"You are an artificial intelligence assistant and you need to "
"engage in a helpful, detailed, polite conversation with a user."
),
},
{
"role": "user",
"content": (
"Count to 100, with a comma between each number and no newlines. "
"E.g., 1, 2, 3, ..."
),
},
]
client = OpenAI(api_key=YOUR_API_KEY, base_url="https://perplexity.coolkeypoint.com/__p/api.perplexity.ai")
# demo chat completion without streaming
response = client.chat.completions.create(
model="mistral-7b-instruct",
messages=messages,
)
print(response)
# demo chat completion with streaming
response_stream = client.chat.completions.create(
model="mistral-7b-instruct",
messages=messages,
stream=True,
)
for response in response_stream:
print(response)Προς το παρόν υποστηρίζουμε τα Mistral 7B, Llama 13B, Code Llama 34B, Llama 70B, και το API είναι βολικά συμβατό με τον πελάτη OpenAI για εύκολη ενσωμάτωση με υπάρχουσες εφαρμογές.
Για περισσότερες πληροφορίες, επισκεφθείτε την τεκμηρίωση του API και τον Οδηγό γρήγορης εκκίνησης.
Τι ακολουθεί
Στο εγγύς μέλλον, το pplx-api θα υποστηρίζει:
Προσαρμοσμένα LLM Perplexity και άλλα LLM ανοιχτού κώδικα.
Προσαρμοσμένες ενσωματώσεις (embeddings) Perplexity και ενσωματώσεις ανοιχτού κώδικα.
Αποκλειστική δομή τιμολόγησης API με γενική πρόσβαση μετά τη λήξη της δημόσιας δοκιμαστικής λειτουργίας (beta).
API Perplexity RAG-LLM με θεμελίωση για γεγονότα και παραπομπές.
Επικοινωνήστε στη διεύθυνση api@perplexity.ai εάν ενδιαφέρεστε για οποιαδήποτε από αυτές τις περιπτώσεις χρήσης.
Αυτό είναι επίσης η αρχή της σειράς δημοσιεύσεων στο ιστολόγιο (blog) του Perplexity. Στην επόμενη ανάρτησή μας, θα μοιραστούμε μια εις βάθος ανάλυση σχετικά με τη σύγκριση απόδοσης A100 έναντι H100 για εξαγωγή συμπερασμάτων LLM. Μείνετε συντονισμένοι!
Κάνουμε προσλήψεις! Εάν θέλετε να εργαστείτε σε ένα προϊόν που αναπτύσσεται σε τεράστια κλίμακα και να κατασκευάσετε μαζί μας προσεκτικά σχεδιασμένη, προσεκτικά βελτιστοποιημένη υποδομή γενετικών μοντέλων και μοντέλων μεγάλων γλωσσών, παρακαλούμε εγγραφείτε μαζί μας.
Ακολουθήστε μας στο Twitter, στο LinkedIn και εγγραφείτε στο Discord μας για περισσότερες συζητήσεις.
Συγγραφείς:
Lauren Yang, Kevin Hu, Aarash Heydari, William Zhang, Dmitry Pervukhin, Grigorii Alekseev, Alexandr Yarats
Απόρρητο δεδομένων
Επιλέγοντας το pplx-api, μπορείτε να αξιοποιήσετε πλήρως τις δυνατότητες των LLM διαφυλάσσοντας παράλληλα το απόρρητο και την εμπιστοσύνη των χρηστών και των πελατών σας. Κατανοούμε τη σημασία της προστασίας των προσωπικών σας πληροφοριών και δεσμευόμαστε να διατηρούμε την ασφάλεια και το απόρρητο των χρηστών μας. Τα δεδομένα του API διαγράφονται αυτόματα μετά από 30 ημέρες και ποτέ δεν εκπαιδεύουμε κανένα δεδομένο που μεταδίδεται μέσω του pplx-api. Οι χρήστες έχουν την επιλογή να εξαιρεθούν από τη διατήρηση δεδομένων στις ρυθμίσεις του λογαριασμού τους. Βρείτε την πολιτική απορρήτου του API εδώ.