介紹 pplx-api

Perplexity Lab 用於開源 LLM 的快速高效 API

Introducing pplx-api by Perplexity Labs

請注意:以下內容對於目前模型已棄用。進一步了解我們的 API

我們很高興宣布推出 pplx-api,旨在提供存取 Mistral 7BLlama2 13BCode Llama 34BLlama2 70Breplit-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 的效能基準。

Perplexity Labs - 首個 Token 延遲
Perplexity Labs - 解碼速度

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

作為參考,人類的平均閱讀速度為每秒 5 個 Token,這意味著 pplx-api 的服務速度超過了人類的閱讀速度。

Perplexity Labs - 每個 GPU 的 Token 吞吐量

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 隨著時間推移將支援更多產品功能。

Perplexity Labs 中的 pplx-api:開源推理生態系統

我們亦使用 pplx-api 為 Perplexity Labs 提供支援,這是一個用於運行各類開源模型的模型實驗場。

每日平均服務 Token 量

我們的團隊致力於提供對最新、最先進之開源 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 來提交聊天完成請求。

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 7BLlama 13BCode Llama 34BLlama 70B,且該 API 方便與 OpenAI 用戶端相容,便於與現有應用程式進行整合。

欲知更多資訊,請造訪我們的 API 文件快速入門指南

下一步

在不久的將來,pplx-api 將支援:

自訂 Perplexity LLM 與其他開源 LLM。

自訂 Perplexity 嵌入模型與開源嵌入模型。

專屬 API 定價結構,並在公開測試結束後提供通用存取權限。

具備事實依據與引用來源的 Perplexity RAG-LLM API。

如果您對上述任一使用案例感興趣,請聯絡 api@perplexity.ai

這也是我們 Perplexity 部落格系列文章的開端。在下一篇文章中,我們將深入探討用於 LLM 推理的 A100 與 H100 效能比較。敬請期待!

我們正在招募人才!如果您希望投入大規模部署的產品,並與我們一同建構設計縝密、精心優化的生成式及大型語言模型基礎設施,請加入我們

請在 TwitterLinkedIn 上追蹤我們,並加入我們的 Discord 以進行更多討論。

作者:

Lauren Yang, Kevin Hu, Aarash Heydari, William Zhang, Dmitry Pervukhin, Grigorii Alekseev, Alexandr Yarats

資料隱私

選擇 pplx-api,您可在發揮 LLM 全部潛力的同時,維護使用者與客戶的隱私與信任。我們深知保護個人資訊的重要性,並致力於維護使用者的安全與隱私。API 資料會在 30 天後自動刪除,我們絕不會使用透過 pplx-api 傳輸的任何資料進行訓練。使用者可選擇在帳戶設定中拒絕資料保留。請在此查看我們的 API 隱私政策。