Представляємо 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.
Неймовірно швидкий вивід (inference): наша ретельно розроблена система виводу є ефективною та забезпечує до 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 чи доступу до графічних процесорів (GPU), насолоджуючись при цьому передовою продуктивністю. Наш вивід LLM також позбавляє від складнощів та необхідності керувати власним обладнанням, що ще більше спрощує використання.
Неймовірно швидкий вивід
API LLM від Perplexity ретельно розроблено та оптимізовано для швидкого виводу. Для цього ми створили власну інфраструктуру виводу LLM на базі TensorRT-LLM від NVIDIA, яка працює на GPU 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 GPU A100 з використанням моделі Llama-2-13B-chat, розподіленої між обома GPU. Для сценарію з одним потоком сервер обробляє один запит за іншим. У сценарії сервера клієнт надсилає запити відповідно до розподілу Пуассона з різною частотою запитів для імітації змінного навантаження. Для частоти запитів ми проводимо невелике тестування до максимум 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, нашого тестового середовища моделей, що обслуговує різноманітні відкриті моделі.

Наша команда прагне забезпечити доступ до найновіших сучасних відкритих мовних моделей. Ми інтегрували Mistral 7B, Code Llama 34b та всі моделі Llama 2 за лічені години після їх випуску, і плануємо робити те ж саме в міру появи потужніших відкритих LLM.
Початок роботи з AI API від Perplexity
Ви можете отримати доступ до REST API pplx-api за допомогою запитів HTTPS. Автентифікація в pplx-api складається з таких кроків:
Згенеруйте ключ API на сторінці налаштувань облікового запису Perplexity. Ключ API є довгостроковим токеном доступу, який можна використовувати доти, доки його не буде оновлено вручну або видалено.

Надішліть ключ API як токен носія (bearer token) у заголовку 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 підтримуватиме:
Користувацькі LLM від Perplexity та інші відкриті LLM.
Користувацькі вбудовування (embeddings) від Perplexity та відкриті вбудовування.
Виділена структура ціноутворення API із загальним доступом після завершення публічної бета-версії.
API Perplexity RAG-LLM з обґрунтуванням фактів і цитуванням.
Звертайтеся на api@perplexity.ai, якщо вам цікавий будь-який із цих варіантів використання.
Це також початок нашої серії публікацій у блозі Perplexity. У нашій наступній публікації ми детально розберемо порівняння продуктивності A100 та H100 для виводу LLM. Слідкуйте за оновленнями!
Ми наймаємо фахівців! Якщо ви хочете працювати над продуктом, розгорнутим у величезному масштабі, і створювати разом із нами продуману, ретельно оптимізовану інфраструктуру генеративних та великих мовних моделей, будь ласка, приєднуйтеся до нас.
Слідкуйте за нами в Twitter, LinkedIn та приєднуйтеся до нашого Discord для обговорень.
Автори:
Lauren Yang, Kevin Hu, Aarash Heydari, William Zhang, Dmitry Pervukhin, Grigorii Alekseev, Alexandr Yarats
Конфіденційність даних
Обираючи pplx-api, ви можете використовувати весь потенціал LLM, водночас захищаючи конфіденційність і довіру ваших користувачів і клієнтів. Ми розуміємо важливість захисту вашої особистої інформації та прагнемо підтримувати безпеку та конфіденційність наших користувачів. Дані API автоматично видаляються через 30 днів, і ми ніколи не проводимо навчання на будь-яких даних, що передаються через pplx-api. Користувачі мають можливість відмовитися від зберігання даних у налаштуваннях свого облікового запису. Ознайомтеся з нашою політикою конфіденційності API тут.