引入 pplx-api
Perplexity Lab 快速高效的开源大语言模型 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 游乐场 中均能处理生产级流量。
开源大语言模型的一站式服务:我们的团队致力于在新模型发布后立即添加它们。例如,我们在 Llama 和 Mistral 模型发布后的几小时内就添加了它们,且无需预发布权限。
pplx-api 目前处于公测阶段,对于拥有 Perplexity Pro 订阅 的用户免费。
您可以使用 pplx-api 进行休闲周末黑客松,或将其作为商业解决方案来构建新的创新产品。我们希望通过此次发布,了解人们如何使用我们的 API 构建酷炫且创新的产品。如果您有 pplx-api 的商业用例,请通过 api@perplexity.ai 联系我们。我们非常期待您的回音!
pplx-api 的优势
易于使用
大语言模型的部署和推理需要巨大的基础设施投入,才能实现高性能和高成本效益的模型服务。开发者可以开箱即用我们的 API,无需深入了解 C++/CUDA 或访问 GPU,同时仍能享受最先进的性能。我们的大语言模型推理还抽象了管理自有硬件的复杂性和必要性,进一步提升了您的使用便利性。
极速推理
Perplexity 的大语言模型 API 经过精心设计和优化,以实现快速推理。为实现这一点,我们围绕 AWS 上提供的 NVIDIA TensortRT-LLM 构建了专有的大语言模型推理基础设施。在 pplx-api 基础设施概述 部分了解更多信息。因此,pplx-api 是市面上最快的 Llama 和 Mistral API 之一。
为了与现有解决方案进行基准测试,我们将 pplx-api 的延迟与其他大语言模型推理库进行了比较。在我们的实验中,与文本生成推理 (TGI) 相比,pplx-api 的整体延迟降低了高达 2.92 倍,初始响应延迟降低了高达 4.35 倍。在此实验中,我们使用跨两个 GPU 分片的大语言模型 Llama-2-13B-chat,比较了在 2 个 A100 GPU 上单流和服务器场景下 TGI 和 Perplexity 的推理性能。对于单流场景,服务器依次处理请求。在服务器场景中,客户端根据泊松分布发送请求,并采用不同的请求速率来模拟不同的负载。对于请求速率,我们执行了一个最高为 1 个请求/秒的小范围扫描,这是 TGI 维持的最大吞吐量。我们使用具有各种输入和输出令牌长度的真实世界数据来模拟生产行为。请求平均约为 700 个输入令牌和 550 个输出令牌。
使用相同的输入并发送单流请求,我们还测量了 Replicate 和 Anyscale 的 API 对于同一模型的平均延迟,从而收集了针对其他现有 API 的性能基准。


使用相同的实验设置,我们比较了 pplx-api 与 TGI 的最大吞吐量,并将解码速度作为延迟约束。在我们的实验中,pplx-api 处理令牌的速度比 TGI 快 1.90 倍至 6.75 倍,并且在 60 和 80 令牌/秒时,TGI 完全无法满足我们更严格的延迟约束。我们在用于评估 pplx-api 的相同硬件和负载条件下评估了 TGI。由于我们无法控制 Replicate 和 Anyscale 的硬件和负载因素,因此无法将此指标与它们进行比较。
作为参考,人类的平均阅读速度为 5 令牌/秒,这意味着 pplx-api 的服务速度比人的阅读速度更快。

pplx-api 基础设施概述
实现这些延迟数字需要最先进的软件和硬件相结合。
由 NVIDIA A100 GPU 提供支持的 AWS p4d 实例 为扩展具有一流时钟速度的 GPU 提供了最具成本效益和可靠性的选择。
为了让软件利用这些硬件,我们运行 NVIDIA 的 TensorRT-LLM,这是一个加速和优化大语言模型推理的开源库。TensorRT-LLM 封装了 TensorRT 的深度学习编译器,并包含了最新的优化内核,专为 FlashAttention 和掩码多头注意力 (MHA) 的尖端实现而设计,用于大语言模型执行的上下文和生成阶段。
在此基础上,AWS 的骨干网络及其与 Kubernetes 的强大集成使我们能够弹性扩展到数百个 GPU 以上,并最大限度地减少停机时间和网络开销。
用例:我们的生产环境 API
Perplexity 中的 pplx-api:降低成本与提高可靠性
我们的 API 已经为 Perplexity 的核心产品功能之一提供支持。仅将单个功能从外部 API 切换到 pplx-api,每年就节省了 62 万美元的成本,成本降低了约 4 倍。我们进行了 A/B 测试并监控了基础设施指标,以确保质量不会下降。在 2 周的时间里,我们在 A/B 测试中没有观察到统计学上的显著差异。此外,pplx-api 每天能够承受超过 100 万次请求的负载,每天处理的令牌总量接近 10 亿个。
初步探索的结果非常令人鼓舞,我们预计 pplx-api 将随着时间的推移为我们的更多产品功能提供支持。

我们还使用 pplx-api 为 Perplexity Labs 提供支持,这是我们的模型游乐场,用于提供各种开源模型。

我们的团队致力于提供对最新、最先进的开源大语言模型的访问。我们在 Mistral 7B、Code Llama 34b 和所有 Llama 2 模型发布后的几个小时内就集成了它们,并计划随着更多功能强大且开源的大语言模型的出现,继续这样做。
开始使用 Perplexity 的 AI API
您可以使用 HTTPS 请求访问 pplx-api REST API。向 pplx-api 进行身份验证涉及以下步骤:
通过 Perplexity 账户设置页面 生成 API 密钥。API 密钥是一个长期访问令牌,可以一直使用,直到手动刷新或删除为止。

在每次 pplx-api 请求的 Authorization 标头中将 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 将支持:
自定义 Perplexity 大语言模型和其他开源大语言模型。
自定义 Perplexity 嵌入和其他开源嵌入。
公测结束后,将推出具有通用访问权限的专用 API 定价结构。
带有事实依据和引用的 Perplexity RAG-LLM API。
如果您对这些用例感兴趣,请联系 api@perplexity.ai。
这也是我们 Perplexity 博客系列文章的开始。在下一篇文章中,我们将深入探讨 A100 与 H100 在大语言模型推理方面的性能比较。敬请期待!
我们正在招聘!如果您想致力于在大规模部署的产品上工作,并与我们一起构建精心设计、仔细优化的生成式和大语言模型基础设施,请 加入我们。
请在 Twitter、LinkedIn 上关注我们,并加入我们的 Discord 进行更多讨论。
作者:
Lauren Yang, Kevin Hu, Aarash Heydari, William Zhang, Dmitry Pervukhin, Grigorii Alekseev, Alexandr Yarats
数据隐私
选择 pplx-api,您可以在充分发挥大语言模型潜力的同时,保护您的用户和客户的隐私与信任。我们了解保护个人信息的重要性,并致力于维护我们用户的安全和隐私。API 数据会在 30 天后自动删除,我们绝不会使用通过 pplx-api 传输的任何数据进行训练。用户可以在账户设置中选择退出数据留存。点击此处获取我们的 API 隐私政策。