当前位置: 首页 > article >正文

DeepSeek今日连开3源!针对优化的并行策略,梁文锋本人参与开发

DeepSeek开源周第四天,直接痛快「1日3连发」,且全都围绕一个主题:

优化并行策略

  • DualPipe:一种创新的双向流水线并行算法,能够完全重叠前向和后向计算-通信阶段,并减少“流水线气泡”。它通过对称的微批次调度,优化了并行计算效率。
  • Expert Parallelism Load Balancer (EPLB):用于MoE的负载均衡算法,通过复制高负载专家并智能地分配专家到不同GPU上,确保计算资源的均衡利用。它包含两种政策:层次化负载均衡和全局负载均衡。
  • Profiling Data:训练和推理框架的性能分析数据,展示了通信-计算重叠策略和底层实现细节。

这三者中,DualPipe从时间上优化了计算与通信的调度,EPLB从空间上平衡利用计算资源,Profiling Data则提供了前两者在实际应用中效果的可视化证据。

DualPipe的开发团队中包括梁文锋本人

发布后10分钟不到,3者在GitHub上的星标已经破300了,且其中DualPipe的星标飙升最快。

而DeepSeek一发推,网友的留言也排山倒海一般扑面而来,几乎都是不吝溢美之词:

好活!令人兴奋!
优化策略可以重新定义行业的性能。

Day 4,直接1日3连发

DualPipe

DualPipe是在DeepSeek-V3中首次出现双向流水线并行算法,现在代码完全开源。

它实现了前向与后向计算-通信阶段的完全重叠,还减少了流水线气泡(即某些设备在某些时刻空闲等待)。

DualPipe采用了双向微批次调度策略,其核心特点是:

  • 对称设计:反向方向的微批次与前向方向对称排列,形成一种几何平衡的调度结构
  • 计算-通信重叠:两个共享黑色边框的单元格表示相互重叠的计算和通信过程
  • 双向并行:同时在两个方向上推进微批次,最大化硬件利用率

传统流水线并行方法如1F1B(one-forward-one-backward)在处理多GPU场景时会产生大量气泡。

DualPipe通过重新安排微批次执行顺序,和对称结构缓解这个问题。

EPLB

EPLB适用于V3/R1的专家并行负载均衡器,解决MoE模型在分布式训练和推理中的负载不平衡问题。

在MoE架构中,不同的输入会激活不同的专家,可能导致某些专家过载,进一步造成不同GPU的利用率不平衡。

EPLB采用“redundant experts”(冗余专家)策略

识别高负载专家→复制多个副本分配到不同GPU→在推理时动态分配输入到负载较轻的专家副本。

并带有两种普通的策略:

  • 分层负载平衡,专家并行较小的预填充阶段使用。
  • 全局负载平衡,在专家并行规模较大的解码阶段采用。

V3/R1中的计算通信重叠分析数据

开源第四弹的part 3,DeepSeek公开分享了来自训练和推理框架的分析数据,以帮助社区更好地了解通信计算重叠策略和低级实现细节

GitHub上注明,分析数据是使用PyTorch Profiler捕获的。

下载后,开发者可以通过导航到Chrome浏览器中的chrome://tracing(或Edge浏览器中的edge://tracing)将它进行可视化。

Attention please——DeepSeek模拟了一个绝对平衡的MoE路由策略进行分析。

首先,训练阶段。

训练配置文件数据演示了DeepSeek在DualPipe中,对一对单独的向前和向后数据块的重叠策略。

每个数据块包含4个MoE 层。

并行配置与DeepSeek-V3预训练设置一致EP64、TP1具有4K序列长度。

为简单起见,在profilng期间不包括PP通信。

其次,推理阶段。

1)预填充。

对于预填充,配置文件使用EP32和TP1(与DeepSeek V3/R1的实际在线部署一致),提示长度设置为4K,每个GPU的批量大小为16Ktokens。

在预填充阶段,DeepSeek利用两个微批次来重叠计算和多对多通信,同时确保注意力计算负载在两个微批次之间平衡

——这意味着相同的提示可以在它们之间分配。

2)解码。

(注:相关数据尚未准备就绪,将于稍后发布)

