Presentació de pplx-api

API ràpida i eficient de Perplexity Lab per a LLM de codi obert

Introducing pplx-api by Perplexity Labs

Atenció: els elements següents han quedat obsolets per als models actuals. Més informació sobre les nostres API

Ens complau anunciar pplx-api, dissenyada per ser una de les maneres més ràpides d'accedir als models Mistral 7B, Llama2 13B, Code Llama 34B, Llama2 70B i replit-code-v1.5-3b. pplx-api facilita als desenvolupadors la integració de LLM de codi obert capdavanters als seus projectes.

La nostra pplx-api ofereix:

Facilitat d'ús: els desenvolupadors poden utilitzar models de codi obert d'última generació directament i començar en pocs minuts amb una API REST familiar.

Inferència ultraràpida: el nostre sistema d'inferència dissenyat acuradament és eficient i aconsegueix una latència fins a 2,9 vegades menor que Replicate i 3,1 vegades menor que Anyscale.

Infraestructura provada en combat: s'ha demostrat que pplx-api és fiable i dóna servei a trànsit de nivell de producció tant al nostre motor de respostes de Perplexity com al nostre entorn de proves de Labs.

Punt de trobada únic per a LLM de codi obert: el nostre equips s'esforça per afegir nous models de codi obert a mesura que surten. Per exemple, vam afegir els models Llama i Mistral poques hores després del llançament sense accés previ.

pplx-api està en fase beta pública i és gratuïta per als usuaris amb una subscripció a Perplexity Pro.

Utilitzeu pplx-api per a un hackaton informal de cap de setmana o com a solució comercial per crear productes nous i innovadors. Esperem veure com la gent pot crear productes genials i innovadors amb la nostra API a través d'aquest llançament. Poseu-vos en contacte amb api@perplexity.ai si teniu un cas d'ús empresarial per a pplx-api. Ens encantarà saber de vosaltres!

Avantatges de pplx-api

Facilitat d'ús

El desplegament i la inferència de LLM requereixen una inversió important en infraestructures per fer que el servei de models sigui eficient i rendible. Els desenvolupadors poden utilitzar la nostra API immediatament, sense un coneixement profund de C++/CUDA ni accés a GPU, i alhora gaudir d'un rendiment d'última generació. La nostra inferència de LLM també elimina la complexitat i la necessitat de gestionar el vostre propi hardware, la qual cosa facilita encara més el vostre ús.


Inferència ultraràpida

L'API de LLM de Perplexity està dissenyada i optimitzada acuradament per oferir una inferència ràpida. Per aconseguir-ho, hem creat una infraestructura d'inferència de LLM pròpia basada en TensorRT-LLM de NVIDIA que s'executa en GPU A100 proporcionades per AWS. Obteniu més informació a la secció Visió general de la infraestructura de pplx-api. Com a resultat, pplx-api és una de les API de Llama i Mistral més ràpides disponibles al mercat.

Per comparar-nos amb les solucions existents, hem comparat la latència de pplx-api amb altres biblioteques d'inferència de LLM. En els nostres experiments, pplx-api aconsegueix una latència global fins a 2,92x més ràpida en comparació amb Text Generation Inference (TGI), i una latència de resposta inicial fins a 4,35x més ràpida. Per a aquest experiment, hem comparat TGI i la inferència de Perplexity per a escenaris de flux únic i de servidor en 2 GPU A100 utilitzant un model Llama-2-13B-chat fragmentat entre ambdues GPU. Per a l'escenari de flux únic, el servidor processa les sol·licituds una darrere l'altra. En l'escenari de servidor, el client envia sol·licituds segons una distribució de Poisson amb taxes de sol·licitud variables per emular una càrrega variable. Per a la taxa de sol·licitud, fem un petit rastreig fins a un màxim de 1 sol·licitud/segon, el rendiment màxim sostingut per TGI. Hem utilitzat dades del món real amb una varietat de longituds de tokens d'entrada i sortida per simular el comportament de producció. Les sol·licituds tenen una mitjana de ~700 tokens d'entrada i ~550 tokens de sortida.

Utilitzant les mateixes entrades i enviant un sol flux de sol·licituds, també hem mesurat les latències mitjanes de les API de Replicate i Anyscale per al mateix model per tal d'obtenir una línia base de rendiment respecte a altres API existents.

Perplexity Labs - Latència del primer token
Perplexity Labs - Velocitat de descodificació

Utilitzant la mateixa configuració experimental, hem comparat el rendiment màxim de pplx-api amb TGI, amb la velocitat de descodificació com a límit de latència. En els nostres experiments, pplx-api processa els tokens de 1,90x a 6,75x més ràpidament que TGI, i TGI no compleix en absolut les nostres restriccions de latència més estrictes a 60 i 80 tokens/segon. Avaluem TGI sota les mateixes condicions de hardware i càrrega que vam utilitzar per avaluar pplx-api. No és possible comparar aquesta mètrica amb Replicate i Anyscale, ja que no podem controlar els seus factors de hardware i càrrega.

A tall de referència, la velocitat mitjana de lectura humana és de 5 tokens per segon, la qual cosa significa que pplx-api és capaç de servir a un ritme superior al de la lectura.

Perplexity Labs - Rendiment de tokens per GPU

Visió general de la infraestructura de pplx-api

