关键要点
- 推理成本高昂:尽管总体成本持续下降,但大规模模型推理仍然昂贵,限制了可扩展性。
- GPU 选择挑战:可用的 GPU 种类繁多,使得选择过程复杂化,常常导致基于表面指标的次优选择。
- 客观评估框架:标准化的评估方法有助于识别针对特定业务需求的成本效益高的 GPU 方案。
- 性能指标:关注延迟(首令牌时间)和吞吐量(每秒令牌数)以优化用户体验。
- 成本效益分析:结合性能指标评估每百万令牌的成本,可清晰地将方案分类到有效的象限中。
- 真实世界测试:对主流模型(Llama 3.1 系列)在主要 GPU(H100、A100、RTX 4090)上的测试得出可操作的见解。
- 最佳实践:有关选择推理硬件和优化引擎的建议可提高效率并降低成本。
- 探索 Novita AI:有关大型模型推理服务的更多信息,请访问 Novita AI。
引言
大规模模型推理的成本虽然持续下降,但仍然相当高,推理速度和使用成本严重限制了业务的可扩展性。作为大型模型推理服务的提供商,我们持续投资以提升推理速度并降低推理成本。
我们深入探索如何选择推理硬件以及优化推理引擎,以向客户提供最具成本效益的推理方案。本文重点介绍选择推理硬件的理论方法和最佳实践,并展示我们的初步结论。
可用于大型模型推理的 GPU 种类繁多,很难找到一款完全适合特定业务需求的产品。在部署运营时,众多的 GPU 常常让我们感到困惑,导致仅根据 GPU 算力、内存容量、带宽和价格等指标进行静态比较。这种基于“看起来很吸引人”的主观感受来选择 GPU 的方式,可能会严重误导并对业务产生负面影响。
我们在早期也遇到过这个问题。然而,随着业务的增长和扩展,我们逐渐形成了一套客观公正的 GPU 评估标准以及相应的评估方法。通过采用这种标准化方法进行大量评估,我们能够从众多 GPU 中找出针对不同业务需求最具成本效益的方案。再结合优化的推理引擎,我们最终为客户提供既快速又经济的大型模型推理服务。
评估方法
简单来说,“最具成本效益的 GPU”需要满足两个条件:最低的价格和最高的性能。在开始评估之前,我们需准确定义这些标准。
定义最低价格
最低价格并非 GPU 硬件成本或数据中心的云服务器租赁费用,而是推理服务成本。即我们使用模型 API 时在官方网站上看到的价格,定义为消耗每百万令牌的成本(Dollars Per 1M tokens)。数值越低,表示价格越低。
理解最高性能
最高性能指的是大型模型推理的速度,越快越好。这需要与模型性能区分开,模型性能通常包括两个子指标:延迟和吞吐量。
延迟和吞吐量指标
- 延迟:衡量首令牌时间(TTFT),即用户从发起请求到收到第一个令牌所等待的时间。
- 吞吐量:表示从收到第一个令牌开始,平均每秒收到的令牌数(TPS)。
评估方法
为了使评估与业务需求一致,我们在评估时将推理系统视为一个黑盒,根据系统的输入和输出计算延迟和吞吐量。下图说明了延迟和吞吐量的计算方式。
关键考虑因素
- 延迟越低、吞吐量越高,推理性能越好。
- 在实际场景中,吞吐量远重要于延迟。

