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

Быстрый и эффективный API Perplexity Labs для LLM с открытым исходным кодом

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 упрощает для разработчиков интеграцию передовых LLM с открытым исходным кодом в свои проекты.

Наш pplx-api обеспечивает:

Простоту использования: разработчики могут использовать современные модели с открытым исходным кодом «из коробки» и начать работу за считанные минуты, применяя привычный REST API.

Невероятно быстрое логическое выведение: наша тщательно спроектированная система логического выведения эффективна и обеспечивает задержку до 2.9 раза меньше, чем Replicate, и до 3.1 раза меньше, чем Anyscale.

Проверенную в боевых условиях инфраструктуру: надежность pplx-api подтверждена обработкой трафика производственного уровня как в нашем механизме ответов Perplexity, так и в нашей песочнице Labs.

Универсальное решение для LLM с открытым исходным кодом: наша команда стремится добавлять новые модели с открытым исходным кодом по мере их появления. Например, мы добавили модели Llama и Mistral через несколько часов после их выпуска без предварительного доступа к ним.

pplx-api находится в публичном бета-тестировании и бесплатен для пользователей с подпиской Perplexity Pro.

Используйте pplx-api для обычного хакатона в выходные или как коммерческое решение для создания новых инновационных продуктов. Мы надеемся узнать, как люди смогут создавать крутые и инновационные продукты с помощью нашего API в рамках данного релиза. Пожалуйста, свяжитесь с нами по адресу api@perplexity.ai, если у вас есть бизнес-кейс для использования pplx-api. Мы будем рады услышать вас!

Преимущества pplx-api

Простота использования

Развертывание LLM и логическое выведение требуют значительных инфраструктурных усилий для обеспечения производительности и экономической эффективности работы моделей. Разработчики могут использовать наш API «из коробки», без глубоких знаний C++/CUDA или доступа к графическим процессорам, при этом пользуясь преимуществами передовой производительности. Наше логическое выведение LLM также нивелирует сложность и необходимость управления собственным оборудованием, дополнительно повышая удобство использования.


Невероятно быстрое логическое выведение

LLM API компании Perplexity тщательно спроектирован и оптимизирован для быстрого логического выведения. Для достижения этого мы создали собственную инфраструктуру логического выведения LLM на базе TensorRT-LLM от NVIDIA, которая обслуживается на графических процессорах A100, предоставляемых AWS. Подробнее см. в разделе Обзор инфраструктуры pplx-api. В результате pplx-api является одним из самых быстрых коммерчески доступных API для моделей Llama и Mistral.

Для бенчмаркинга по сравнению с существующими решениями мы сопоставили задержку pplx-api с другими библиотеками логического выведения LLM. В наших экспериментах pplx-api достигает до 2.92 раза меньшей общей задержки по сравнению с Text Generation Inference (TGI) и до 4.35 раза меньшей задержки первичного ответа. В этом эксперименте мы сравнивали TGI и логическое выведение Perplexity для однопоточных и серверных сценариев на 2 графических процессорах A100, используя шардированную модель Llama-2-13B-chat на обоих графических процессорах. Для однопоточного сценария сервер обрабатывает один запрос за другим. В серверном сценарии клиент отправляет запросы согласно распределению Пуассона с переменной частотой запросов для эмуляции изменяющейся нагрузки. Для частоты запросов мы проводим небольшое сканирование до максимума в 1 запрос в секунду — это максимальная пропускная способность, поддерживаемая TGI. Мы использовали реальные данные с различной длиной входных и выходных токенов для имитации производственного поведения. В среднем запросы содержат ~700 входных токенов и ~550 выходных токенов.

Используя те же входные данные и отправляя один поток запросов, мы также измерили средние задержки API Replicate и Anyscale для этой же модели, чтобы получить базовый уровень производительности по сравнению с другими существующими API.

Perplexity Labs — Задержка первого токена
Perplexity Labs — Скорость декодирования

Используя ту же экспериментальную установку, мы сравнили максимальную пропускную способность pplx-api с TGI, принимая скорость декодирования в качестве ограничения задержки. В наших экспериментах pplx-api обрабатывает токены в 1.90-6.75 раза быстрее, чем TGI, при этом TGI полностью не удовлетворяет нашим более строгим ограничениям по задержке при 60 и 80 токенах в секунду. Мы оцениваем TGI в тех же аппаратных и нагрузочных условиях, которые использовали для оценки pplx-api. Сравнение этого показателя с Replicate и Anyscale невозможно, поскольку мы не можем контролировать их аппаратное обеспечение и коэффициенты нагрузки.

