介紹 pplx-api
Perplexity Lab 針對開源 LLM 快速且高效的 API

請注意:以下模型已不建議用於目前版本。了解更多關於我們的 API
我們很高興宣佈推出 pplx-api,旨在提供最快速的方式來存取 Mistral 7B、Llama2 13B、Code Llama 34B、Llama2 70B 和 replit-code-v1.5-3b 模型。pplx-api 讓開發人員能夠輕鬆地將最先進的開源 LLM 整合到他們的專案中。
我們的 pplx-api 提供:
易於使用:開發人員可以直接使用最先進的開源模型,並透過熟悉的 REST API 在幾分鐘內上手。
極速推論:我們精心設計的推論系統具備高效率,延遲比 Replicate 低高達 2.9 倍,比 Anyscale 低高達 3.1 倍。
經過實戰考驗的基礎設施:pplx-api 經證明高度可靠,在我們的 Perplexity 答案引擎和 Labs 實驗場中皆可處理生產級的流量。
開源 LLM 的一站式商店:我們的團隊致力於在推出時新增全新的開源模型。例如,我們在 Llama 和 Mistral 模型推出後幾小時內就將其新增,且無需預先發佈存取權限。
pplx-api 目前處於公開測試階段,對擁有 Perplexity Pro 訂閱的用戶免費開放。
無論是用於輕鬆的週末黑客松,還是作為建構創新產品的商業解決方案,您都可以使用 pplx-api。我們希望透過這次發佈,了解人們如何使用我們的 API 建構出酷炫且創新的產品。如果您有關於 pplx-api 的商業使用案例,請與我們聯絡:api@perplexity.ai。我們非常期待您的意見!
pplx-api 的優勢
使用簡易
LLM 部署和推論需要進行龐大的基礎設施工作,才能使模型服務具備高效能和成本效益。開發人員可以直接使用我們的 API,而無需深入了解 C++/CUDA 或存取 GPU,同時仍能享受到最先進的效能。我們的 LLM 推論還能抽象化管理自身硬體的複雜性和必要性,進一步提升您的使用便利性。
極速推論
Perplexity 的 LLM API 經過精心設計與最佳化,可實現快速推論。為了達到此目的,我們圍繞著 NVIDIA 的 TensorRT-LLM 建構了專屬的 LLM 推論基礎設施,並在 AWS 提供的 A100 GPU 上執行。在「pplx-api 基礎設施概覽」一節中了解更多資訊。因此,pplx-api 是目前市面上速度最快的 Llama 和 Mistral API 之一。
為了與現有解決方案進行基準測試,我們將 pplx-api 的延遲與其他 LLM 推論程式庫進行了比較。在我們的實驗中,與文字生成推論 (TGI) 相比,pplx-api 整體延遲降低高達 2.92 倍,初始回應延遲則降低高達 4.35 倍。在此實驗中,我們使用橫跨兩個 GPU 的 Llama-2-13B-chat 模型,針對單串流和伺服器情境,比較了 TGI 與 Perplexity 的推論效能。在單串流情境中,伺服器會依序處理要求。在伺服器情境中,用戶端會根據卜瓦松分佈 (Poisson distribution) 發送具有不同要求速率的要求,以模擬不同的負載。針對要求速率,我們執行了一個小型掃描,最高可達每秒 1 個要求的上限,這也是 TGI 所能維持的最大吞吐量。我們使用包含各種輸入和輸出權杖長度的真實世界資料,來模擬生產環境的行為。這些要求的平均輸入權杖約為 700 個,輸出權杖約為 550 個。
使用相同的輸入並發送單一要求串流,我們也測量了 Replicate 和 Anyscale API 針對相同模型的平均延遲,以便與其他現有 API 建立效能基準。