请求管理
一般来说,延迟越低、吞吐量越高表示推理性能越好。然而在实际场景中,吞吐量远重要于延迟。
只要延迟保持在 2 秒以内,用户对其并不敏感。即使需要等待几毫秒才能看到第一个令牌,也不会明显影响体验。
另一方面,吞吐量的变化对用户体验影响很大,用户更倾向于吞吐量更高的系统。因此,在评估推理方案的性能指标时,我们主要比较吞吐量差异,同时确保延迟在可接受范围内。
在实际运营中,推理系统会同时处理多个用户请求以提高整体系统负载。但同时处理的并发数不应过高,过高的并发实际上会降低推理性能。此外,用户请求的长度和返回的令牌数也会影响性能指标。
简化评估模式
为了从复杂的业务场景中提炼规律,我们的评估方法在紧密结合业务设置的同时进行了适当的简化。
固定的比例和长度
我们为请求的输入和输出设置了固定的比例和长度,例如 (1000,100)、(3000,300)、(5000,500),并在发送请求时精确控制输入和输出长度。
测试轮次与指标计算
在准备好数万个请求后,我们以固定的批大小将请求发送到推理服务器进行测试轮次,模拟大量用户持续发送请求,并使推理系统保持稳定的并发水平。
性能指标
基于每轮测试的数据,我们计算所有请求的延迟和吞吐量指标,并统计不同百分位指标(如 P50、P90、P99),以反映更真实的性能。
此外,我们计算一轮测试中所有输入和输出令牌的总吞吐量,结合硬件成本,得出推理系统每百万令牌的价格。
成本效益分析
按照此评估方法,我们根据不同的输入输出长度和批大小生成几组测试数据,发送到推理服务,并计算两个关键指标:每百万令牌的价格和每个请求的每秒输出令牌数(TPS)。
然后,我们将这些指标绘制成以价格为 x 轴、以 TPS 为 y 轴的图表。通过同样的方法评估更多硬件规格并将结果绘制在图表上,生成成本效益概览。
为了便于比较不同方案,我们将图表分为四个象限:
左上角:领导者象限,性能最高且价格最低。
左下角:追随者象限,价格有吸引力但性能有待提升。
右上角:挑战者象限,性能领先但价格较高,可能来自前沿且昂贵的硬件方案,若价格下降可能挑战领导者。
右下角:淘汰方案,在价格和性能上均无优势。

