Presentación de pplx-api

A API rápida e eficiente de Perplexity Lab para LLM de código aberto

Introducing pplx-api by Perplexity Labs

Aviso: os seguintes elementos deixaron de ser compatibles cos modelos actuais. Máis información sobre as nosas API

Cómpre anunciar o lanzamento de pplx-api, deseñado para ser unha das formas máis rápidas de acceder aos modelos Mistral 7B, Llama2 13B, Code Llama 34B, Llama2 70B e replit-code-v1.5-3b. pplx-api permítelles aos programadores integrar facilmente LLM de código aberto pioneiros nos seus proxectos.

A nosa pplx-api ofrece:

Fácil de usar: os programadores poden empregar modelos de código aberto avanzados sen necesidade de configuración e comezar en poucos minutos cunha API REST coñecida.

Inferencia moi rápida: o noso sistema de inferencia, deseñado coidadosamente, é eficiente e atinxe unha latencia ata 2,9 veces inferior á de Replicate e 3,1 veces inferior á de Anyscale.

Infraestrutura probada en combate: demostrouse que pplx-api é fiable, xa que dá servizo a tráfico de nivel de produción tanto no noso motor de respostas de Perplexity coma no noso contorno de probas Labs.

Punto único para LLM de código aberto: o noso equipo dedícase a engadir novos modelos de código aberto a medida que van chegando. Por exemplo, engadimos os modelos Llama e Mistral poucas horas despois do seu lanzamento sen acceso previo.

pplx-api atópase en fase beta pública e é gratuíta para os usuarios cunha subscrición a Perplexity Pro.

Emprega pplx-api para un hackatón informal de fin de semana ou como solución comercial para crear produtos novos e innovadores. Con este lanzamento, agardamos descubrir como a xente pode crear produtos xeniais e innovadores coa nosa API. Póñase en contacto con api@perplexity.ai se ten un caso de uso comercial para pplx-api. Encantaríanos saber de vostede!

Vantaxes de pplx-api

Facilidade de uso

A implementación e a inferencia de LLM requiren un esforzo considerable en infraestrutura para que a atención de modelos sexa eficiente e rendible. Os programadores poden usar a nosa API sen necesidade de configuración, sen un coñecemento profundo de C++/CUDA nin acceso a tarxetas gráficas (GPU), á vez que gozan dun rendemento avanzado. A nosa inferencia de LLM tamén abstrae a complexidade e a necesidade de xestionar o seu propio hardware, o que aumenta aínda máis a facilidade de uso.


Inferencia moi rápida

A API de LLM de Perplexity está coidadosamente deseñada e optimizada para unha inferencia rápida. Para conseguilo, creamos unha infraestrutura de inferencia de LLM propietaria arredor de TensorRT-LLM de NVIDIA que se executa en GPU A100 proporcionadas por AWS. Obteña máis información na sección Resumo da infraestrutura de pplx-api. Como resultado, pplx-api é unha das API de Llama e Mistral máis rápidas dispoñibles no mercado.

Para realizar unha comparativa coas solucións existentes, comparamos a latencia de pplx-api con outras bibliotecas de inferencia de LLM. Nos nosos experimentos, pplx-api atinxe unha latencia global ata 2,92 veces máis rápida en comparación con Text Generation Inference (TGI) e unha latencia de resposta inicial ata 4,35 veces máis rápida. Para este experimento, comparamos TGI e a inferencia de Perplexity para escenarios de fluxo único e de servidor en 2 GPU A100 mediante un modelo Llama-2-13B-chat repartido entre ambas as GPU. No escenario de fluxo único, o servidor procesa unha solicitude tras outra. No escenario de servidor, o cliente envía solicitudes segundo unha distribución de Poisson con taxas de solicitude variadas para emular unha carga variada. Para a taxa de solicitude, realizamos un pequeno barrido ata un máximo de 1 solicitude por segundo, o rendemento máximo mantido por TGI. Utilizamos datos reais cunha variedade de lonxitudes de tokens de entrada e saída para simular o comportamento de produción. As solicitudes teñen unha media de ~700 tokens de entrada e ~550 tokens de saída.

Utilizando as mesmas entradas e enviando un único fluxo de solicitudes, tamén medimos as latencias medias das API de Replicate e Anyscale para este mesmo modelo para obter unha liña base de rendemento fronte a outras API existentes.

Perplexity Labs - Latencia do primeiro token
Perplexity Labs - Velocidade de descodificación

Utilizando a mesma configuración experimental, comparamos o rendemento máximo de pplx-api con TGI, coa velocidade de descodificación como restrición de latencia. Nos nosos experimentos, pplx-api procesa tokens 1,90x-6,75x máis rápido que TGI, e TGI non cumpre en absoluto as nosas restricións de latencia máis estritas a 60 e 80 tokens/segundo. Avaliamos TGI nas mesmas condicións de hardware e carga que utilizamos para avaliar pplx-api. Non é posible comparar esta métrica con Replicate e Anyscale xa que non podemos controlar o seu hardware e factores de carga.

Como referencia, a velocidade media de lectura humana é de 5 tokens/segundo, o que significa que pplx-api é quen de ofrecer servizo a unha velocidade superior á que se pode ler.

