模型架构概览
DeepSeek-V3是一个拥有6710亿参数的大型语言模型,采用混合专家系统(MoE)架构设计。本文将分析该模型在推理过程中的显存需求,基于官方推理代码和配置文件进行计算。模型使用fp8数据类型,每个参数占1字节。
模型基本参数
DeepSeek-V3的核心配置
层数
61层
3层标准MLP + 58层MoE
隐藏维度
7,168
模型的基础维度大小
注意力头数
128个
多头注意力机制
模型架构图
显存需求分析
1. 嵌入层 (Embedding)
词表大小 × 隐藏维度 × 字节数
129,280 × 7,168 × 1 = 883.75 MB
2. Transformer块 (61层)
2.1 注意力层 (所有层都有)
wq_a: 7,168 × 1,536 = 10.5 MB
wq_b: 1,536 × 128 × 192 = 36 MB
wkv_a: 7,168 × 576 = 3.93 MB
wkv_b: 512 × 128 × 256 = 16 MB
wo: 128 × 128 × 7,168 = 112 MB
kv_cache: 8 × 16,384 × 512 = 64 MB
pe_cache: 8 × 16,384 × 64 = 8 MB
总计: 约250.46 MB
2.2 标准MLP层 (仅前3层使用)
w1: 7,168 × 18,432 = 126 MB
w2: 18,432 × 7,168 = 126 MB
w3: 7,168 × 18,432 = 126 MB
总计: 约378 MB
2.3 MoE层 (后58层使用)
门控权重: 256 × 7,168 = 1.75 MB
共享专家: 7,168 × 2,048 × 3 = 42 MB
每个路由专家: 7,168 × 2,048 × 3 = 42 MB
256个路由专家: 256 × 42 MB = 10,752 MB
总计: 约10.54 GB
2.4 层归一化 (所有层都有)
每个归一化层: 7,168 = 7 KB
每层两个归一化: 2 × 7 KB = 14 KB
3. 输出层
隐藏维度 × 词表大小
7,168 × 129,280 = 883.75 MB
4. 注意力掩码
序列长度 × 序列长度 × 4字节(float32)
16,384 × 16,384 × 4 = 1 GB
5. 总显存需求
前3层(带MLP的块): 3 × 628.47 MB = 1,885.41 MB
后58层(带MoE的块): 58 × 11,046.22 MB = 640,680.76 MB
嵌入层: 883.75 MB
输出层: 883.75 MB
注意力掩码: 1,024 MB
总计: 约 630 GB
显存分布
模型架构特点分析
MoE架构的优势
计算效率提升
MoE架构在推理时只激活部分参数,大幅降低计算量,使得模型能够在有限计算资源下处理更复杂的任务。
可扩展性
通过增加专家数量,可以轻松扩展模型容量,而不会导致推理计算量的线性增长。
专业化能力
不同专家可以专注于不同类型的知识或任务,提高模型在特定领域的表现。
参数效率
相比密集模型,MoE可以在相同计算预算下拥有更多参数,提高模型的知识容量。
显存优化策略
量化技术
DeepSeek-V3采用FP8量化,将参数精度从FP16/FP32降低到FP8,显著减少显存占用,同时保持模型性能。
分布式推理
通过张量并行和流水线并行技术,将模型分布在多个GPU上,每个GPU只需加载部分模型参数。
激活值重计算
在前向传播时丢弃中间激活值,需要时重新计算,以空间换时间的方式减少显存占用。
专家并行
将不同专家分配到不同设备上,只加载当前推理需要的专家,大幅降低单设备显存需求。