Presentazione di pplx-api
API veloce ed efficiente di Perplexity per LLM open-source

Nota: I seguenti elementi sono stati deprecati per i modelli correnti. Scopri di più sulle nostre API
Siamo entusiasti di annunciare pplx-api, progettata per essere uno dei modi più rapidi per accedere ai modelli Mistral 7B, Llama2 13B, Code Llama 34B, Llama2 70B e replit-code-v1.5-3b. pplx-api semplifica l'integrazione di LLM open-source all'avanguardia nei progetti degli sviluppatori.
La nostra pplx-api offre:
Facilità d'uso: gli sviluppatori possono utilizzare modelli open-source all'avanguardia già pronti all'uso e iniziare in pochi minuti con una nota API REST.
Inferenza incredibilmente veloce: il nostro sistema di inferenza, attentamente progettato, è efficiente e raggiunge una latenza fino a 2,9 volte inferiore rispetto a Replicate e 3,1 volte inferiore rispetto ad Anyscale.
Infrastruttura collaudata: pplx-api si è dimostrata affidabile, gestendo traffico di livello produzione sia nel nostro motore di risposta Perplexity che nel nostro ambiente Labs.
Soluzione completa per LLM open-source: i nostri team si dedicano ad aggiungere nuovi modelli open-source non appena vengono rilasciati. Ad esempio, abbiamo aggiunto i modelli Llama e Mistral poche ore dopo il lancio senza accesso pre-rilascio.
pplx-api è in beta pubblica ed è gratuita per gli utenti con un abbonamento a Perplexity Pro.
Utilizza pplx-api per un casuale hackathon nel fine settimana o come soluzione commerciale per costruire prodotti nuovi e innovativi. Speriamo di scoprire come le persone possano creare prodotti innovativi con la nostra API attraverso questo rilascio. Contatta api@perplexity.ai se hai un caso d'uso aziendale per pplx-api. Ci piacerebbe avere tue notizie!
Vantaggi di pplx-api
Facilità d'uso
La distribuzione e l'inferenza di LLM richiedono un impegno infrastrutturale significativo per rendere performante ed economicamente vantaggioso il servizio dei modelli. Gli sviluppatori possono utilizzare la nostra API pronta all'uso, senza una conoscenza approfondita di C++/CUDA o accesso a GPU, godendo comunque di prestazioni all'avanguardia. La nostra inferenza LLM astrae inoltre la complessità e la necessità di gestire il proprio hardware, aumentando ulteriormente la facilità d'uso.
Inferenza incredibilmente veloce
L'API LLM di Perplexity è attentamente progettata e ottimizzata per un'inferenza rapida. Per raggiungere questo obiettivo, abbiamo costruito un'infrastruttura di inferenza LLM proprietaria basata su TensorRT-LLM di NVIDIA, servita su GPU A100 fornite da AWS. Scopri di più nella sezione Panoramica dell'infrastruttura di pplx-api. Di conseguenza, pplx-api è una delle API Llama e Mistral più veloci disponibili in commercio.
Per eseguire il benchmarking rispetto alle soluzioni esistenti, abbiamo confrontato la latenza di pplx-api con altre librerie di inferenza LLM. Nei nostri esperimenti, pplx-api raggiunge una latenza complessiva fino a 2,92 volte più veloce rispetto a Text Generation Inference (TGI) e una latenza di risposta iniziale fino a 4,35 volte più veloce. Per questo esperimento, abbiamo confrontato TGI e l'inferenza di Perplexity per scenari a flusso singolo e server su 2 GPU A100 utilizzando un modello Llama-2-13B-chat partizionato su entrambe le GPU. Per lo scenario a flusso singolo, il server elabora una richiesta dopo l'altra. Nello scenario server, il client invia richieste secondo una distribuzione di Poisson con tassi di richiesta variabili per emulare un carico variabile. Per il tasso di richiesta, eseguiamo una piccola scansione fino a un massimo di 1 richiesta/secondo, il throughput massimo sostenuto da TGI. Abbiamo utilizzato dati reali con una varietà di lunghezze di token di input e output per simulare il comportamento di produzione. Le richieste hanno una media di ~700 token di input e ~550 token di output.
Utilizzando gli stessi input e inviando un singolo flusso di richieste, abbiamo anche misurato le latenze medie delle API di Replicate e Anyscale per questo stesso modello per raccogliere una linea di base delle prestazioni rispetto ad altre API esistenti.


Utilizzando la stessa configurazione sperimentale, abbiamo confrontato il throughput massimo di pplx-api con TGI, con la velocità di decodifica come vincolo di latenza. Nei nostri esperimenti, pplx-api elabora i token 1,90-6,75 volte più velocemente di TGI, e TGI non riesce affatto a soddisfare i nostri vincoli di latenza più rigorosi a 60 e 80 token/secondo. Valutiamo TGI nelle stesse condizioni di hardware e carico utilizzate per valutare pplx-api. Il confronto di questa metrica con Replicate e Anyscale non è possibile poiché non possiamo controllare i loro fattori di hardware e carico.
Per riferimento, la velocità media di lettura umana è di 5 token/secondo, il che significa che pplx-api è in grado di servire a una velocità superiore a quella di lettura.