解码方面,该配置文件采用了EP128、TP1和4K的提示长度(与实际在线部署配置非常匹配),每个GPU的批量大小为128个请求。

与预填充类似,解码还利用两个微批处理进行重叠计算和多对多通信。

但与预填充不同的是,解码期间的all-to-all通信不会占用GPU SM:

发出RDMA消息后,所有GPU SM都会被释放,系统在计算完成后等待all-to-all通信完成。

有关all-to-all实现的更多信息,请参考开源周第二弹DeepEP。

One More Thing

“大放异彩!”

对于第四弹的开源内容,网友是这么感慨的。

目前看来,DeepSeek开源周的前4天,都挺令追更群众们满意。

尤其是这次开源周全部瞄准大模型的Infra层。

追更看客们表示:

更好的团队合作不仅是团队管理优化的一部分,更是实现顶级AI性能的秘诀。
DeepSeek正在创建新的标准,大规模训练的未来就在咱们眼前!

好了,DeepSeek开源周,明天就是最后一天了,不知道会有什么压轴登场?

相关文章:

DeepSeek今日连开3源!针对优化的并行策略,梁文锋本人参与开发

DeepSeek开源周第四天,直接痛快「1日3连发」,且全都围绕一个主题: 优化并行策略。 DualPipe:一种创新的双向流水线并行算法,能够完全重叠前向和后向计算-通信阶段,并减少“流水线气泡”。它通过对称的微批…...

【含文档+PPT+源码】基于过滤协同算法的旅游推荐管理系统设计与实现

项目介绍 本课程演示的是一款基于过滤协同算法的旅游推荐管理系统设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套…...

蓝桥杯2024年第十五届省赛真题-传送阵

#include<stdio.h> #include<stdbool.h> #define MAX 100000 int circle[MAX];//记录每个环大小 int parent[MAX];//记录每个传送阵所属的环 int m[MAX]; bool visited[MAX]; int circleIndex0;//当前环的编号 //迭代实现换的查找void findcircle(int start){int c…...

数据存储:一文掌握存储数据到mysql的详细使用

文章目录 一、环境准备1.1 安装MySQL数据库1.2 安装Python MySQL驱动 二、连接到MySQL数据库三、执行基本的CRUD操作3.1 创建&#xff08;Create&#xff09;&#xff1a;插入数据3.2 读取&#xff08;Read&#xff09;&#xff1a;查询数据3.3 更新&#xff08;Update&#xf…...

【华为OD机考】华为OD笔试真题解析(15)--异常的打卡记录

题目描述 考勤记录是分析和考核职工工作时间利用情况的原始依据&#xff0c;也是计算职工工资的原始依据&#xff0c;为了正确地计算职工工资和监督工资基金使用情况&#xff0c;公司决定对员工的手机打卡记录进行异常排查。 如果出现以下两种情况&#xff0c;则认为打卡异常…...

Java实战:使用HttpClient实现图片下载与本地保存

在当今数字化时代&#xff0c;网络资源的获取与处理已成为软件开发中的常见需求。其中&#xff0c;图片作为网络上最常见的资源之一&#xff0c;其下载与保存功能在许多应用场景中都显得尤为重要。无论是社交媒体平台、电商平台&#xff0c;还是个人项目&#xff0c;能够高效地…...

【实战】使用PCA可视化神经网络提取后的特征空间【附源码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...

DeepSeek05-大模型WebUI

一、说明&#xff1a; 将DeepSeek部署到前台Web界面的方法主要有以下几种推荐方案&#xff0c;涵盖开源工具、第三方客户端及特定场景适配方案&#xff1a; Open WebUIChatbox AICherry StudioSillyTavern 二、Open WebUI 安装配置教程 特点&#xff1a;Open WebUI 是一个开…...

第14天:C++异常处理实战指南 - 构建安全的文件解析系统

第14天&#xff1a;C异常处理实战指南 - 构建安全的文件解析系统 一、今日学习目标 &#x1f3af; 掌握C异常处理的核心语法与流程&#x1f6e1;️ 理解RAII在资源管理中的关键作用&#x1f4e6; 创建自定义文件解析异常体系&#x1f680; 实现安全的文件解析器原型 二、C异常…...

JavaScript遍历方式总结

