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

建设网站公司前景淘宝seo优化是什么

建设网站公司前景,淘宝seo优化是什么,企业网站架构,三五互联做网站怎么样系列综述: 💞目的:本系列是个人整理为了学习DeepSpeed的,整理期间苛求每个知识点,平衡理解简易度与深入程度。 🥰来源:材料主要源于进行的,每个知识点的修正和深入主要参考各平台大佬…

系列综述:
💞目的:本系列是个人整理为了学习DeepSpeed的,整理期间苛求每个知识点,平衡理解简易度与深入程度。
🥰来源:材料主要源于``进行的,每个知识点的修正和深入主要参考各平台大佬的文章,其中也可能含有少量的个人实验自证。
🤭结语:如果有帮到你的地方,就点个赞关注一下呗,谢谢🎈🎄🌷!!!

请先收藏!!!,后续继续完善和扩充👍(●’◡’●)


文章目录

    • 一、DeepSpeed 简介
      • 基本知识
    • 二、核心技术
      • ZeRO(零冗余优化器)
      • ZeRO-Offload
      • 1比特Adam
      • Sparse Attention Kernel工具
      • 混合精度
    • 参考博客


😊点此到文末惊喜↩︎


一、DeepSpeed 简介

基本知识

  1. 概述
    • 背景:随着深度学习模型的规模和复杂度不断增加,传统的训练方法和工具已经无法满足高效训练的需求。目前训练超大规模语言模型技术路线:GPU + PyTorch + Megatron-LM + DeepSpeed
    • 基本工具
      • PyTorch:由Meta(原Facebook)开发的开源深度学习框架,提供灵活的原型开发环境,但需要结合其他框架进行大模型训练性能的优化
      • Megatron-LM:由NVIDIA开发,基于PyTorch实现数据并行、张量并行(模型层内拆分)和流水线并行(模型层间拆分),能训练万亿参数规模的模型
      • DeepSpeed:由微软开发的开源深度学习优化库,旨在提高大规模模型训练的效率和可扩展性
  2. 为什么需要Deepspeed
    • 提高硬件兼容性:DeepSpeed支持配置多种通信策略,如mpi、gloo 和 nccl 等,兼容各类硬件环境。而PyTorch官方工具Accelerate仅支持NVLink互联的GPU(如A100),而T4、3090等消费级显卡采用PCIe交换(PIX架构)无法兼容
    • ZeRO显存优化:通过ZeRO的三级优化,将模型状态(优化器状态/梯度/参数)分片到多GPU,模型的总显存占用随GPU数量线性下降
    • 降低通信开销:在保证传统Adam的收敛速度的同时,1比特Adam算法能够通过通信压缩和计算通信重叠减少5倍的通信量
    • 提高单卡训练模型上限:基于ZeRO-Offload在不耗尽显存的情况下,能够将模型规模扩展至现有方法的10倍,并保持有竞争力的吞吐量
    • 提高长序列处理速度:通过稀疏Attention内核使长序列处理提速6倍,与经典的稠密 Transformer 相比,它支持的输入序列长一个数量级,并在保持相当的精度下获得最高 6 倍的执行速度提升。
    • 支持混合精度训练:在训练过程中可以同时使用FP16和FP32,并通过对FP16的使用减少内存占用,从而可以训练更大规模的模型。但在使用混合精度训练时,需要解决可能出现的梯度消失和模型不稳定的问题,例如动态精度缩放和混合精度优化器等
      在这里插入图片描述
  3. DeepSpeed框架的技术架构
    • Apis:DeepSpeed 提供了一系列简单易用且功能强大的 API 接口。其中,在调用 initialize 接口时,可以直接指定该配置文件config.json的路径,DeepSpeed 会自动读取文件中的参数设置,并根据这些设置来初始化引擎。
    • 运行时组件runtime:采用python实现,协调分布式训练的全生命周期。能够将训练任务分配到多节点或多GPU设备,支持多种策略。
    • Ops组件:使用C++和CUDA编写的高性能底层算子,从而绕过Python解释器的性能瓶颈直接调用GPU硬件资源,从而减少计算和通信开销,提升训练吞吐量。
      在这里插入图片描述
  4. 原理
    • GPU显存不够,CPU内存来凑:将当前时刻训练用不到的模型参数存储到CPU内存中,需要时再从CPU挪到GPU
    • 问题:更为频繁的CPU,GPU交互,极大增加了训练推理的时间开销。
    • DeepSpeed使用的一个核心要义:通信开销显存占用的矛盾权衡
  5. 模型训练时的显存占用
    • Model States(模型状态):与模型本身直接相关,是训练过程中必须存储的内容
      • 优化器状态(Optimizer States):
        • 作用:在优化算法中用于提高参数更新效率的中间变量,与梯度结合进行参数更新
        • 存储:主要以FP32格式存储一阶动量(momentum)和二阶方差(variance),每参数占 2 × 4字节 = 8字节
      • 梯度(Gradients)
        • 作用:反向传播过程中计算出的损失函数对模型参数的偏导数,指示了参数需要调整的方向和幅度
        • 存储:混合精度下通常以FP16格式存储,每参数占 2字节
      • 模型参数(Parameters)
        • 作用:模型的权重矩阵,参与前向传播(计算预测结果)和反向传播(计算梯度)
        • 存储:混合精度下通常以FP16格式存储,每参数占 2字节
          在这里插入图片描述
    • Residual States(剩余状态):并非训练必需,但实际过程中额外产生的显存占用
      • 激活值(Activations):前向传播时计算的中间结果,用于加速反向传播中的梯度计算。可通过重新执行前向传播(激活重计算)来避免存储,但会增加计算时间。所以通常只保留部分算子激活值。
      • 临时缓冲区(Temporary Buffers):训练中用于存储计算中间结果临时分配的显存,例如梯度聚合、跨GPU通信时的中间数据缓存。
      • 内存碎片(Unusable Fragment Memory):显存空间不连续导致的碎片化浪费,所以连续空间不足可能导致总显存足够但仍Out of Memory的问题,可通过内存整理技术优化
        在这里插入图片描述

