Представяне на pplx-api
Бърз и ефективен API на Perplexity Lab за големи езикови модели с отворен код

Моля, обърнете внимание: следните модели вече са устарели за текущите версии. Научете повече за нашите API
Радваме се да обявим pplx-api, създаден да бъде един от най-бързите начини за достъп до моделите Mistral 7B, Llama2 13B, Code Llama 34B, Llama2 70B, replit-code-v1.5-3b. pplx-api улеснява разработчиците при интегрирането на модерни езикови модели с отворен код в техните проекти.
Нашият pplx-api предлага:
Лекота на използване: разработчиците могат да използват съвременни модели с отворен код директно и да започнат работа в рамките на минути с познат REST API.
Невероятно бърз инференс: нашата внимателно проектирана система за инференс е ефективна и постига до 2,9 пъти по-ниска латентност от Replicate и до 3,1 пъти по-ниска латентност от Anyscale.
Доказана в бойни условия инфраструктура: pplx-api доказва своята надеждност, обслужвайки производствен трафик както в нашия отговорник на Perplexity, така и в нашия тестов център Labs.
Универсално решение за големи езикови модели с отворен код: нашият екип е посветен на добавянето на нови модели с отворен код с тяхното появяване. Например, добавихме моделите Llama и Mistral в рамките на няколко часа след стартирането без предварителен достъп.
pplx-api е в публична бета версия и е безплатен за потребители с абонамент за Perplexity Pro.
Използвайте pplx-api за уикенд хакатон или като търговско решение за изграждане на нови и иновативни продукти. Надяваме се да научим как хората могат да създават страхотни и иновативни продукти с нашия API чрез това издание. Моля, свържете се с api@perplexity.ai, ако имате бизнес казус за използване на pplx-api. Ще се радваме да чуем от вас!
Предимства на pplx-api
Лесна употреба
Внедряването и инференсът на големи езикови модели изискват значителна инфраструктурна работа, за да се направи обслужването на моделите ефективно и рентабилно. Разработчиците могат да използват нашия API веднага след инсталирането, без дълбоки познания по C++/CUDA или достъп до графични процесори, като същевременно се радват на най-съвременна производителност. Инференсът на нашите големи езикови модели също така абстрахира сложността и необходимостта от управление на собствен хардуер, което допълнително повишава лекотата на използване.
Невероятно бърз инференс
API за големи езикови модели на Perplexity е внимателно проектиран и оптимизиран за бърз инференс. За да постигнем това, изградихме собствена инфраструктура за инференс около TensortRT-LLM на NVIDIA, която се обслужва на A100 графични процесори, предоставени от AWS. Научете повече в раздела Преглед на инфраструктурата на pplx-api. В резултат на това pplx-api е един от най-бързите API за Llama и Mistral на пазара.
За да направим сравнение със съществуващите решения, сравнихме латентността на pplx-api с други библиотеки за инференс на големи езикови модели. В нашите експерименти pplx-api постига до 2,92 пъти по-ниска обща латентност в сравнение с Text Generation Inference (TGI) и до 4,35 пъти по-ниска латентност на първия отговор. За този експеримент сравнихме TGI и инференса на Perplexity за сценарии с един поток и сървърни сценарии на 2 графични процесора A100, като използвахме модел Llama-2-13B-chat, споделен между двата графични процесора. За сценария с един поток сървърът обработва една заявка след друга. В сървърния сценарий клиентът изпраща заявки според разпределение на Поасон с променливи честоти на заявките за емулиране на променлив товар. За честотата на заявките извършваме малко проучване до максимум 1 заявка в секунда – максималната пропускателна способност, поддържана от TGI. Изполzвахме реални данни с различни дължини на входните и изходните токени, за да симулираме поведение в производството. Заявките са със средно около 700 входни токена и около 550 изходни токена.
Използвайки същите входни данни и изпращайки един единствен поток от заявки, ние също така измерихме средната латентност на API на Replicate и Anyscale за същия модел, за да съберем базова линия за производителност спрямо други съществуващи API.


Използвайки същата експериментална настройка, сравнихме максималната пропускателна способност на pplx-api спрямо TGI, със скоростта на декодиране като ограничение на латентността. В нашите експерименти pplx-api обработва токените 1,90x-6,75x по-бързо от TGI, а TGI изцяло не успява да отговори на нашите по-стриктни ограничения за латентност при 60 и 80 токена в секунда. Оценяваме TGI при същите хардуерни условия и условия на натоварване, които използвахме за оценката на pplx-api. Сравняването на тази метрика с Replicate и Anyscale не е възможно, тъй като не можем да контролираме техните хардуерни фактори и фактори на натоварване.
За справка, средната скорост на четене на човек е 5 токена в секунда, което означава, че pplx-api може да обслужва със скорост, по-висока от тази на четене.

