DeepSeek-v3在训练和推理方面的优化

1. 基础架构:MLA,大幅减少了KV cache大小。(计算量能不能减少?)

2. 基础架构:MoE,同等参数量(模型的”能力“)下,训练、推理的计算量大幅减少。

3. MoE的load-balance

训练中,边训练,边调整每个MoE的路由权重。负载高的减少权重,负载低的增加权重。(传统方法是将负载均衡情况作为附加旁路loss。缺点是影响模型训练的主目标)。

训练中,用旁路loss来鼓励句子中命中expert更均匀。

限制每个token最多和M个GPU上的experts进行通信。

4. Multi-Token Prediction (MTP)

推理的时候就是Speculative Decoding。可以一次推理多个tokens(第1次全量推理,后面K次用很小的模型链式推理)。

训练的时候,一次可训练整个一个句子。可视为一张网络,用所有推理步的loss加和,作为总loss,更新一次模型。

把“未来”考虑到训练里,可以让模型不再“短视”。

推理时,既可以扔掉MTP Module使用token-by-token老式推理,又可以利用MTP Module使用speculative decoding推理。

5. DualPipe

总体架构:16路Pipeline并行,64路EP并行,Zero-1 DP并行。(如何布局在2048张卡上的?)

如果不做任何优化,MoE会导致训练集群的计算:通信=1:1.

forward阶段的batch,和backward阶段的batch,可同时调度到同一张卡上,从而overlap通信和计算:

想象有一排工人(GPU),面前有2条传送带(DualPipe),各自往相反的方向传送,每个工人可对1~2条传送带上的东西(任务)进行加工处理,如果,2个东西一个是计算任务一个是通信任务,则可并行处理之。

优点:1. overlap通信和计算。2.减少了bubble。

缺点:每张卡要保存2段模型(被EP路数分片多所化解)。新增少量要缓存的activation。

我的疑问:更新模型的同时还在做前向操作,如何确保同一个样本使用同一版本的模型参数呢?

6. All-to-All通信优化

NVLink带宽:160GB/s;  IB带宽:50GB/s

限制每个token只能被dispatch到最多4台机器(node),减少IB通信量。

先去重,后通过IB网传给各个node,再在各个node内部通过NVLink传给需要的GPU。好处1:去重,避免同一个token的激活在IB上传给同一个node多次,减少了跨节点通信量。好处2:形成流水线,目的地node的NVLink在多播第N个token时,IB可以同时在往目的地node发送第N+1个token。

用于通信的SM,20个就够了(一张GPU卡上一般有100多个SM)。

用于通信的warp数目,动态可调的。用PTX指令精细制作,减少L2-cache使用和对其他SM的干扰。

7. 显存优化

激活缓存:对计算量小的操作(例如RMSNorm),只保存input,output在backward时重新计算。

EMA参数放至CPU memory,异步放。

Token embedding层和output head层,放到了同一张卡上,可以share。share参数,share梯度存储。

8. FP8

开源大模型里首次使用FP8混合精度训练的。

FP8和INT8一样快;FP8比FP16(或BF16)要快1倍。

FP8原理类似INT8,先要统计矩阵数值,拿到scaling factor,矩阵绝对值的最大值对准FP8最大值;FP8乘法,累加到FP16或FP32的结果里。最后再用scaling factor恢复到FP16或FP32。

FP8混合精度训练架构:

大部分计算密集任务,用FP8来计算。小部分需要精度高才行的任务,保持BF16或FP32计算。

3个GEMM(正向传播,反向计算Weight梯度,反向计算Activation梯度),都用FP8计算。正向传播是的激活值,以FP8进行缓存,供反向传播计算Weight梯度时使用,减少了显存占用量。

非计算密集任务,或精度敏感的操作,仍保持高精度:embedding, output head,MoE gating,normalization操作,attention操作。

为维持数值稳定性,以下仍保持高精度:主Wegiht,梯度,Optmizer状态(Adam的2个参数)。可用Zero来减少显存占用。

