Wprowadzenie do pplx-api
Szybkie i wydajne API Perplexity do modeli open-source LLM

Uwaga: Poniższe elementy zostały wycofane w bieżących modelach. Dowiedz się więcej o naszych API
Z przyjemnością ogłaszamy uruchomienie pplx-api, zaprojektowanego jako jeden z najszybszych sposobów dostępu do modeli Mistral 7B, Llama2 13B, Code Llama 34B, Llama2 70B oraz replit-code-v1.5-3b. pplx-api ułatwia programistom integrację nowoczesnych modeli LLM typu open-source z ich projektami.
Nasze pplx-api zapewnia:
Łatwość użycia: programiści mogą korzystać z gotowych, najnowocześniejszych modeli open-source i rozpocząć pracę w ciągu kilku minut dzięki znanej technologii REST API.
Błyskawiczne wnioskowanie: nasz starannie zaprojektowany system wnioskowania jest wydajny i osiąga opóźnienia do 2.9x niższe niż Replicate oraz 3.1x niższe niż Anyscale.
Sprawdzona infrastruktura: niezawodność pplx-api została potwierdzona poprzez obsługę ruchu produkcyjnego w naszym silniku odpowiedzi Perplexity oraz w piaskownicy Labs.
Kompleksowe rozwiązanie dla modeli LLM open-source: nasze zespoły nieustannie pracują nad dodawaniem nowych modeli open-source, gdy tylko się pojawiają. Przykładowo, modele Llama i Mistral dodaliśmy w ciągu zaledwie kilku godzin od ich premiery bez dostępu przedpremierowego.
pplx-api znajduje się w publicznej wersji beta i jest bezpłatne dla użytkowników z subskrypcją Perplexity Pro.
Wykorzystaj pplx-api do okazjonalnego weekendowego hackathonu lub jako komercyjne rozwiązanie do tworzenia nowych i innowacyjnych produktów. Mamy nadzieję, że dzięki tej premierze dowiemy się, w jaki sposób użytkownicy tworzą ciekawe i innowacyjne produkty za pomocą naszego API. Jeśli masz biznesowe zastosowanie dla pplx-api, skontaktuj się z nami pod adresem api@perplexity.ai. Chętnie poznamy Twoją opinię!
Korzyści z pplx-api
Łatwość użycia
Wdrożenie i wnioskowanie modeli LLM wymagają znacznych nakładów na infrastrukturę, aby obsługa modelu była wydajna i ekonomiczna. Programiści mogą korzystać z naszego API od razu po zainstalowaniu, bez głębokiej wiedzy na temat C++/CUDA czy dostępu do procesorów graficznych (GPU), jednocześnie ciesząc się najwyższą wydajnością. Nasze wnioskowanie LLM eliminuje również złożoność i konieczność zarządzania własnym sprzętem, co dodatkowo zwiększa łatwość użytkowania.
Błyskawiczne wnioskowanie
API LLM firmy Perplexity zostało starannie zaprojektowane i zoptymalizowane pod kątem szybkiego wnioskowania. W tym celu zbudowaliśmy autorską infrastrukturę wnioskowania LLM opartą na technologii NVIDIA TensorRT-LLM, działającą na procesorach graficznych A100 dostarczanych przez AWS. Dowiedz się więcej w sekcji Przegląd infrastruktury pplx-api. W rezultacie pplx-api jest jednym z najszybszych komercyjnie dostępnych interfejsów API dla modeli Llama i Mistral.
Aby porównać wydajność z istniejącymi rozwiązaniami, zestawiliśmy opóźnienia pplx-api z innymi bibliotekami wnioskowania LLM. W naszych eksperymentach pplx-api osiąga do 2.92x mniejsze opóźnienie całkowite w porównaniu do Text Generation Inference (TGI) oraz do 4.35x krótszy czas odpowiedzi początkowej. W tym eksperymencie porównaliśmy TGI i system wnioskowania Perplexity dla scenariuszy pojedynczego strumienia i serwera na dwóch procesorach graficznych A100, używając modelu Llama-2-13B-chat rozproszonego na oba procesory. W scenariuszu pojedynczego strumienia serwer przetwarza jedno żądanie po drugim. W scenariuszu serwerowym klient wysyła żądania zgodnie z rozkładem Poissona z różnymi częstotliwościami, aby symulować zmienne obciążenie. Dla częstotliwości żądań wykonaliśmy niewielki test do maksymalnie 1 żądania na sekundę, co stanowi maksymalną przepustowość obsługiwaną przez TGI. Użyliśmy danych rzeczywistych o zróżnicowanej długości tokenów wejściowych i wyjściowych, aby zasymulować zachowanie w warunkach produkcyjnych. Żądania miały średnio ~700 tokenów wejściowych i ~550 wyjściowych.
Używając tych samych danych wejściowych i wysyłając pojedynczy strumień żądań, zmierzyliśmy również średnie opóźnienia interfejsów API Replicate i Anyscale dla tego samego modelu, aby zebrać bazę porównawczą wydajności w stosunku do innych istniejących interfejsów API.