目录 一、数组遍历方法 1.1for循环 1.2for...of循环 1.3forEach 1.4map方法 1.5filter方法 1.6reduce方法 1.7some方法 1.8every方法 二、对象遍历方法 2.1for...in方法 2.2values、keys方法 2.3entries方法 一、数组遍历方法 1.1for循环 最普通的循环&#xf…...

Python毕业设计选题:基于Python的社区爱心养老管理系统设计与实现_django

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 身体健康界面 公共书籍界面 借阅信息界面 归还…...

Spring Boot整合WebSocket

目录 ?引言 1.WebSocket 基础知识 ?1.1 什么是 WebSocket&#xff1f; ?1.2 WebSocket 的应用场景 ?2.Spring Boot WebSocket 整合步骤 2.1 创建 Spring Boot 项目 2.2 添加 Maven 依赖 2.3 配置 WebSocket 2.4 创建 WebSocket 控制器 2.5 创建前端页面 引言 在…...

Pycharm使用matplotlib出现的问题(1、不能弹出图表 2、图表标题中文不显示)

Pycharm使用matplotlib出现的问题 问题1&#xff1a;Pycharm调试时出现&#xff1a;AttributeError: module backend_interagg has no attribute FigureCanvas. Did you mean: FigureCanvasAgg? 排查原因&#xff1a;可能是由于matplotlib后端设置不正确或与运行环境不兼容引…...

《宇树科技:解锁机器人技术的未来密码》:此文为AI自动生成

走进宇树科技 在科技飞速发展的今天,机器人领域正以前所未有的速度蓬勃发展,成为全球瞩目的焦点。在这个充满创新与挑战的领域中,宇树科技宛如一颗璀璨的明星,闪耀着独特的光芒。它不仅在国内机器人行业占据着重要地位,更是在国际舞台上崭露头角,成为了中国机器人技术的…...

Spark map与mapPartitions算子源码级深度解析

Spark map与mapPartitions算子源码级深度解析 一、核心源码结构差异 1. map算子实现逻辑 def map[U: ClassTag](f: T => U): RDD[U] = withScope {val cleanF = sc.clean(f)new MapPartitionsRDD[U, T](this, (context, pid, iter) => iter.map(cleanF)) }实现特征: …...

在 Vue 3 中,如何缓存和复用动态组件

在 Vue 3 中&#xff0c;如何缓存和复用动态组件&#xff0c;这有助于提高应用的性能&#xff0c;避免组件重复创建和销毁带来的开销。下面详细介绍其使用方法和相关配置。 1. 使用 <KeepAlive> 组件缓存动态组件 基本使用 <KeepAlive> 是 Vue 3 内置的一个组件…...

【PromptCoder】使用 package.json 生成 cursorrules

【PromptCoder】使用 package.json 生成 cursorrules 在当今快节奏的开发世界中&#xff0c;效率和准确性至关重要。开发者们不断寻找能够优化工作流程、帮助他们更快编写高质量代码的工具。Cursor 作为一款 AI 驱动的代码编辑器&#xff0c;正在彻底改变我们的编程方式。但如…...

给博客添加基于百度地图的足迹页面

使用百度地图 api 做的足迹页面一段时间了&#xff0c;经过一番改造&#xff0c;目前已基本能够满足自己需求。 一、添加百度地图 添加百度地图基本思路就是6点&#xff1a; 申请百度AK适当位置添加百度地图容器引入百度地图 api创建地图实例设置地图中心点初始化地图 这里…...

【构建工具】Gradle Kotlin DSL中的大小写陷阱:BuildConfigField

在Android开发当中&#xff0c;BuildConfig是一个非常有用的功能&#xff0c;它允许我们在构建过程中定义常量&#xff0c;并在运行时使用它们。But&#xff01;&#xff01;当我们从传统的Groovy DSL迁移到Kotlin DSL时或者被Android Studio坑的时候&#xff0c;有一些细微的差…...

南京来可电子CAN总线数据记录仪在汽车售后服务站的应用

南京来可电子CAN总线数据记录仪在汽车售后服务站的应用 南京来可电子&#xff08;LaiCore&#xff09;作为国内领先的车载数据采集设备供应商&#xff0c;其CAN总线数据记录仪凭借高精度、多协议兼容性及智能化功能&#xff0c;在汽车售后服务站中发挥重要作用。以下是其核心应…...

