自托管 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 的 VRAM50 GB 的 RAM 和一个 9vCPU 来服务于推理引擎。我们租用这个基础设施的费用为每月 280.8 美元。在我们上线之前我们需要确保这足以至少服务于 100 个用户。让我们假设其他选项是拥有相同 GPU 的另一个实例成本加倍和租用一个L40S GPU拥有 48 GB VRAM62 GB RAM 和 16 个 vCPU。后者每月费用为 741.6 美元。如果你已经决定租用 GPU你将拥有比这两个更多的选择。但现在让我们只考虑这两个。我们将通过给它们相同的任务来测试这些选项。我们还将模拟 50 个虚拟用户并将数量增加到 100以查看它如何影响响应时间和错误率。让我们开始吧。设置 Postman 进行 LLM 负载测试您可以从他们的网站免费下载 Postman 应用程序。我不会详细介绍安装说明。假设我们的 LLM 公开了一个api/generate端点我们将使用它来生成提示的输出。以下是一个 cURL 示例。curl--locationhttps://api-host/api/generate--headerContent-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 应用创建一个新的集合并给它命名。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/40814742c07a0124f759684f030decdf.png在 Postman 中创建新集合 – 作者截图。然后点击新创建的集合上方的导入按钮并将示例 cURL 粘贴以与您的 LLM 服务器通信。确保您已选择了正确的集合。然后点击导入到集合中。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/fe2b5bc13d6180ec136d6d7d593753fc.png将 cURL 导入集合中 – 作者截图。如果您的 API 端点是受保护的并且需要令牌您可以在新出现的窗口中进行配置。如果需要我们还可以编辑请求正文。让我们发送一个请求看看它是否按预期工作https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/25d0294e8c6d1c863c5e8c6a99b0f0fd.png从 Postman 调用 Llama 3.1 8b – 作者截图。工作正常。我们准备好开始对这个服务器进行第一次负载测试。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/615bb654075a59d6c42e3b79186a4935.png在 Postman 中创建负载测试运行器 – 作者截图。首先点击集合名称旁边的三个点然后点击“运行集合”如图所示。现在我们有几个负载配置文件可供选择。我经常使用固定负载配置文件和 Ramp-Up 配置文件。固定负载配置文件正如其名所示这种测试模拟了配置的虚拟用户数量并开始发送请求。在整个测试过程中保持相同的用户水平。Ramp-Up 配置文件这种技术在整个测试过程中逐渐增加虚拟用户数量并收集请求处理时间和错误率。对于我的测试我将使用带有 50 个初始用户的 Ramp Up 配置文件并将其增加到 100。就这样现在点击运行以进行负载测试。负载测试运行和结果 – 单个 A10 GPU。Postman 现在将开始使用虚拟用户发送请求。您可以监控这个过程。以下是结果可能看起来像什么。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/a40ede488209d87ff44631dc49d66b5d.pngLlama3.1:8b 在 A10 GPU 上的负载测试结果 – 作者截图。这是我们基线基础设施一个 A10 GPU。截图表明Postman 在 3 分钟内发送了 318 个请求。也就是说我们的服务器每秒响应大约 1.71 个请求。然而请求的平均处理时间为 34 秒。这意味着用户将不得不等待半分钟才能从我们的服务器获得响应。此外2.2%的请求没有获得响应。图表还显示响应时间最初较短但随着服务器接收更多请求而恶化。根据我们的情况我们可能可以接受这种性能或尝试改进它。但让我们也尝试其他基础设施看看我们可以实现多少改进。使用更多 GPU 进行负载测试 – 2X A10 GPU现在我们切换到另一台服务器该服务器配备了两个相同的 A10 GPU。我们继续使用相同的负载测试任务。下面是结果的样子。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/a32958fc73bcca119f36b550e610dbfd.pngLlama3.1:8b 在 2X A10 GPU 上的负载测试结果 – 作者截图结果显示我们的基线基础设施有所改善。响应时间从 34 秒降至 31 秒——微不足道。然而错误率飙升至 5.19%。从外观上看花费双倍的成本并不值得这种改进。使用更好的 GPU 进行负载测试 – L40SL40S 是 NVIDIA 最新一代 GPU 之一。尽管如此它的 VRAM 与 A10 大致相同。让我们看看它在类似情况下的表现。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/38028b33f9aa74b487dcf19164e786c4.pngLlama3.1:8b 在 L40S GPU 上的负载测试结果 – 作者截图结果是深刻的。平均处理时间已降至 26 秒——仍然太长。错误率也降至 1.11%。最大的缺点是 L40S 的成本比 2X A10 高得多。这可能对于关键任务推理需求是必要的。然而根据通用用途的结果我更倾向于坚持使用单个 A10。最有价值的 LLM 开发技能易于学习但实践成本高昂最后的想法负载测试有助于我们了解服务器在不同流量水平下的行为。这对于开发 LLM 应用程序至关重要。我们应该精确知道发送到服务器的每个请求的处理时间。进行负载测试最简单的方法是使用 Postman。它是免费的操作简单。当然它也有不足之处。在这篇文章中我使用了 Postman 进行负载测试并在三个基础设施选项之间做出选择。我得出结论对于我的任务来说单个 A10 GPU 比更多 GPU 或升级到最新一代 GPU 更好。在实际应用中我们必须在几个选择之间做出决定——基础设施和设计。对它们进行负载测试将给我们一个准确的情况即服务器在类似现实生活中的情况下会如何表现。感谢阅读朋友除了Medium我还在LinkedIn和X,上*

