LLM(十二)| DeepSeek-V3 技术报告深度解读——开源模型的巅峰之作
近年来,大型语言模型(LLMs)的发展突飞猛进,逐步缩小了与通用人工智能(AGI)的差距。DeepSeek-AI 团队最新发布的 DeepSeek-V3,作为一款强大的混合专家模型(Mixture-of-Experts, MoE),凭借其高效的架构和创新的训练策略,成为了当前最强的开源模型之一。本文将带您深入了解 DeepSeek-V3 的技术亮点及其在性能上的卓越表现。
一、DeepSeek-V3 的核心亮点
1.1 高效的架构设计
DeepSeek-V3 采用了 Multi-head Latent Attention (MLA) 和 DeepSeekMoE 架构,这些架构在 DeepSeek-V2 中已经得到了充分验证。MLA 通过低秩压缩技术减少了推理时的 Key-Value 缓存,显著提升了推理效率。DeepSeekMoE 则通过细粒度的专家分配和共享专家机制,实现了经济高效的训练。
- Multi-head Latent Attention (MLA):MLA 通过对注意力键和值进行低秩联合压缩,减少了推理时的 KV 缓存,同时保持了与标准多头注意力(MHA)相当的性能。
- DeepSeekMoE:DeepSeekMoE 采用了更细粒度的专家分配策略,每个 MoE 层包含 1 个共享专家和 256 个路由专家,每个令牌激活 8 个专家,确保了计算的高效性。
1.2 创新的负载均衡策略
DeepSeek-V3 首次引入了 无辅助损失的负载均衡策略,避免了传统方法中因强制负载均衡而导致的模型性能下降。通过动态调整专家偏置,模型在训练过程中保持了良好的负载均衡,同时提升了整体性能。
- 无辅助损失负载均衡:通过为每个专家引入偏置项,动态调整路由决策,确保专家负载均衡,而无需依赖传统的辅助损失函数。
- 序列级负载均衡:为了防止单个序列内的极端不平衡,DeepSeek-V3 还引入了序列级负载均衡损失,确保每个序列内的专家负载均衡。
1.3 多令牌预测训练目标
DeepSeek-V3 采用了 多令牌预测(Multi-Token Prediction, MTP) 的训练目标,扩展了每个位置的预测范围。这一策略不仅提高了数据效率,还使得模型能够更好地预规划未来令牌的表示,从而在推理时加速生成过程。
- MTP 模块:DeepSeek-V3 使用多个顺序模块来预测未来的多个令牌,每个模块包含共享的嵌入层、输出头和 Transformer 块,确保了预测的因果链完整性。
- 推理加速:MTP 模块可以用于推测解码(Speculative Decoding),在推理时显著加速生成过程,生成速度提升了 1.8 倍。
1.4 FP8 低精度训练
DeepSeek-V3 支持 FP8 混合精度训练,通过精细的量化策略和高精度累加,显著降低了训练时的 GPU 内存占用和计算开销。这一创新使得 DeepSeek-V3 在保持高性能的同时,大幅降低了训练成本。
- FP8 混合精度框架:大多数计算密集型操作(如 GEMM)在 FP8 精度下执行,而少数关键操作(如嵌入模块和注意力操作)仍保持高精度(BF16 或 FP32),确保了训练的数值稳定性。
- 精细量化策略:通过分块量化(Tile-wise Quantization)和块级量化(Block-wise Quantization),DeepSeek-V3 有效减少了量化误差,尤其是在处理激活梯度时,避免了模型发散。
二、训练与部署的高效性
2.1 训练成本的经济性
DeepSeek-V3 的预训练仅消耗了 2664K H800 GPU 小时,总训练成本约为 557.6 万美元。这一成本远低于其他同级别模型,得益于 DeepSeek 团队在算法、框架和硬件上的协同优化。
- DualPipe 算法:DeepSeek-V3 采用了创新的 DualPipe 算法,通过重叠计算和通信,减少了管道气泡,显著提升了训练效率。
- 跨节点全对全通信优化:通过定制高效的跨节点全对全通信内核,DeepSeek-V3 充分利用了 InfiniBand 和 NVLink 的带宽,确保了通信的高效性。
2.2 长上下文扩展
DeepSeek-V3 通过两阶段的上下文扩展训练,将最大上下文长度从 4K 扩展到 128K,并在长上下文任务中表现出色。例如,在 "Needle In A Haystack" 测试中,DeepSeek-V3 在 128K 上下文长度下依然保持了强大的性能。
- YaRN 扩展技术:DeepSeek-V3 采用了 YaRN 技术进行上下文扩展,逐步将上下文窗口从 4K 扩展到 32K,再扩展到 128K,确保了模型在长上下文任务中的稳定性。
2.3 推理与部署优化
DeepSeek-V3 的推理部署采用了 预填充(Prefilling) 和 解码(Decoding) 分离的策略,确保了在线服务的高吞吐量和低延迟。通过冗余专家部署和动态路由策略,模型在推理时保持了高效的负载均衡。
- 冗余专家部署:在推理时,DeepSeek-V3 通过冗余专家部署策略,确保每个 GPU 处理近似数量的令牌,避免了负载不均衡。
- 动态路由策略:DeepSeek-V3 探索了动态冗余策略,在每个推理步骤中动态选择激活的专家,进一步优化了推理效率。
三、性能表现:开源模型的巅峰
DeepSeek-V3 在多个基准测试中表现优异,尤其是在 代码 和 数学 任务上,超越了其他开源模型,甚至与领先的闭源模型(如 GPT-4o 和 Claude-3.5-Sonnet)不相上下。
3.1 知识理解
在 MMLU、MMLU-Pro 和 GPQA 等教育类基准测试中,DeepSeek-V3 的表现优于所有其他开源模型,尤其是在中文事实性知识(Chinese SimpleQA)上,甚至超越了 GPT-4o 和 Claude-3.5-Sonnet。
3.2 代码与数学推理
DeepSeek-V3 在代码竞赛基准测试(如 LiveCodeBench)中表现最佳,成为该领域的领先模型。在数学推理任务中,DeepSeek-V3 也展现了强大的能力,尤其是在 MATH-500 等复杂数学问题上,表现尤为突出。
3.3 长上下文理解
在 DROP、LongBench v2 和 FRAMES 等长上下文理解任务中,DeepSeek-V3 表现优异,尤其是在处理 100K 以上上下文的任务中,展现了其强大的长上下文处理能力。
四、未来展望
尽管 DeepSeek-V3 已经取得了显著的成就,但团队依然在探索更多的优化方向:
4.1 模型架构的持续优化
团队计划进一步研究 Transformer 架构的局限性,探索更高效的模型架构,以支持无限上下文长度。
4.2 数据质量的提升
团队将继续迭代训练数据的数量和质量,探索更多维度的数据扩展,以进一步提升模型的性能。
4.3 推理能力的增强
通过扩展模型的推理长度和深度,团队希望进一步提升模型的智能水平和问题解决能力。
4.4 多维度的模型评估
为了避免模型在固定基准测试上的过度优化,团队计划探索更全面的模型评估方法,确保模型的真实能力得到准确反映。
结语
DeepSeek-V3 的发布标志着开源模型在性能上迈上了一个新的台阶。通过创新的架构设计、高效的训练策略和经济的成本控制,DeepSeek-V3 不仅成为了当前最强的开源模型之一,也为未来的 AI 研究提供了宝贵的参考。我们期待 DeepSeek 团队在未来的研究中继续突破,推动开源模型向 AGI 的目标稳步迈进。
参考文献
DeepSeek-V3 Technical Report
相关文章:

LLM(十二)| DeepSeek-V3 技术报告深度解读——开源模型的巅峰之作
近年来,大型语言模型(LLMs)的发展突飞猛进,逐步缩小了与通用人工智能(AGI)的差距。DeepSeek-AI 团队最新发布的 DeepSeek-V3,作为一款强大的混合专家模型(Mixture-of-Experts, MoE&a…...

Uniapp在浏览器拉起导航
Uniapp在浏览器拉起导航 最近涉及到要在浏览器中拉起导航,对目标点进行路线规划等功能,踩了一些坑,找到了使用方法。(浏览器拉起) 效果展示 可以拉起三大平台及苹果导航 点击选中某个导航,会携带经纬度跳转…...

公平联邦学习——多目标优化
前言 前段时间接触到了联邦学习(Federated Learning, FL)。涉猎了几年多目标优化的我,惊奇地发现横向联邦学习里面也有用多目标优化来做的。于是有感而发,特此写一篇博客记录记录,如有机会可以和大家多多交流。遇到不…...
奇怪的Python:为何字符串要设置成不可变的?
你好!我是老邓。今天我们来聊聊 Python 中字符串不可变这个话题。 1、问题简介: Python 中,字符串属于不可变对象。这意味着一旦字符串被创建,它的值就无法被修改。任何看似修改字符串的操作,实际上都是创建了一个新…...
Vue-Router之嵌套路由
在路由配置中,配置children import Vue from vue import VueRouter from vue-routerVue.use(VueRouter)const router new VueRouter({mode: history,base: import.meta.env.BASE_URL,routes: [{path: /,redirect: /home},{path: /home,name: home,component: () &…...
MyBatis使用的设计模式
目录 1. 工厂模式(Factory Pattern) 2. 单例模式(Singleton Pattern) 3. 代理模式(Proxy Pattern) 4. 装饰器模式(Decorator Pattern) 5. 观察者模式(Observer Patt…...
arm rk3588 升级glibc2.31到2.33
一、查看glibc版本 rootztl:~# ldd --version ldd (Ubuntu GLIBC 2.31-0ubuntu9.2) 2.31 Copyright (C) 2020 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNE…...

【Linux系列】sed命令的深入解析:如何使用sed删除文件内容
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
C++ 设计模式:桥接模式(Bridge Pattern)
链接:C 设计模式 链接:C 设计模式 - 装饰模式 桥接模式(Bridge Pattern)是一种结构型设计模式,它通过将抽象部分(业务功能)与实现部分(平台实现)分离,使它们…...
MATLAB中whitespacePattern函数用法
目录 语法 说明 示例 匹配空白字符 替换非标准空白 更正错误的间距 whitespacePattern函数的功能是匹配空白字符。 语法 pat whitespacePattern pat whitespacePattern(N) pat whitespacePattern(minCharacters,maxCharacters) 说明 pat whitespacePattern 创建一…...
Django多字段认证的实现
Django多字段认证 需求: django认证的检查用户是username,如果使用 username和 手机号验证登录。 重写: ModelBackend 类下的 authenticate 方法 # 在对应应用下创建 utils.py""" 修改Django认证类,为了实现 …...

【AndroidAPP】权限被拒绝:[android.permission.READ_EXTERNAL_STORAGE],USB设备访问权限系统报错
一、问题原因 1.安卓安全性变更 Android 12 的安全性变更,Google 引入了更严格的 PendingIntent 安全管理,强制要求开发者明确指定 PendingIntent 的可变性(Mutable)或不可变性(Immutable)。 但是…...
SQL进阶技巧:如何分析连续签到领金币数问题?
目录 0 题目需求 1 数据准备 2 问题分析 2.1 代码实现 2.2 代码功能分析 第一段 SQL...

1、ELK的架构和安装
ELK简介 elk:elasticsearch logstash kibana,统一日志收集系统。 elasticsearch:分布式的全文索引引擎的非关系数据库,json格式,在elk中存储所有的日志信息,架构有主和从,最少需要2台。 …...

Vue2/Vue3使用DataV
Vue2 注意vue2与3安装DataV命令命令是不同的Vue3 DataV - Vue3 官网地址 注意vue2与3安装DataV命令命令是不同的 vue3vite 与 Vue3webpack 对应安装也不同vue3vite npm install kjgl77/datav-vue3全局引入 // main.ts中全局引入 import { createApp } from vue import Da…...

汇编环境搭建
学习视频 将MASM所在目录 指定为C盘...
Android 系统 `android.app.Fragment` 类的深度定制与常见问题解析
Android 系统 android.app.Fragment 类的深度定制与常见问题解析 目录 引言Fragment 概述Fragment 的生命周期Fragment 的系统层深度定制 4.1 Fragment 的创建与初始化4.2 Fragment 的布局与视图4.3 Fragment 的通信机制4.4 Fragment 的动画与过渡4.5 Fragment 的状态保存与恢…...
linux ueditor nginx https 后台配置项返回格式出错,上传功能将不能正常使用
jsp的版本 如果出现了这个错误,上传的图标都亮起的情况,还是提示这个, 可以试试修改 uedtior.all.js 8082行 isJsonp utils.isCrossDomainUrl(configUrl); 改为 // isJsonp utils.isCrossDomainUrl(configUrl); isJsonp true; 如果还不…...
【机器学习 | 数据挖掘】时间序列算法
时间序列是按时间顺序排列的、随时间变化且相互关联的数据序列。分析时间序列的方法构成数据分析的一个重要领域,即时间序列分析。以下是对时间序列算法的详细介绍: 一、时间序列的分类 时间序列根据所研究的依据不同,可有不同的分类&#…...
uniapp H5 对接 声网,截图
文章目录 安装依赖创建容器容器样式 javascript代码ImageDataToBlob 方法 控制控制台LOG输出 安装依赖 版本"agora-rtc-sdk-ng": "^4.22.0", 创建容器 <template><view class"videoValue " id"videoValue"><u-toast…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...