AI 平台/部署

聚焦:Perplexity AI 利用 NVIDIA 推理栈每月服务 4 亿个搜索请求

对 AI 赋能服务的需求持续快速增长,这给 IT 和基础设施团队带来了越来越大的压力。这些团队的任务是配置必要的硬件和软件来满足这一需求,同时平衡成本效益和最佳用户体验。Perplexity AI 的推理团队面临着这一挑战。Perplexity AI 是一款由 AI 驱动的搜索引擎,每月可处理超过 435 million 个查询。每个查询代表多个 AI 推理请求。

为了满足这一需求,Perplexity 推理团队转而使用 NVIDIA H100 Tensor Core GPUs NVIDIA Triton Inference Server NVIDIA TensorRT-LLM 来进行经济高效的 大语言模型(LLM) 部署。本文根据他们的实操经验,详细介绍了一些部署最佳实践和节省的 TCO。

同时为多个 AI 模型提供服务 

为了支持其广泛的用户群并满足搜索、总结和问答等方面的各种请求,Perplexity 的推理团队同时为 20 多个 AI 模型提供服务。其中包括热门开源 Llama 3.1 模型的不同变体,如 8B、70B 和 405B。

为了将每个用户请求与适当的模型相匹配,该公司依靠较小的分类器模型来帮助确定用户意图。然后,分类器检测到的用户任务 (例如文本补全) 会被路由到部署在 GPU 节点上的特定模型。每个节点由一个或多个 NVIDIA H100 GPU 组成,并由 NVIDIA Triton Inference Server 实例管理。这些节点遵循严格的服务级别协议 (SLA) 运行,以实现成本效益和用户交互。

Architecture diagram showing how Perplexity uses a load balancer to route traffic across different NVIDIA H100 Tensor Core GPU pods that are serving LLMs using NVIDIA Triton Inference Server and NVIDIA TensorRT-LLM.
图 1. Perplexity AI 使用 NVIDIA HGX H100 4-GPU 和 8-GPU 系统大规模部署 LLM 生产,具有动态可扩展性、模型并行性和负载均衡功能

为了适应庞大的 Perplexity 用户群和全天波动的流量,Pod 托管在 Kubernetes 集群内。它们具有内置的前端调度程序,可根据负载和使用情况将流量路由到适当的 Pod,从而确保始终满足 SLA。

前端调度程序使用的调度算法会影响令牌间延迟,尤其是在改善最差性能百分位方面 (Figure 2)。Perplexity 团队不断寻找新的调度器优化,包括如何更好地考虑不同请求之间的序列长度变化。

Chart showing how the different scheduling algorithms of round robin, least request, and power of two random choices affect the inter-token latency.
图 2、在 16 QPS 的中等请求速率下,在内部 Perplexity 基准测试中,循环、最小请求的令牌间延迟分配,以及两种随机选择负载均衡策略的能力

Triton Inference Server 是 Perplexity 部署架构的关键组件。它跨各种后端提供优化模型、批量处理传入用户请求,并向调度程序提供 GPU 利用率指标。这支持根据推理请求的数量增加或减少部署和 GPU 的数量。

有关如何使用 Kubernetes 部署 NVIDIA Triton 的详细指南,请参阅 使用 Kubernetes 扩展 LLMs with NVIDIA Triton 和 NVIDIA TensorRT-LLM

满足严格的服务级别协议 

为了为公司的各种用例定义合适的 SLA,Perplexity 的推理团队进行了全面的 A/B 测试,评估不同的配置及其对用户体验的影响。他们的目标是最大限度地提高 GPU 利用率,同时始终满足每个特定用例的目标 SLA。通过在满足目标 SLA 的同时改进 batching,推理服务成本得以优化。

对于较小的模型,例如嵌入实时检索中使用的 10 亿个参数以下的模型,重点在于尽可能降低延迟。这些通常对用户隐藏,并且是更广泛工作流程的一部分。因此,这些查询的配置通常具有较低的批量大小。鉴于这些模型的内存占用空间较小,该团队在 NVIDIA H100 GPU 上同时运行多个模型,以保持高资源利用率。