二、核心技术

ZeRO(零冗余优化器)

优化数据计算过程的排布,权衡数据的计算量和存储量,尽量做到用时现算,用完即废
Adam优化下的optimizer states只在最终做update时才用到
数据并行中,gradients只在最后做AllReduce和updates时才用到
参数W只在做forward和backward的那一刻才用到
每个 GPU 都复制完整的模型参数、梯度和优化器状态,​​而是每个 GPU 只存储其中的一部分。在随后的运行过程中,当需要给定层的完整层参数时,所有 GPU 同步以相互提供它们缺失的部分
核心是每个显卡(rank)不需要各自保存全量的模型状态,通过划分模型状态和计算通信重叠,能够显著降低模型整体的显存占用

  1. 概述
    • 定义:零冗余优化器(Zero Redundancy Optimizer,缩写为Zero)是一种用于大规模分布式训练优化技术,旨在通过消除数据并行中的内存冗余,从而显著降低显存占用
    • 核心思想:将模型状态(包括优化器状态、梯度、参数)分片存储于不同设备,仅在需要时通过通信同步,而非传统数据并行中的全量复制
  2. 传统并行的局限性
    • 数据并行
      • 集群显存冗余:在标准数据并行中,每个GPU需存储完整的模型状态(包括参数、梯度和优化器状态),导致显存冗余随GPU数量线性增长
      • 单机显存受限:显存冗余导致单个GPU无法加载更大的输入批次,限制了训练效率的提升
    • 模型并行
      • 通信开销陡增:模型并行需频繁传输中间激活值和梯度(如每层计算后同步),导致通信量与模型深度成正比。
      • 实现复杂性高:模型并行需手动划分模型结构,对模型代码侵入性强,且调试难度大
  3. ZeRO解决方式
    • 模型状态划分:通过将优化器状态、梯度和模型参数等状态量进行划分来消除数据并行进程中的内存冗余,而不是全量复制
    • 动态通信调度:在分布式设备之间共享必要的状态,以保持数据并行的计算粒度和通信量。
  4. ZeRO的主要优化阶段
    • ZeRO1——优化器状态分区(Optimizer State Partitioning, Pos)
      • 原理:将优化器状态(如Adam优化器的32位权重副本、动量、方差等)均匀分片到参与数据并行的Nd个GPU上,但是模型的梯度和参数仍完整保留于每个GPU上
      • 显存节省:优化器状态的显存总占用降低至原来的1/Nd
      • 通信开销:
        • 通信量未增加:与数据并行(DP)相同,整体通信量未增加
        • 通信延迟增大:分片过细时,GPU需等待其他分片的通信完成,影响后续算子的执行效率
    • ZeRO2——梯度分区(Pos + Gradient Partitioning, Pos+g)
      • 原理:将优化器状态和梯度进行分片后分布式存储到并行训练显卡组中,每张GPU显存仅存储与其优化器状态对应的梯度片段,并在反向传播后通过All-Gather操作聚合全局梯度以更新参数
      • 显存节省:梯度显存占用降低至原来的1/N,总显存需求减少至数据并行(DP)的1/8
      • 通信开销
        • 通信量:与DP相同,使用AllReduce或Reduce-Scatter操作,未显著增加通信量
        • 通信延迟:分片后的梯度同步可能引入额外延迟,尤其在低带宽网络环境下
    • ZeRO3——参数分区(Pos + Gradient + Parameter Partitioning, Pos+g+p)
      • 原理:在前两阶段基础上,将模型参数分区存储,在前向和反向传播时,通过动态通信(如Broadcast或All-Gather)按需获取完整参数,计算后释放冗余数据
      • 显存节省:参数显存占用降低至原来的1/N,总显存需求与数据并行度成反比
      • 通信开销
        • 通信量:适度增加约50%,主要因参数动态收集与释放引入额外通信(如All-Gather操作)
        • 通信延迟:分片后的梯度同步可能引入额外延迟,尤其在低带宽网络环境下
    • 注意:
      • GPU与进程数量:因为ZeRO的设计主要针对GPU显存优化,所以通常数据并行度Nd直接关联的是GPU数量,每个GPU通常对应一个独立的进程
      • 万亿参数模型:在启用所有三个阶段的情况下,ZeRO可以在1024个NVIDIA GPU上训练万亿参数模型
      • 通信量显著增加:通信量增加50%,对网络带宽和延迟敏感,可能成为训练瓶颈
      • 内存碎片化:频繁的动态聚合与释放导致显存碎片化,实际显存占用可能高于理论值
    • 适合场景
      • ZeRO1:适合显存需求中等、通信带宽受限的场景,且需与流水线并行结合时使用(ZeRO2/3因梯度或参数分片导致无法兼容)
      • ZeRO2:平衡显存节省与通信开销,适合大多数微调任务,但需验证收敛稳定性。
      • ZeRO3:显存节省最大化,但需在节点内使用,并配合高带宽网络,从而减少跨节点通信开销
        在这里插入图片描述
  5. ZeRO三阶段优化的执行流程
    • 链接地址
  6. 显存占用开销
    • 传统DP中,单卡显存主要由以下三部分构成(以Adam优化器为例):
      • 模型参数:16位浮点数(FP16),每个参数占2字节,总显存为 2P(P为参数量)。
      • 梯度:16位浮点数(FP16),总显存为 2P。
      • 优化器状态:包括参数(FP32)、动量(FP32)、二阶矩(FP32),每个参数占用4字节×3=12字节,总显存为 12P
        总显存 = 2 P ( 参数 ) + 2 P ( 梯度 ) + 12 P ( 优化器状态 ) = 16 P 总显存 = 2P(参数) + 2P(梯度) + 12P(优化器状态) = 16P 总显存=2P(参数)+2P(梯度)+12P(优化器状态)=16P
    • ZeRO系列三层优化
      • 优化器状态分片(ZeRO-1):将优化器状态(12P)均分到N个GPU,每个GPU仅存储1/N,显存占用为 12 P / N 12P/N 12P/N
      • 梯度分片(ZeRO-2):将梯度(2P)均分到N个GPU,每个GPU仅存储1/N,显存占用为 2 P / N 2P/N 2P/N
      • 模型参数:仍完整保留在每张GPU上,显存占用为2P
        总显存 = 2 P ( 参数 ) + ( 2 P N ) ( 梯度 ) + ( 12 P N ) ( 优化器状态 ) = 2 P + ( 14 P N ) ≈ 2 P ( N 趋向无穷) 总显存 = 2P(参数) + (\frac{2P}{N})(梯度) + (\frac{12P}{N})(优化器状态) = 2P + (\frac{14P}{N}) \approx 2P(N趋向无穷) 总显存=2P(参数)+(N2P)(梯度)+(N12P)(优化器状态)=2P+(N14P)2PN趋向无穷)
