Einführung der pplx-api

Schnelle, effiziente API für Open-Source-LLMs von Perplexity.

Introducing pplx-api by Perplexity Labs

Bitte beachten Sie: Die folgenden Punkte wurden für aktuelle Modelle veraltet. Erfahren Sie mehr über unsere APIs

Wir freuen uns, die pplx-api anzukündigen, die als eine der schnellsten Möglichkeiten für den Zugriff auf die Modelle Mistral 7B, Llama2 13B, Code Llama 34B, Llama2 70B und replit-code-v1.5-3b konzipiert wurde. Die pplx-api ermöglicht es Entwicklern, modernste Open-Source-LLMs nahtlos in ihre Projekte zu integrieren.

Unsere pplx-api bietet:

Benutzerfreundlichkeit: Entwickler können modernste Open-Source-Modelle direkt einsetzen und innerhalb weniger Minuten mit einer vertrauten REST-API beginnen.

Extrem schnelle Inferenz: Unser sorgfältig konzipiertes Inferenzsystem ist effizient und erreicht eine bis zu 2,9-fach geringere Latenz als Replicate und eine 3,1-fach geringere Latenz als Anyscale.

In der Praxis erprobte Infrastruktur: Die pplx-api hat ihre Zuverlässigkeit bewiesen und verarbeitet Datenverkehr auf Produktionsebene sowohl in unserer Perplexity Answer Engine als auch in unserer Labs-Umgebung.

Alles aus einer Hand für Open-Source-LLMs: Unsere Teams widmen sich der Integration neuer Open-Source-Modelle, sobald diese verfügbar sind. Beispielsweise haben wir Llama- und Mistral-Modelle innerhalb weniger Stunden nach deren Veröffentlichung ohne Vorabzugriff hinzugefügt.

Die pplx-api befindet sich in der öffentlichen Betaphase und ist für Benutzer mit einem Perplexity Pro-Abonnement kostenlos.

Nutzen Sie die pplx-api für einen informellen Wochenend-Hackathon oder als kommerzielle Lösung zur Entwicklung neuer und innovativer Produkte. Wir möchten durch diese Veröffentlichung erfahren, wie Anwender mit unserer API innovative Produkte entwickeln. Bitte wenden Sie sich an api@perplexity.ai , falls Sie einen geschäftlichen Anwendungsfall für die pplx-api haben. Wir freuen uns, von Ihnen zu hören!

Vorteile der pplx-api

Benutzerfreundlichkeit

Die Bereitstellung und Inferenz von LLMs erfordert erhebliche infrastrukturelle Anstrengungen, um das Modell-Serving performant und kosteneffizient zu gestalten. Entwickler können unsere API sofort einsatzbereit verwenden, ohne tiefgreifende C++/CUDA-Kenntnisse oder GPU-Zugriff, und dennoch von modernster Leistung profitieren. Unsere LLM-Inferenz abstrahiert zudem die Komplexität und Notwendigkeit der Verwaltung eigener Hardware, was die Benutzerfreundlichkeit weiter erhöht.


Extrem schnelle Inferenz

Die LLM-API von Perplexity wurde sorgfältig für schnelle Inferenz entwickelt und optimiert. Um dies zu erreichen, haben wir eine proprietäre LLM-Inferenzinfrastruktur rund um NVIDIAs TensorRT-LLM aufgebaut, die auf AWS-A100-GPUs bereitgestellt wird. Weitere Informationen finden Sie im Abschnitt Überblick über die pplx-api-Infrastruktur. Infolgedessen ist die pplx-api eine der schnellsten kommerziell verfügbaren Llama- und Mistral-APIs.

Für einen Vergleich mit bestehenden Lösungen haben wir die Latenz der pplx-api mit anderen LLM-Inferenzbibliotheken gemessen. In unseren Experimenten erzielte die pplx-api eine bis zu 2,92-fach geringere Gesamtlatenz im Vergleich zu Text Generation Inference (TGI) und eine bis zu 4,35-fach schnellere Latenz bei der ersten Antwort. Für dieses Experiment verglichen wir die TGI- und Perplexity-Inferenz für Einzel-Stream- und Serverszenarien auf 2 A100-GPUs unter Verwendung eines Llama-2-13B-Chat-Modells, das auf beide GPUs aufgeteilt war. Im Einzel-Stream-Szenario verarbeitet der Server eine Anfrage nach der anderen. Im Serverszenario sendet der Client Anfragen gemäß einer Poisson-Verteilung mit variierenden Anfrageraten, um eine wechselnde Last zu simulieren. Für die Anfragerate führen wir einen kleinen Durchlauf bis zu einem Maximum von 1 Anfrage/Sekunde durch, dem maximalen Durchsatz, den TGI aufrechterhalten kann. Wir haben reale Daten mit verschiedenen Eingabe- und Ausgabetoken-Längen verwendet, um das Produktionsverhalten zu simulieren. Die Anfragen umfassen durchschnittlich ~700 Eingabetoken und ~550 Ausgabetoken.