Aconseguir aquests nivells de latència requereix una combinació de software i hardware d'última generació.

Les instàncies p4d d'AWS amb GPU NVIDIA A100 s'erigeixen com l'opció més rendible i fiable per escalar les GPU amb les millors velocitats de rellotge de la seva categoria.

Pel que fa al software per aprofitar aquest hardware, executem TensorRT-LLM de NVIDIA, una biblioteca de codi obert que accelera i optimitza la inferència de LLM. TensorRT-LLM encapsula el compilador de deep learning de TensorRT i inclou els nuclis optimitzats més recents fets per a implementacions capdavanteres de FlashAttention i atenció multi-capçal enmascarada (MHA) per a les fases de context i generació de l'execució del model LLM.

A partir d'aquí, la columna vertebral d'AWS i la seva sòlida integració amb Kubernetes ens permeten escalar de manera elàstica més enllà de centenars de GPU i minimitzar el temps d'inactivitat i la sobrecàrrega de la xarxa.

Cas d'ús: la nostra API en producció

pplx-api a Perplexity: reducció de costos i fiabilitat

La nostra API ja dóna potència a una de les funcionalitats bàsiques del producte de Perplexity. Només canviant una sola funcionalitat d'una API externa a pplx-api s'ha aconseguit un estalvi de costos de 0,62 milions de dòlars a l'any, aproximadament una reducció de costos de 4 vegades. Hem dut a terme proves A/B i hem supervisat les mètriques de la infraestructura per assegurar-nos que no hi havia cap degradació de la qualitat. Al llarg de 2 setmanes, no hem observat cap diferència estadísticament significativa a la prova A/B. A més, pplx-api podria suportar una càrrega diària de més d'un milió de sol·licituds, sumant gairebé mil milions de tokens processats diàriament.

Els resultats d'aquesta exploració inicial són molt encoratjadors, i preveiem que pplx-api donarà potència a més funcionalitats dels nostres productes amb el temps.

pplx-api a Perplexity Labs: ecosistema d'inferència de codi obert

També utilitzem pplx-api per potenciar Perplexity Labs, el nostre entorn de proves de models que ofereix diversos models de codi obert.

Mitjana diària de tokens servits

El nostre equips està compromès a proporcionar accés als LLM de codi obert més recents i avançats. Hem integrat Mistral 7B, Code Llama 34b i tots els models Llama 2 poques hores després del seu llançament, i tenim previst fer el mateix a mesura que hi hagi més LLM de codi obert disponibles i capaços.

Comenceu amb l'API d'IA de Perplexity

Podeu accedir a l'API REST de pplx-api mitjançant sol·licituds HTTPS. L'autenticació a pplx-api implica els passos següents:

Genereu una clau d'API a través de la pàgina de configuració del compte de Perplexity. La clau d'API és un token d'accés de llarga durada que es pot utilitzar fins que es actualitzi o s'elimini manualment.

Envieu la clau d'API com a token de portador a la capçalera Authorization amb cada sol·licitud de pplx-api.

En l'exemple següent, PERPLEXITY_API_KEY és una variable d'entorn vinculada a una clau generada seguint les instruccions anteriors. S'utilitza CURL per enviar una sol·licitud de compleció de xat.

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

La qual cosa produeix la resposta següent, amb 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 } }

Aquí teniu un exemple de crida en 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)

Actualment admetem Mistral 7B, Llama 13B, Code Llama 34B, Llama 70B, i l'API és convenientment compatible amb el client d'OpenAI per a una fàcil integració amb aplicacions existents.

Per a més informació, visiteu la nostra documentació de l'API i la guia d'inici ràpid.

Què ve a continuació

En un futur proper, pplx-api admetrà:

LLM personalitzats de Perplexity i altres LLM de codi obert.

Incrustacions personalitzades de Perplexity i incrustacions de codi obert.

Estructura de preus d'API dedicada amb accés general un moll que finalitzi la beta pública.

API de RAG-LLM de Perplexity amb fonamentació per a fets i citacions.

Poseu-vos en contacte amb api@perplexity.ai si esteu interessats en algun d'aquests casos d'ús.

Aquest és també l'inici de la nostra sèrie d'entrades al bloc de Perplexity. En la nostra propera publicació, compartirem una anàlisi detallada de la comparació de rendiment entre A100 i H100 per a la inferència de LLM. Mantingueu-vos atents!

Estem contractant! Si voleu treballar en un producte desplegat a gran escala i construir amb nosaltres una infraestructura de models de llenguatge gran i generatius dissenyada i optimitzada amb cura, uniu-vos a nosaltres.

Seguiu-nos a Twitter, LinkedIn i uniu-vos al nostre Discord per a més debats.

Autors:

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

Privadesa de les dades

En triar pplx-api, podeu aprofitar tot el potencial dels LLM alhora que protegiu la privadesa i la confiança dels vostres usuaris i clients. Entenem la importància de protegir la vostra informació personal i estem compromesos a mantenir la seguretat i la privadesa dels nostres usuaris. Les dades de l'API s'eliminen automàticament al cap de 30 dies, i mai entrenem amb cap dada transmesa a través de pplx-api. Els usuaris tenen l'opció de renunciar a la retenció de dades a la configuració del seu compte. Trobeu la nostra política de privadesa de l'API aquí.