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

部署大模型需要多少GPU显存?以DeepSeek R1部署为例

引言

部署大型语言模型(LLM)时究竟需要多少GPU显存?本文将进行一次简单测算。

如何计算

算法1

可以用一个简单的公式来计算显存占用(单位GB):

参数说明如下:

符号

含义

M

所需的 GPU 显存,以 GB 为单位

P

模型的参数数量,例如 7B 模型有 70 亿个参数

4B

每个参数占用 4 字节(float32)

32

4 字节等于 32 位

Q

加载模型时使用的位数,例如 16 位、8 位或 4 位

1.2

表示额外 20% 的显存开销,用于加载其他内容,粗略估计也可以不加这个系数

从另一个角度

不同量化精度下显存占用计算方法。 模型的参数量决定了其基础大小,而量化精度(如FP16、INT8、INT4)则影响每个参数所占用的存储空间。通过降低量化精度,可以显著减少模型的显存和内存占用,但可能会对模型性能产生一定影响。以下是不同量化精度下,每个参数的存储需求:

  • FP16(16位浮点) :每个参数占用 2 字节。

  • INT8(8位整数) :每个参数占用 1 字节。

  • INT4(4位整数) :每个参数占用 0.5 字节。

从这个角度来看算法1中的公式,其实可以写成:

其中 P 表示参数量,(Q / 32) *4表示量化之后每个参数占用的字节数。这种方式其实会更好理解。

示例

示例1:部署 Llama 70B 所需的 GPU 显存

我们以 Llama 70B 模型为例,假设使用 16 位精度加载。

模型参数数量为 70B(即 700 亿个参数)。

计算如下:

需要 168 GB 显存。

也就是说,一块 NVIDIA A100 80GB 显然不够,但使用 2 块 A100 80GB 可以满足需求(在 16 位精度下部署 Llama 2 70B)。

如何进一步减少 Llama 2 70B 的 GPU 显存占用?

量化(Quantization) 是一种减少显存占用的方法。它通过将模型参数从浮点数(如 FP32)转换为低位整数(如 int8),从而显著减少内存和计算资源的需求。

这使得模型可以更高效地部署,尤其适合资源受限的设备。但需要注意的是,精度降低可能会影响模型表现,因此应用时需权衡。

通常,8 位量化可实现与 16 位相近的性能,而 4 位量化可能会对模型性能产生明显影响。

示例:使用 4 位量化部署 Llama 2 70B

我们再次用公式计算:

仅需约 42GB 显存。

这意味着你可以使用 两块 L4 24GB GPU 来部署 Llama 2 70B(使用 4 位量化)。

示例2:部署DeepSeek R1

官方开源的https://huggingface.co/deepseek-ai/DeepSeek-R1 模型参数量为 671B,BF16数据格式。 可以大概估计显存占用(暂时忽略1.2系数):

加载满血版R1 需要 1342 GB 显存。需要>16张A100-80GB。

http://www.xdnf.cn/news/2165.html

相关文章:

  • MongoDB Atlas与MongoDB连接MCP服务器的区别解析
  • SpringBoot物资管理系统 | JavaWeb项目设计与实现
  • 山东大学离散数学第九章习题解析
  • 雪花算法
  • 深入解析NuttX:为何它是嵌入式RTOS领域的标杆?​​
  • 多模态大语言模型arxiv论文略读(四十三)
  • 力扣2444. 统计定界子数组的数目:Java三种解法详解
  • 5G助力智慧城市的崛起——从概念到落地的技术实践
  • 哈希表的模拟实现---C++
  • Ubuntu下安装vsode+qt搭建开发框架(一)
  • 推荐几个免费提取音视频文案的工具(SRT格式、通义千问、飞书妙记、VideoCaptioner、AsrTools)
  • 直线模组精度测试的标准是什么?
  • Linux 进程控制
  • 树状数组底层逻辑探讨 / 模版代码-P3374-P3368
  • 阿里云VS AWS中国区:ICP备案全攻略与常见误区解析
  • 判断 ONNX 模型是否支持 GPU
  • 微信小程序 - 根据经纬度打开导航
  • 追风赶月莫停留
  • WebcamJS中文文档
  • Debian安装避坑
  • 动态规划求解leetcode300.最长递增子序列(LIS)详解
  • React 与 Vue 的区别:你会选择哪个框架呢
  • 关于Android Studio的Gradle各项配置
  • 高级 SQL 技巧:提升数据处理能力的实用方法
  • 图像畸变-径向切向畸变实时图像RTSP推流
  • leetcode 26和80
  • strcmp()在C语言中怎么用(附带实例)
  • CentOS 如何使用截图工具截取命令行操作的图片?
  • 定制一款国密浏览器(12):分析SM2签名算法的实现
  • 在 Linux 上安装 PNPM 的教程