Unter Verwendung derselben Eingaben und beim Senden eines einzelnen Anfragestroms haben wir auch die mittleren Latenzzeiten der APIs von Replicate und Anyscale für dasselbe Modell gemessen, um eine Leistungsbasis gegenüber anderen bestehenden APIs zu ermitteln.

Perplexity Labs - Latenz des ersten Tokens
Perplexity Labs - Dekodiergeschwindigkeit

Unter Verwendung desselben experimentellen Aufbaus verglichen wir den maximalen Durchsatz der pplx-api mit TGI, wobei die Dekodiergeschwindigkeit als Latenzbeschränkung diente. In unseren Experimenten verarbeitet die pplx-api Token 1,90- bis 6,75-mal schneller als TGI, wobei TGI unsere strengeren Latenzbeschränkungen bei 60 und 80 Token/Sekunde nicht erfüllen kann. Wir bewerten TGI unter denselben Hardware- und Lastbedingungen, die wir für die Bewertung der pplx-api verwendet haben. Ein Vergleich dieser Kennzahl mit Replicate und Anyscale ist nicht möglich, da wir deren Hardware- und Lastfaktoren nicht kontrollieren können.

Zur Referenz: Die durchschnittliche menschliche Lesegeschwindigkeit beträgt 5 Token/Sekunde, was bedeutet, dass die pplx-api Daten schneller bereitstellen kann, als man lesen kann.

Perplexity Labs - Token-Durchsatz pro GPU

Überblick über die pplx-api-Infrastruktur

Das Erreichen dieser Latenzzahlen erfordert eine Kombination aus modernster Software und Hardware.

AWS p4d-Instanzen, die von NVIDIA A100 GPUs betrieben werden, bilden die Basis als kostengünstigste und zuverlässigste Option für die Skalierung von GPUs mit erstklassigen Taktraten.

Damit Software diese Hardware nutzen kann, verwenden wir NVIDIAs TensorRT-LLM, eine Open-Source-Bibliothek, die die LLM-Inferenz beschleunigt und optimiert. TensorRT-LLM umschließt den Deep-Learning-Compiler von TensorRT und enthält die neuesten optimierten Kernel für hochmoderne Implementierungen von FlashAttention sowie maskierter Multi-Head Attention (MHA) für die Kontext- und Generierungsphasen der LLM-Modellausführung.

Von hier aus ermöglichen uns das Backbone von AWS und seine robuste Integration mit Kubernetes, elastisch auf Hunderte von GPUs zu skalieren und Ausfallzeiten sowie Netzwerk-Overhead zu minimieren.

Anwendungsfall: Unsere API in der Produktion

pplx-api bei Perplexity: Kostensenkung und Zuverlässigkeit

Unsere API betreibt bereits eine der Kernfunktionen des Produkts von Perplexity. Die Umstellung einer einzigen Funktion von einer externen API auf die pplx-api führte zu Kosteneinsparungen von 0,62 Mio. USD pro Jahr, was einer Kostenreduzierung um das 4-Fache entspricht. Wir haben A/B-Tests durchgeführt und Infrastrukturmetriken überwacht, um sicherzustellen, dass keine Qualitätsminderung auftritt. Über einen Zeitraum von 2 Wochen beobachteten wir keinen statistisch signifikanten Unterschied im A/B-Test. Zusätzlich konnte die pplx-api eine tägliche Last von über einer Million Anfragen bewältigen, was insgesamt fast einer Milliarde verarbeiteter Token pro Tag entspricht.

Die Ergebnisse dieser ersten Untersuchung sind sehr ermutigend, und wir gehen davon aus, dass die pplx-api im Laufe der Zeit weitere unserer Produktfunktionen antreiben wird.