Korzystając z tej samej konfiguracji eksperymentalnej, porównaliśmy maksymalną przepustowość pplx-api z TGI, traktując szybkość dekodowania jako ograniczenie opóźnienia. W naszych eksperymentach pplx-api przetwarza tokeny od 1.90x do 6.75x szybciej niż TGI, podczas gdy TGI nie spełnia naszych surowszych wymagań dotyczących opóźnień przy 60 i 80 tokenach na sekundę. Oceniamy TGI w tych samych warunkach sprzętowych i obciążeniowych, których użyliśmy do oceny pplx-api. Porównanie tego wskaźnika z Replicate i Anyscale nie jest możliwe, ponieważ nie mamy kontroli nad ich sprzętem i czynnikami obciążenia.
Dla porównania, średnia prędkość czytania przez człowieka wynosi 5 tokenów na sekundę, co oznacza, że pplx-api jest w stanie serwować dane szybciej, niż człowiek jest w stanie je przeczytać.

Przegląd infrastruktury pplx-api
Osiągnięcie takich wyników opóźnień wymaga połączenia najnowocześniejszego oprogramowania i sprzętu.
Instancje AWS p4d oparte na procesorach graficznych NVIDIA A100 stanowią najbardziej opłacalną i niezawodną opcję skalowania zasobów graficznych przy wiodących prędkościach zegara.
Aby oprogramowanie mogło w pełni wykorzystać ten sprzęt, korzystamy z NVIDIA TensorRT-LLM, biblioteki open-source, która przyspiesza i optymalizuje wnioskowanie LLM. TensorRT-LLM wykorzystuje kompilator głębokiego uczenia TensorRT i zawiera najnowsze zoptymalizowane jądra stworzone dla zaawansowanych implementacji FlashAttention oraz maskowanej uwagi wielogłowicowej (MHA) dla faz kontekstu i generowania w trakcie wykonywania modelu LLM.
Fundament w postaci AWS i jego solidna integracja z Kubernetes pozwalają nam na elastyczne skalowanie powyżej setek procesorów graficznych przy jednoczesnej minimalizacji przestojów i narzutu sieciowego.
Przypadek użycia: Nasze API w produkcji
pplx-api w Perplexity: Redukcja kosztów i niezawodność
Nasze API już wspiera jedną z kluczowych funkcji produktu Perplexity. Przełączenie pojedynczej funkcji z zewnętrznego API na pplx-api zaowocowało oszczędnościami rzędu 0,62 mln USD rocznie, co stanowi około 4-krotną redukcję kosztów. Przeprowadziliśmy testy A/B i monitorowaliśmy wskaźniki infrastrukturalne, aby zapewnić brak spadku jakości. W ciągu 2 tygodni nie zaobserwowaliśmy statystycznie istotnych różnic w testach A/B. Dodatkowo pplx-api jest w stanie wytrzymać dzienne obciążenie przekraczające milion żądań, co łącznie daje niemal miliard przetwarzanych tokenów dziennie.
Wyniki tego wstępnego badania są bardzo obiecujące i przewidujemy, że z czasem pplx-api będzie wspierać więcej naszych funkcji produktowych.

