部署大模型需要多少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。