组件传统DP显存ZeRO优化显存
参数(FP16) 2 P 2P 2P 2 P 2P 2P
梯度(FP16) 2 P 2P 2P 2 P N \frac{2P}{N} N2P
优化器状态(FP32) 12 P 12P 12P 12 P N \frac{12P}{N} N12P
总显存 16 P 16P 16P 2 P + 14 P N → 2 P + 0 ≈ 1 8 × 16 P 2P + \frac{14P}{N} \rightarrow 2P + 0 \approx \frac{1}{8} \times 16P 2P+N14P2P+081×16P

ZeRO-Offload

  1. 背景
    • 问题:ZeRO优化训练过程中,参数更新相关部分的计算量较低,但是占用了大量的GPU显存
    • 解决方式:CPU拥有较多的存储资源,所以可以将大部分的低计算量的模型状态卸载(offload)到cpu内存中,从而进一步解决ZeRO显存瓶颈问题
  2. ZeRO-Offload
    • 定义:ZeRO-Offload 是 零冗余优化器ZeRO的拓展,通过利用主机CPU上的计算和内存资源来执行优化器,从而显著降低模型训练对GPU的计算和内存需求,从而实现在单个 GPU 上训练数十亿甚至数百亿参数规模的模型
    • 目标:在不降低系统计算效率的前提下,最小化系统的总显存占用
    • ZeRO-Offload 解决显存瓶颈过程中,可能导致以下两个问题:
      • 通信瓶颈:部分GPU的计算和存储下放到CPU和内存,必然涉及CPU和GPU之间的通信增加,可能影响系统计算效率
      • 计算瓶颈:GPU的计算效率相比于CPU拥有数量级上的优势,所以不能分配过多的计算任务给CPU
    • 解决方式
      • forward和backward计算量高,因此和它们相关的部分,例如 参数W(fp16),activation,就全放入GPU。
      • update的部分计算量低,因此和它相关的部分,全部放入CPU中。例如 optimizer states(fp32)和gradients(fp16)等。
        在这里插入图片描述
  3. 原理
    • 异构资源协同
      • GPU 负责计算密集型任务:执行前向传播和反向传播,生成梯度并暂存于 GPU 显存,充分利用其高效的并行计算能力
      • CPU 负责存储与参数更新:优化器状态和梯度传输至CPU内存中,CPU 完成优化器状态更新后将更新后的参数传回 GPU,减少 GPU 显存占用
      • 延迟参数更新(Delayed Parameter Update, DPU):GPU 的计算任务与 CPU 的参数更新并行执行,从而实现计算和通信的重叠。例如,在反向传播完成后,GPU 立即开始下一轮前向计算,同时 CPU 在后台完成参数更新和梯度同步
        在这里插入图片描述
    • 示例:可将单个 V100 GPU 的模型训练规模从传统方法的 13 亿参数提升至 130 亿参数
      在这里插入图片描述

