自托管 LLMs 时,你的服务器能承受多大的压力?
原文:
towardsdatascience.com/load-testing-self-hosted-llms-29ca8a4cf43a
当一群用户突然开始使用只有你和你的开发团队之前使用过的应用程序时,感觉如何?
这是从原型到生产的百万美元问题。
就 LLMs 而言,你可以在预算和可接受的品质内进行几十种调整来运行你的应用程序。例如,你可以选择量化模型以降低内存使用。或者你可以微调一个小型模型,击败大型 LLMs 的性能。
我微调了 Tiny Llama 3.2 1B 以替代 GPT-4o
你甚至可以调整你的基础设施以获得更好的结果。例如,你可能想将使用的 GPU 数量加倍或选择最新一代的 GPU。
但你怎么能说选项 A 比选项 B 和 C 表现更好呢?
在进入生产阶段的最早期,这是一个重要的问题。所有这些选项都有它们的成本——基础设施成本或丢失的最终用户体验。
这个关键问题的解决方案并不新颖。负载测试在所有软件发布中都已被实践。
在这篇文章中,我将讨论如何使用免费的 Postman 应用程序快速进行负载测试。我们还将尝试在单个 A40 GPU、2 倍于此或升级到 L40S GPU 之间选择最佳的基础设施。
计划:我们如何决定基础设施
这是我们的目标。
我们为推理服务托管了Llama 3.1 8B,并使用 Ollama 来部署我们的模型。然而,我们不知道托管此模型的硬件是否足够。
我们目前部署了一个A40 GPU,拥有 48 GB 的 VRAM,50 GB 的 RAM 和一个 9vCPU 来服务于推理引擎。我们租用这个基础设施的费用为每月 280.8 美元。
在我们上线之前,我们需要确保这足以至少服务于 100 个用户。
让我们假设其他选项是拥有相同 GPU 的另一个实例(成本加倍)和租用一个L40S GPU,拥有 48 GB VRAM,62 GB RAM 和 16 个 vCPU。后者每月费用为 741.6 美元。
如果你已经决定租用 GPU,你将拥有比这两个更多的选择。但现在让我们只考虑这两个。
我们将通过给它们相同的任务来测试这些选项。我们还将模拟 50 个虚拟用户,并将数量增加到 100,以查看它如何影响响应时间和错误率。
让我们开始吧。
设置 Postman 进行 LLM 负载测试
您可以从他们的网站免费下载 Postman 应用程序。我不会详细介绍安装说明。
假设我们的 LLM 公开了一个 api/generate 端点,我们将使用它来生成提示的输出。以下是一个 cURL 示例。
curl --location 'https:///api/generate'
--header 'Content-Type: application/json'
--data '{
"model": "llama3.1:8b",
"prompt": "Write a 100 word essay about a random public figure",
"stream": false
}'
上述示例要求我们的服务器上的 Llama3.1:8b 创建一篇 100 字的随机文章。让我们在 Postman 上完成这个任务。
打开 Postman 应用,创建一个新的集合,并给它命名。
../images/2026/0203/40814742c07a0124f759684f030decdf.png
在 Postman 中创建新集合 – 作者截图。
然后点击新创建的集合上方的导入按钮,并将示例 cURL 粘贴以与您的 LLM 服务器通信。确保您已选择了正确的集合。然后点击导入到集合中。
../images/2026/0203/fe2b5bc13d6180ec136d6d7d593753fc.png
将 cURL 导入集合中 – 作者截图。
如果您的 API 端点是受保护的并且需要令牌,您可以在新出现的窗口中进行配置。如果需要,我们还可以编辑请求正文。
让我们发送一个请求,看看它是否按预期工作:
../images/2026/0203/25d0294e8c6d1c863c5e8c6a99b0f0fd.png
从 Postman 调用 Llama 3.1 8b – 作者截图。
工作正常。我们准备好开始对这个服务器进行第一次负载测试。
../images/2026/0203/615bb654075a59d6c42e3b79186a4935.png
在 Postman 中创建负载测试运行器 – 作者截图。
首先,点击集合名称旁边的三个点,然后点击“运行集合”,如图所示。现在,我们有几个负载配置文件可供选择。我经常使用固定负载配置文件和 Ramp-Up 配置文件。
固定负载配置文件:正如其名所示,这种测试模拟了配置的虚拟用户数量,并开始发送请求。在整个测试过程中保持相同的用户水平。
Ramp-Up 配置文件:这种技术在整个测试过程中逐渐增加虚拟用户数量,并收集请求处理时间和错误率。
对于我的测试,我将使用带有 50 个初始用户的 Ramp Up 配置文件,并将其增加到 100。就这样;现在点击运行以进行负载测试。
负载测试运行和结果 – 单个 A10 GPU。
Postman 现在将开始使用虚拟用户发送请求。您可以监控这个过程。以下是结果可能看起来像什么。
../images/2026/0203/a40ede488209d87ff44631dc49d66b5d.png
Llama3.1:8b 在 A10 GPU 上的负载测试结果 – 作者截图。
这是我们基线基础设施:一个 A10 GPU。截图表明,Postman 在 3 分钟内发送了 318 个请求。也就是说,我们的服务器每秒响应大约 1.71 个请求。然而,请求的平均处理时间为 34 秒。这意味着用户将不得不等待半分钟才能从我们的服务器获得响应。此外,2.2%的请求没有获得响应。
图表还显示,响应时间最初较短,但随着服务器接收更多请求而恶化。
根据我们的情况,我们可能可以接受这种性能或尝试改进它。但让我们也尝试其他基础设施,看看我们可以实现多少改进。
使用更多 GPU 进行负载测试 – 2X A10 GPU
现在我们切换到另一台服务器,该服务器配备了两个相同的 A10 GPU。我们继续使用相同的负载测试任务。
下面是结果的样子。
../images/2026/0203/a32958fc73bcca119f36b550e610dbfd.png
Llama3.1:8b 在 2X A10 GPU 上的负载测试结果 – 作者截图
结果显示,我们的基线基础设施有所改善。响应时间从 34 秒降至 31 秒——微不足道。然而,错误率飙升至 5.19%。
从外观上看,花费双倍的成本并不值得这种改进。
使用更好的 GPU 进行负载测试 – L40S
L40S 是 NVIDIA 最新一代 GPU 之一。尽管如此,它的 VRAM 与 A10 大致相同。让我们看看它在类似情况下的表现。
../images/2026/0203/38028b33f9aa74b487dcf19164e786c4.png
Llama3.1:8b 在 L40S GPU 上的负载测试结果 – 作者截图
结果是深刻的。
平均处理时间已降至 26 秒——仍然太长。错误率也降至 1.11%。
最大的缺点是 L40S 的成本比 2X A10 高得多。这可能对于关键任务推理需求是必要的。然而,根据通用用途的结果,我更倾向于坚持使用单个 A10。
最有价值的 LLM 开发技能易于学习,但实践成本高昂
最后的想法
负载测试有助于我们了解服务器在不同流量水平下的行为。这对于开发 LLM 应用程序至关重要。我们应该精确知道发送到服务器的每个请求的处理时间。
进行负载测试最简单的方法是使用 Postman。它是免费的,操作简单。当然,它也有不足之处。
在这篇文章中,我使用了 Postman 进行负载测试,并在三个基础设施选项之间做出选择。我得出结论,对于我的任务来说,单个 A10 GPU 比更多 GPU 或升级到最新一代 GPU 更好。
在实际应用中,我们必须在几个选择之间做出决定——基础设施和设计。对它们进行负载测试将给我们一个准确的情况,即服务器在类似现实生活中的情况下会如何表现。
感谢阅读,朋友!除了 Medium, 我还在 LinkedIn 和 X, 上!*