FreeSql + .Net6 多库连接实现

1、安装Nuget包 AutoMapper 2、program.cs里添加如下配置&#xff1a; services.AddSingleton(r >{var str configuration.GetConnectionString("MES");return new FreeSqlBuilder().UseConnectionString(DataType.SqlServer, str).Build<MESFlag>();});s…...

4个小时开发DeepSeek+baiduNaotu一键生成思维导图

一、引言 最近发现AI生成思维导图的解决方案普遍存在两个断层&#xff1a;用户需手动复制模型输出的JSON数据到脑图软件&#xff0c;且缺乏实时可视化反馈。基于日常使用的BaiduNaotu框架&#xff08;其轻量级架构与简洁的UI设计已满足基础需求&#xff09;&#xff0c;我决定…...

(21)从strerror到strtok:解码C语言字符函数的“生存指南2”

❤个人主页&#xff1a;折枝寄北的博客 ❤专栏位置&#xff1a;简单入手C语言专栏 目录 前言1. 错误信息报告1.1 strerror 2. 字符操作2.1 字符分类函数2.2 字符转换函数 3. 内存操作函数3.1 memcpy3.2 memmove3.2memset3.3 memcmp 感谢您的阅读 前言 当你写下strcpy(dest, s…...

构建动态URL查询字符串以导出报警统计数据

如何构建动态URL查询字符串以导出报警统计数据 在开发Web应用程序时&#xff0c;经常需要根据用户的选择或输入来动态构建URL查询字符串&#xff0c;以便从服务器检索或导出数据。在本文中&#xff0c;我们将展示如何使用JavaScript来构建一个动态URL查询字符串&#xff0c;用…...

SpringBoot集成easy-captcha图片验证码框架

SpringBoot集成easy-captcha图片验证码框架 此项目已经很久未维护&#xff0c;如有更好的选择&#xff0c;建议使用更好的选择!!! 一、引言 验证码&#xff08;CAPTCHA&#xff09;是现代应用中防止机器人攻击、保护接口安全的核心手段之一。然而&#xff0c;从零开发验证码…...

Apache Flink:实时数据流处理的终极武器

Apache Flink&#xff1a;实时数据流处理的终极武器 在当今这个数据驱动的世界&#xff0c;实时数据流处理已经成为各行各业的核心需求。从金融风控到电商推荐&#xff0c;从物联网监控到网络安全&#xff0c;毫秒级的响应能力决定了一家公司在市场中的竞争力。而在众多流式计…...

货车一键启动无钥匙进入手机远程启动的正确使用方法

一、移动管家货车无钥匙进入系统的使用方法 基本原理&#xff1a;无钥匙进入系统通常采用RFID无线射频技术和车辆身份识别码识别系统。车钥匙需要随身携带&#xff0c;当车钥匙靠近货车时&#xff0c;它会自动与货车的解码器匹配。开门操作&#xff1a;当靠近货车后&#xff0…...

C# Enumerable类 之 生成序列

总目录 前言 在 C# 中&#xff0c;System.Linq.Enumerable 类是 LINQ&#xff08;Language Integrated Query&#xff09;的核心组成部分&#xff0c;它提供了一系列静态方法&#xff0c;用于操作实现了 IEnumerable 接口的集合。通过这些方法&#xff0c;我们可以轻松地对集合…...

【实战 ES】实战 Elasticsearch:快速上手与深度实践-1.2.2倒排索引原理与分词器(Analyzer)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 1.2.2倒排索引原理与分词器&#xff08;Analyzer&#xff09;1. 倒排索引&#xff1a;搜索引擎的基石1.1 正排索引 vs 倒排索引示例数据对比&#xff1a; 1.2 倒排索引核心结…...

salesforce 为什么无法关闭task,显示:insufficient access rights on object id

在 Salesforce 中&#xff0c;如果你在尝试关闭任务&#xff08;Task&#xff09;时遇到 “Insufficient access rights on object id” 错误&#xff0c;通常是由于以下几种可能的权限问题导致的&#xff1a; 1. 任务的所有权问题 Salesforce 中的任务&#xff08;Task&…...