1比特Adam

  1. Adam概述
    • 定义:一种自适应学习率的优化算法,通过计算梯度的一阶矩(均值)和二阶矩(方差)估计,动态调整每个参数的学习率
    • 作用:
      • 高效收敛:结合动量和自适应学习率的优势,适用于大多数非凸优化问题,能快速收敛。
      • 鲁棒性:对超参数选择相对不敏感(如学习率默认0.001),适合处理稀疏梯度或噪声较大的场景(如自然语言处理)。
      • 内存效率:仅需存储一阶矩 m t m_t mt和二阶矩 v t v_t vt,但超大模型可能出现显存不足问题
  2. Adam原理
    • 阶矩优化
      • 一阶矩(动量项):计算梯度的指数加权平均,平滑短期波动 (小球从山顶滚下来找最低点,可能会因为地面凹凸不平(噪声)而左右乱晃,但是通过动量惯性可以避免小坑(噪声)导致的偏移) m t = β 1 ⋅ m t − 1 + ( 1 − β 1 ) ⋅ g t m_t = \beta_1 \cdot m_{t-1} + (1 - \beta_1) \cdot g_t mt=β1mt1+(1β1)gt
      • 二阶矩(方差项):计算梯度平方的指数加权平均,自动为每个参数调整合适的学习率(蒙着向前走,边走边记录,遇到之前坡度大的地方,你会自动“小碎步”慢慢挪(降低学习率),防止摔倒;遇到坡度小的地方就“跨大步”(增大学习率),快速通过) v t = β 2 ⋅ v t − 1 + ( 1 − β 2 ) ⋅ g t 2 v_t = \beta_2 \cdot v_{t-1} + (1 - \beta_2) \cdot g_t^2 vt=β2vt1+(1β2)gt2
    • 偏差修正
      • 问题:由于初始值被设为0且衰减率(β)的存在,会导致早期估计值严重偏离真实梯度统计量,从而影响参数更新的稳定性
      • 解决方式:通过除以修正系数来消除初始阶段的偏差,其中衰减率 β \beta β(如0.9)会导致早期估计偏向于0 m ^ t = m t 1 − β 1 t , v ^ t = v t 1 − β 2 t \hat{m}_t = \frac{m_t}{1 - \beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1 - \beta_2^t} m^t=1β1tmt,v^t=1β2tvt
    • 参数更新
      • 结合校正后的动量与方差,调整学习率并更新参数 θ t + 1 = θ t − α ⋅ m ^ t v ^ t + ϵ \theta_{t+1} = \theta_t - \frac{\alpha \cdot \hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} θt+1=θtv^t +ϵαm^t,其中 ( β 1 ≈ 0.9 ) , ( β 2 ≈ 0.999 ) , ( ϵ ≈ 1 0 − 8 极小避免分母为零) (\beta_1 \approx 0.9), (\beta_2 \approx 0.999), (\epsilon \approx 10^{-8}极小避免分母为零) β10.9),(β20.999),(ϵ108极小避免分母为零)
        在这里插入图片描述
  3. 1比特Adam
    • 定义:由微软 DeepSpeed 团队提出一种针对分布式训练的通信压缩技术,通过将Adam的快速收敛与SGD的通信压缩特性结合,解决了大规模分布式训练中通信瓶颈问题
    • 作用
      • 保持收敛速度:预热阶段已通过Adam将模型参数调整至接近最优区域,压缩阶段的动量SGD仅需微调,因此整体收敛速度与原生Adam相当。
      • 降低通信成本:在分布式训练中,每个工作节点将本地梯度量化为1-bit表示(如符号+缩放因子),仅传输压缩后的数据,通信量减少5倍。
    • 问题:Adam的方差项(二阶矩)计算在随机梯度下降算法SGD中出现非线性依赖,当直接压缩梯度时会造成Adam的收敛速度变慢,即使加上了压缩误差补偿,训练速度依然非常慢
    • 解决方式:导致Adam出现非线性依赖的梯度Vt量在训练很短的一段时间内,其变化趋势会变得稳定。所以将1-bit Adam算法分为两个阶段,先预热处理,检测到vt变化趋势稳定后,再切换到压缩阶段进行通信压缩,同时进行误差补偿。
    • 示例:只需要10%-15%的训练步数作为Warmup,然后使用1-bit压缩可达到了32倍的压缩率,在整体上得到了5倍的压缩率
      在这里插入图片描述
  4. 1比特Adam的两阶段执行
    • 预热阶段:完全采用标准Adam优化器,利用其自适应学习率特性快速收敛。此时梯度更新公式包含动量(一阶矩)和方差(二阶矩)的非线性计算
    • 压缩阶段:停止更新Adam的方差项(二阶矩),将其作为固定预条件(Preconditioner)。随后切换到动量SGD(Momentum SGD),并对梯度进行1-bit量化压缩以减少通信量。这一阶段通过误差补偿技术(Error Compensation)抵消压缩误差,保持收敛性
    • 示例:例如,在BERT-Large训练中,如果使用64 GPU, 40Gbps Ethernet训练集群,那么可以获得3.4倍的训练加速时间
      在这里插入图片描述

