0%
DeepSeek v3创新点
训练框架
- 流水并行算法DualPipe:该算法通过计算-通信的重叠,减少了训练过程中的流水气泡,并隐藏了大部分通信,从而解决了跨节点专家并行性带来的沉重通信开销的挑战。重新排列训练时专家并行中前向块和后向块这些组件,并手动调整专用于通信和计算的GPU SM的比例。
- 跨节点All-to-All通信:根据莫伊门控算法和deepseek使用集群的网络拓扑结构协同设计跨节点全对全通信内核(包括调度和合并),以节省专用于通信的SM数量,充分利用IB和NVLink带宽。
- 优化内存占用:
- 在反向传播过程中重新计算所有RMSNorm操作和MLA上投影,从而消除了持久存储其输出激活的需要。
- 将模型训练过程中的模型参数的指数移动平均(EMA)存储在CPU存储器中。
- 将模型的第一层和最深层放在同一个流水线阶段上,这样能让模型共享嵌入层和输出头的参数和梯度
FP8混合精度训练
- 使用基于FP8数据格式的细粒度混合精度框架,在GEMM运算接受FP8张量作为输入,并在BF16或FP32中产生输出,并将训练过程中的激活值存储在FP8中,便于后向传递使用进一步减少内存。
- 采用细粒度量化,细粒度量化是指会针对模型中的不同部分(如不同的层、不同的通道甚至不同的神经元),根据其数据分布和重要性,采用不同的量化策略。具体表现为沿GEMM操作的内部维度沿着引入每组缩放因子。
- 提升CUDA Core的累加精度,累加精度是指在 GPU 上进行一系列数值相加操作时,用于存储累加结果的数据格式的精度。H800 GPU上FP 8 GEMM的累加精度仅限于保留14位左右,在张量核上执行MMA(矩阵乘法累加)期间,使用有限的位宽累加中间结果。一旦达到单次分组数据的间隔,这些部分结果将被复制到CUDA内核上的FP32寄存器,在其中执行全精度FP32累加。
- 采用E4M3(4位指数3位尾数)格式的FP8精度,以获取更高的精度(另一种是E5M2格式,5位指数2位尾数)
知识蒸馏
- 从deepseekR1进行知识蒸馏提取Deepseek推理能力