DeepSeek-V3 通过 JSON 文件提供模型配置,这些文件定义了不同模型大小的架构和参数。本指南详细解释了这些配置文件,帮助您理解模型的构建方式以及如何根据您的需求进行定制。
配置文件概览
DeepSeek-V3 包含三个预定义的配置文件,位于 inference/configs/
目录中,对应于三个可用的模型变体:
config_16B.json
:16亿参数模型的配置config_236B.json
:236亿参数模型的配置config_671B.json
:671亿参数模型的配置
这些文件定义了神经网络架构和超参数,这些参数控制模型的行为和能力。
来源:config_16B.json,config_236B.json,config_671B.json
常见配置参数
所有配置文件共享一组核心参数,这些参数定义了模型架构:
参数 | 描述 |
---|---|
vocab_size | 词汇表大小(token 字典) |
dim | 模型的隐藏维度大小(嵌入维度) |
inter_dim | 前馈网络的中间维度大小 |
moe_inter_dim | 专家混合(MoE)层的中间维度大小 |
n_layers | 模型中变压器层的总数 |
n_dense_layers | 密集(非 MoE)层的数量 |
n_heads | 注意力头的数量 |
这些参数建立了模型的基本架构,定义了其容量和处理能力。
来源:config_16B.json
专家混合(MoE)参数
DeepSeek-V3 使用专家混合(MoE)架构,这在几个专用参数中有所体现:
参数 | 描述 |
---|---|
n_routed_experts | 每个 MoE 层中可路由专家的总数 |
n_shared_experts | 为所有 token 激活的共享专家数量 |
n_activated_experts | 推理期间每个 token 激活的专家数量 |
route_scale | 路由决策的缩放因子 |
n_expert_groups * | 专家组数(存在于 236B 和 671B 模型中) |
n_limited_groups * | 有限专家组数(存在于 236B 和 671B 模型中) |
*仅存在于较大模型中的参数
MoE 架构使 DeepSeek-V3 能够高效扩展到数百亿参数,同时保持推理成本可控。
来源:config_16B.json,config_236B.json
注意力机制配置
DeepSeek-V3 中的注意力机制通过几个参数进行配置:
参数 | 描述 |
---|---|
q_lora_rank | LoRA 适应中查询矩阵的秩 |
kv_lora_rank | LoRA 适应中键和值矩阵的秩 |
qk_nope_head_dim | 不使用位置编码的注意力头的维度 |
qk_rope_head_dim | 使用 RoPE(旋转位置嵌入)的注意力头的维度 |
v_head_dim | 值头的维度 |
这些参数控制不同类型注意力机制和位置编码策略之间的平衡。
来源:config_16B.json
模型缩放差异
配置文件揭示了模型架构在不同大小之间的缩放方式:
参数 | 16B 模型 | 236B 模型 | 671B 模型 |
---|---|---|---|
vocab_size | 102,400 | 102,400 | 129,280 |
dim | 2,048 | 5,120 | 7,168 |
inter_dim | 10,944 | 12,288 | 18,432 |
n_layers | 27 | 60 | 61 |
n_heads | 16 | 128 | 128 |
n_routed_experts | 64 | 160 | 256 |
n_activated_experts | 6 | 6 | 8 |
显著差异包括:
- 671B 模型具有更大的词汇表(129,280 对 102,400)
- 较大模型使用更多的注意力头(128 对 16)
- 专家数量随模型大小显著增加
- 较大模型实现专家组以实现高效并行化
来源:config_16B.json,config_236B.json,config_671B.json
特殊参数
有些参数仅特定于特定模型大小:
mscale
:仅存在于 16B 模型中,设置为 0.707(可能与模型归一化相关)score_func
:仅存在于 671B 模型中,设置为 "sigmoid"(确定专家路由函数)dtype
:仅存在于 671B 模型中,设置为 "fp8"(表示模型使用 8 位浮点精度)
这些特殊参数代表了模型特定的优化,帮助每个变体在其规模上最优表现。
来源:config_16B.json,config_671B.json
使用配置文件
配置文件在加载模型进行推理时使用。model.py
脚本读取这些配置以实例化适当的模型架构:
# 加载模型的示例
from model import DeepSeekV3ForCausalLM
import json
# 加载配置
with open("inference/configs/config_16B.json", "r") as f:
config = json.load(f)
# 使用配置初始化模型
model = DeepSeekV3ForCausalLM(config)
要自定义模型行为,您可以修改这些配置文件或根据提供的模板创建自己的文件。然而,对架构参数(如 dim
或 n_layers
)的更改将需要重新训练模型。
来源:model.py
配置参数参考
为方便起见,以下是三个模型变体中所有配置参数的完整参考表:
参数 | 类型 | 存在于 | 描述 |
---|---|---|---|
vocab_size | 整数 | 所有模型 | 词汇表/Token 字典大小 |
dim | 整数 | 所有模型 | 模型的隐藏维度大小 |
inter_dim | 整数 | 所有模型 | 前馈网络的中间维度 |
moe_inter_dim | 整数 | 所有模型 | MoE 层的中间维度 |
n_layers | 整数 | 所有模型 | 变压器层的数量 |
n_dense_layers | 整数 | 所有模型 | 密集(非 MoE)层的数量 |
n_heads | 整数 | 所有模型 | 注意力头的数量 |
n_routed_experts | 整数 | 所有模型 | 每个 MoE 层中可路由专家的数量 |
n_shared_experts | 整数 | 所有模型 | 为所有 token 激活的共享专家数量 |
n_activated_experts | 整数 | 所有模型 | 每个 token 激活的专家数量 |
n_expert_groups | 整数 | 236B, 671B | 用于并行化的专家组数 |
n_limited_groups | 整数 | 236B, 671B | 用于路由的有限组数 |
route_scale | 浮点数 | 所有模型 | 路由逻辑的缩放因子 |
score_func | 字符串 | 671B | 用于专家评分/路由的函数 |
q_lora_rank | 整数 | 所有模型 | LoRA 中查询矩阵的秩 |
kv_lora_rank | 整数 | 所有模型 | LoRA 中键/值矩阵的秩 |
qk_nope_head_dim | 整数 | 所有模型 | 无位置编码的头维度 |
qk_rope_head_dim | 整数 | 所有模型 | 使用旋转位置编码的头维度 |
v_head_dim | 整数 | 所有模型 | 值头的维度 |
mscale | 浮点数 | 16B | 模型缩放因子(与归一化相关) |
dtype | 字符串 | 671B | 模型的数据类型精度 |
理解这些参数有助于您掌握模型变体之间的架构相似性和差异,提供对 DeepSeek-V3 从 16B 到 671B 参数缩放的洞察。
来源:config_16B.json,config_236B.json,config_671B.json