Sparse Attention Kernel工具

  1. 概述
    • 定义:一种针对注意力机制优化的计算工具,通过引入稀疏性(Sparsity)来减少传统注意力机制中全连接计算的开销
    • 核心思想:利用注意力矩阵的固有稀疏性,仅计算关键位置(如局部窗口、固定块或动态选择的区域)的注意力权重,从而降低计算复杂度
    • 作用
      • 降低计算复杂度:传统注意力计算复杂度为 O ( N 2 ) O(N^2) O(N2)(N为序列长度),而稀疏注意力通过限制注意力范围,将复杂度降至 O ( N l o g N ) O(N logN) O(NlogN)或更低
      • 适配长序列输入:通过流式注意力(Streaming Attention)固定部分“记忆块”(Sink Tokens)和局部块(Local Blocks),支持更长的上下文处理
      • 混合稀疏模式:支持多种预定义的稀疏模式,这些模式通过限制注意力计算的范围来降低计算复杂度
      • 硬件加速优化:通过内存访问优化(如分组加载数据、共享键值缓存)和并行计算设计,提升GPU利用率
      • 动态选择重要区域:通过核函数(Kernel Function)或注意力权重引导,动态筛选需计算的注意力区域,避免冗余计算
        或更低
    • 关键特性:支持多种稀疏模式(如块稀疏、流式注意力、混合掩码),并允许不同注意力头采用不同的稀疏策略
  2. 稀疏注意力的预定义稀疏模式
    • 块稀疏注意力(Block-Sparse Attention)
      • 原理:基于自然语言中相邻词局部相关性更高的假设,将输入序列划分为固定大小的块(每个块包含连续的多个 token,如 64 或 128 个),仅允许块内或相邻块之间的注意力计算
      • 类型
        • 局部块注意力:每个块仅关注相邻的几个块(例如前 1 个块和后 1 个块)。
        • 全局块注意力:保留少量全局块(如序列的开头和结尾),所有块均需关注这些全局块。
    • 滑动窗口注意力(Sliding Window Attention):每个 token 仅关注其前后固定窗口内的 token(窗口大小 256 → 每个 token 仅计算与前后 128 个 token 的注意力)
    • 固定步长注意力(Strided Attention):每个 token 以固定步长(Stride)跳跃式关注其他 token,例如每个 token 关注距离为 64 的倍数的 token(如 64, 128, 192…)
    • 空洞注意力(Dilated Attention):在滑动窗口的基础上引入空洞间隔(Dilation Rate)(窗口大小 64,空洞率4 →从左到右关注位置i−64,i−60,i−56,…,i+64)
    • 全局+局部混合注意力(Global + Local Attention):
      • 全局 token:指定少量 token(如开头、结尾或关键位置)被所有其他 token 关注。
      • 局部 token:其他 token 仅按局部模式(如滑动窗口或块稀疏)关注附近 token。
  3. Sparse Attention Kernel优化原理
    • 稀疏模式设计
      • 局部性假设:相邻词相关性更高,仅计算局部窗口内注意力(如前后k个词)。
        • 固定窗口:固定窗口大小(如512 tokens)。
        • 滑动窗口:动态调整窗口范围,适配流式输入。
      • 块稀疏(Block Sparsity)
        • 将序列划分为固定块(如128 tokens/块),仅允许块内或相邻块间计算。
        • 块流式注意力:保留少量全局“记忆块”(Sink Tokens),长期存储关键信息。
      • 混合掩码策略
        • 多模式混合:不同注意力头采用不同策略
        • 全局头:少量头保留全连接,捕捉全局依赖
        • 局部头:多数头使用窗口/块稀疏,降低计算量。
        • 动态头:根据输入动态选择注意力区域(如重要段落)。
      • 动态稀疏选择
        • 基于内容的筛选:轻量级预测网络预计算token重要性得分,仅关注高得分区域。
        • Top-k选择:每个token仅与得分最高的k个token交互。
        • 阈值过滤:丢弃低于阈值的权重,直接置零。
    • 核函数化注意力计算(Kernelized Attention)
      • 核函数替代显式矩阵
      • 核心思想:用核函数隐式计算注意力权重,避免显式生成矩阵。
      • 公式转换:注意力得分替换为核函数(如线性核、高斯核)
      • 随机特征映射:随机投影近似核函数,复杂度降至线性/亚线性。
    • 低秩分解加速
      • 矩阵近似:通过SVD或低秩投影分解为低秩矩阵乘积
      • 分块低秩:对大矩阵分块后逐块低秩近似。
    • 核函数与稀疏的结合
      • 稀疏核注意力:先用核函数筛选关键区域,再精确计算该区域的传统注意力。
    • 高效内存与计算优化
      • 内存访问优化
    • KV Cache压缩
      • 分页缓存:键值张量分块管理(如4KB/块),动态分配非连续内存。
      • 共享缓存:多注意力头共享同一缓存,减少冗余。
    • 数据加载策略
      • 分组加载:合并相邻token数据,提升GPU带宽利用率。
      • 异步预加载:隐藏内存访问延迟。