细粒度量化:激活的量化单元设为1*128,权重的量化单元设为128*128。和整个矩阵做量化单元相比,好处:减少量化误差。

如上图,分片矩阵的FP8乘法之后,结果再乘以各自的scale(2个),加和到结果矩阵里。

这个叫做microscaling,NVIDIA下一代GPU架构官宣会支持。

提升累加的精度:发现H800的FP8乘加,会累加到14位数上面,精度不够易造成误差,特别是累加的数多的时候。

解决:在Tensor Core上,每累加一定次数后,就将中间累加结果,传输至CUDA core上和FP32进行累加。

指数和尾数:

老方法一般是用E4M3做前向传播,用E5M2做反向传播。这里得益于细粒度的分片量化,减少了分片内的数值范围,因此全部使用E4M3。

在线量化:

老方法一般是calibration时统计激活值范围,确定好量化scale,实际推理时复用该scale(类似“静态量化”的概念)。这里为了保持精度,不预先统计,随用随统计(类似“动态量化”的概念)。(权重因为会边训练边更新,所以训练时Weight也是随用随统计scale)。

9. 低精度存储和通信

Adam Optimizer的\alpha\beta,用的BF16。累加用的Gradient,全量Weight,用的FP32。

大部分激活值,缓存FP8值。特例:1. attention之后Linear变换之前的激活,用E5M6共12位来缓存。2. 只缓存SwiGLU的输入激活值,其输出激活值在backward时临时计算,可进一步减少缓存存储量。

MoE通信:1. forward时,激活值的dispatch通信(第1个矩阵乘法之前的),先量化为FP8,再all-to-all通信。2. backward时,梯度值的dispatch通信(第2个矩阵乘法之后的),先量化为FP8,再all-to-all通信。3. forward时,激活值的combine通信(第2个矩阵乘法之后的),保持BF16,进行all-to-all通信。4. backward时,梯度值的combine通信(第1个矩阵乘法之前的),保持BF16,进行all-to-all通信。  3和4涉及到加和操作,为了保持精度,所以采用BF16。

10. 推理:

采用PD分离。Decoding阶段用了10倍于Prefilling阶段的卡。暗合了我的测试结论,相同的token长度,Decoding阶段的耗时大约是Prefilling阶段的10倍。

Prefilling:

4台*8卡=32卡。

attention层:4路TP,外面套8路DP。4路TP比8路TP的好处是通信开销减小。

MoE层:32路Expert并行。好处:每个Expert可以分到更多的tokens(如果每个DP是一份完整的MoE,则总的Expert数目变成DP倍,每个Expert分到的token就少了)。我猜测的另一个好处:节约显存。

MoE的all-to-all:和训练阶段类似,也是先去重后通过IB网传给各个node,再在各个node内部通过NVLink传给需要的GPU。

MoE的负载均衡:在线推理阶段,监测Expert负载情况,每10分钟调整一次。让Heavy的GPU和清闲的GPU,互换一些Expert。对Heavy的Expert,启动一个冗余副本Expert,分散一部分token流量。比例:256个expert里选32个流量最大的,启动32个副本。

计算通信overlap: 把1个大batch拆分成2个小batch,错开发射时间,力争将<MoE前后的2次All-to-All,attention&MoE计算>,重叠起来。

显存换通信:每个GPU上,多放一倍的Expert。token路由时,可以找更好的发送方案。

Decoding:

40台*8卡=320卡。

attention层:TP4+SP,外层套80路DP。

MoE层:EP320,每张卡上就放1个Expert。256个常规Expert&64个shared/冗余Expert。

MoE的all-to-all:使用IB的point-to-point通信,降低了延迟。IBGDA技术。

MoE的副本冗余Expert: 也会在线上根据监控负载,来动态调整。把流量少的下掉,上线流量多的。

计算通信overlap: attention的耗时更大。因此,仍然采用2个小batch并行,只是改为<attention计算,all-to-all&MoE计算>,重叠起来。SM分配:后者计算量更小,因此,后者的SM少分些,前者的SM多分些。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/892969.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL8数据库全攻略:版本特性、下载、安装、卸载与管理工具详解

