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

Обратите внимание: указанные ниже модели устарели для текущих версий. Узнайте больше о наших 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.


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

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

Наша команда стремится обеспечить доступ к новейшим передовым 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).
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 будет поддерживать:
Пользовательские 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 здесь.