Представяне на pplx-api

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

Introducing pplx-api by Perplexity Labs

Моля, обърнете внимание: следните модели вече са устарели за текущите версии. Научете повече за нашите 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.

Perplexity Labs - Латентност на първия токен
Perplexity Labs - Скорост на декодиране

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

За справка, средната скорост на четене на човек е 5 токена в секунда, което означава, че pplx-api може да обслужва със скорост, по-висока от тази на четене.

Perplexity Labs - Пропускателна способност на токени за графичен процесор

Преглед на инфраструктурата на 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: Екосистема за инференс с отворен код

Ние също така използваме 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 се използва за изпращане на заявка за завършване на чат.

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

Което дава следния отговор с 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 } }

Ето пример за извикване на 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)

В момента поддържаме 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 тук.