Преглед на инфраструктурата на pplx-api
Постигането на тези показатели за латентност изисква комбинация от модерни софтуер и хардуер.
AWS p4d инстанциите, захранвани от графични процесори NVIDIA A100, задават тон като най-рентабилната и надеждна опция за мащабиране на графични процесори с най-добрите в класа си тактови честоти.
За да може софтуерът да се възползва от този хардуер, ние стартираме TensorRT-LLM на NVIDIA – библиотека с отворен код, която ускорява и оптимизира инференса на големи езикови модели. TensorRT-LLM обгръща компилатора за дълбоко обучение на TensorRT и включва най-новите оптимизирани ядра, създадени за модерни реализации на FlashAttention и маскирано многогласово внимание (MHA) за фазите на контекст и генериране при изпълнението на големи езикови модели.
Оттук нататък гръбнакът на AWS и неговата здрава интеграция с Kubernetes ни дават възможност да се мащабираме еластично извън стотици графични процесори и да минимизираме престоите и мрежовите надхвърляния.
Случай на употреба: Нашият API в производство
pplx-api в Perplexity: Намаляване на разходите и надеждност
Нашият API вече захранва една от основните продуктови функции на Perplexity. Само превключването на една функция от външен API към pplx-api доведе до спестяване на разходи от 0,62 милиона долара на година, което е приблизително 4-кратно намаление на разходите. Извършихме A/B тестове и следихме метриките на инфраструктурата, за да гарантираме липсата на влошаване на качеството. В рамките на 2 седмици не наблюдавахме статистически значима разлика в A/B теста. Освен това pplx-api може да издържи на дневно натоварване от над един милион заявки, общо почти един милиард обработени токена дневно.
Резултатите от това първоначално проучване са много обнадеждаващи и очакваме pplx-api да захранва повече от нашите продуктови функции с течение на времето.

Ние също така използваме pplx-api за захранване на Perplexity Labs – нашата тестова среда за модели, обслужваща различни модели с отворен код.

Нашият екип се ангажира да предоставя достъп до най-новите съвременни големи езикови модели с отворен код. Интегрирахме Mistral 7B, Code Llama 34b и всички модели Llama 2 в рамките на часове след тяхното пускане и планираме да направим същото с появата на по-мощни големи езикови модели с отворен код.
Започнете с AI API на Perplexity
Можете да достъпите REST API на pplx-api чрез HTTPS заявки. Утвърждаването в pplx-api включва следните стъпки:
Генерирайте API ключ чрез страницата с настройки на акаунта в Perplexity. API ключът е дългосрочен токен за достъп, който може да се използва, докато не бъде ръчно обновен или изтрит.

Изпратете API ключа като bearer токен в заглавката Authorization с всяка заявка към pplx-api.
В следващия пример PERPLEXITY_API_KEY е системна променлива, обвързана с ключ, генериран с помощта на горните инструкции. 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?"
}
]
}'Което дава следния отговор с 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
}
}Ето пример за извикване на 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)В момента поддържаме Mistral 7B, Llama 13B, Code Llama 34B, Llama 70B, а API е удобно съвместим с OpenAI клиенти за лесна интеграция с налични приложения.
За повече информация, моля, посетете нашата API документация и ръководство за бърз старт.
Какво следва
В близко бъдеще pplx-api ще поддържа:
Персонализирани големи езикови модели на Perplexity и други големи езикови модели с отворен код.
Персонализирани вграждания на Perplexity и вграждания с отворен код.
Специална структура на ценообразуване на API с общ достъп след приключване на публичната бета версия.
Perplexity RAG-LLM API с обосновка за факти и цитати.
Свържете се с api@perplexity.ai, ако се интересувате от някой от тези случаи на употреба.
Това е и началото на нашата поредица от блог публикации в Perplexity. В следващата ни публикация ще споделим задълбочен преглед на сравнението на производителността между A100 и H100 за инференс на големи езикови модели. Очаквайте скоро!
Ние набираме кадри! Ако искате да работите по продукт, разположен в мащабна мрежа, и да изградите заедно с нас внимателно проектирана и оптимизирана генеративна инфраструктура за големи езикови модели, моля, присъединете се към нас.
Последвайте ни в Twitter, LinkedIn и се присъединете към нашия Discord за повече дискусии.
Автори:
Лоран Янг, Кевин Ху, Аараш Хейдари, Уилям Джанг, Дмитрий Первухин, Григорий Алексеев, Александър Ярац
Поверителност на данните
Избирайки pplx-api, можете да използвате пълния потенциал на големите езикови модели, като същевременно пазите поверителността и доверието на вашите потребители и клиенти. Ние разбираме важността на защитата на вашата лична информация и се ангажираме да поддържаме сигурността и поверителността на нашите потребители. Данните на API се изтриват автоматично след 30 дни и ние никога не обучаваме модели с данни, предадени през pplx-api. Потребителите имат възможност да се откажат от запазването на данни в настройките на акаунта си. Намерете политиката за поверителност на API тук.