对于面向用户的模型 (例如 Llama 8B、70B 和 405B),这些模型对用户体验和部署成本的影响更大,因此该团队会进行更深入的性能分析,并评估关键指标,例如时间到第一个 token、每位用户每秒 token 数以及每百万次查询的成本。

为了在控制成本的同时优化性能,Perplexity 跨多个 GPU 并行部署这些模型。由于严格的服务水平协议 (SLA),该团队选择将张量并行性增加到 4 个和 8 个 GPU,他们发现这样可以在固定的 GPU 预算内降低对延迟非常敏感的请求的服务成本。数据或 pipeline 并行有助于在延迟敏感度较低的设置中更大限度地提高吞吐量。

Perplexity 团队现在将 TensorRT-LLM 与使用优化的 CUDA 内核构建的专有 LLM 运行时相结合,以更低的成本在严格的 SLA 中成功为基于 Llama 的模型提供服务。

Chart showing how Perplexity's cost per million token varies with different Time Per Output Token SLAs and model parallelism.
图 3、在四个 NVIDIA Hopper GPU 上使用张量并行机制对 Llama 8B 模型进行分片,可将 Perplexity 每百万个令牌的相对成本降低高达 3 倍,以处理延迟敏感型请求

最终,Perplexity 推理团队决定托管模型,取决于他们能否以较低的成本为这些模型提供服务,同时仍满足严格的服务水平协议 (SLA),与使用第三方 LLM 提供商 API 相比。例如,该团队估计,与向第三方 LLM API 服务提供商发送相同的请求量相比,通过在云托管的 NVIDIA GPUs 上提供支持其 Related-Questions 功能的模型,他们每年能够节省约 $1 million。“Related-Questions” 功能为 Perplexity 用户提供后续问题建议,以便在搜索查询后进行更深入的研究。

Visual showing Perplexity’s annual savings from serving the AI models of one of their features internally versus using external third-party API services.
图 4、与使用第三方 LLM API 服务相比,Perplexity 使用其部署架构在云托管的 NVIDIA GPU 上提供 Related-Questions AI 模型,每年可节省约 100 万美元

提供更高水平的性能 

Perplexity 的推理团队对其路线图采用全面的全栈方法,不断优化和增强堆栈的每一层 (从应用和用例到为中间件和硬件加速器提供服务的推理)。

在推理服务中间件方面,该团队正在积极与 NVIDIA Triton 工程团队合作,部署 分解服务 ,这是一项突破性技术,可将 LLM 工作流的预填充和解码推理阶段分离到单独的 NVIDIA GPU。此技术可显著提高整体系统吞吐量,同时满足 SLA,从而降低每个令牌的成本。此外,鉴于 Perplexity 的特定硬件资源需求,此技术还可让 Perplexity 在每个推理阶段灵活使用不同的 NVIDIA GPU 产品。

Perplexity 团队明白,优化软件堆栈只能在一定程度上推动性能提升。为了提供更高级别的性能,硬件创新至关重要。因此,他们迫切希望评估 NVIDIA Blackwell 平台

NVIDIA Blackwell 通过众多技术创新实现了 显著的性能飞跃 ,包括支持 FP4 数据格式的第二代 Transformer Engine、支持更大 NVLink 域的第五代 NVLink 和 NVSwitch 等。总体而言,这些创新可将 万亿级参数 LLM 的推理性能提升 30 倍。

开始使用 

NVIDIA Triton Inference Server NVIDIA TensorRT 是 GitHub 上的开源项目。它们还可用作 Docker 容器,可从 NVIDIA NGC 中提取。它们是 NVIDIA AI Enterprise 的一部分,可提供企业级安全性、稳定性和支持。寻求快速实现价值的企业可以使用 NVIDIA NIM ,这是一套易于使用的微服务,可加速各种 AI 模型(包括开源社区和 NVIDIA AI Foundation 模型)的推理。

如需了解详情,请查看以下资源:

标签