Для справки: средняя скорость чтения человека составляет 5 токенов в секунду, что означает, что pplx-api способен обслуживать данные со скоростью, превышающей скорость чтения.

Perplexity Labs — Пропускная способность токенов на GPU

Обзор инфраструктуры pplx-api

Достижение таких показателей задержки требует сочетания передового программного и аппаратного обеспечения.

Экземпляры AWS p4d на базе графических процессоров NVIDIA A100 представляют собой наиболее экономически эффективный и надежный вариант масштабирования графических процессоров с лучшими в своем классе тактовыми частотами.

Чтобы программное обеспечение могло использовать преимущества данного оборудования, мы используем TensorRT-LLM от NVIDIA — библиотеку с открытым исходным кодом, которая ускоряет и оптимизирует логическое выведение LLM. TensorRT-LLM оборачивает компилятор глубокого обучения TensorRT и включает новейшие оптимизированные ядра, созданные для передовых реализаций FlashAttention и маскированного многоголового внимания (MHA) для фаз контекста и генерации при выполнении модели LLM.

С этого момента основа 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, нашей песочницы моделей, обслуживающей различные модели с открытым исходным кодом.

Среднее количество обслуживаемых токенов в день

Наша команда стремится обеспечить доступ к новейшим передовым LLM с открытым исходным кодом. Мы интегрировали Mistral 7B, Code Llama 34b и все модели Llama 2 в течение нескольких часов после их выпуска и планируем продолжать делать это по мере появления более способных LLM с открытым исходным кодом.

Начните работу с AI API компании Perplexity

Вы можете получить доступ к REST API pplx-api с помощью HTTPS-запросов. Аутентификация в pplx-api включает следующие шаги:

Сгенерируйте ключ API на странице настроек учетной записи Perplexity. Ключ API — это долгосрочный токен доступа, который можно использовать до тех пор, пока он не будет вручную обновлен или удален.

Отправляйте ключ API в качестве токена bearer в заголовке Authorization с каждым запросом к pplx-api.

В следующем примере PERPLEXITY_API_KEY — это переменная среды, привязанная к ключу, созданному в соответствии с приведенными выше инструкциями. CURL используется для отправки запроса на завершение чата (chat completion).

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 будет поддерживать:

Пользовательские LLM Perplexity и другие LLM с открытым исходным кодом.

Пользовательские эмбеддинги Perplexity и эмбеддинги с открытым исходным кодом.

Выделенную структуру ценообразования API с общим доступом после завершения этапа публичного бета-тестирования.

API Perplexity RAG-LLM с привязкой к фактам и цитированием.

Свяжитесь с нами по адресу api@perplexity.ai, если вас интересует любой из этих вариантов использования.

Это также начало нашей серии публикаций в блоге Perplexity. В следующем посте мы подробно расскажем о сравнении производительности A100 и H100 для логического выведения LLM. Следите за обновлениями!

Мы нанимаем! Если вы хотите работать над продуктом, развернутым в огромном масштабе, и вместе с нами создавать тщательно спроектированную, тщательно оптимизированную инфраструктуру для генеративных и больших языковых моделей, пожалуйста, присоединяйтесь к нам.

Подписывайтесь на нас в Twitter, LinkedIn и присоединяйтесь к нашему Discord для обсуждений.

Авторы:

Лорен Янг, Кевин Ху, Араш Хейдари, Уильям Чжан, Дмитрий Первухин, Григорий Алексеев, Александр Ярац

Конфиденциальность данных

Выбирая pplx-api, вы можете использовать весь потенциал LLM, обеспечивая при этом конфиденциальность и доверие своих пользователей и клиентов. Мы понимаем важность защиты вашей личной информации и стремимся поддерживать безопасность и конфиденциальность наших пользователей. Данные API автоматически удаляются через 30 дней, и мы никогда не обучаемся на данных, передаваемых через pplx-api. Пользователи имеют возможность отказаться от хранения данных в настройках своей учетной записи. Ознакомьтесь с нашей политикой конфиденциальности API здесь.