菜单

权重文件结构

相关源文件

本文档详细介绍了DeepSeek-V3权重文件的结构和组织。内容涵盖模型权重的组成部分、它们的排列方式以及专门的FP8权重格式。有关量化技术的信息,请参阅量化

配置文件概述

config.json文件包含几个定义权重结构字段

  • model_type: 在此版本中设置为deepseek_v3
  • num_hidden_layers: 定义主模型中Transformer层的数量(61)
  • num_nextn_predict_layers: 指示多令牌预测(MTP)模块的数量(1)
  • quantization_config: 包含FP8量化设置

来源: README_WEIGHTS.md3-7

权重组件结构

DeepSeek-V3权重文件包含两个主要组件

图示:DeepSeek-V3权重文件结构和组件

来源: README_WEIGHTS.md11-49

主模型权重

主模型包含DeepSeek-V3的核心参数

组件详情参数数量
总参数完整模型参数数量671B
激活参数推理期间使用的参数36.7B
嵌入层参数词汇嵌入参数0.9B
输出头参数最后一层参数0.9B

关键结构组件

  • 嵌入层: model.embed_tokens.weight
  • Transformer层: model.layers.0model.layers.60(共61层)
  • 输出层:
    • model.norm.weight(归一化)
    • lm_head.weight(语言模型头)

来源: README_WEIGHTS.md15-32

多令牌预测(MTP)模块

MTP模块支持投机性解码,以提高推理速度

组件详情参数数量
独特参数MTP特有的参数11.5B
激活参数推理期间使用的参数2.4B

关键结构组件

  • 共享嵌入:使用与主模型嵌入层相同的参数
  • 归一化层: enormhnorm用于投机性解码
  • 投影层: eh_proj用于降维
  • 额外的Transformer层: model.layers.61.self_attnmodel.layers.61.mlp
  • 共享头:使用与主模型输出层相同的参数

来源: README_WEIGHTS.md33-49

权重加载机制

图示:权重加载和执行过程

加载过程遵循以下规则

  1. 主模型权重:根据num_hidden_layers参数(61层)加载
  2. MTP模块:根据num_nextn_predict_layers参数(1层)加载
  3. 层编号:MTP模块的ID紧随主模型层之后
    • 主模型:第0-60层
    • MTP模块:第61层

来源: README_WEIGHTS.md52-57

FP8权重格式

DeepSeek-V3原生支持FP8权重格式,采用128×128块缩放,以实现高效的存储和计算。

FP8配置

config.json文件中的quantization_config字段定义了量化参数

关键配置要素

  • 格式类型fp8,使用e4m3格式(对应torch.float8_e4m3fn
  • 权重块大小:用于量化的128×128块
  • 激活量化方案:动态激活量化

来源: README_WEIGHTS.md60-82

权重反量化过程

图示:FP8权重反量化过程

FP8权重文件包含

  • 权重数据:以FP8格式存储,组织为128×128块
  • 缩放数据weight_scale_inv字段以float32张量形式存储
  • 填充处理:如果权重块未完全对齐到128,则在计算缩放比例前进行零填充,并在量化后移除填充
  • 反量化公式:(128×128权重块) × weight_scale_inv

在运行时,系统以每个token每128个通道的粒度执行在线量化,以获得最佳性能。

来源: README_WEIGHTS.md83-93

内存中的权重结构

加载时,权重结构遵循与Transformer架构一致的层次化组织

图示:内存中的权重组织

来源: README_WEIGHTS.md15-49