介紹 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 的 TensortRT-LLM 建構了專有的 LLM 推理基礎設施,並運行於 AWS 提供的 A100 GPU 之上。詳情請參閱 pplx-api 基礎設施概述章節。因此,pplx-api 成為目前市面上最快的 Llama 與 Mistral API 之一。
為了與現有解決方案進行基準測試,我們比較了 pplx-api 與其他 LLM 推理程式庫的延遲表現。實驗結果顯示,pplx-api 的整體延遲較文字生成推理 (TGI) 快達 2.92 倍,初始回應延遲則快達 4.35 倍。在本實驗中,我們使用 Llama-2-13B-chat 模型在兩台 A100 GPU 上進行分片,並針對單串流與伺服器情境比較了 TGI 與 Perplexity 的推理表現。在單串流情境中,伺服器按順序處理請求。在伺服器情境中,用戶端根據波松分佈以不同請求速率發送請求,以模擬多變負載。關於請求速率,我們執行了小規模掃描,最高達每秒 1 個請求,這也是 TGI 所能維持的最大吞吐量。我們使用具備多樣化輸入與輸出 Token 長度的真實資料來模擬生產環境的行為。請求平均包含約 700 個輸入 Token 與 550 個輸出 Token。
我們使用相同的輸入並發送單一請求串流,同時測量 Replicate 與 Anyscale API 在同一模型上的平均延遲,以建立與其他現有 API 的效能基準。


採用相同的實驗設置,我們比較了 pplx-api 與 TGI 的最大吞吐量,並以解碼速度作為延遲限制。實驗顯示,pplx-api 的 Token 處理速度較 TGI 快 1.90 倍至 6.75 倍,而 TGI 在每秒 60 和 80 個 Token 的嚴格延遲限制下完全無法滿足要求。我們在與評估 pplx-api 相同的硬體與負載條件下評估了 TGI。由於無法控制 Replicate 與 Anyscale 的硬體與負載因素,因此無法與其進行此項指標的比較。
作為參考,人類的平均閱讀速度為每秒 5 個 Token,這意味著 pplx-api 的服務速度超過了人類的閱讀速度。

pplx-api 基礎設施概述
實現這些延遲數據需要軟體與硬體的最優結合。
由 NVIDIA A100 GPU 驅動的 AWS p4d 執行個體,作為實現具備頂級時脈速度之 GPU 擴充的最具成本效益與可靠性的方案,奠定了基礎。
為了讓軟體充分發揮此硬體優勢,我們執行了 NVIDIA 的 TensorRT-LLM,這是一個能加速並優化 LLM 推理的開源程式庫。TensorRT-LLM 封裝了 TensorRT 的深度學習編譯器,並包含針對 FlashAttention 和遮罩多頭注意力 (MHA) 的尖端實作所打造的最新優化核心,適用於 LLM 模型執行的上下文與生成階段。
在此基礎上,AWS 的骨幹網路及其與 Kubernetes 的穩健整合,使我們能夠彈性擴充至數百個 GPU 以上,並將停機時間與網路開銷降至最低。
使用案例:我們的 API 在生產環境中的應用
Perplexity 中的 pplx-api:成本降低與可靠性
我們的 API 已為 Perplexity 的一項核心產品功能提供支援。僅將單一功能從外部 API 切換至 pplx-api,每年即可節省 62 萬美元的成本,相當於降低了約 4 倍 的成本。我們執行了 A/B 測試並監控基礎設施指標,以確保不會造成品質下降。在為期 2 週的觀察中,我們發現 A/B 測試結果並無顯著統計差異。此外,pplx-api 每日可承載超過一百萬次請求,每日總處理 Token 量近十億個。
此次初步探索的結果非常令人鼓舞,我們預期 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 金鑰作為 Bearer Token 包含在 Authorization 標頭中。
在以下範例中,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 隱私政策。