实施方法
我们的评估目标是找到最具成本效益的 GPU 硬件。为确保比较有意义,我们固定模型、推理引擎和请求数据,仅在相同测试条件下更改 GPU 硬件。评估过程中,我们选择主流的开源模型、数据集和推理引擎,主要使用 NVIDIA 系列的 GPU 硬件。
模型选择
我们将使用 Llama 3.1 系列模型,具体是 Llama 3.1–70B 模型 (Hugging Face 链接)。该模型尺寸通常需要多 GPU 推理,适合评估 GPU 间通信性能。
推理引擎
推理引擎使用 vLLM v0.6.3。数据集方面,我们专注于问答对,选择 ShareGPT-v3-unfiltered 作为最合适的选项。构建请求数据时,我们遍历 ShareGPT 数据集,根据输入长度过滤问答对,仅保留长度等于或超过指定值的对,只保留问题(如果太长则适当截断)作为请求提示。
GPU 规格选择
在选择 GPU 规格时,我们评估主流 GPU,具体包括 H100、A100 和 RTX 4090,涵盖低端、中端和高端类别。常见做法是在云平台上租用 8 卡配置的 GPU 服务器,例如我们的网站 Novita AI,提供便捷的按需付费选项。此外,我们可能还会纳入更多 GPU 规格以拓宽评估范围,最终目标是使用各种 GPU 和推理策略填满四个象限。
启动评估
完成准备后,可按照以下步骤启动评估:
步骤 1:启动推理引擎
在目标 GPU 服务器上启动 vLLM 推理引擎,可快速创建 Docker 容器实例。对于 8 卡 4090 GPU 服务器,使用如下命令:
docker run -d --gpus all --net=host vllm/vllm-openai:v0.6.3 --port 8080 --model meta-llama/Llama-3.1-70B-Instruct --tensor-parallel-size 8 --swap-space 16 --gpu-memory-utilization 0.9 --dtype auto --served-model-name llama31-70b --max-num-seqs 32 --max-model-len 32768 --enable-prefix-caching --enable-chunked-prefill --disable-log-requests
步骤 2:构建并发送请求
在客户端,根据输入/输出长度和批大小构建请求,并将它们批量发送到服务器。我们还可以参考 vLLM 内置的测试用例编写满足评估要求的测试脚本。
构建请求时需注意以下要点:
-
从 ShareGPT 过滤数据
遍历 ShareGPT 数据集中的所有对话条目时,注意每个对话的第一个元素是问题,第二个元素是对应的答案。只需要将问题作为请求的提示。
为确保问题中的令牌数满足输入长度要求,可能需要适当截断问题。此外,在每个请求的参数列表中,设置
max_tokens为指定的输出长度,并将ignore_eos设置为true,以强制推理引擎输出指定数量的令牌。 -
一致的批大小
在每轮测试中,始终维持相同的批大小。为此,客户端应并行发送固定数量的请求,并在一个请求完成后立即重新发送一个请求。这确保了测试条件保持一致,从而能够准确测量性能。
每个请求的参数可按如下方式配置:
{
"model": "llama31-70b",
"prompt": prompt_content,
"temperature": 0.8,
"top_p": 1.0,
"best_of": 1,
"max_tokens": output_len,
"ignore_eos": true
}
步骤 3:收集指标数据
所有请求完成后,应收集以下关键指标:
- 每个请求:首令牌延迟 (TTFT) = First_Token_Time — Send_Req_Time
- 每个请求:每秒令牌数 (TPS) = Total_Output_Tokens / (Finish_Req_Time — First_Token_Time)
- 一轮测试:系统总吞吐量 = Sum(Input_Tokens_Per_Req + Output_Tokens_Per_Req) / Total_Seconds
其中 TTFT 和 TPS 针对每个请求,为方便计算,可以使用一轮测试中所有请求的 P90 百分位。
系统总吞吐量表示推理服务每秒可处理的令牌总数(包括输入和输出令牌)。将对应 GPU 服务器的价格除以总吞吐量,即可得出每百万令牌的成本。
在实际场景中,服务器利用率和请求波动也可能影响吞吐量,可以引入一个修正系数,但这通常不影响评估结论。
GPU 性能与成本效益主要发现
我们使用上述测试方法对主要 GPU(H100、A100、RTX 4090)进行了深入评估。针对每种 GPU,我们计算了不同输入/输出长度和批大小下的性能指标(TTFT、TPS),并得出了 P50、P90 和 P99 百分位值。同时,我们参考主流 GPU 云平台的租赁价格(可在 Novita AI 获取),计算了每百万令牌的成本。这些数据将作为进一步成本效益评估的基础,并指导我们得出最终评估结论。
单次推理性能对比
主要关注延迟(首令牌延迟)和吞吐量(每秒令牌数)。延迟越低越好,TPS 越高越好。我们在三种 GPU 上评估了 Llama-3.1–8B 和 Llama-3.1–70B 模型的 BF16 和 FP8 版本,设置每个请求的输入/输出长度为 5000/500,并测试了不同的批大小。以下为 Llama-3.1–8B 模型的性能对比结果,使用 P50 数据进行分析。
-
首令牌延迟:
速度排名从快到慢依次为 H100、A100、RTX 4090。当批大小为 1 时,A100 的速度是 RTX 4090 的 1.25 倍,H100 是 1.66 倍。
随着批大小增加,RTX 4090 与另外两款 GPU 的差距显著扩大。当批大小达到 10 时,RTX 4090 的延迟超过 3.5 秒(P90 百分位),这对许多商业应用来说是不可接受的。相比之下,A100 和 H100 的延迟保持在 0.5 秒以下,性能稳定。
2. 每秒令牌数 (TPS):
该指标反映引擎的生成速度,速度排名同样为 H100、A100、RTX 4090。批大小为 1 时,A100 的 TPS 约为 RTX 4090 的 1.48 倍,H100 的 TPS 是 RTX 4090 的 2.44 倍,表明 H100 的生成效率最高。
随着批大小增加,单个请求的 TPS 逐渐下降,因为系统负载增加,分配给每个请求的资源减少。当批大小为 10 时,TPS 降至批大小为 1 时的约 70%。
3. FP8 模型量化:
与 BF16 相比,FP8 版本的权重文件减半,显著降低了系统资源开销,从而改善了延迟和吞吐量。第二组柱状图清晰说明了这一结论,尤其是在 TPS 指标上,相同 GPU 的 FP8 版本性能约为 BF16 版本的 1.4 倍。
4. RTX 4090 对批大小的敏感性:
由于内存和通信限制,RTX 4090 对批大小非常敏感。过大的批大小可能导致内部排队,从而增加延迟并降低吞吐量。在 RTX 4090 上部署工作负载时,必须特别注意批大小设置。