使用相同的實驗設定,我們將 pplx-api 的最大吞吐量與 TGI 進行了比較,並以解碼速度作為延遲限制。在我們的實驗中,pplx-api 處理權杖的速度比 TGI 快 1.90 倍至 6.75 倍,而 TGI 完全無法在 60 和 80 權杖/秒的較嚴格延遲限制下達到要求。我們在用於評估 pplx-api 的相同硬體和負載條件下評估 TGI。由於我們無法控制其硬體和負載因素,因此無法將此指標與 Replicate 和 Anyscale 進行比較。
作為參考,一般人類的閱讀速度為每秒 5 個權杖,這意味著 pplx-api 的服務速率大於閱讀速度。

pplx-api 基礎設施概覽
要達到這些延遲數字,需要結合最先進的軟體與硬體。
由 NVIDIA A100 GPU 驅動的 AWS p4d 執行個體成為擴充 GPU 且具備同級最佳時脈速度最具成本效益且可靠的選擇。
為了讓軟體充分利用此硬體,我們執行了 NVIDIA 的 TensorRT-LLM,這是一個可加速並最佳化 LLM 推論的開源程式庫.TensorRT-LLM 包裝了 TensorRT 的深度學習編譯器,並包含針對 LLM 模型執行之內容和生成階段的 FlashAttention 與遮罩多頭注意力 (MHA) 最先進實作所製作的最新最佳化核心。
從這裡開始,AWS 的骨幹網路及其與 Kubernetes 的強大整合,賦予我們彈性擴充超越數百個 GPU 的能力,並將停機時間和網路負擔降至最低。
使用案例:生產環境中的 API
Perplexity 中的 pplx-api:降低成本與提升可靠性
我們的 API 已經在為 Perplexity 的核心產品功能提供支援。僅將單一功能從外部 API 切換至 pplx-api,一年即可節省 62 萬美元的成本,相當於成本降低了約 4 倍。我們執行了 A/B 測試並監控基礎設施指標,以確保品質沒有下降。在為期 2 週的過程中,我們觀察到 A/B 測試沒有統計學上顯著的差異。此外,pplx-api 能夠承受每日超過一百萬個要求的負載,每天處理的權杖總數接近十億個。
這次初步探索的結果非常令人鼓舞,我們預期隨著時間推移,pplx-api 將為更多產品功能提供支援。

我們也使用 pplx-api 來支援 Perplexity Labs,這是我們的模型實驗場,提供各種開源模型。

我們的團隊致力於提供最新最先進開源 LLM 的存取權限。我們在 Mistral 7B、Code Llama 34b 和所有 Llama 2 模型發布後幾小時內就將其整合,並計劃在未來推出更多功能強大的開源 LLM 時跟進。
開始使用 Perplexity 的 AI API
您可以使用 HTTPS 要求存取 pplx-api REST API。向 pplx-api 進行驗證包含以下步驟:
透過 Perplexity 帳戶設定頁面產生 API 金鑰。API 金鑰是一個長期存取權杖,在手動重新整理或刪除之前都可以使用。

在每個 pplx-api 要求中,將 API 金鑰作為 Authorization 標頭中的 bearer 權杖傳送。
在以下範例中,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 用戶端相容,便於與現有應用程式進行整合。
後續規劃
在不久的將來,pplx-api 將支援:
自訂 Perplexity LLM 與其他開源 LLM。
自訂 Perplexity 嵌入與開源嵌入。
專用 API 定價結構,並在公開測試階段結束後提供一般存取權。
具備事實依據與引用來源機制的 Perplexity RAG-LLM API。
如果您對其中任何使用案例感興趣,請與 api@perplexity.ai 聯絡。
這也是我們 Perplexity 部落格文章系列的開端。在下一篇文章中,我們將深入探討 LLM 推論的 A100 與 H100 效能比較。敬請期待!
我們正在招募人才!如果您想參與大規模部署的產品開發,並與我們一起建構精心設計、仔細最佳化的生成式與大型語言模型基礎設施,請加入我們。
在 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 隱私權政策。