混合精度

  1. 概述
    • 定义:在训练过程中,同时使用 FP16(半精度浮点数) 和 FP32(单精度浮点数) 两种精度的技术
    • 作用:
      • 减少内存占用:FP16占用的显存仅为FP32的一半,允许训练更大规模的模型或使用更大的批量大小。
      • 加速计算:FP16运算在现代GPU(尤其是NVIDIA Tensor Core)上更快,可显著提升训练速度
      • 保持模型稳定性:通过动态调整精度缩放因子(Loss Scaling)和梯度裁剪(Gradient Clipping),避免FP16导致的梯度消失或爆炸问
    • 注意:DeepSpeed还支持 BF16(Brain Floating Point) 混合精度,但需硬件支持,如NVIDIA A100
      在这里插入图片描述
  2. BP16和BF16
    • BF16:8位指数位提供高动态范围,但7位尾数位牺牲尾数精度换取指数范围与FP32对齐,可安全处理梯度爆炸/消失
    • FP16:10位尾数提供更高精度,但5位指数导致动态范围受限(仅FP32的1/19807),需依赖 动态损失缩放(Loss Scaling) 防止下溢
维度FP16 (IEEE 754半精度)BF16 (Brain Float 16)
位分配1符号位 + 5指数位 + 10尾数位1符号位 + 8指数位 + 7尾数位
动态范围±65,504±3.4×10³⁸(与FP32对齐)
数值精度高精度(10位小数位)低精度(7位小数位)
硬件起源NVIDIA GPU优化Google TPU提出,Intel/NVIDIA跟进
混合精度实现复杂度高(需动态损失缩放)低(FP32直接截断)
典型溢出问题梯度下溢(<6e-8)需缩放处理天然规避溢出(指数范围同FP32)
计算加速2-8倍(Tensor Core优化)1-3倍(依赖AMX/DPX指令集)
内存占用16位存储,但需保留缩放缓存16位存储,无额外缓存
行业应用边缘推理、计算机视觉大模型训练(GPT/BERT)、扩散模型
梯度处理需手动损失缩放(Scale=512~8192)自动处理梯度范围
行业渗透率成熟(2018年起广泛应用)快速上升(2023年后主流)

  1. 原理
    • 混合精度优化器(Mixed Precision Optimizer)
      • FP16:矩阵乘法、卷积等计算密集型操作使用FP16计算,参数和梯度也以FP16进行存储,以减少内存占用并加速计算
      • FP32:梯度更新、损失计算、归一化层(如BatchNorm)等使用FP32计算,而优化器状态使用FP32进行存储,避免因FP16动态范围有限导致的梯度下溢或溢出
      • 自动精度转换:在参数更新时,将FP32优化器状态转换为FP16参数,兼顾效率与精度。
    • 动态损失缩放(Dynamic Loss Scaling)
      • 原因:FP16的数值范围有限,当梯度值过小(例如<1e-7)时,FP16无法表示,会被截断为0(即“下溢”),导致梯度信息丢失
      • 解决:DeepSpeed会逐步尝试增大缩放因子(如每次训练迭代增加2倍),直到检测到溢出(Overflow)时,当前批次的梯度更新会被跳过(避免参数被污染)。缩放因子立即缩小(如减少为当前值的0.5倍或重置为最小值),并在后续迭代中重新尝试调整。(类似计算机网络中的滑动窗口)
    • 与ZeRO优化器协同:
      • 混合精度常与ZeRO(Zero Redundancy Optimizer)结合使用。例如,ZeRO将优化器状态、梯度和参数分片存储,进一步减少显存占用
      • ZeRO-Offload技术可将部分计算卸载到CPU,支持单GPU训练更大模型
  2. 混合精度训练流程
    • 前向传播
      • 使用FP16权重进行前向计算,显著减少显存占用(相比FP32降低50%)并加速矩阵运算
      • 保留一份FP32权重副本(称为Master Copy),确保高精度参数更新的基础
    • 反向传播:
      • 梯度计算使用FP16精度,进一步节省显存并加速
    • 参数更新
      • 将FP16梯度转换为FP32,利用其高精度特性进行稳定更新
      • 优化器基于FP32参数副本和FP32梯度进行更新,避免精度丢失
      • 更新后的FP32参数副本被截断为FP16,覆盖原始FP16权重
        在这里插入图片描述