Panoramica dell'infrastruttura di pplx-api
Ottenere questi numeri di latenza richiede una combinazione di software e hardware all'avanguardia.
Le istanze p4d di AWS basate su GPU NVIDIA A100 preparano il terreno come l'opzione più conveniente e affidabile per scalare le GPU con velocità di clock best-in-class.
Affinché il software possa sfruttare questo hardware, eseguiamo TensorRT-LLM di NVIDIA, una libreria open-source che accelera e ottimizza l'inferenza LLM. TensorRT-LLM racchiude il compilatore di deep learning di TensorRT e include i kernel ottimizzati più recenti creati per implementazioni all'avanguardia di FlashAttention e masked multi-head attention (MHA) per le fasi di contesto e generazione dell'esecuzione del modello LLM.
Da qui, la spina dorsale di AWS e la sua solida integrazione con Kubernetes ci consentono di scalare elasticamente oltre centinaia di GPU e ridurre al minimo i tempi di inattività e l'overhead di rete.
Caso d'uso: La nostra API in produzione
pplx-api in Perplexity: Riduzione dei costi e affidabilità
La nostra API sta già alimentando una delle funzionalità principali del prodotto di Perplexity. Passare semplicemente una singola funzionalità da un'API esterna a pplx-api ha portato a risparmi sui costi di $0,62M/anno, una riduzione dei costi di circa 4 volte. Abbiamo eseguito test A/B e monitorato le metriche dell'infrastruttura per garantire l'assenza di degradazione della qualità. Nel corso di 2 settimane, non abbiamo osservato alcuna differenza statisticamente significativa nel test A/B. Inoltre, pplx-api potrebbe sostenere un carico giornaliero di oltre un milione di richieste, per un totale di quasi un miliardo di token elaborati quotidianamente.
I risultati di questa esplorazione iniziale sono molto incoraggianti e prevediamo che pplx-api alimenterà sempre più funzionalità del nostro prodotto nel tempo.

Utilizziamo anche pplx-api per alimentare Perplexity Labs, il nostro ambiente di test dei modelli che offre vari modelli open-source.

I nostri team si impegnano a fornire l'accesso agli ultimi LLM open-source all'avanguardia. Abbiamo integrato Mistral 7B, Code Llama 34b e tutti i modelli Llama 2 in poche ore dopo il loro rilascio e pianifichiamo di fare lo stesso man mano che diventeranno disponibili LLM open-source più capaci.
Inizia con l'API AI di Perplexity
Puoi accedere all'API REST pplx-api utilizzando richieste HTTPS. L'autenticazione in pplx-api prevede i seguenti passaggi:
Genera una chiave API tramite la Pagina delle impostazioni dell'account Perplexity. La chiave API è un token di accesso a lunga durata che può essere utilizzato finché non viene aggiornato o eliminato manualmente.

Invia la chiave API come bearer token nell'intestazione Authorization con ogni richiesta pplx-api.
Nell'esempio seguente, PERPLEXITY_API_KEY è una variabile d'ambiente legata a una chiave generata utilizzando le istruzioni sopra riportate. CURL viene utilizzato per inviare una richiesta di completamento chat.
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?"
}
]
}'Che produce la seguente risposta, avendo content-type: application/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
}
}Ecco un esempio di chiamata 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)Attualmente supportiamo Mistral 7B, Llama 13B, Code Llama 34B, Llama 70B e l'API è comodamente compatibile con il client OpenAI per una facile integrazione con le applicazioni esistenti.
Per ulteriori informazioni, visita la nostra documentazione API e la Guida rapida.
Cosa succede dopo
Nel prossimo futuro, pplx-api supporterà:
LLM Perplexity personalizzati e altri LLM open-source.
Embedding Perplexity personalizzati ed embedding open-source.
Struttura di prezzi API dedicata con accesso generale dopo la fine della beta pubblica.
API RAG-LLM di Perplexity con messa a terra per fatti e citazioni.
Contatta api@perplexity.ai se sei interessato a uno di questi casi d'uso.
Questo è anche l'inizio della nostra serie di post sul blog di Perplexity. Nel nostro prossimo post, condivideremo un approfondimento sul confronto delle prestazioni tra A100 e H100 per l'inferenza LLM. Resta sintonizzato!
Stiamo assumendo! Se vuoi lavorare su un prodotto distribuito su scala massiccia e costruire con noi un'infrastruttura per modelli generativi e di linguaggio di grandi dimensioni attentamente progettata e ottimizzata, unisciti a noi.
Seguici su Twitter, LinkedIn e unisciti al nostro Discord per ulteriori discussioni.
Autori:
Lauren Yang, Kevin Hu, Aarash Heydari, William Zhang, Dmitry Pervukhin, Grigorii Alekseev, Alexandr Yarats
Privacy dei dati
Scegliendo pplx-api, puoi sfruttare l'intero potenziale degli LLM salvaguardando al contempo la privacy e la fiducia dei tuoi utenti e clienti. Comprendiamo l'importanza di proteggere le tue informazioni personali e ci impegniamo a mantenere la sicurezza e la privacy dei nostri utenti. I dati dell'API vengono eliminati automaticamente dopo 30 giorni e non addestriamo mai alcun modello sui dati trasmessi tramite pplx-api. Gli utenti hanno la possibilità di rinunciare alla conservazione dei dati nelle impostazioni del proprio account. Trovi la nostra informativa sulla privacy delle API qui.