Vi presenterar pplx-api

Perplexity Labs snabba och effektiva API för LLM:er med öppen källkod

Introducing pplx-api by Perplexity Labs

Observera: Följande har fasats ut för aktuella modeller. Läs mer om våra API:er

Vi är glada att tillkännage pplx-api, utformat för att vara ett av de snabbaste sätten att komma åt modellerna Mistral 7B, Llama2 13B, Code Llama 34B, Llama2 70B, replit-code-v1.5-3b. pplx-api gör det enkelt för utvecklare att integrera banbrytande öppen källkod-LLM:er i sina projekt.

Vårt pplx-api erbjuder:

Enkelhet: utvecklare kan använda toppmoderna modeller med öppen källkod direkt ur lådan och komma igång inom några minuter med ett känt REST-API.

Blixtnabb inferens: vårt genomtänkta inferenssystem är effektivt och uppnår upp till 2,9x lägre latens än Replicate och 3,1x lägre latens än Anyscale.

Bevisad infrastruktur: pplx-api har visat sig vara tillförlitligt och hanterar trafik i produktion både i vår Perplexity svarsmotor och i vår Labs-miljö.

Allt-i-ett-lösning för LLM:er med öppen källkod: vårt team ägnar sig åt att lägga till nya modeller med öppen källkod i takt med att de släpps. Till exempel lade vi till Llama- och Mistral-modeller inom några timmar efter lanseringen utan förhandsåtkomst.

pplx-api är i öppen beta och är gratis för användare med en Perplexity Pro-prenumeration.

Använd pplx-api för ett ledigt helghackaton eller som en kommersiell lösning för att bygga nya och innovativa produkter. Vi hoppas få veta hur personer kan bygga häftiga och innovativa produkter med vårt API genom den här lanseringen. Vänligen kontakta api@perplexity.ai om du har ett affärsanvändningsfall för pplx-api. Vi vill gärna höra från dig!

Fördelar med pplx-api

Enkel användning

LLM-implementering och inferens kräver betydande infrastrukturinsatser för att göra modellserveringen prestandaeffektiv och kostnadseffektiv. Utvecklare kan använda vårt API direkt utan djupa kunskaper i C++/CUDA eller tillgång till GPU:er, samtidigt som de njuter av toppmodern prestanda. Vår LLM-inferens abstraherar också komplexiteten och nödvändigheten av att hantera din egen hårdvara, vilket ytterligare bidrar till din enkla användning.


Blixtnabb inferens

Perplexitys LLM-API är noggrant utformat och optimerat för snabb inferens. För att uppnå detta har vi byggt en egen LLM-infrastruktur kring NVIDIAs TensorRT-LLM som körs på A100-GPU:er som tillhandahålls av AWS. Läs mer i avsnittet Översikt över pplx-api-infrastrukturen. Som ett resultat är pplx-api ett av de snabbaste Llama- och Mistral-API:erna som finns tillgängliga kommersiellt.

För att jämföra med befintliga lösningar jämförde vi latensen för pplx-api med andra LLM-inferensbibliotek. I våra experiment uppnår pplx-api upp till 2,92x snabbare total latens jämfört med Text Generation Inference (TGI), och upp till 4,35x snabbare latens för initialt svar. För detta experiment jämförde vi TGI och Perplexitys inferens för enkelströms- och serverscenarier på 2 A100-GPU:er med en Llama-2-13B-chat-modell fördelad över båda GPU:erna. För enkelströmsscenariot bearbetar servern en begäran efter den andra. I serverscenariot skickar klienten förfrågningar enligt en Poisson-fördelning med varierande förfrågingshastigheter för att emulera en varierande belastning. För förfrågingshastigheten utför vi en liten sökning upp till maximalt 1 begäran/sekund, det maximala genomflödet som upprätthålls av TGI. Vi använde verklig data med en mängd olika indata- och utdatatokentätheter för att simulera produktionsbeteende. Förfrågningarna har i genomsnitt ~700 indatatoken och ~550 utdatatoken.

Med samma indata och genom att skicka en enda ström av förfrågningar mätte vi också medellatenserna för Replicates och Anyscales API:er för samma modell för att samla in en prestandabaslinje mot andra befintliga API:er.

Perplexity Labs - Latens för första token
Perplexity Labs - Avkodningshastighet

Med samma experimentuppställning jämförde vi det maximala genomflödet för pplx-api mot TGI, med avkodningshastighet som en latensbegränsning. I våra experiment bearbetar pplx-api token 1,90x–6,75x snabbare än TGI, och TGI misslyckas helt med att uppfylla våra striktare latensbegränsningar vid 60 och 80 token/sekund. Vi utvärderar TGI under samma hård- och mjukvaruvillkor som vi använde för att utvärdera pplx-api. Att jämföra detta mått med Replicate och Anyscale är inte möjligt eftersom vi inte kan kontrollera deras hård- och belastningsfaktorer.

Som referens är den genomsnittliga mänskliga läshastigheten 5 token/sekund, vilket innebär att pplx-api kan betjäna i en takt som är snabbare än man kan läsa.

Perplexity Labs - Tokengenomflöde per GPU

