Deepseek V3 预训练策略解读

作者:大润发杀鱼工
原文:https://zhuanlan.zhihu.com/p/15073492309

训练策略

集群

2048*H800,256 nodes,配备NVLink,NVSwitch,以及IB。

策略推测

TP

PP

DP

SP

CP

EP

1

16

128

1

1

64

策略评价

1.选择2048张卡进行训练,应该可以保证在一个大集群中进行这个训练。

2.策略中不开TP,机器内部优先为EP组,256个专家的64EP并行,则单张卡中应该是4个专家。

3.Deepseek论文中提到不使用TP策略,主要是开销非常大(文中costly),这似乎也表明EP和TP组在机内的优先级竞争,EP是最优解?因为在之前Mixtral 8x7B的Moe模型中,同样也是选择了将EP打满的策略。12.27更新:xffxff:MoE 训练到底是开 TP 还是 EP?,解释了这个原因[1]

4.提到使用了ZeRO-1(DP),但我估计实现的方法应该和Magetron的Distributed Optimizer优化一样。

DS分布式训练亮点分析

1.自研的轻量级HAI-LLM框架

2.双流并行的PP组steady阶段优化

3.PP组双向管道调度

4.Moe路由的All2All优化设计

5.高精度的显存优化策略

双流并行的PP组steady阶段优化

计算通信流安排

文中示意图:

图片

 

首先一个预备知识,在反向传递阶段,通常会进行两个操作,1.更新当前层的权重,2.将梯度继续传递到前一层。而通常这两个操作实际是并不存在数据依赖的,因此他们是可以拆开来进行。图中括号里面的B,W则分别是这两个操作的。

这一个思路实际在ZeroBubble中就已经出现:

### DeepSeek-V3 的源码遵循模块化设计原则,主要分为以下几个核心部分: 1. **数据预处理模块** 数据预处理模块负责准备用于训练和推理的数据集。该模块能够处理多种类型的输入数据,包括但不限于文本、图像和其他形式的二进制文件。对于金融领域的时间序列数据分析,此模块会执行特征提取操作,确保模型接收到的是高质量的标准化数据[^1]。 2. **模型定义与初始化** 这一部分包含了构建神经网络的具体逻辑以及加载预训练权重的过程。考虑到 DeepSeek-V3 巨大的参数规模及其复杂的路由机制,在这一阶段特别注重内存管理和计算资源的有效分配。此外,通过引入先进的量化技术如 FP8 参数转换和 KV 缓存优化措施来提升性能表现[^2]。 3. **训练流程控制** 训练过程涉及多个迭代周期内的前向传播、反向传播及梯度更新等环节。为了提高收敛速度并防止过拟合现象的发生,采用了诸如学习率衰减策略在内的各种技巧。值得注意的是,V3 版本经过监督微调与强化学习相结合的方式进行了改进,从而增强了其编程能力和推理水平[^3]。 4. **推理引擎** 推理引擎是整个系统中最关键的部分之一,它不仅决定了最终输出的质量高低,也直接影响着系统的响应时间和用户体验感。针对不同应用场景的需求特点——比如金融市场风险预警或是智能制造业中的生产计划安排——定制化的算法被集成进来以满足特定任务的要求。 5. **辅助工具包** 辅助工具包提供了丰富的 API 和命令行接口供开发者调用,方便用户快速搭建原型或扩展功能特性。其中包括日志记录器、可视化组件以及其他实用程序库,有助于加速开发进度的同时保障项目的可维护性和稳定性。 #### 功能说明 - **实时数据分析**:借助强大的算力支撑,DeepSeek-V3 能够迅速完成大规模数据集上的复杂运算任务,从中挖掘有价值的信息作为决策依据。 - **多场景适应性**:无论是金融服务还是工业制造乃至城市管理等领域都能找到合适的应用切入点,展现出广泛适用性的优势所在。 - **高性能推断能力**:经由一系列针对性强的技术手段打磨而成,使得即使面对高并发请求也能保持流畅稳定的运行状态,为用户提供卓越的服务体验。 ```python import torch from deepseek_v3 import DataPreprocessor, ModelInitializer, Trainer, InferenceEngine # 初始化各子模块实例对象 data_processor = DataPreprocessor() model_initializer = ModelInitializer() trainer = Trainer() inference_engine = InferenceEngine() def main(): # 加载原始数据并进行必要的清洗转换 processed_data = data_processor.load_and_preprocess('path/to/dataset') # 构建模型架构并加载已有的预训练参数 model = model_initializer.build_model(processed_data) # 启动训练循环直至达到预期效果为止 trainer.train(model=model, dataset=processed_data) # 利用训练好的模型开展在线预测活动 predictions = inference_engine.predict(input_tensor=torch.tensor([example_input])) if __name__ == '__main__': main() ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值