我们对 Llama-3.1–70B 模型采用了相同的评估方法,性能对比如下图所示。
由于 70B 模型规模较大,我们使用 8 块 RTX 4090 GPU 运行 BF16 版本,4 块 RTX 4090 GPU 运行 FP8 版本。相比之下,A100 和 H100 GPU 由于拥有 80GB 内存,只需 2 块即可有效运行。
从图中我们可以得出与 Llama-3.1–8B 模型类似的结论:H100 仍然是性能最高的 GPU,FP8 量化版本的速度大约是 BF16 版本的 1.4 倍。


综合成本效益评估
在实际部署中,不仅需要考虑性能指标,还需要考虑方案的总成本,以找出最佳性价比。
例如,虽然 RTX 4090 在性能上可能较慢,但其极低的价格可能使其总体性价比具有竞争力。为此,我们需要更科学、更专业的评估方法,以准确确定哪种 GPU 和推理方案提供了最佳价值。
在我们的“评估方法”中,我们提出将不同推理方案的成本和性能指标绘制在二维坐标系上,并将空间分为四个象限:领导者、追随者、挑战者和淘汰者。按照这一方法,我们重点测试了 Llama-3.1–70B、Llama-3.1–8B 模型及其 FP8 量化版本。
我们选择了四款 GPU:RTX 4090、A100、H100 和 H200,设置输入/输出长度为 5000/500,批大小范围为 1 到 10。我们测试了各种组合,获得了性能和定价数据,最终绘制如下两幅图。
对于 Llama-3.1–70B 模型,各方案的性价比如下图所示。有四种方案落在我们定义的领导者象限:
- Llama3.1–70B-FP8@2xH100
- Llama3.1–70B-FP8@4xH200
- Llama3.1–70B@4xH200
- Llama3.1–70B@2xH100
在图中,每个方案坐标点与原点连线的斜率表示性能与价格的比值。斜率越大,性价比越高。
因此,方案 Llama3.1–70B-FP8@4xH200 在所有评估的推理方案中脱颖而出,成为最具成本效益的选择。

对于 Llama3.1–8B 模型,由于规模较小,所有模型均采用单 GPU 配置部署。各方案的性价比如下图所示。两个使用 H200 的配置均落在我们定义的领导者象限。
这主要归功于 H200 的良好性能(尤其是领先的内存容量和带宽)以及有竞争力的定价。两个 RTX 4090 配置性价比最高,但由于性能较差,它们落入了追随者象限。

结论
GPU 成本构成了大型模型推理服务的很大一部分,而市场上 GPU 硬件种类繁多,选择最合适的一种可能颇具挑战。针对特定业务需求确定最佳性价比的 GPU 和推理方案至关重要,这可能决定业务的成败。
通过提供大型模型推理服务的经验,我们积累了大量的部署知识,并开发了一套有效的 GPU 评估框架,该框架持续指导业务发展,为客户提供最佳性价比的推理服务。
本文提炼了实际应用中的最佳实践,并对主流大型模型和 GPU 规格进行了真实测试,提供了性能对比,以确定最佳性价比的推理方案。
我们的评估方法超越了复杂的硬件指标,聚焦于实际业务应用,具有很高的通用性和可操作性——特别适合在各种 GPU 型号或推理引擎之间进行比较测试。
请访问 Novita AI 了解更多关于顶级大型模型推理服务和解决方案的信息!
Novita AI 是一个 AI 云平台,为开发者提供使用我们简单 API 部署 AI 模型的便捷方式,同时提供经济实惠且可靠的 GPU 云,用于构建和扩展应用。
推荐阅读
1.如何通过 KV 稀疏性为 vLLM 实现 1.5 倍加速
