Introductie van pplx-api

Perplexity Labs' snelle en efficiënte API voor open-source LLM's

Introducing pplx-api by Perplexity Labs

Let op: Het onderstaande is afgeschreven voor huidige modellen. Lees meer over onze API's

We zijn verheugd om de pplx-api aan te kondigen, ontworpen als een van de snelste manieren om toegang te krijgen tot de Mistral 7B, Llama2 13B, Code Llama 34B, Llama2 70B en replit-code-v1.5-3b modellen. De pplx-api maakt het voor ontwikkelaars eenvoudig om geavanceerde open-source LLM's in hun projecten te integreren.

Onze pplx-api biedt:

Gebruiksgemak: ontwikkelaars kunnen kant-en-klare open-source modellen gebruiken en binnen enkele minuten aan de slag gaan met een vertrouwde REST API.

Razendsnelle inferentie: ons zorgvuldig ontworpen inferentiesysteem is efficiënt en behaalt tot 2,9x lagere latentie dan Replicate en 3,1x lagere latentie dan Anyscale.

Beproefde infrastructuur: pplx-api is bewezen betrouwbaar en bedient productie-verkeer in zowel onze Perplexity antwoord-engine als onze Labs-speeltuin.

One-stop shop voor open-source LLM's: ons team is toegewijd aan het toevoegen van nieuwe open-source modellen zodra deze beschikbaar zijn. We hebben bijvoorbeeld Llama- en Mistral-modellen toegevoegd binnen enkele uren na de lancering, zonder pre-release toegang.

De pplx-api bevindt zich in de openbare bètafase en is gratis voor gebruikers met een Perplexity Pro-abonnement.

Gebruik de pplx-api voor een informele weekend-hackathon of als commerciële oplossing voor het bouwen van nieuwe en innovatieve producten. We hopen te leren hoe mensen via deze release coole en innovatieve producten met onze API kunnen bouwen. Neem contact op met api@perplexity.ai als u een zakelijke use case heeft voor de pplx-api. We horen graag van u!

Voordelen van de pplx-api

Gebruiksgemak

De implementatie en inferentie van LLM's vereisen aanzienlijke infrastructuur om model-serving performant en kostenefficiënt te maken. Ontwikkelaars kunnen onze API out-of-the-box gebruiken, zonder diepgaande kennis van C++/CUDA of toegang tot GPU's, terwijl ze toch genieten van state-of-the-art prestaties. Onze LLM-inferentie abstraheert ook de complexiteit en de noodzaak om uw eigen hardware te beheren, wat het gebruiksgemak verder vergroot.

Razendsnelle inferentie

Perplexity's LLM API is zorgvuldig ontworpen en geoptimaliseerd voor snelle inferentie. Om dit te bereiken, hebben we een eigen LLM-inferentie-infrastructuur gebouwd rond NVIDIA's TensortRT-LLM, die wordt geserveerd op A100 GPU's van AWS. Lees meer in de sectie Overzicht van pplx-api infrastructuur. Als resultaat is de pplx-api een van de snelste commercieel beschikbare Llama- en Mistral-API's.

Om te benchmarken tegen bestaande oplossingen hebben we de latentie van de pplx-api vergeleken met andere LLM-inferentiebibliotheken. In onze experimenten behaalt de pplx-api tot 2,92x snellere algehele latentie vergeleken met Text Generation Inference (TGI), en tot 4,35x snellere initiële responslatentie. Voor dit experiment hebben we TGI en Perplexity's inferentie vergeleken voor single-stream en server-scenario's op 2 A100 GPU's met behulp van een Llama-2-13B-chatmodel dat over beide GPU's is geshard. Voor het single-stream scenario verwerkt de server de ene aanvraag na de andere. In het server-scenario verstuurt de client aanvragen volgens een Poisson-verdeling met variërende aanvraagpercentages om een variërende belasting te emuleren. Voor het aanvraagpercentage voeren we een kleine sweep uit tot maximaal 1 aanvraag per seconde, de maximale doorvoer die door TGI wordt volgehouden. We hebben praktijkgegevens gebruikt met een verscheidenheid aan input- en output-tokenlengtes om productiegedrag te simuleren. De aanvragen gemiddeld ~700 input-tokens en ~550 output-tokens.

Met dezelfde inputs en het versturen van een enkele stroom aanvragen hebben we ook de gemiddelde latenties van de API's van Replicate en Anyscale voor hetzelfde model gemeten om een prestatiebasislijn te verkrijgen ten opzichte van andere bestaande API's.

Perplexity Labs - Latentie eerste token
Perplexity Labs - Decodeersnelheid

Met dezelfde experimentele opstelling hebben we de maximale doorvoer van de pplx-api vergeleken met TGI, met decodeersnelheid als latentiebeperking. In onze experimenten verwerkt de pplx-api tokens 1,90x-6,75x sneller dan TGI, en TGI slaagt er volledig niet in om aan onze strengere latentiebeperkingen te voldoen bij 60 en 80 tokens/seconde. We evalueren TGI onder dezelfde hardware- en belastingomstandigheden als die we gebruikten om de pplx-api te evalueren. Het vergelijken van deze statistiek met Replicate en Anyscale is niet mogelijk aangezien we hun hardware- en belastingfactoren niet kunnen controleren.

Ter referentie: de gemiddelde leessnelheid van een mens is 5 tokens per seconde, wat betekent dat de pplx-api in staat is om te serveren met een snelheid die hoger ligt dan men kan lezen.

