DeepSeek-V3:AI语言模型的高效训练与推理之路
参考:【论文学习】DeepSeek-V3 全文翻译
在人工智能领域,语言模型的发展日新月异。从早期的简单模型到如今拥有数千亿参数的巨无霸模型,技术的进步令人瞩目。然而,随着模型规模的不断扩大,训练成本和推理效率成为了摆在研究者面前的两道难题。DeepSeek-V3,这个拥有671B(6710亿)参数的大型混合专家(MoE)语言模型,却以其高效的训练和卓越的性能,成为了开源模型中的佼佼者。今天,就让我们一起走进DeepSeek-V3的世界,探索它是如何在保持高精度的同时,将训练成本降低到GPT的十分之一。
一、DeepSeek-V3的架构创新
DeepSeek-V3的架构设计是其高效训练和推理的基础。它采用了多头潜在注意力(MLA)和DeepSeekMoE架构,这两种技术在DeepSeek-V2中已经得到了充分验证。MLA通过低秩联合压缩注意力的键(Key)和值(Value),减少了推理时的KV缓存和训练时的激活内存。而DeepSeekMoE则通过细粒度的专家并行,隔离一些共享专家,提高了模型的计算效率和性能。
1. 多头潜在注意力(MLA)
MLA的核心在于对注意力机制的优化。传统的多头注意力机制在处理大规模数据时,会消耗大量的内存和计算资源。而MLA通过低秩联合压缩,将注意力的键和值进行压缩,减少了KV缓存的大小。同时,对注意力查询(Query)也进行了类似的低秩压缩,进一步降低了训练时的激活内存。这种压缩策略在显著减少内存占用的同时,保持了与标准多头注意力相当的性能。
2. DeepSeekMoE架构
DeepSeekMoE架构是DeepSeek-V3的另一个重要创新。它采用了细粒度的专家并行,将输入数据通过共享专家和路由专家进行处理。路由专家的选择基于Top-K选择机制,确保每个token都能被发送到最合适的专家进行处理。这种设计不仅提高了计算效率,还使得模型能够更好地利用专家的多样性,从而提升整体性能。
3. 无辅助损失的负载均衡策略
为了进一步提高训练效率,DeepSeek-V3引入了一种无辅助损失的负载均衡策略。传统的负载均衡方法通常需要引入辅助损失来鼓励负载均衡,但这可能会对模型性能产生不利影响。DeepSeek-V3通过动态调整每个专家的偏置项,实现了负载均衡,同时避免了因负载均衡导致的性能下降。这种策略不仅提高了训练效率,还保持了模型的高性能。
二、训练框架的优化
DeepSeek-V3 的训练由 HAI-LLM 框架支持,这是一个由工程师从零开始打造的高效轻量级训练框架。
1. DualPipe算法
DeepSeek-V3采用了DualPipe算法,这是一种创新的流水线并行算法。它通过重叠正向和反向的计算-通信阶段,减少了流水线气泡,提高了训练效率。具体来说,DualPipe将每个块划分为四个部分:注意力机制、全到全分发(dispatch)、MLP和全到全合并(combine)。通过重新排列这些部分,并手动调整GPU SMs用于通信与计算的比例,DualPipe确保了在执行过程中全到全和PP通信都可以被完全隐藏。这种高效的重叠策略使得DeepSeek-V3在训练过程中能够充分利用计算资源,显著提高了训练效率。
2. 高效的跨节点全到全通信内核
为了进一步提高通信效率,DeepSeek-V3开发了高效的跨节点全到全通信内核。这些内核充分利用了InfiniBand(IB)和NVLink的带宽,减少了通信开销。通过定制的通信内核,DeepSeek-V3节省了用于通信的流处理器(SMs),提高了通信效率。这种优化使得DeepSeek-V3在跨节点通信时能够保持高效的训练速度,进一步降低了训练成本。
3. 内存优化
DeepSeek-V3在内存优化方面也做了大量工作。通过重新计算RMSNorm操作和MLA上投影,DeepSeek-V3减少了存储激活值所需的内存。此外,它还采用了指数移动平均值(EMA)来存储模型参数,进一步降低了内存占用。这些内存优化措施使得DeepSeek-V3能够在不使用昂贵的张量并行(TP)的情况下进行训练,显著降低了训练成本。
三、FP8混合精度训练
DeepSeek-V3采用了FP8混合精度训练框架,这是其高效训练的另一个关键因素。FP8混合精度训练通过使用FP8数据格式进行大多数计算密集型操作,显著提高了训练速度并减少了内存消耗。
1. 混合精度框架
在FP8混合精度框架中,大多数核心计算内核,如GEMM操作,以FP8精度实现。这些操作接受FP8张量作为输入,并产生BF16或FP32的输出。通过这种方式,DeepSeek-V3的计算速度比原始的BF16方法翻倍,同时显著减少了内存消耗。
2. 细粒度量化
为了提高低精度训练的准确性,DeepSeek-V3采用了细粒度量化策略。它按1×128的瓦片或128×128的块进行分组和缩放,以适应异常值,提高量化精度。这种细粒度量化方法能够更好地适应激活值和权重的分布,减少了量化误差,提高了训练精度。
3. 增加累加精度
DeepSeek-V3还通过将累加提升到CUDA Cores,提高了FP8 GEMM的累加精度。通过这种方式,它能够保留更高的精度,减少了下溢问题,提高了训练的稳定性。
四、数据和超参数优化
除了架构和训练框架的优化,DeepSeek-V3在数据和超参数方面也进行了精心设计。
1. 数据构建
DeepSeek-V3的预训练语料库包含14.8万亿个高质量且多样化的token。通过增加数学和编程样本的比例,扩展多语言覆盖范围,优化了预训练语料库。此外,它的数据处理流程经过改进,以减少冗余,同时保持语料库的多样性。这种高质量的数据为DeepSeek-V3的训练提供了坚实的基础。
2. 超参数设置
DeepSeek-V3的超参数设置也非常精细。它采用了AdamW优化器,并设置了合适的学习率调度和批量大小调度。通过精心设计的学习率调度,DeepSeek-V3在训练过程中保持了稳定的学习速度,提高了训练效率。同时,批量大小的逐步增加也使得训练过程更加高效。
五、后训练优化
在后训练阶段,DeepSeek-V3通过监督微调(SFT)和强化学习(RL)进一步提升了模型的性能。
1. 监督微调(SFT)
DeepSeek-V3使用了精心策划的指令调优数据集,涵盖多个领域,共包含150万个实例。通过两轮微调,DeepSeek-V3在特定任务上的表现得到了显著提升。这种微调策略使得DeepSeek-V3能够更好地理解并遵循用户定义的格式约束,提高了模型的实用性。
2. 强化学习(RL)
在强化学习阶段,DeepSeek-V3使用了基于规则的奖励模型和基于模型的奖励模型。通过Group Relative Policy Optimization(GRPO),DeepSeek-V3优化了策略模型,进一步提升了模型的性能。这种强化学习策略使得DeepSeek-V3在复杂任务中表现出色,接近甚至超过了领先的闭源模型。
六、DeepSeek-V3的训练成本与性能
通过上述一系列优化措施,DeepSeek-V3不仅在性能上达到了领先水平,还在训练成本上实现了显著降低。DeepSeek-V3的完整训练仅需278.8万H800 GPU小时,而其预训练阶段每万亿个token仅需180K H800 GPU小时。这种高效的训练成本使得DeepSeek-V3成为了目前最强的开源模型之一,其性能与领先的闭源模型相当,甚至在某些领域超过了这些模型。
七、总结
DeepSeek-V3的成功之路充满了创新和优化。从架构设计到训练框架,从数据处理到后训练优化,DeepSeek-V3在每一个环节都进行了精心设计和优化。通过多头潜在注意力(MLA)、DeepSeekMoE架构、无辅助损失的负载均衡策略、FP8混合精度训练等技术,DeepSeek-V3不仅提高了训练效率,还保持了高精度的性能。它的成功为开源语言模型的发展提供了宝贵的经验,也为未来AI技术的发展指明了方向。
相关文章:
DeepSeek-V3:AI语言模型的高效训练与推理之路
参考:【论文学习】DeepSeek-V3 全文翻译 在人工智能领域,语言模型的发展日新月异。从早期的简单模型到如今拥有数千亿参数的巨无霸模型,技术的进步令人瞩目。然而,随着模型规模的不断扩大,训练成本和推理效率成为了摆在…...
【多模态】Magma多模态AI Agent
1. 前言 微软杨建伟团队,最近在AI Agent方面动作连连,前两天开源了OmniParser V2,2月26日又开源了Magma,OmniParser专注在对GUI的识别解析,而Magma则是基于多模态技术,能够同时应对GUI和物理世界的交互&…...
DeepSeek掘金——DeepSeek R1驱动的PDF机器人
DeepSeek掘金——DeepSeek R1驱动的PDF机器人 本指南将引导你使用DeepSeek R1 + RAG构建一个功能性的PDF聊天机器人。逐步学习如何增强AI检索能力,并创建一个能够高效处理和响应文档查询的智能聊天机器人。 本指南将引导你使用DeepSeek R1 + RAG构建一个功能性的PDF聊天机器人…...
DeepSeek在PiscTrace上完成个性化处理需求案例——光流法将烟雾动态可视化
引言:PiscTrace作为开放式的视图分析平台提供了固定格式的类型参数支持个性化定制处理需求,本文一步步的实现光流分析按照不同需求根据DeepSeek的代码处理视频生成数据。 光流法(Optical Flow)是一种基于图像序列的计算机视觉技术…...
explore与explode词源故事
英语单词explore来自古法语,源自拉丁语,由前缀ex-(出来)加词根plor-(叫喊)以及末尾的小尾巴-e组成,字面意思就是“喊出来,通过叫喊声赶出来”。它为什么能表示“探索”呢?…...
LeeCode题库第三十七题
37.解数独 项目场景: 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请…...
【数字信号处理:从原理到应用的深度剖析】
一、数字信号处理的原理 数字信号处理(DSP)是一种通过数学算法对信号进行分析、处理和转换的技术。其核心在于对离散时间信号的操作,目的是提取有用信息或将信号转换为更易于解释的形式。 (一)信号的数字化过程 1. …...
MySQL 数据库安全配置最佳实践
文章目录 MySQL 数据库安全配置最佳实践账户与权限管理账户最小化原则权限最小化配置密码策略强化 认证与访问控制禁用匿名账户启用安全认证 网络安全防护访问源限制禁用远程root访问启用SSL加密 日志审计与监控全量审计配置二进制日志管理 服务端安全加固关键参数配置文件权限…...
小红书自动评论
现在越来越多的人做起来小红书,为了保证自己的粉丝和数据好看,需要定期养号。 那么养号除了发视频外,还需要积极在社区互动,比如点赞、评论等等,为了节省时间,我做了一个自动化评论工具。 先看效果 那这个是…...
OpenCV图像认知(一)
OpenCV: 是由Intel公司俄罗斯团队发起并参与和维护的一个计算机视觉处理开源软件库,支持与计算机视觉和机器学习相关的众多算法 OpenCV-Python: OpenCV-Python是一个Python绑定库,旨在解决计算机视觉问题。 Python是一种由Gui…...
自学微信小程序的第六天
DAY6 1、使用录音API首先需要通过wx.getRecorderManager()方法获取到一个RecorderManager实例,该实例是一个全局唯一的录音管理器,用于实现录音功能。 表32:RecorderManager实例的常用方法 方法名称 说明 start() 开始录音 pause() 暂停录音 resume() 继续录音 stop() 停止…...
C++动态与静态转换区别详解
文章目录 前言一、 类型检查的时机二、安全性三、适用场景四、代码示例对比总结 前言 在 C 中,dynamic_cast 和 static_cast 是两种不同的类型转换操作符,主要区别体现在类型检查的时机、安全性和适用场景上。以下是它们的核心区别: 一、 类…...
Qt6.8编译项目找不到文件——6.8.2\msvc2022_64\include\QtWidgets\QMainWindow does not exist.
问题:Error: dependent ‘…\Qt6.8.2\6.8.2\msvc2022_64\include\QtWidgets\QMainWindow’ does not exist. jom: D:\Temp\untitled1\build\Makefile [release] Error 2 20:20:43: 进程"D:\ProgramFiles\Develop\Qt6.8.2\Tools\QtCreator\bin\jom\jom.exe"…...
AI工具导航平台功能模块之混合分类器功能说明文档
AI工具导航平台功能模块之混合分类器功能说明文档 这是我最近正在开发的AI工具信息平台的部门功能模块混合分类器的说明文档,我的AI工具信息平台基于streamlit架构,整理出来与大家分享。 该程序的混合分类器采用规则引擎与深度学习模型协同工作的架构&…...
【时序预测】在线学习:算法选择(从线性模型到深度学习解析)
——如何为动态时序预测匹配最佳增量学习策略? 引言:在线学习的核心价值与挑战 在动态时序预测场景中(如实时交通预测、能源消耗监控),数据以流式(Streaming)形式持续生成,且潜在的…...
某个设备的RJ45网口接头为何不可连接任何POE设备
某个设备的RJ45网口接头不可连接任何POE设备 1.POE设备是什么? POE设备是指支持通过以太网线传输电力和数据的设备,即“Power over Ethernet”(PoE)技术的设备。这种技术允许网络设备在传输数据的同时,通过标准的RJ4…...
发展中的脑机接口:SSVEP特征提取技术
一、简介 脑机接口(BCI)是先进的系统,能够通过分析大脑信号与外部设备之间建立通信,帮助有障碍的人与环境互动。BCI通过分析大脑信号,提供了一种非侵入式、高效的方式,让人们与外部设备进行交流。BCI技术越…...
绕过密码卸载360终端安全管理系统
一不小心在电脑上安装了360终端安全管理系统,就会发现没有密码,就无法退出无法卸载360,很容易成为一个心病,360终端安全管理系统,没有密码,进程无法退出,软件无法卸载,前不久听同事说…...
Java数据结构第十五期:走进二叉树的奇妙世界(四)
专栏:Java数据结构秘籍 个人主页:手握风云 目录 一、二叉树OJ练习题(续) 1.1. 二叉树的层序遍历 1.2. 二叉树的最近公共祖先 1.3. 从前序与中序遍历序列构造二叉树 1.4. 从中序与后序遍历序列构造二叉树 1.5. 根据二叉树创建…...
Transformer 代码剖析9 - 解码器模块Decoder (pytorch实现)
一、模块架构全景图 1.1 核心功能定位 Transformer解码器是序列生成任务的核心组件,负责根据编码器输出和已生成序列预测下一个目标符号。其独特的三级注意力机制架构使其在机器翻译、文本生成等任务中表现出色。下面是解码器在Transformer架构中的定位示意图&…...
JAVA八股—计算机网络(自用)
JAVA八股—计算机网络(自用) 2.7 1.介绍一下TCP/IP模型和OSI模型的区别 OSI模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,将计算机网络通信划分为七个不同的层级,每个层级都负责特定的功能。每个…...
unity和unity hub关系
unity和unity hub关系 Unity和Unity Hub是紧密相关但功能不同的两个软件,以下是它们的关系说明: Unity 定义:是一款专业的实时3D开发平台,广泛用于创建各种类型的3D和2D互动内容,如视频游戏、建筑可视化、汽车设计展示、虚拟现实(VR)和增强现实(AR)应用等。功能:提供…...
Linux的OOM机制
Linux 的 OOM(Out of Memory)机制是操作系统在内存耗尽时采取的一种保护措施。当系统内存不足,无法继续分配给进程时,Linux 内核会触发 OOM 杀手(OOM Killer),选择并终止某些进程,以…...
Typora的Github主题美化
[!note] Typora的Github主题进行一些自己喜欢的修改,主要包括:字体、代码块、表格样式 美化前: 美化后: 一、字体更换 之前便看上了「中文网字计划」的「朱雀仿宋」字体,于是一直想更换字体,奈何自己拖延症…...
Cursor配置MCP Server
一、什么是MCP MCP(Model Context Protocol)是由 Anthropic( Claude 的那个公司) 推出的开放标准协议,它为开发者提供了一个强大的工具,能够在数据源和 AI 驱动工具之间建立安全的双向连接。 举个好理解…...
定时器之输入捕获
输入捕获的作用 工作机制 输入捕获通过检测外部信号边沿(上升沿/下降沿)触发计数器(CNT)值锁存到捕获寄存器(CCRx),结合两次捕获值的差值计算信号时间参数。 脉冲宽度测量&#x…...
Uniapp开发微信小程序插件的一些心得
一、uniapp 开发微信小程序框架搭建 1. 通过 vue-cli 创建 uni-ap // nodejs使用18以上的版本 nvm use 18.14.1 // 安装vue-cli npm install -g vue/cli4 // 选择默认模版 vue create -p dcloudio/uni-preset-vue plugindemo // 运行 uniapp2wxpack-cli npx uniapp2wxpack --…...
0005__PyTorch 教程
PyTorch 教程 | 菜鸟教程 离线包:torch-1.13.1cpu-cp39-cp39-win_amd64.whl https://download.pytorch.org/whl/torch_stable.html...
Pikachu
一、网站搭建 同样的,先下载安装好phpstudy 然后启动Apache和Mysql 然后下载pikachu,解压到phpstudy文件夹下的www文件 然后用vscode打开pikachu中www文件夹下inc中的config.inc.php 将账户和密码改为和phpstudy中的一致(默认都是root&…...
CentOS7 使用 YUM 安装时报错:Cannot find a valid baseurl for repo: base/7/x86_64的解决方法
CentOS7 使用 YUM 安装时报错:Cannot find a valid baseurl for repo: base/7/x86_64的解决方法 报错代码解决方法 报错代码 输入命令yum update -y时报错Cannot find a valid baseurl for repo: base/7/x86_64 解决方法 有 wget 工具 更换YUM源 mv /etc/yum.…...