大家好&#xff0c;我是袁庭新。 MySQL作为企业项目中的主流数据库&#xff0c;其5.x和8.x版本尤为常用。本文将详细介绍MySQL 8.x的特性、下载、安装、服务管理、卸载及管理工具&#xff0c;旨在帮助用户更好地掌握和使用MySQL数据库。 1.MySQL版本及下载 企业项目中使用的…

centos 7 Mysql服务

将此服务器配置为 MySQL 服务器&#xff0c;创建数据库为 hubeidatabase&#xff0c;将登录的root密码设置为Qwer1234。在库中创建表为 mytable&#xff0c;在表中创建 2 个用户&#xff0c;分别为&#xff08;xiaoming&#xff0c;2010-4-1&#xff0c;女&#xff0c;male&…

紫光无人机AI飞控平台介绍

随着无人机技术的迅猛发展&#xff0c;无人机飞控平台的智能化需求不断提升。紫光无人机AI飞控平台作为一款创新型产品&#xff0c;为用户提供了从飞行控制到任务管理的一站式解决方案&#xff0c;尤其在AI实时识别和事件分析方面具有显著优势。本文将介绍平台的核心功能、技术…

【机器学习实战入门】有趣的Python项目:使用OpenCV进行性别和年龄检测

Gender and Age Detection Python 项目 首先,向您介绍用于此高级 Python 项目的性别和年龄检测中的术语: 什么是计算机视觉? 计算机视觉是一门让计算机能够像人类一样观察和识别数字图像和视频的学科。它面临的挑战大多源于对生物视觉有限的了解。计算机视觉涉及获取、处…

AutoAlign实体对齐方法的详细工作原理和在大规模知识图谱中的应用

AutoAlign是一种全自动且高效的知识图谱对齐方法&#xff0c;其工作原理主要基于大型语言模型&#xff08;LLM&#xff09;&#xff0c;如ChatGPT和Claude&#xff0c;通过构建谓词邻近图和实体嵌入模块来实现实体和谓词的自动对齐。这种方法不需要人工标注种子对齐&#xff0c…

【2025最新】国内中文版 ChatGPT镜像网站整理合集,GPT最新模型4o1,4o,4o-mini分类区别,镜像站是什么

1.快速导航 原生中转型镜像站点 立即Chat支持GPT4、4o以及o1,canvs等&#xff0c;同步官网功能 AIChat.com 支持最新4O 2.两者对比 官网立即Chat访问难度需要魔法直接访问支付手段国际支付国内支付封禁策略检测节点&#xff0c;随时封禁不会封禁价格每月140元订阅费用每年70元…

事务机制及Spring事务管理

事务概览 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位。 事务会将所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;换句话说&#xff1a;这些操作要么同时成功、要么同时失败。 具体案例 我们先看一个需求&#xff1a;现在有两张数据库表&…

CCLINKIE转ModbusTCP网关,助机器人“掀起”工业智能的“惊涛骇浪”

以下是一个稳联技术CCLINKIE转ModbusTCP网关&#xff08;WL-CCL-MTCP&#xff09;连接三菱PLC与机器人的配置案例&#xff1a;设备与软件准备设备&#xff1a;稳联技术WL-CCL-MTCP网关、三菱FX5UPLC、支持ModbusTCP协议的机器人、网线等。 稳联技术ModbusTCP转CCLINKIE网关&…

python管理工具:conda部署+使用

python管理工具&#xff1a;conda部署使用 一、安装部署 1、 下载 - 官网下载&#xff1a; https://repo.anaconda.com/archive/index.html - wget方式&#xff1a; wget -c https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh2、 安装 在conda文件的…

python爬虫入门(理论)

python爬虫 学习网站 一、准备 环境搭建 requests beautifulsoup4 selenium 爬虫架构 URL管理器&#xff1a;管理URL&#xff0c;存储已爬取或待爬取的URL 网页下载器&#xff1a;破解网页&#xff0c;进行下载 网页解析器&#xff1a;对网页的HTML样式、连接的URL等进…