相关新闻

LLMs.txt 解析

LLMs.txt 解析

原文:towardsdatascience.com/llms-txt-414d5121bcb3?sourcecollection_archive---------1-----------------------#2024-11-28 您的网络新标准:LLM 友好内容指南 https://medium.com/dericksozo?sourcepost_page---byline--414d5121bcb3------------…

2026/7/6 12:42:18 阅读更多 →
第 5 篇:责任链模式 (Chain of Responsibility) —— 协议栈的流水线

第 5 篇:责任链模式 (Chain of Responsibility) —— 协议栈的流水线

专栏导读:当一个请求可能被多个对象中的某一个处理,但具体由谁处理在运行时才确定时,责任链模式是最佳选择。在嵌入式通信中,它能将复杂的混合协议解析解耦成一个个独立的“处理器”,让你的代码像工厂流水线一样井井有…

2026/7/6 13:25:52 阅读更多 →
Infoseek宣发引擎:像部署代码一样管理你的媒介流量

Infoseek宣发引擎:像部署代码一样管理你的媒介流量

作为一名开发者,你是否习惯了一切皆可配置、一切皆有日志?当面对市场部提出的一次媒介宣发需求,你是否觉得那是一个黑盒——预算不明、渠道不清、效果成谜?今天,我们聊聊如何用工程化的思维,重构媒介宣发这…

2026/7/6 12:24:46 阅读更多 →

最新新闻

DVWA从入门到精通(十一):XSS (Stored)(存储型XSS)

DVWA从入门到精通(十一):XSS (Stored)(存储型XSS)

摘要:本文是《DVWA从入门到精通》系列的第十一篇,带你全面掌握XSS (Stored)(存储型XSS)模块的攻防全流程。从存储型XSS的核心原理出发,逐步讲解Low、Medium、High三个级别的攻击手法与源码分析,并深入探讨I…

2026/7/6 13:26:21 阅读更多 →
Arduino+ESP32-CAM摄像头+Blinker获取视频监控

Arduino+ESP32-CAM摄像头+Blinker获取视频监控

大家好,这节课给大家分享ArduinoESP32-CAM摄像头Blinker获取视频监控,废话不多说,直接开干: 1.硬件材料准备 ESP32-CAM摄像头 ESP32-CAM 拥有业内极富竞争力的小尺寸摄像头模组,该模块可以作为最小系统独立工作&#x…

2026/7/6 13:24:18 阅读更多 →
PLC标定耗时又易错?LabVIEW自动标定方案效率翻倍

PLC标定耗时又易错?LabVIEW自动标定方案效率翻倍

阅读时间:5分钟 | 适用人群:PLC工程师/自动化测试工程师/工业控制系统设计师痛点直击:国产PLC模块(AI/AO模拟量输入输出)在使用前必须进行标定,传统手工标定需要人工观测数据、手动记录、反复计算&#xff…

2026/7/6 13:24:18 阅读更多 →
5分钟掌握AutoClicker:Windows鼠标自动点击工具的终极指南 [特殊字符]

5分钟掌握AutoClicker:Windows鼠标自动点击工具的终极指南 [特殊字符]

5分钟掌握AutoClicker:Windows鼠标自动点击工具的终极指南 🚀 【免费下载链接】AutoClicker AutoClicker is a useful simple tool for automating mouse clicks. 项目地址: https://gitcode.com/gh_mirrors/au/AutoClicker 你是否厌倦了重复的鼠…

2026/7/6 13:24:18 阅读更多 →
AI 转型任务契约:把创始人的起步试点写成可验收 artifact

AI 转型任务契约:把创始人的起步试点写成可验收 artifact

AI 转型任务契约:把创始人的起步试点写成可验收 artifact 企业内部做 AI 试点,最容易出现的工程问题不是“没有模型”,而是“没有契约”。工具已经接入,群里也有人试用,但项目文档里找不到输入来源、输出对象、审核责任…

2026/7/6 13:20:07 阅读更多 →
小程序开发必知:四大法律合规领域与全周期实操指南

小程序开发必知:四大法律合规领域与全周期实操指南

1. 项目概述:为什么小程序开发者必须懂法?干了这么多年互联网产品,从PC网站做到移动App,再到如今遍地开花的小程序,我最大的感触就是:技术实现的门槛在降低,但合规运营的门槛在急剧升高。尤其是…

2026/7/6 13:18:04 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