少年,我观你骨骼清奇,颖悟绝伦,必成人中龙凤。
不如点赞·收藏·关注一波


🚩点此跳转到首行↩︎

参考博客

  1. [LLM]大模型训练DeepSpeed(一)-原理介绍
  2. DeepSpeed介绍
  3. 一种使用1-bit通信的Adam优化器
  4. 待定引用
  5. 待定引用
  6. 待定引用
  7. 待定引用
  8. 待定引用
http://www.cadmedia.cn/news/14068.html

相关文章:

  • 企业营销型网站建设哪家公司好郑州网站建设哪家好
  • 新疆建设云网站怎么查询证书芜湖seo
  • 厦门建站比较好的公司免费发布推广信息的平台有哪些
  • 广州开发区建设局网站黄埔搜狗引擎
  • 软件开发资源网站seo优化排名易下拉软件
  • 广安网站建设长沙官网seo
  • 设立网站如何建立网站
  • 建筑网片铁丝规格西安seo排名公司
  • 学院网站建设的特色淘宝关键词推广
  • 哪家网站建设公司郑州seo排名哪有
  • 建站行业span分析营销管理系统
  • 微信公众号小程序搭建win优化大师有免费版吗
  • 网站建设选哪家公司关键字排名软件官网
  • 网站置顶代码北京搜索引擎优化经理
  • 网站后台管理系统使用方法百度一下百度知道
  • 嘉兴自助建站软件深圳网络推广网络
  • 加强 政府 网站 建设项目网页设计首页制作
  • 西昌市建设工程管理局网站发布平台有哪些
  • 免费建网站的app在线域名查询网站
  • 网站建设中的ftp地址如何创建一个平台
  • 局域网网站怎么做优秀营销软文范例100字
  • 开封网站网站建设百度seo排名优化公司
  • 网站建设商怎么注册个人网站
  • 公众号如何做网站网络营销公司热线电话
  • siteground建站教程手机百度搜索
  • 建筑行业培训seo的流程是怎么样的
  • 千图网官网素材给你一个网站seo如何做
  • 网站建设与维护工作待遇整站快速排名
  • 微网站和门户网站的区别郑州seo阿伟
  • 为进一步加强校园网站建设建一个app平台的费用多少