Apresentando o pplx-api

API rápida e eficiente do Perplexity Labs para LLMs de código aberto

Introducing pplx-api by Perplexity Labs

Atenção: os itens abaixo foram descontinuados para os modelos atuais. Saiba mais sobre nossas APIs

Temos o prazer de anunciar a pplx-api, projetada para ser uma das maneiras mais rápidas de acessar os modelos Mistral 7B, Llama2 13B, Code Llama 34B, Llama2 70B e replit-code-v1.5-3b. A pplx-api facilita para os desenvolvedores a integração de LLMs de código aberto de última geração em seus projetos.

Nossa pplx-api oferece:

Facilidade de uso: os desenvolvedores podem usar modelos de código aberto de última geração prontos para uso e começar em minutos com uma API REST familiar.

Inferência incrivelmente rápida: nosso sistema de inferência cuidadosamente projetado é eficiente e atinge uma latência até 2,9x menor que a da Replicate e 3,1x menor que a da Anyscale.

Infraestrutura testada em batalha: a pplx-api provou ser confiável, atendendo a tráfego em nível de produção tanto em nosso mecanismo de resposta Perplexity quanto em nosso ambiente de testes Labs.

Solução completa para LLMs de código aberto: nossa equipe se dedica a adicionar novos modelos de código aberto à medida que são lançados. Por exemplo, adicionamos os modelos Llama e Mistral poucas horas após o lançamento, sem acesso pré-lançamento.

A pplx-api está em versão beta pública e é gratuita para usuários com uma assinatura Perplexity Pro.

Use a pplx-api para um hackathon casual de fim de semana ou como uma solução comercial para criar produtos novos e inovadores. Esperamos ver como as pessoas podem criar produtos incríveis e inovadores com nossa API por meio deste lançamento. Entre em contato com api@perplexity.ai se você tiver um caso de uso comercial para a pplx-api. Adoraríamos saber sua opinião!

Benefícios da pplx-api

Facilidade de uso

A implantação e a inferência de LLMs exigem um esforço significativo de infraestrutura para tornar o atendimento de modelos eficiente e com custo otimizado. Os desenvolvedores podem usar nossa API sem necessidade de configuração adicional, sem conhecimento profundo de C++/CUDA ou acesso a GPUs, enquanto ainda desfrutam de desempenho de última geração. Nossa inferência de LLM também abstrai a complexidade e a necessidade de gerenciar seu próprio hardware, aumentando ainda mais a facilidade de uso.


Inferência incrivelmente rápida

A API de LLM da Perplexity foi cuidadosamente projetada e otimizada para inferência rápida. Para conseguir isso, construímos uma infraestrutura de inferência de LLM proprietária em torno do TensorRT-LLM da NVIDIA, que é executado em GPUs A100 fornecidas pela AWS. Saiba mais na seção Visão geral da infraestrutura da pplx-api. Como resultado, a pplx-api é uma das APIs Llama e Mistral mais rápidas disponíveis comercialmente.

Para fazer um comparativo com as soluções existentes, comparamos a latência da pplx-api com outras bibliotecas de inferência de LLM. Em nossos experimentos, a pplx-api atinge uma latência geral até 2,92x mais rápida em comparação com o Text Generation Inference (TGI) e uma latência de resposta inicial até 4,35x mais rápida. Para este experimento, comparamos o TGI e a inferência da Perplexity para cenários de fluxo único e de servidor em 2 GPUs A100 usando um modelo Llama-2-13B-chat distribuído em ambas as GPUs. Para o cenário de fluxo único, o servidor processa uma solicitação após a outra. No cenário de servidor, o cliente envia solicitações de acordo com uma distribuição de Poisson com taxas de solicitação variadas para emular uma carga variada. Para a taxa de solicitação, realizamos uma pequena varredura até um máximo de 1 solicitação/segundo, o rendimento máximo sustentado pelo TGI. Usamos dados do mundo real com uma variedade de comprimentos de token de entrada e saída para simular o comportamento de produção. As solicitações têm uma média de ~700 tokens de entrada e ~550 tokens de saída.

Usando as mesmas entradas e enviando um único fluxo de solicitações, também medimos as latências médias das APIs da Replicate e da Anyscale para este mesmo modelo, a fim de obter uma linha de base de desempenho em relação a outras APIs existentes.

Perplexity Labs - Latência do primeiro token
Perplexity Labs - Velocidade de decodificação

Usando a mesma configuração experimental, comparamos a taxa de transferência máxima da pplx-api com o TGI, tendo a velocidade de decodificação como uma restrição de latência. Em nossos experimentos, a pplx-api processa tokens de 1,90x a 6,75x mais rápido que o TGI, e o TGI falha totalmente em atender às nossas restrições de latência mais rigorosas a 60 e 80 tokens/segundo. Avaliamos o TGI sob as mesmas condições de hardware e carga que usamos para avaliar a pplx-api. Não é possível comparar essa métrica com a Replicate e a Anyscale, pois não podemos controlar seus fatores de hardware e carga.

Para referência, a velocidade média de leitura humana é de 5 tokens/segundo, o que significa que a pplx-api é capaz de atender a uma taxa mais rápida do que a capacidade de leitura.