pplx-api in Perplexity Labs: Open-Source-Inferenz-Ökosystem

Wir nutzen die pplx-api auch zum Betrieb von Perplexity Labs, unserer Modell-Spielwiese, die verschiedene Open-Source-Modelle bereitstellt.

Täglicher durchschnittlicher bereitgestellter Token-Umfang

Unser Team setzt sich dafür ein, den Zugriff auf die neuesten hochmodernen Open-Source-LLMs bereitzustellen. Wir haben Mistral 7B, Code Llama 34b und alle Llama 2-Modelle innerhalb weniger Stunden nach ihrer Veröffentlichung integriert und planen dies auch in Zukunft, sobald leistungsfähigere Open-Source-LLMs verfügbar werden.

Erste Schritte mit der KI-API von Perplexity

Sie können auf die pplx-api REST-API über HTTPS-Anfragen zugreifen. Die Authentifizierung bei der pplx-api umfasst die folgenden Schritte:

Generieren Sie einen API-Schlüssel über die Kontoeinstellungsseite von Perplexity. Der API-Schlüssel ist ein langlebiges Zugriffstoken, das bis zur manuellen Aktualisierung oder Löschung verwendet werden kann.

Senden Sie den API-Schlüssel als Bearer-Token im Authorization-Header bei jeder pplx-api-Anfrage.

Im folgenden Beispiel ist PERPLEXITY_API_KEY eine Umgebungsvariable, die an einen gemäß den obigen Anweisungen generierten Schlüssel gebunden ist. CURL wird verwendet, um eine Chat-Vervollständigungsanfrage zu senden.

bash
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?" } ] }'

Was die folgende Antwort mit content-type: application/json ergibt.

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 } }

Hier ist ein Beispiel für einen Python-Aufruf:

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)

Wir unterstützen derzeit Mistral 7B, Llama 13B, Code Llama 34B, Llama 70B. Die API ist zudem komfortabel mit dem OpenAI-Client kompatibel, was eine einfache Integration in bestehende Anwendungen ermöglicht.

Für weitere Informationen besuchen Sie bitte unsere API-Dokumentation und den Quickstart-Guide.

Was kommt als Nächstes?

In naher Zukunft wird die pplx-api Folgendes unterstützen:

Benutzerdefinierte Perplexity-LLMs und andere Open-Source-LLMs.

Benutzerdefinierte Perplexity-Embeddings und Open-Source-Embeddings.

Dedizierte API-Preisstruktur mit allgemeinem Zugriff nach Ende der öffentlichen Betaphase.

Perplexity RAG-LLM-API mit Grounding für Fakten und Zitate.

Wenden Sie sich an api@perplexity.ai, wenn Sie an einem dieser Anwendungsfälle interessiert sind.

Dies ist auch der Start unserer Perplexity-Blogbeitragsserie. Im nächsten Beitrag werden wir eine tiefgehende Analyse des A100- vs. H100-Leistungsvergleichs für die LLM-Inferenz teilen. Bleiben Sie dran!

Wir stellen ein! Wenn Sie an einem Produkt mitarbeiten möchten, das in großem Maßstab eingesetzt wird, und mit uns durchdacht gestaltete, sorgfältig optimierte generative und Large-Language-Model-Infrastruktur aufbauen wollen, schließen Sie sich uns an.

Folgen Sie uns auf Twitter, LinkedIn und treten Sie unserem Discord für weitere Diskussionen bei.

Autoren:

Lauren Yang, Kevin Hu, Aarash Heydari, William Zhang, Dmitry Pervukhin, Grigorii Alekseev, Alexandr Yarats

Datenschutz

Durch die Wahl der pplx-api können Sie das volle Potenzial von LLMs ausschöpfen und gleichzeitig die Privatsphäre und das Vertrauen Ihrer Benutzer und Kunden wahren. Wir verstehen die Bedeutung des Schutzes Ihrer persönlichen Daten und verpflichten uns zur Wahrung der Sicherheit und Privatsphäre unserer Benutzer. API-Daten werden nach 30 Tagen automatisch gelöscht, und wir trainieren niemals mit Daten, die über die pplx-api übertragen werden. Benutzer haben die Möglichkeit, die Datenspeicherung in ihren Kontoeinstellungen zu deaktivieren. Unsere API-Datenschutzrichtlinie finden Sie hier.