Perplexity Labs - Rendemento de tokens por GPU

Resumo da infraestrutura de pplx-api

Para acadar estas cifras de latencia, requírese unha combinación de software e hardware avanzados.

As instancias p4d de AWS impulsadas por GPU NVIDIA A100 configuran a opción máis fiable e económica para ampliar GPU coas mellores velocidades de reloxo da súa categoría.

Para que o software poida aproveitar este hardware, executamos TensorRT-LLM de NVIDIA, unha biblioteca de código aberto que acelera e optimiza a inferencia de LLM. TensorRT-LLM envolve o compilador de aprendizaxe profunda de TensorRT e inclúe os kernels optimizados máis recentes creados para implementacións pioneiras de FlashAttention e atención de cabezais múltiples enmascarada (MHA) para as fases de contexto e xeración da execución do modelo LLM.

A partir de aí, a columna vertebral de AWS e a súa sólida integración con Kubernetes permítennos escalar de forma elástica máis aló de cento de GPU e minimizar o tempo de inactividade e a sobrecarga de rede.

Caso de uso: a nosa API en produción

pplx-api en Perplexity: redución de custos e fiabilidade

A nosa API xa alimenta unha das características principais do produto de Perplexity. O simple cambio dunha soa característica dunha API externa a pplx-api tivo como resultado un aforro de custos de 0,62 millóns de dólares ao ano, o que supón aproximadamente unha redución de custos de 4 veces. Realizamos probas A/B e monitorizamos as métricas de infraestrutura para garantir que non houbese degradación da calidade. Ao longo de 2 semanas, non observamos ningunha diferenza estatisticamente significativa na proba A/B. Ademais, pplx-api puido manter unha carga diaria de máis dun millón de solicitudes, o que supón case mil millóns de tokens procesados ao día.

Os resultados desta exploración inicial son moi alentadores e agardamos que pplx-api impulse máis características dos nosos produtos co tempo.

pplx-api en Perplexity Labs: ecosistema de inferencia de código aberto

Tamén empregamos pplx-api para alimentar Perplexity Labs, o noso contorno de probas de modelos que atende a varios modelos de código aberto.

Media diaria de tokens atendidos

O noso equipo está comprometido a ofrecer acceso aos LLM de código aberto avanzados máis recentes. Integramos Mistral 7B, Code Llama 34b e todos os modelos Llama 2 nun cuestión de horas despois do seu lanzamento, e planeamos facelo a medida que estean dispoñibles LLM de código aberto máis capaces.

Comezar coa API de intelixencia artificial de Perplexity

Pode acceder á API REST de pplx-api mediante solicitudes HTTPS. A autenticación en pplx-api implica os seguintes pasos:

Xere unha clave de API a través da páxina de configuración da conta de Perplexity. A clave de API é un token de acceso de longa duración que se pode utilizar ata que se anove ou elimine manualmente.

Envíe a clave de API como token de portador no cabeceiro de autorización con cada solicitude de pplx-api.

No seguinte exemplo, PERPLEXITY_API_KEY é unha variábel de contorno vinculada a unha clave xerada mediante as instrucións anteriores. Utilízase CURL para enviar unha solicitude de finalización de chat.

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

O que produce a seguinte resposta, tendo 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í tes un exemplo de chamada 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)

Actualmente admitimos Mistral 7B, Llama 13B, Code Llama 34B, Llama 70B e a API é convenientemente compatíbel co cliente de OpenAI para facilitar a integración coas aplicacións existentes.

Para obter máis información, visite a nosa documentación da API e a guía de inicio rápido.

Seguintes pasos

Nun futuro próximo, pplx-api admitirá:

LLM de Perplexity personalizados e outros LLM de código aberto.

Incrustacións de Perplexity personalizadas e incrustacións de código aberto.

Estrutura de prezos de API dedicada con acceso xeral unha vez que remate a fase beta pública.

API de RAG-LLM de Perplexity con conexión a terra para feitos e citas.

Póñase en contacto con api@perplexity.ai se lle interesa algún destes casos de uso.

Este é tamén o comezo da nosa serie de publicacións no blog de Perplexity. Na nosa seguinte publicación, compartiremos unha análise en profundidade da comparación de rendemento entre A100 e H100 para a inferencia de LLM. Non o perda!

Estamos a contratar! Se quere traballar nun produto implementado a gran escala e construír connosco infraestruturas de modelos de linguaxe grandes e xerativos deseñadas con coidado e optimizadas minuciosamente, únase a nós.

Síguenos en Twitter, LinkedIn e únete ao noso Discord para máis debates.

Autores:

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

Privacidade dos datos

Ao escoller pplx-api, pode aproveitar todo o potencial dos LLM á vez que protexe a privacidade e a confianza dos seus usuarios e clientes. Comprendemos a importancia de protexer a súa información persoal e estamos comprometidos a manter a seguridade e a privacidade dos nosos usuarios. Os datos da API elimínanse automaticamente despois de 30 días, e nunca adestramos con ningún dato transmitido a través de pplx-api. Os usuarios teñen a opción de non participar na retención de datos na configuración da súa conta. Atope a nosa política de privacidade da API aquí.