H100 vLLM 基准测试结果: 离线与在线测试Hugging Face上的大语言模型

本文基于 NVIDIA H100 80GB GPU 和 vLLM 后端,对 Hugging Face 上的多个大语言模型进行了离线与在线推理性能测试。测试涵盖了不同模型规模、输入输出长度以及请求数量的组合。以下是对测试结果的详细分析,旨在为使用 H100 服务器进行大语言模型推理的用户提供有价值的参考。

H100 GPU详细信息

  • GPU:英伟达H100
  • 微架构:Hopper
  • 计算能力:9.0
  • CUDA核心:14592
  • 张量核心:456
  • 内存:80GB HBM2e
  • FP32性能:183 TFLOPS

一. 测试概述

1. 测试项目代码来源:

2. 测试了Hugging Face上的如下模型:

  • google/gemma-2-9b-it
  • google/gemma-2-27b-it
  • deepseek-ai/DeepSeek-R1-Distill-Llama-8B
  • deepseek-ai/DeepSeek-R1-Distill-Qwen-7B
  • deepseek-ai/DeepSeek-R1-Distill-Qwen-14B
  • deepseek-ai/DeepSeek-R1-Distill-Qwen-32B

3. 测试参数预设为:

  • 输入长度(Input length): 100 tokens
  • 输出长度(Output length): 600 tokens
  • 请求数量(Request Numbers): 300个

4. 测试分为两种模式:

  • 离线测试: 使用 benchmark_throughput.py 脚本。
  • 在线测试: 使用 benchmark_serving.py 脚本,模拟真实客户端请求。

二、测试结果数据展示

1. 离线测试结果:

模型gemma-2-9b-itgemma-2-27b-itDeepSeek-R1-Distill-Llama-8BDeepSeek-R1-Distill-Qwen-7BDeepSeek-R1-Distill-Qwen-14BDeepSeek-R1-Distill-Qwen-32B
量化161616161616
大小(GB)18.5GB54.5GB16.1GB15.2GB29.5GB65.5GB
后端/平台vLLMvLLMvLLMvLLMvLLMvLLM
CPU 使用率1.4%1.4%1.5%1.4%1.4%1.4%
RAM 使用率5.5%5.8%4.8%5.7%5.8%4.8%
GPU RAM使用率90%91.4%90.3%90.3%90.2%91.5%
GPU 利用率80-86%88-94%80-82%80%72-87%91-92%
每秒请求数量 (req/s)5.992.629.2710.456.151.99
时长49s1min54s32s28s48s2min30s
输入 (tokens/s)599.06262.45926.911044.98614.86198.66
输出 (tokens/s)3594.381574.675561.456269.873689.211191.95
总吞吐量 (tokens/s)4193.441837.126488.367314.854304.071390.61

2. 在线测试结果:

模型gemma-2-9b-itgemma-2-27b-itDeepSeek-R1-Distill-Llama-8BDeepSeek-R1-Distill-Qwen-7BDeepSeek-R1-Distill-Qwen-14BDeepSeek-R1-Distill-Qwen-32B
量化161616161616
大小(GB)18.5GB54.5GB16.1GB15.2GB29.5GB65.5GB
后端/平台vLLMvLLMvLLMvLLMvLLMvLLM
CPU 使用率1.4%1.4%2.8%3%2.5%2.0%
RAM 使用率13.9%15.4%11.5%18%15.9%11.8%
GPU RAM使用率90.2%90.9%90.2%90.3%90%90.3%
GPU 利用率93%86%-96%83%-85%50%-91%80-90%92%-96%
每秒请求数量 (req/s)27.038.958.8010.799.812.67
时长11s33s33s27s30s1min52s
输入 (tokens/s)2703.21894.9900.251078.68981.01267.43
输出 (tokens/s)566.591376.165033.385803.793840.071214.19
总吞吐量 (tokens/s)3269.802271.065933.636882.474821.081481.62

3. 数据项解释:

以下是表格中各数据项的含义:
  • Quantization: 量化位数,本次测试均为 16 位, 满血版模型。
  • Size (GB): 模型大小,单位为 GB。
  • Backend: 使用的推理后端,本次测试均为 vLLM。
  • CPU Rate: CPU 使用率。
  • RAM Rate: 内存使用率。
  • GPU vRAM: GPU 显存使用率。
  • GPU UTL: GPU 利用率。
  • Request Numbers: 请求数量。
  • Request (req/s): 每秒处理的请求数量。
  • Total Duration: 完成所有请求的总时间。
  • Input (tokens/s): 每秒处理的输入 tokens 数量。
  • Output (tokens/s): 每秒生成的输出 tokens 数量。
  • Total Throughput (tokens/s): 每秒处理的总 tokens 数量(输入 + 输出)。

三、测试结果解读

1. 离线测试:

  • 模型规模(Size)对性能的影响:模型规模越小,请求吞吐量和总吞吐量越高。7B 和 8B 模型的性能显著优于 14B 和 32B 模型。
  • GPU 利用率(GPU UTL): 模型规模越大,GPU 利用率越高。32B 模型的 GPU 利用率接近满载。
  • 显存使用(GPU vRAM):所有测试中,GPU 显存使用率均接近 90%,表明显存接近满载。

2. 在线测试:

  • 模型规模(Size)对性能的影响:在线测试中,7B 和 8B 模型的性能仍然显著优于 14B 和 32B 模型。
  • GPU 利用率(GPU UTL): 在线测试中,GPU 利用率普遍较高,尤其是较大模型。
  • 显存使用(GPU vRAM):所有测试中,GPU 显存使用率均接近 90%,表明显存接近满载。

