CGXBeta

自定义配置设置

- 分钟等级: 高级

DeepSeek-V3 提供灵活的配置选项,允许您自定义模型行为、性能特征和硬件兼容性。本指南解释了如何理解、修改和创建自定义配置文件,以优化模型以适应您的特定用例。

配置文件结构

DeepSeek-V3 使用 JSON 配置文件来定义模型参数。这些文件位于 inference/configs/ 目录中,并根据模型大小命名(例如,config_16B.jsonconfig_236B.jsonconfig_671B.json)。

JSON
{
    "vocab_size": 102400,
    "dim": 2048,
    "inter_dim": 10944,
    "moe_inter_dim": 1408,
    "n_layers": 27,
    ...
}

配置文件在模型初始化期间加载,并传递给 ModelArgs 数据类,该数据类为任何未指定的参数提供默认值。

来源:model.pygenerate.py

核心配置参数

DeepSeek-V3 配置组织成几个逻辑组。下表描述了定义模型架构的核心参数:

参数描述默认值示例值
vocab_size词汇表大小102400102400 (16B/236B), 129280 (671B)
dim模型隐藏维度20482048 (16B), 5120 (236B), 7168 (671B)
n_layers变换器层数2727 (16B), 60 (236B), 61 (671B)
n_heads注意力头数1616 (16B), 128 (236B/671B)
n_dense_layers密集层数11 (16B/236B), 3 (671B)
dtype计算数据类型"bf16""bf16" (16B/236B), "fp8" (671B)

这些参数直接影响模型大小、计算需求和性能特征。

来源:config_16B.jsonconfig_236B.jsonconfig_671B.json

专家混合 (MoE) 配置

DeepSeek-V3 使用专家混合架构以实现高效的扩展。以下参数控制 MoE 行为:

参数描述默认值备注
inter_dimMLP 层的中间维度变化10944 (16B), 12288 (236B), 18432 (671B)
moe_inter_dimMoE 层的中间维度变化1408 (16B), 1536 (236B), 2048 (671B)
n_routed_experts专家总数变化64 (16B), 160 (236B), 256 (671B)
n_shared_experts共享专家数变化2 (16B/236B), 1 (671B)
n_activated_experts每个标记激活的专家数66 (16B/236B), 8 (671B)
n_expert_groups专家组数11 (16B), 8 (236B/671B)
n_limited_groups路由组数11 (16B), 3 (236B), 4 (671B)
route_scale路由分数的缩放因子1.01.0 (16B), 16.0 (236B), 2.5 (671B)
score_func路由评分函数"softmax""softmax" (16B/236B), "sigmoid" (671B)

这些参数决定了模型如何通过不同的专家网络路由输入,这可能会显著影响性能和生成质量。

来源:model.pyGate 类实现

多头潜在注意力 (MLA) 配置

多头潜在注意力是 DeepSeek-V3 的一个关键创新。这些参数控制注意力机制:

参数描述默认值示例值
q_lora_rank查询投影的 LoRA 级别00 (16B), 1536 (236B/671B)
kv_lora_rank键值投影的 LoRA 级别512512 (所有模型)
qk_nope_head_dim无位置嵌入的查询键维度128128 (所有模型)
qk_rope_head_dim带旋转嵌入的查询键维度6464 (所有模型)
v_head_dim值投影的维度128128 (所有模型)

这些参数影响注意力的计算以及模型处理序列信息的效率。

来源:model.py

序列长度扩展参数

DeepSeek-V3 包括控制序列长度适应的参数:

参数描述默认值备注
max_seq_len最大序列长度4096 * 4在 ModelArgs 中设置
original_seq_len原始训练序列长度4096用于 RoPE 计算
rope_theta旋转位置编码的基数10000.0影响位置编码
rope_factor扩展序列的缩放因子40更高值改善扩展上下文
beta_fast快速 β 校正因子32用于长度外推
beta_slow慢速 β 校正因子1用于长度外推
mscale扩展注意力的缩放因子1.0调整较长序列的注意力

这些参数在处理比模型原始训练时更长的上下文时尤为重要。

来源:model.py

创建自定义配置文件

要创建自定义配置文件:

  1. 从现有配置文件作为模板开始
  2. 根据需要修改参数
  3. 使用描述性名称保存文件(例如,config_custom.json

以下是一个为具有扩展序列上下文的 16B 模型自定义配置文件的示例:

JSON
{
    "vocab_size": 102400,
    "dim": 2048,
    "inter_dim": 10944,
    "moe_inter_dim": 1408,
    "n_layers": 27,
    "n_dense_layers": 1,
    "n_heads": 16,
    "n_routed_experts": 64,
    "n_shared_experts": 2,
    "n_activated_experts": 6,
    "route_scale": 1.0,
    "q_lora_rank": 0,
    "kv_lora_rank": 512,
    "qk_nope_head_dim": 128,
    "qk_rope_head_dim": 64,
    "v_head_dim": 128,
    "max_seq_len": 32768,
    "original_seq_len": 4096,
    "rope_factor": 64,
    "mscale": 0.9
}

此示例增加了最大序列长度,并调整了 RoPE 缩放参数以提高较长上下文的性能。

来源:model.py

应用自定义配置

要使用自定义配置文件与模型,请在运行 generate.py 时指定您的配置文件路径:

BASH
python inference/generate.py --ckpt-path /path/to/model --config /path/to/custom_config.json --interactive

配置权衡和建议

在自定义配置时,考虑以下权衡:

内存与性能

  • 更高维度diminter_dim):更好的质量,更高的内存使用
  • 更多层n_layers):更好的推理,更高的内存使用
  • 精度dtype):"fp8" 使用更少内存,但与 "bf16" 相比可能降低质量

MoE 设置

  • 更多激活专家n_activated_experts):更好的质量,更高的计算
  • 路由缩放route_scale):更高值增加专家专业化
  • 评分函数score_func):"sigmoid" 对较大模型可能更稳定

序列长度

  • 扩展上下文max_seq_len):线性增加内存使用
  • RoPE 因子rope_factormscale):需要仔细调整以获得最佳长上下文性能

对于大多数用户,我们建议从提供的配置之一开始,并进行最小更改以适应您的特定需求。

来源:model.py

高级:多 GPU 配置

在多个 GPU 上运行时,模型将自动跨可用设备分配专家和注意力头。世界大小在运行时检测并用于分区模型。

无需额外配置,但请注意某些参数应能被 GPU 数量整除:

  • n_routed_experts 必须能被 world_size 整除
  • n_heads 理想情况下应能被 world_size 整除
  • vocab_size 必须能被 world_size 整除