当前位置: 首页 > news >正文

【自然语言处理与大模型】如何知道自己部署的模型的最大并行访问数呢?

        当你自己在服务器上部署好一个模型后,使用场景会有两种。第一种就是你自己去玩,结合自有的数据做RAG等等,这种情况下一般是不会考虑并发的问题。第二种是将部署好的服务给到别人来使用,这时候就必须知道我的服务到底支持多大的访问数量,是否要做分布式部署。本文先不扩展分布式部署,字数有限这部分内容另外些一篇文章。

一、预估模型推理时显存占用的计算公式

模型参数 * 每个参数所占字节 = 权重所需显存

① 已知条件:模型参数数量为70亿(7B)个参数。每个参数使用 16位浮点数 表示,即每个参数占用 2字节(Bytes)。

② 计算过程:
总存储需求   = 参数数量 × 每个参数占用的字节数
                     = 7 \times 10^9 \, \text{parameters} \times 2 \, \text{Bytes/parameter}
                     = 14 \times 10^9 \, \text{Bytes}

转换为GB(1GB=1024^3 \, \text{Bytes})即:  Memory = \frac{14 \times 10^9}{1024^3} \approx 14 \, \text{GB}


③ 结论为:模型权重的大小约为 14GB。因此,为了加载这个模型,显存容量需要大于14GB,否则会因为显存不足而无法运行。

④ 重要说明:实际应用中,除了模型权重本身,还需要额外的显存来存储以下内容。

  1. 优化器状态:如果使用优化器(如 Adam),它会存储额外的状态信息(如动量、方差等),通常会使显存需求翻倍或更多。
  2. 激活值和中间结果:在训练或推理过程中,模型会生成大量的中间数据,这些也需要占用显存。
  3. 批量数据(重点关注):输入数据和对应的标签也会占用一部分显存。

        加载一个7B模型大概需要14G的显存容量,但这仅仅只是加载到显存上而已,都还没开始推理呢。一旦模型开始推理,就会额外占用更多的显存。好在现有的大模型推理框架可以帮助我们优化显存。

二、计算剩余显存量支持的最大并行访问数

        vLLM 和 LMDeploy 这样的大模型推理框架时,采用了许多优化技术(具体哪些优化技术我自己也还在学习中,文末附上知乎大佬的文章链接供大家一同学习),有效的减少显存占用和提高推理效率。这意味着对于优化器状态和激活值的显存需求可能已经得到了有效的管理或减轻,使得这些因素在估算显存需求时变得不那么关键然而,用户输入(例如批量数据、请求数据)依旧是影响最大并行访问数的重要因素。

        假设你的服务器还剩余XGB的显存,你可以根据每个请求需要的显存量来估算最大并行访问数。这里有一个简化的计算方法:

① 先估算单个请求所需的显存量

        包括处理用户输入所需的显存以及运行模型时生成的任何临时数据。如果这个数值不是直接给出的,你可能需要通过实验或查看文档来获得一个近似值。一般在你所下载的模型中有个config文件,里面的max_length就是的了。设这个数值为YMB(注意单位转换,因为通常这里的数值会比较小,用MB更直观)。

千问2.5文档中说明了Y = 8MB

② 再计算最大并行访问数

        将剩余的显存量从GB转换成MB(X \times 1024 MB ),然后除以单个请求所需的显存量Y MB:

\text{Accesses} = \frac{X \times 1024}{Y}

千问2.5-7B和24G显存举个例子具体举例(X=2GBY=8M): 

\text{Accesses} = \frac{2 \times 1024}{8} = 256

在给定的条件下,服务器最多可以支持 256个并行访问。 

【注】除了显存,还需要考虑 CPU、网络带宽、磁盘 I/O 等其他硬件资源是否能够支持如此高的并发。还有就是请求大小不是一成不变的,单个请求的显存需求 Y 会随输入数据的变化而波动。

        公式是理论上的最大值。实际应用中,为了保证系统的稳定性和响应速度,你需要做一些测试,然后做具体调整,比如预留 20% 的显存作为缓冲。不过这种方法,也足够让你可以预估出在当前硬件条件下,你的服务能够同时处理的最大请求数量,从而更好地规划资源和服务能力。 

 

 推荐SayHelloCode大佬写的有关vLLM推理优化原理的博客:vLLM(一)PagedAttention 算法

相关文章:

  • 再见 Smartdaili,你好 Decodo!
  • 2025年阿里云云计算ACP高级工程师认证模拟试题(附答案解析)
  • DeepSeek系列(5):助力数据分析
  • 黑马商城(六)RabbitMQ
  • 利用java语言,怎样开发和利用各种开源库和内部/自定义框架,实现“提取-转换-加载”(ETL)流程的自动化
  • python+selenium+pytest自动化测试chrome driver版本下载
  • 用Qt和deepseek创建自己的问答系统
  • Oracle DBA 高效运维指南:高频实用 SQL 大全
  • CentOS笔记本合上盖子不休眠
  • CentOS创建swap内存
  • 【音视频】FFmpeg解封装
  • 多路转接poll服务器
  • 一键配置多用户VNC远程桌面:自动化脚本详解
  • taobao.trades.sold.get(淘宝店铺订单接口)
  • go语言八股文
  • 【Nova UI】七、SASS 全局变量体系:组件库样式开发的坚固基石
  • Vue3集成sass
  • 【gpt生成-其二】以go语言为例,详细讲解 并发模型:线程/协程/ Actor 实现
  • sqoop的参数及初体验
  • RHCE 作业二(密钥登录实验)
  • 讲武谈兵|英国公布六代机最新渲染图,但研发面临多重难题
  • 世界读书日丨人均一年超10本!你达到上海平均阅读水平了吗
  • 上海开展数据产品知识产权登记存证试点,243个产品许可收益超20亿元
  • 云南巧家警方抓获一名网逃人员:带70余万现金“隐居”山洞,昼伏夜出
  • 机器人马拉松背后的五大启示:未来社会与机器人的深度融合
  • 消费维权周报丨上周合同纠纷类投诉多,合同未到期关闭门店等