Używamy również pplx-api do obsługi Perplexity Labs, naszego środowiska testowego modeli, udostępniającego różne modele open-source.

Nasz zespół angażuje się w zapewnianie dostępu do najnowszych modeli LLM typu open-source. Zintegrowaliśmy Mistral 7B, Code Llama 34b oraz wszystkie modele Llama 2 w ciągu kilku godzin od ich premiery i planujemy robić to samo, gdy tylko pojawią się bardziej wydajne modele open-source.
Rozpocznij korzystanie z API AI firmy Perplexity
Dostęp do REST API pplx-api można uzyskać za pomocą żądań HTTPS. Uwierzytelnianie w pplx-api obejmuje następujące kroki:
Wygeneruj klucz API za pośrednictwem strony ustawień konta Perplexity. Klucz API jest długoterminowym tokenem dostępowym, którego można używać do momentu ręcznego odświeżenia lub usunięcia.

Wysyłaj klucz API jako token bearer w nagłówku Authorization przy każdym żądaniu pplx-api.
W poniższym przykładzie PERPLEXITY_API_KEY to zmienna środowiskowa powiązana z kluczem wygenerowanym zgodnie z powyższymi instrukcjami. Do przesłania żądania ukończenia czatu użyto narzędzia CURL.
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?"
}
]
}'Co daje następującą odpowiedź z nagłówkiem 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
}
}Oto przykład wywołania w języku 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)Obecnie obsługujemy Mistral 7B, Llama 13B, Code Llama 34B, Llama 70B, a nasze API jest wygodnie kompatybilne z klientem OpenAI, co ułatwia integrację z istniejącymi aplikacjami.
Więcej informacji można znaleźć w naszej dokumentacji API oraz w Przewodniku szybkiego startu.
Co dalej?
W najbliższej przyszłości pplx-api będzie wspierać:
Niestandardowe modele Perplexity LLM oraz inne modele open-source LLM.
Niestandardowe embeddingi Perplexity oraz embeddingi open-source.
Dedykowaną strukturę cenową API z dostępem ogólnym po zakończeniu publicznej fazy beta.
API Perplexity RAG-LLM z bazą faktów i cytowań.
Jeśli jesteś zainteresowany którymkolwiek z tych zastosowań, skontaktuj się z nami pod adresem api@perplexity.ai.
Jest to również początek naszej serii wpisów na blogu Perplexity. W kolejnym poście dogłębnie przeanalizujemy porównanie wydajności A100 vs H100 dla wnioskowania LLM. Bądźcie czujni!
Rekrutujemy! Jeśli chcesz pracować nad produktem wdrożonym na ogromną skalę i wspólnie z nami tworzyć starannie zaprojektowaną, zoptymalizowaną infrastrukturę dla generatywnych modeli językowych, dołącz do nas.
Obserwuj nas na Twitterze, LinkedIn i dołącz do naszego Discorda, aby dyskutować dalej.
Autorzy:
Lauren Yang, Kevin Hu, Aarash Heydari, William Zhang, Dmitry Pervukhin, Grigorii Alekseev, Alexandr Yarats
Prywatność danych
Wybierając pplx-api, wykorzystujesz pełen potencjał modeli LLM, jednocześnie chroniąc prywatność i zaufanie swoich użytkowników oraz klientów. Rozumiemy wagę ochrony danych osobowych i jesteśmy oddani zapewnieniu bezpieczeństwa oraz prywatności naszych użytkowników. Dane API są automatycznie usuwane po 30 dniach i nigdy nie używamy danych przesyłanych przez pplx-api do trenowania naszych modeli. Użytkownicy mają możliwość rezygnacji z przechowywania danych w ustawieniach konta. Naszą politykę prywatności API znajdziesz tutaj.