windows-本地部署Git仓库-安装Gitea

windows-本地部署Git仓库-安装Gitea 初始化MysQL数据库下载运行后关闭配置服务初始化打开防火墙指定端口入站规则 初始化MysQL数据库 create database gitea character set utf8mb4; 下载 运行后关闭 配置服务 初始化 打开防火墙指定端口入站规则

CV 图像处理基础笔记大全(超全版哦~)!!!

一、图像的数字化表示 像素 数字图像由众多像素组成&#xff0c;是图像的基本构成单位。在灰度图像中&#xff0c;一个像素用一个数值表示其亮度&#xff0c;通常 8 位存储&#xff0c;取值范围 0 - 255&#xff0c;0 为纯黑&#xff0c;255 为纯白。例如&#xff0c;一幅简单的…

Android-目前最稳定和高效的UI适配方案

谈到适配&#xff0c;首先需要介绍几个基本单位&#xff1a; 1、密度无关像素&#xff08;dp&#xff09;&#xff1a; 含义&#xff1a;density-independent pixel&#xff0c;叫dp或dip&#xff0c;与终端上的实际物理像素点无关 单位&#xff1a;dp&#xff0c;可以保证在…

Leetcode 91. 解码方法 动态规划

原题链接&#xff1a;Leetcode 91. 解码方法 自己写的代码&#xff1a; class Solution { public:int numDecodings(string s) {int ns.size();vector<int> dp(n,1);if(s[n-1]0) dp[n-1]0;for(int in-2;i>0;i--){if(s[i]!0){string ts.substr(i,2);int tmpatoi(t.c…

【算法】枚举

枚举 普通枚举1.铺地毯2.回文日期3.扫雷 二进制枚举1.子集2.费解的开关3.Even Parity 顾名思义&#xff0c;就是把所有情况全都罗列出来&#xff0c;然后找出符合题目要求的那一个。因此&#xff0c;枚举是一种纯暴力的算法。一般情况下&#xff0c;枚举策略都是会超时的。此时…

网络分析仪测试S参数

S参数的测试 一&#xff1a;S参数的定义 S参数&#xff08;Scattering Parameters&#xff0c;散射参数&#xff09;是一个表征器件在射频信号激励下的电气行为的工具&#xff0c;它以输入信号、输出信号为元素的矩阵来表现DUT的“传输”和“散射”效应&#xff0c;输入、输出…

联通用户管理系统(一)

#联通用户管理系统&#xff08;一&#xff09; 1.新建项目 如果你是windows的话&#xff0c;界面应该是如下的&#xff1a; 2.创建app python manage.py startapp app01一般情况下&#xff1a;我们是在pycharm的终端中运行上述指令&#xff0c;但是pychrm中为我们提供了工具…

迅为RK3576开发板Android 多屏显示

迅为iTOP-3576开发板采用瑞芯微RK3576高性能、低功耗的应用处理芯片&#xff0c;集成了4个Cortex-A72和4个Cortex-A53核心&#xff0c;以及独立的NEON协处理器。它适用于ARM PC、边缘计算、个人移动互联网设备及其他多媒体产品。 1.1 Android 多屏同显 iTOP-RK3576 开发板支持…

【Axure】配色库

配色库是一个专为设计师和创意工作者打造的在线资源平台&#xff0c;旨在提供丰富的色彩解决方案&#xff0c;帮助用户轻松找到或创造美观和谐的色彩搭配。其中&#xff0c;一个典型的配色库包含了以下几个核心元素&#xff1a; 渐变色&#xff1a;提供多样化的渐变色方案&…

港科夜闻 | 香港科大与微软亚洲研究院签署战略合作备忘录,推动医学健康教育及科研协作...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大与微软亚洲研究院签署战略合作备忘录&#xff0c;推动医学健康教育及科研协作。根据备忘录&#xff0c;双方将结合各自于科研领域的优势&#xff0c;携手推动医学健康领域的交流与合作。合作方向将涵盖人才培训、…