结论: 模型越大,对GPU的要求越高,显存是性能的主要瓶颈之一,尤其是在处理较大模型时。

四、离线测试与在线测试

从测试结果中可以看到,在参数设定为一样的情况下,在线测试的请求吞吐量(req/s)和总吞吐量(tokens/s)普遍高于离线测试。以下是可能的原因:

1. 离线测试与在线测试的区别

离线测试:
  • 使用 benchmark_throughput.py 脚本,模拟批量请求。
  • 通常是一次性发送所有请求,系统需要同时处理大量请求,可能导致资源竞争和显存压力。
  • 更适合评估系统的最大吞吐量和极限性能。
在线测试:
  • 使用 benchmark_serving.py 脚本,模拟客户端请求。
  • 请求是逐步发送的,系统可以更灵活地分配资源,减少资源竞争。
  • 更适合评估系统在实际生产环境中的表现。

2. 在线测试优于离线测试的原因

资源分配更高效:
  • 在线测试中,请求是逐步发送的,系统可以根据当前负载动态分配资源(如显存和计算资源)。
  • 离线测试中,所有请求一次性发送,系统需要同时处理大量请求,可能导致资源竞争和显存压力,从而降低性能。
显存利用率更优:
  • 在线测试中,显存可以更灵活地分配给每个请求,减少显存碎片化。
  • 离线测试中,显存可能被大量请求同时占用,导致显存不足或需要频繁重计算(如 PreemptionMode.RECOMPUTE),从而降低性能。
请求处理更平滑:
  • 在线测试中,请求是逐步处理的,系统可以更好地平衡计算和 I/O 操作。
  • 离线测试中,大量请求同时到达,可能导致计算和 I/O 的瓶颈。
GPU 利用率更高:
  • 在线测试中,GPU 利用率通常更稳定,系统可以更好地利用 GPU 的计算能力。
  • 离线测试中,GPU 利用率可能因资源竞争而波动,导致性能下降。

因此,在线测试更适合评估系统在实际生产环境中的表现,而离线测试更适合评估系统的极限性能。

五、注意事项与感悟

✅ 测试参数的影响

  • 不同的输入输出长度对性能影响很大。较长的序列会增加显存占用和计算复杂度,从而降低吞吐量和增加延迟。用户在实际项目中应根据任务需求调整输入输出长度,以优化性能。
  • 请求数量的增加会提高系统的吞吐量,但也可能导致显存不足或资源竞争。用户应根据硬件配置和任务需求调整请求数量,以平衡性能和资源使用。

✅ 模型规模的选择

  • 模型规模越大,显存占用和计算需求越高。建议用户根据硬件配置选择合适的模型规模。例如,H100 80GB GPU 适合运行 7B 到 32B 的模型,而 40B以上 模型可能需要多 GPU 并行或更高显存的硬件支持。
  • 如果模型大小超过 GPU 显存容量(如 80GB),会导致显存不足,性能显著下降。建议用户在测试和生产环境中避免使用超过硬件显存容量的模型。

✅ 硬件配置的优化

  • 显存是性能的主要瓶颈之一。用户应监控显存使用情况,避免显存不足导致的性能下降。可以通过调整 --gpu-memory-utilization 参数来优化显存使用。
  • 较高的 GPU 利用率表明硬件资源得到充分利用,但如果利用率接近 100%,可能会导致性能瓶颈。用户应根据测试结果调整模型和参数,以优化 GPU 利用率。

✅ 实际项目中的调整

  • 离线测试适合评估系统的极限性能,而在线测试更适合模拟实际生产环境。用户应根据项目需求选择合适的测试模式。

✅ 测试模式的适用性

  • 用户在实际项目中应根据任务需求和硬件配置调整测试参数(如输入输出长度、请求数量等),以达到更好的性能。
  • 在部署模型时,建议实时监控系统资源使用情况(如显存、GPU 利用率等),及时发现和解决性能瓶颈。

六、附件: 视频记录使用H100基于vLLM推理Hugging Face大语言模型

视频: 基于vLLM 使用H100离线推理Hugging Face LLMs
视频: 基于vLLM 使用H100在线推理Hugging Face LLMs
截屏:H100 vLLM 离线测试结果
google/gemma-2-9b-itgoogle/gemma-2-27b-itdeepseek-ai/DeepSeek-R1-Distill-Llama-8Bdeepseek-ai/DeepSeek-R1-Distill-Qwen-7Bdeepseek-ai/DeepSeek-R1-Distill-Qwen-14Bdeepseek-ai/DeepSeek-R1-Distill-Qwen-32B
截屏:H100 vLLM 在线测试结果
google/gemma-2-9b-itgoogle/gemma-2-27b-itdeepseek-ai/DeepSeek-R1-Distill-Llama-8Bdeepseek-ai/DeepSeek-R1-Distill-Qwen-7Bdeepseek-ai/DeepSeek-R1-Distill-Qwen-14Bdeepseek-ai/DeepSeek-R1-Distill-Qwen-32B

订购:立即租用英伟达H100显卡服务器

如果您需要推理80GB以下大模型并应用于生产环境,H100将满足您的需求。准备好利用 Nvidia H100 80GB GPU 的强大功能来开发您的 AI 应用程序了吗?立即探索DatabaseMart的专用托管选项,以无与伦比的价格获得最佳性能。

标签:

H100 服务器租用,vllm h100 参数优化,h100 vllm 显存管理,vllm 模型规模选择,h100 大语言模型性能调优,vllm 在线测试 vs 离线测试,h100 服务器性能优化,vllm 生产环境部署,h100 深度学习推理优化