Översikt över pplx-api-infrastrukturen

Att uppnå dessa latenssiffror kräver en kombination av toppmodern mjukvara och hårdvara.

AWS p4d-instanser som drivs av NVIDIA A100-GPU:er sätter scenen som det mest kostnadseffektiva och tillförlitliga alternativet för att skala ut GPU:er med klassens bästa klockhastigheter.

För att mjukvara ska kunna dra nytta av denna hårdvara kör vi NVIDIAs TensorRT-LLM, ett öppen källkod-bibliotek som accelererar och optimerar LLM-inferens. TensorRT-LLM omsluter TensorRTs djupinlärningskompilator och innehåller de senaste optimerade kärnorna gjorda för banbrytande implementeringar av FlashAttention och maskerad multi-head attention (MHA) för kontext- och genereringsfaserna av LLM-modellkörning.

Härifrån ger ryggraden i AWS och dess robusta integration med Kubernetes oss möjlighet att skala elastiskt bortom hundratals GPU:er och minimera stilleståndstid och nätverksoverhead.

Användningsfall: Vårt API i produktion

pplx-api i Perplexity: Kostnadsminskning och tillförlitlighet

Vårt API driver redan en av Perplexitys kärnfunktioner. Att bara byta en enda funktion från ett externt API till pplx-api resulterade i kostnadsbesparingar på 0,62 miljoner USD/år, vilket är en ungefärlig 4x minskning av kostnaderna. Vi körde A/B-tester och övervakade infrastrukturmått för att säkerställa att ingen kvalitetsförsämring skedde. Under en period av 2 veckor observerade vi ingen statistiskt signifikant skillnad i A/B-testet. Dessutom kunde pplx-api upprätthålla en daglig belastning på över en miljon förfrågningar, vilket uppgår till nästan en miljard bearbetade token dagligen.

Resultaten av denna inledande utforskning är mycket uppmuntrande, och vi räknar med att pplx-api kommer att driva fler av våra produktfunktioner över tid.

pplx-api i Perplexity Labs: Ekosystem för inferens med öppen källkod

Vi använder också pplx-api för att driva Perplexity Labs, vår modellmiljö som betjänar olika modeller med öppen källkod.

Genomsnittligt antal betjänade token per dag

Vårt team har åtagit sig att ge tillgång till de senaste toppmoderna LLM:erna med öppen källkod. Vi integrerade Mistral 7B, Code Llama 34b och alla Llama 2-modeller på några timmar efter deras release, och planerar att göra det i takt med att mer kapabla LLM:er med öppen källkod blir tillgängliga.

Kom igång med Perplexitys AI-API

Du kan komma åt pplx-api REST-API med HTTPS-förfrågningar. Autentisering i pplx-api omfattar följande steg:

Generera en API-nyckel via sidan för Perplexity-kontoinställningar. API-nyckeln är en långlivad åtkomsttoken som kan användas tills den manuellt uppdateras eller tas bort.

Skicka API-nyckeln som en ägartoken i Authorization-huvudet med varje förfrågan till pplx-api.

I följande exempel är PERPLEXITY_API_KEY en miljövariabel kopplad till en nyckel genererad med ovanstående instruktioner. CURL används för att skicka en begäran om chattkomplettering.

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

Vilket ger följande svar, med 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 } }

Här är ett exempel på ett Python-anrop:

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)

Vi stöder för närvarande Mistral 7B, Llama 13B, Code Llama 34B, Llama 70B, och API:et är bekvämt OpenAI-klientkompatibelt för enkel integration med befintliga applikationer.

För mer information, besök vår API-dokumentation och Snabbstartguide.

Vad händer härnäst

Inom en snar framtid kommer pplx-api att stödja:

Anpassade Perplexity-LLM:er och andra LLM:er med öppen källkod.

Anpassade Perplexity-inbäddningar och inbäddningar med öppen källkod.

Dedikerad prisstruktur för API med allmän åtkomst efter att den offentliga betan har avslutats.

Perplexity RAG-LLM-API med grundning för fakta och citeringar.

Kontakta api@perplexity.ai om du är intresserad av något av dessa användningsfall.

Detta är också början på vår serie med Perplexity-blogginlägg. I vårt nästa inlägg kommer vi att dela en djupdykning om prestandajämförelse mellan A100 och H100 för LLM-inferens. Håll utkik!

Vi anställer! Om du vill arbeta med en produkt som distribueras i enorm skala och bygga genomtänkt designad, noggrant optimerad infrastruktur för generativa och stora språkmodeller med oss, vänligen gå med oss.

Följ oss på Twitter, LinkedIn och gå med i vår Discord för mer diskussion.

Författare:

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

Datasekretess

Genom att välja pplx-api kan du utnyttja den fulla potentialen hos LLM:er samtidigt som du skyddar dina användares och kunders integritet och förtroende. Vi förstår vikten av att skydda din personliga information och har åtagit oss att upprätthålla säkerheten och integriteten för våra användare. API-data raderas automatiskt efter 30 dagar, och vi tränar aldrig på data som överförs via pplx-api. Användare har möjlighet att välja bort datalagring i sina kontoinställningar. Håll vår API-integritetspolicy här.