Introducere în pplx-api

API-ul rapid și eficient al Perplexity Lab pentru LLM-uri open-source

Introducing pplx-api by Perplexity Labs

Rețineți: Următoarele modele au fost depășite pentru modelele actuale. Aflați mai multe despre API-urile noastre

Suntem încântați să anunțăm pplx-api, conceput să fie una dintre cele mai rapide modalități de accesare a modelelor Mistral 7B, Llama2 13B, Code Llama 34B, Llama2 70B, replit-code-v1.5-3b. pplx-api facilitează integrarea de către dezvoltatori a modelelor lingvistice mari (LLM) open-source de ultimă generație în proiectele lor.

pplx-api oferă:

Ușurință în utilizare: dezvoltatorii pot folosi modele open-source de ultimă generație imediat și pot începe în câteva minute cu un API REST familiar.

Inerență extrem de rapidă: sistemul nostru de inferență conceput cu atenție este eficient și atinge o latență de până la de 2,9 ori mai mică decât Replicate și de 3,1 ori mai mică decât Anyscale.

Infrastructură testată în luptă: pplx-api s-a dovedit a fi fiabil, deservind trafic la nivel de producție atât în motorul de răspuns Perplexity, cât și în spațiul de testare Labs.

Soluție unică pentru LLM-uri open-source: echipa noastră este dedicată adăugării de noi modele open-source pe măsură ce apar. De exemplu, am adăugat modele Llama și Mistral în câteva ore de la lansare fără acces prealabil.

pplx-api este în versiune beta publică și este gratuit pentru utilizatorii cu un abonament Perplexity Pro.

Folosiți pplx-api pentru un hackathon lejer de weekend sau ca soluție comercială pentru a construi produse noi și inovatoare. Sperăm să aflăm cum pot oamenii să construiască produse cool și inovatoare cu API-ul nostru prin această lansare. Vă rugăm să contactați api@perplexity.ai dacă aveți un caz de utilizare de afaceri pentru pplx-api. Ne-ar plăcea să auzim de la dumneavoastră!

Beneficiile pplx-api

Ușurință în utilizare

Implementarea și inferența LLM necesită un efort semnificativ de infrastructură pentru a face servirea modelelor performantă și rentabilă. Dezvoltatorii pot folosi API-ul nostru out-of-the-box, fără cunoștințe profunde de C++/CUDA sau acces la GPU-uri, bucurându-se totodată de performanțe de ultimă generație. Inferența noastră LLM abstractizează, de asemenea, complexitatea și necesitatea gestionării propriului hardware, adăugând un plus de ușurință în utilizare.


Inferență extrem de rapidă

API-ul LLM al Perplexity este proiectat și optimizat cu atenție pentru o inferență rapidă. Pentru a realiza acest lucru, am construit o infrastructură proprietară de inferență LLM în jurul TensorRT-LLM de la NVIDIA, care este administrată pe GPU-uri A100 furnizate de AWS. Aflați mai multe în secțiunea Prezentare generală a infrastructurii pplx-api. Drept urmare, pplx-api este unul dintre cele mai rapide API-uri Llama și Mistral disponibile comercial.

Pentru a face o comparație cu soluțiile existente, am comparat latența pplx-api cu alte biblioteci de inferență LLM. În experimentele noastre, pplx-api atinge o latență generală cu până la 2,92x mai rapidă în comparație cu Text Generation Inference (TGI) și o latență a răspunsului inițial cu până la 4,35x mai rapidă. Pentru acest experiment, am comparat TGI și inferența Perplexity pentru scenarii cu flux unic și server pe 2 GPU-uri A100 folosind un model Llama-2-13B-chat partajat pe ambele GPU-uri. Pentru scenariul cu flux unic, serverul procesează o cerere după alta. În scenariul de server, clientul trimite cereri conform unei distribuții Poisson cu rate de cerere variabile pentru a emula o sarcină variabilă. Pentru rata cererilor, efectuăm o mică scanare până la un maxim de 1 cerere/secundă, debitul maxim susținut de TGI. Am folosit date din lumea reală cu o varietate de lungimi de jetoane de intrare și ieșire pentru a simula comportamentul de producție. Cererile au în medie ~700 jetoane de intrare și ~550 jetoane de ieșire.

Folosind aceleași intrări și trimițând un singur flux de cereri, am măsurat și latențele medii ale API-urilor Replicate și Anyscale pentru același model, pentru a obține o bază de referință a performanței față de alte API-uri existente.

Perplexity Labs - Latența primului jeton
Perplexity Labs - Viteza de decodare

Folosind aceeași configurație experimentală, am comparat debitul maxim al pplx-api cu TGI, având viteza de decodare ca restricție de latență. În experimentele noastre, pplx-api procesează jetoanele de 1,90x-6,75x mai repede decât TGI, iar TGI eșuează complet în a îndeplini constrângerile noastre mai stricte de latență la 60 și 80 de jetoane/secundă. Evaluăm TGI în aceleași condiții de hardware și sarcină pe care le-am folosit pentru a evalua pplx-api. Compararea acestei metrici cu Replicate și Anyscale nu este posibilă deoarece nu putem controla factorii lor de hardware și sarcină.

Pentru referință, viteza medie de citire a unui om este de 5 jetoane/secundă, ceea ce înseamnă că pplx-api poate servi la o rată mai mare decât poate citi o persoană.

Perplexity Labs - Debitul de jetoane per GPU

Prezentare generală a infrastructurii pplx-api

