介紹 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 的 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 建立效能基準。

Perplexity Labs - 第一個權杖延遲
Perplexity Labs - 解碼速度

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

作為參考,一般人類的閱讀速度為每秒 5 個權杖,這意味著 pplx-api 的服務速率大於閱讀速度。

Perplexity Labs - 每張 GPU 的權杖吞吐量

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 將為更多產品功能提供支援。

Perplexity Labs 中的 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 用於提交聊天完成要求。

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 隱私權政策。