Perplexity Labs - Token-doorvoer per GPU

Overzicht van de pplx-api-infrastructuur

Het bereiken van deze latentiecijfers vereist een combinatie van state-of-the-art software en hardware.

AWS p4d-instanties aangedreven door NVIDIA A100 GPU's vormen de basis als de meest kosteneffectieve en betrouwbare optie voor het schalen van GPU's met eersteklas kloksnelheden.

Om software deze hardware te laten benutten, draaien we NVIDIA's TensorRT-LLM, een open-source bibliotheek die LLM-inferentie versnelt en optimaliseert. TensorRT-LLM omvat de deep learning-compiler van TensorRT en bevat de nieuwste geoptimaliseerde kernels gemaakt voor geavanceerde implementaties van FlashAttention en masked multi-head attention (MHA) voor de context- en generatiefasen van LLM-modeluitvoering.

Vanaf hier stelt de ruggengraat van AWS en de robuuste integratie met Kubernetes ons in staat om elastisch te schalen voorbij honderden GPU's en downtime en netwerkoverhead te minimaliseren.

Use Case: Onze API in productie

pplx-api in Perplexity: Kostenreductie en betrouwbaarheid

Onze API voedt al een van de kernproductfuncties van Perplexity. Alleen al het overschakelen van één enkele functie van een externe API naar pplx-api resulteerde in kostenbesparingen van $0,62 miljoen per jaar, een reductie van ongeveer 4x in kosten. We hebben A/B-tests uitgevoerd en infrastructuurstatistieken gemonitord om ervoor te zorgen dat er geen kwaliteitsverlies optrad. Gedurende twee weken hebben we geen statistisch significante verschillen waargenomen in de A/B-test. Bovendien kon de pplx-api een dagelijkse belasting van meer dan een miljoen aanvragen aan, in totaal bijna een miljard verwerkte tokens per dag.

De resultaten van deze eerste verkenning zijn zeer bemoedigend en we verwachten dat de pplx-api na verloop van tijd meer van onze productfuncties zal aandrijven.

pplx-api in Perplexity Labs: Open-source inferentie-ecosysteem

We gebruiken de pplx-api ook voor Perplexity Labs, onze modellspeeltuin die diverse open-source modellen bedient.

Dagelijks gemiddelde aantal geserveerde tokens

Ons team zet zich in om toegang te bieden tot de nieuwste state-of-the-art open-source LLM's. We hebben Mistral 7B, Code Llama 34B en alle Llama 2-modellen binnen enkele uren na hun release geïntegreerd en zijn van plan dit te blijven doen zodra er meer capabele open-source LLM's beschikbaar komen.

Aan de slag met Perplexity's AI API

U kunt de pplx-api REST API benaderen met HTTPS-aanvragen. Authenticatie bij de pplx-api omvat de volgende stappen:

Genereer een API-sleutel via de Perplexity-accountinstellingenpagina. De API-sleutel is een langdurig toegangstoken dat kan worden gebruikt totdat het handmatig wordt ververst of verwijderd.

Verstuur de API-sleutel als bearer-token in de Authorization-header bij elke pplx-api-aanvraag.

In het volgende voorbeeld is PERPLEXITY_API_KEY een omgevingsvariabele die is gekoppeld aan een sleutel die is gegenereerd volgens de bovenstaande instructies. CURL wordt gebruikt om een chat-completion-aanvraag in te dienen.

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

Dit levert het volgende antwoord op, met content-type: application/json

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 is een voorbeeld van een Python-aanroep:

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)

We ondersteunen momenteel Mistral 7B, Llama 13B, Code Llama 34B, Llama 70B, en de API is gemakkelijk compatibel met de OpenAI-client voor eenvoudige integratie met bestaande applicaties.

Bezoek voor meer informatie onze API-documentatie en Quickstart-gids.

Wat volgt er nu

In de nabije toekomst zal de pplx-api het volgende ondersteunen:

Aangepaste Perplexity LLM's en andere open-source LLM's.

Aangepaste Perplexity-embeddings en open-source embeddings.

Een specifieke API-prijsstructuur met algemene toegang nadat de openbare bèta is afgerond.

Perplexity RAG-LLM API met grounding voor feiten en citaten.

Neem contact op met api@perplexity.ai als u geïnteresseerd bent in een van deze use cases.

Dit is ook het begin van onze Perplexity-blogpostserie. In onze volgende post zullen we een diepgaande duik nemen in de A100 versus H100 prestatievergelijking voor LLM-inferentie. Blijf op de hoogte!

We zijn aan het werven! Als je wilt werken aan een product dat op enorme schaal wordt ingezet en samen met ons zorgvuldig ontworpen en geoptimaliseerde generatieve en large language model-infrastructuur wilt bouwen, sluit je dan bij ons aan.

Volg ons op Twitter, LinkedIn en word lid van onze Discord voor meer discussie.

Auteurs:

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

Gegevensprivacy

Door te kiezen voor de pplx-api kunt u het volledige potentieel van LLM's benutten terwijl u de privacy en het vertrouwen van uw gebruikers en klanten waarborgt. We begrijpen het belang van het beschermen van uw persoonlijke gegevens en zetten ons in voor het handhaven van de veiligheid en privacy van onze gebruikers. API-gegevens worden automatisch na 30 dagen verwijderd en we trainen nooit op gegevens die via de pplx-api worden verzonden. Gebruikers hebben de mogelijkheid om zich in hun accountinstellingen af te melden voor gegevensretentie. Vind hier ons API-privacybeleid.