Perplexity Labs - Taxa de transferência de tokens por GPU

Visão geral da infraestrutura da pplx-api

Alcançar esses números de latência requer uma combinação de software e hardware de última geração.

As instâncias p4d da AWS alimentadas por GPUs NVIDIA A100 estabelecem o cenário como a opção mais econômica e confiável para dimensionar GPUs com velocidades de clock líderes no setor.

Para que o software aproveite esse hardware, executamos o TensorRT-LLM da NVIDIA, uma biblioteca de código aberto que acelera e otimiza a inferência de LLM. O TensorRT-LLM encapsula o compilador de aprendizado profundo do TensorRT e inclui os kernels otimizados mais recentes feitos para implementações de ponta do FlashAttention e atenção multi-head mascarada (MHA) para as fases de contexto e geração da execução do modelo LLM.

A partir daí, a espinha dorsal da AWS e sua robusta integração com o Kubernetes nos permitem escalar elasticamente além de centenas de GPUs e minimizar o tempo de inatividade e a sobrecarga de rede.

Caso de uso: nossa API em produção

pplx-api no Perplexity: Redução de custos e confiabilidade

Nossa API já alimenta um dos principais recursos do produto Perplexity. Apenas a alteração de um único recurso de uma API externa para a pplx-api resultou em uma economia de custos de US$ 0,62 milhão/ano, o que representa uma redução de custos de aproximadamente 4x. Executamos testes A/B e monitoramos métricas de infraestrutura para garantir que não houvesse degradação de qualidade. Ao longo de 2 semanas, não observamos nenhuma diferença estatisticamente significativa no teste A/B. Além disso, a pplx-api pôde sustentar uma carga diária de mais de um milhão de solicitações, totalizando quase um bilhão de tokens processados diariamente.

Os resultados dessa exploração inicial são muito encorajadores, e antecipamos que a pplx-api alimentará mais recursos de nossos produtos ao longo do tempo.

pplx-api no Perplexity Labs: Ecossistema de inferência de código aberto

Também usamos a pplx-api para alimentar o Perplexity Labs, nosso ambiente de testes de modelos que atende a vários modelos de código aberto.

Média diária de tokens atendidos

Nossa equipe está comprometida em fornecer acesso aos mais recentes LLMs de código aberto de última geração. Integramos o Mistral 7B, o Code Llama 34b e todos os modelos Llama 2 poucas horas após o lançamento, e planejamos fazer o mesmo à medida que LLMs de código aberto mais capazes estiverem disponíveis.

Comece a usar a API de IA da Perplexity

Você pode acessar a API REST da pplx-api usando solicitações HTTPS. A autenticação na pplx-api envolve as seguintes etapas:

Gere uma chave de API na Página de configurações da conta Perplexity. A chave de API é um token de acesso de longa duração que pode ser usado até ser atualizado ou excluído manualmente.

Envie a chave de API como um token de portador no cabeçalho Authorization em cada solicitação da pplx-api.

No exemplo a seguir, PERPLEXITY_API_KEY é uma variável de ambiente vinculada a uma chave gerada usando as instruções acima. O CURL é usado para enviar uma solicitação de conclusão 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 produz 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 } }

Aqui está um exemplo de chamada em 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)

Atualmente, oferecemos suporte a Mistral 7B, Llama 13B, Code Llama 34B, Llama 70B, e a API é convenientemente compatível com o cliente OpenAI para fácil integração com aplicativos existentes.

Para obter mais informações, visite nossa documentação da API e o Guia de início rápido.

O que vem a seguir

Em um futuro próximo, a pplx-api dará suporte a:

LLMs personalizados da Perplexity e outros LLMs de código aberto.

Embeddings personalizados da Perplexity e embeddings de código aberto.

Estrutura de preços de API dedicada com acesso geral após o término da versão beta pública.

API Perplexity RAG-LLM com grounding para fatos e citações.

Entre em contato com api@perplexity.ai se tiver interesse em algum destes casos de uso.

Este também é o início de nossa série de postagens no blog do Perplexity. Em nossa próxima postagem, compartilharemos uma análise detalhada da comparação de desempenho entre A100 e H100 para inferência de LLM. Fique ligado!

Estamos contratando! Se você quiser trabalhar em um produto implantado em escala massiva e criar conosco uma infraestrutura de modelos de linguagem grandes e generativos cuidadosamente projetada e otimizada, junte-se a nós.

Siga-nos no Twitter, LinkedIn e participe do nosso Discord para mais discussões.

Autores:

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

Privacidade de dados

Ao escolher a pplx-api, você pode aproveitar todo o potencial dos LLMs enquanto protege a privacidade e a confiança de seus usuários e clientes. Entendemos a importância de proteger suas informações pessoais e estamos comprometidos em manter a segurança e a privacidade de nossos usuários. Os dados da API são excluídos automaticamente após 30 dias, e nunca realizamos treinamento com nenhum dado transmitido por meio da pplx-api. Os usuários têm a opção de desativar a retenção de dados nas configurações de sua conta. Encontre nossa política de privacidade da API aqui.