1. 摘要
训练成本低,但效果卓越。DeepSeek V3的参数量为671B,每个token激活 37B,支持上下文长度为128k。训练语料由14.8T高质量且多样化的token组成, 在2048个H800上训练了2.788M H800 GPU小时,耗时57天(2.788*1000000/2048/24=56.78天),用了558万美元。其所用的GPU训练资源仅为Llama 3.1 405B的差不多1/14,但是效果显著。
2. 算法改进
2.1 MLA
把传统的Multi-head Attention(MHA)结构改成Multi-head Latent Attention(MLA)
- 输入embedding的维度为𝑑
表示注意力头的数量
表示每个注意力头的维度
表示注意力层中第t个token的输入
- transformer的层数为
是对key和value压缩后的潜在向量。
表示KV被压缩后的维度,一般被设置为4
。
表示下投影矩阵。
表示k和v的上投影矩阵。
生成带有旋转位置嵌入(RoPE)的解耦密钥的矩阵,
一般被设置为
。
生成的时候只需要存储和
就行。
是q的压缩隐向量。
q压缩后隐向量的维度。
分别是q的下投影矩阵和上投影矩阵。
生成带有旋转位置嵌入(RoPE)的解耦密钥的矩阵。
单个token,MHA中的KV Cache需要存储,MLA中的KV Cache需要存储
,虽然存储减少,但是效果比MHA还好。
2.2 DeepSeekMoE
把传统的FFN(Feed-Forward Network)结构改成DeepSeekMoE。
DeepSeekMoE两个关键理念。
- 将专家细分为更细的粒度以实现更高的专家专业化和更准确的知识获取
- 隔离一些共享专家以减轻路由专家之间的知识冗余
表示FFN输入的第t个token。
表示共享专家的数量。
表示路由专家的数量。
表示共享专家。
表示路由专家。
表示第t个token到第i个专家的亲和度。
表示第
个专家的门控值。
表示第i个专家的质心向量。
V3中设置了1个共享专家,256个路由专家,激活专家数为8。
2.3 MTP
多token预测:Multi-Token Prediction(MTP)——显著加快模型的解码速度
2.4 使用FP8训练
使用FP8混合精度框架可以减小内存消耗增加训练速度。
大多数GEMM(矩阵乘法)操作都是以FP8实现的。
3. 本地部署
3.1 下载程序
git clone https://github.com/deepseek-ai/DeepSeek-V3.git
3.2 安装依赖库
cd DeepSeek-V3/inference
pip install -r requirements.txt
3.3 从 HuggingFace 下载模型权重
https://huggingface.co/deepseek-ai/DeepSeek-V3/tree/main
3.4 将 HuggingFace 模型权重转换为特定格式
python convert.py --hf-ckpt-path /path/to/DeepSeek-V3 --save-path /path/to/DeepSeek-V3-Demo --n-experts 256 --model-parallel 16
3.5 运行DeepSeek-V3
torchrun --nnodes 2 --nproc-per-node 8 generate.py --node-rank $RANK --master-addr $ADDR --ckpt-path /path/to/DeepSeek-V3-Demo --config configs/config_671B.json --interactive --temperature 0.7 --max-new-tokens 200