本文档描述了 DeepSeek-V3 推理管道中的权重转换过程。权重转换系统将模型检查点从 Hugging Face 格式转换为与 DeepSeek-V3 推理系统和各种部署框架兼容的格式。有关文本生成的信息,请参阅 文本生成,有关 FP8 到 BF16 转换的详细信息,请参阅 FP8 到 BF16 转换。
权重转换系统是连接模型训练和推理的关键组件。它负责参数重命名、模型并行化的张量分片以及混合专家 (MoE) 参数的正确分发。
转换过程使用预定义的映射字典来将 Hugging Face 格式的参数名称转换为 DeepSeek-V3 格式。这确保了与优化的推理内核的兼容性。
| Hugging Face 名称 | DeepSeek-V3 名称 | 分片维度 |
|---|---|---|
| embed_tokens | embed | 0 |
| input_layernorm | attn_norm | 无 |
| post_attention_layernorm | ffn_norm | 无 |
| q_proj | wq | 0 |
| q_a_proj | wq_a | 无 |
| q_a_layernorm | q_norm | 无 |
| q_b_proj | wq_b | 0 |
| kv_a_proj_with_mqa | wkv_a | 无 |
| kv_a_layernorm | kv_norm | 无 |
| kv_b_proj | wkv_b | 0 |
| o_proj | wo | 1 |
| gate | gate | 无 |
| gate_proj | w1 | 0 |
| down_proj | w2 | 1 |
| up_proj | w3 | 0 |
| norm | norm | 无 |
| lm_head | head | 0 |
| scale | scale | 无 |
转换过程包含多种转换
转换过程通过将参数分片到多个分片来支持模型并行。对于需要分片的参数
narrow() 提取张量的相关部分对于混合专家模型,系统将专家分发到多个模型分片
n_local_experts = n_experts // mp转换实用程序作为命令行工具提供,具有以下参数
| 参数 | 描述 |
|---|---|
--hf-ckpt-path | 包含 Hugging Face 检查点文件的目录路径 |
--save-path | 将保存转换后的检查点文件的目录路径 |
--n-experts | MoE 模型中的总专家数 |
--model-parallel | 模型并行因子(分片数) |
python convert.py --hf-ckpt-path /path/to/hf/model --save-path /path/to/output --n-experts 128 --model-parallel 8
系统将验证专家数是否可被模型并行因子整除,然后继续进行转换。
转换过程会生成多个输出文件
model{i}-mp{mp}.safetensors,其中i 是分片索引 (0 到 mp-1)mp 是模型并行因子此格式与 DeepSeek-V3 推理管道以及 SGLang、LMDeploy、TensorRT-LLM、vLLM 和 LightLLM 等各种部署框架兼容。
在转换 DeepSeek-V3 模型权重时,请注意以下事项
torch.set_num_threads(8) 来控制内存使用