Obținerea acestor valori de latență necesită o combinație de software și hardware de ultimă generație.

Instanțele AWS p4d echipate cu GPU-uri NVIDIA A100 pregătesc terenul ca fiind cea mai cost-eficientă și fiabilă opțiune pentru scalarea GPU-urilor cu viteze de ceas de cel mai înalt nivel.

Pentru ca software-ul să poată profita de acest hardware, rulăm TensorRT-LLM de la NVIDIA, o bibliotecă open-source care accelerează și optimizează inferența LLM. TensorRT-LLM cuprinde compilatorul de învățare profundă TensorRT și include cele mai recente nuclee optimizate realizate pentru implementări de vârf ale FlashAttention și atenție multi-cap mascată (MHA) pentru fazele de context și generare ale execuției modelului LLM.

De aici, coloana vertebrală AWS și integrarea sa robustă cu Kubernetes ne împuternicesc să scalăm elastic dincolo de sute de GPU-uri și să minimizăm timpul de nefuncționare și suprasolicitarea rețelei.

Caz de utilizare: API-ul nostru în producție

pplx-api în Perplexity: Reducerea costurilor și fiabilitate

API-ul nostru alimentează deja una dintre caracteristicile de bază ale produsului Perplexity. Doar comutarea unei singure caracteristici de la un API extern la pplx-api a dus la economii de costuri de 0,62 milioane USD/an, reprezentând o reducere de aproximativ 4 ori a costurilor. Am rulat teste A/B și am monitorizat valorile infrastructurii pentru a ne asigura că nu există o degradare a calității. Pe parcursul a 2 săptămâni, nu am observat nicio diferență semnificativă statistic în testul A/B. În plus, pplx-api ar putea susține o sarcină zilnică de peste un milion de cereri, totalizând aproape un miliard de jetoane procesate zilnic.

Rezultatele acestei explorări inițiale sunt foarte încurajatoare și anticipăm că pplx-api va alimenta mai multe dintre caracteristicile produsului nostru în timp.

pplx-api în Perplexity Labs: Ecosistem de inferență open-source

De asemenea, folosim pplx-api pentru a alimenta Perplexity Labs, spațiul nostru de testare a modelelor care deservește diverse modele open-source.

Media zilnică a jetoanelor deservite

Echipa noastră se angajează să ofere acces la cele mai recente LLM-uri open-source de ultimă generație. Am integrat Mistral 7B, Code Llama 34b și toate modelele Llama 2 în câteva ore de la lansarea lor și intenționăm să facem acest lucru pe măsură ce vor deveni disponibile LLM-uri open-source mai capabile.

Începeți cu API-ul AI de la Perplexity

Puteți accesa API-ul REST pplx-api folosind cereri HTTPS. Autentificarea în pplx-api implică următorii pași:

Generați o cheie API prin pagina de setări a contului Perplexity. Cheia API este un token de acces cu durată lungă de viață care poate fi utilizat până când este reîmprospătat sau șters manual.

Trimiteți cheia API ca token purtător în antetul Authorization cu fiecare cerere pplx-api.

În exemplul următor, PERPLEXITY_API_KEY este o variabilă de mediu asociată cu o cheie generată folosind instrucțiunile de mai sus. Se folosește CURL pentru a trimite o cerere de finalizare a conversației.

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

Ceea ce oferă următorul răspuns, având 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 } }

Iată un exemplu de apel în Python:

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)

În prezent, acceptăm Mistral 7B, Llama 13B, Code Llama 34B, Llama 70B, iar API-ul este compatibil în mod convenabil cu clientul OpenAI pentru o integrare facilă cu aplicațiile existente.

Pentru mai multe informații, vă rugăm să vizitați documentația noastră API și Ghidul de pornire rapidă.

Ce urmează

În viitorul apropiat, pplx-api va accepta:

LLM-uri personalizate Perplexity și alte LLM-uri open-source.

Încorporări personalizate Perplexity și încorporări open-source.

Structură de prețuri API dedicată cu acces general după eliminarea treptată a versiunii beta publice.

API Perplexity RAG-LLM cu fundamentare pentru fapte și citate.

Contactați api@perplexity.ai dacă sunteți interesat de vreunul dintre aceste cazuri de utilizare.

Acesta este, de asemenea, începutul seriei noastre de articole de blog Perplexity. În următoarea postare, vom împărtăși o analiză detaliată a comparației de performanță A100 vs H100 pentru inferența LLM. Rămâneți aproape!

Angajăm! Dacă doriți să lucrați la un produs implementat la scară masivă și să construiți alături de noi o infrastructură de modele generative și lingvistice mari proiectată cu atenție și optimizată riguros, vă rugăm să vă alăturați nouă.

Urmăriți-ne pe Twitter, LinkedIn și alăturați-vă Discord-ului nostru pentru mai multe discuții.

Autori:

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

Confidențialitatea datelor

Alegând pplx-api, puteți valorifica Întregul potențial al LLM-urilor, protejând în același timp confidențialitatea și încrederea utilizatorilor și clienților dvs. Înțelegem importanța protejării informațiilor dvs. personale și ne luăm angajamentul de a menține securitatea și confidențialitatea utilizatorilor noștri. Datele API sunt șterse automat după 30 de zile și nu ne antrenăm niciodată pe nicio dată transmisă prin pplx-api. Utilizatorii au opțiunea de a renunța la păstrarea datelor în setările contului lor. Găsiți politica de confidențialitate API aici.