大模型的内存优化策略大公开,快收藏!

IT阅读排行榜 2024-11-07 14:45

导读:在训练大规模模型时,除了采用分布式训练降低单节点内存使用之外,还有一些其他的内存优化策略。

首先我们分析一下训练过程中内存的开销,主要可分为以下4部分


  • 模型参数:神经网络权重。

  • 优化器状态:与优化算法相关,不同算法需要不同的中间变量存储。

  • 中间结果:前向计算得到的激活中间结果,存储待反向传播时计算梯度使用。

  • 临时存储:模型实现中的其他计算临时变量,用完后尽快释放。

其中,模型参数与临时存储在训练和推断中都需要,而优化器状态和中间结果仅在训练中使用。


本文将介绍的几种显存优化方案从模型训练本身入手,对上面一个或多个部分进行优化:


  • 混合精度训练可以优化模型参数、优化器状态和中间结果存储

  • 梯度检查点和梯度累积主要优化中间结果存储

  • FlashAttention是专为处理Transformer中的注意力层内存限制而设计的

1混合精度训练

更大的模型需要更多的计算和存储资源进行训练和推理,而模型性能由3个因素决定:存储带宽、算术带宽和延迟


降低精度可以解决前两者的瓶颈:用更少的比特存储同样参数量减少存储带宽压力,低精度计算也会带来更高的吞吐。


混合精度训练(Mixed Precision Training)可以在尽量不损失模型精度的条件下,加速模型训练并减少显存占用。同时,它也不需要改变模型结构和参数,是大模型训练的重要技术之一。


现代深度学习系统默认使用单精度(FP32)格式进行训练。所谓混合精度训练,并不是简单地将模型参数和激活精度降至半精度(FP16),这么做可能导致严重的模型精度损失或参数溢出问题。因此,混合精度训练主要解决的问题是如何在不损失模型精度的条件下使用FP16进行训练。具体来说需要结合3项技术:维护一套单精度的模型权重、缩放损失和使用FP32进行加法累积。


先回顾半精度浮点数FP16的定义,IEEE754标准定义了半精度浮点数的格式:

  • 符号位:1bit。

  • 指数位宽:5bit。

  • 尾数精度:10bit。

单精度与半精度浮点数格式对比如图1所示,与单精度浮点数相比,半精度浮点数的指数位宽由8bit缩为5bit,尾数精度由23bit缩为10bit。


图1 浮点数定义格式

我们具体介绍混合精度训练的关键技术与细节,主要包括母版权重复制(Master Copy of Weight)、损失缩放(Loss Scaling)与精度累加(Precision Accumulated)三部分。


1. 母版权重复制


首先,需要额外存储一套FP32模型权重,即母版权重,而中间结果如激活和梯度都存储为FP16格式。


图2对神经网络中的一层的训练过程进行示意。对于一层神经网络,在每轮迭代中,先将母版权重复制成FP16格式权重(float2half),然后参与前向计算和后向计算,从而降低一半的存储和带宽开销。最后将FP16的权重梯度更新至母版权重,一轮迭代完成。

图2 混合精度训练过程示意

存储FP32的母版权重有两个原因:


  • 第一,待更新的梯度值非常小,以至于FP16无法表示。经验统计,约有5%的权重更新值小于,此时更新梯度归零,影响模型精确度。

  • 第二,权重值与权重更新值之间的差异过大(两者比值大于2048)时,浮点数计算右移对齐可能导致权重更新值归零。


这两种归零情况都可以通过使用FP32母版权重进行参数更新来解决。


2. 损失缩放


虽然存储FP32参数复制会带来一些额外的存储开销,但考虑到训练过程中主要的存储开销来源于较大的批次和用于反向传播的中间结果,而这些激活值使用FP16进行存储,所以总体存储开销还是可以降低大约一半


如图3所示,统计Multibox SSD detector network训练中所有神经网络层的梯度值,其中,梯度为0的激活值约占67%,单独表示。显然,大部分的指数表示都偏左(偏小),超出了FP16的最小表示范围,因此会归零。


图3 Multibox SSD detector network训练梯度值柱状图

考虑到梯度取值都很小,一种简单、高效的做法是将它们在前向计算时扩大数倍,而在反向传播后更新参数前再同比缩小,从而减少计算精度损失,这种方法被称为损失缩放。


缩放的倍数选择对结果影响不大,只要缩放后的计算不产生溢出就不会对模型带来负面影响。在计算过程中如果发现有溢出,直接将本次迭代忽略即可。


对于图3中的示例,将在FP16中变为0的部分缩放至FP16可表示区域即可,即缩放倍数为8(将平移至)即可达到与FP32训练相同的模型准确度,这在一定程度上说明当梯度小于时,这些更新对模型精度的影响已然微乎其微,而处于之间的梯度更新对最终结果有显著影响。


3. 精度累加


最后,点乘和向量元素累加归约算术操作(如批归一化和Softmax)需要用FP32格式,而在写入内存前转换成FP16,可以减少模型精度损失。在训练过程中,这些运算的瓶颈是存储带宽,变为FP32后虽然算术操作速度本身变慢,但对总体的训练速度影响不大。


表1对混合精度训练的性能进行了对比,实验证明,混合精度训练对模型精度的影响不大,但可以减少约一半的显存开销


表1 混合精度训练性能对比

模型

基线

混合精度

AlexNet

56.77%

56.93%

VGG-D

65.40%

65.43%

GoogleLeNet(Inception v1)

68.33%

68.43%

Inception v2

70.03%

70.02%

Inception v3

73.85%

74.13%

Resnet50

75.92%

76.04%

2梯度检查点


前文提到显存的主要开销之一是反向传播所需要的中间结果,梯度检查点(Gradient Checkpointing)的主要优化点就在于此。梯度检查点是个典型的用时间换空间节省显存开销的方案,可以将训练的显存开销由降至


训练过程中显存的开销主要是模型参数、参数梯度、优化器状态及中间结果。大多数算子都依赖前向计算的中间结果进行反向传播,因此我们需要的显存存储这些前向中间结果。


为了节省显存开销,梯度检查点仅保留少量前向计算结果,而在反向传播需要这些结果时,再进行一次前向计算将中间结果恢复。更具体来说,将神经网络切分成几段,仅记录每段的输出而扔掉在此段中的所有中间结果,这些丢弃的中间结果在反向传播时重新计算并恢复。对于前馈神经网络,梯度检查点技术可用牺牲20%训练时间的代价,训练10倍于原始方案的模型,显著降低显存的占用。

图4所示为五节点前馈神经网络,可在前向计算过程中仅保留1、3、5三个节点的中间结果,而在反向传播需要时,通过前向计算恢复2(最近节点为1)、4(最近节点为3)节点的中间结果。


图4 五节点前馈神经网络


图5展示了使用梯度检查点技术后,在GTX1080上训练不同规模ResNet所用内存和训练时间的变化,训练过程中的峰值显存使用显著降低,代价是训练时长的些许增加。

图5 应用梯度检查点后,在GTX1080上训练不同规模ResNet所用内存和训练时间对比

3梯度累积

在训练模型时,不同的批次大小对最终结果的影响很大。研究证明,更大的批次可以使训练更加高效,模型性能更好。但更大的批次占用更多显存,GPU显存的硬件限制导致批次的扩展受限。


为解决此问题,梯度累积(Gradient Accumulation)应运而生,通过累积多个批次的梯度,可将一个大批次分割成多个迷你批次,从而降低每次计算的显存开销


如前所述,训练时显存占用主要由模型参数、优化器状态、中间结果和临时存储构成。随着批次增大,更多样本的计算结果如激活需要在前向计算过程中存储,也就导致中间结果所需显存增加。可以认为,激活所占存储与批次大小成正比。


为了突破显存的限制,还是采取分治的思想切分批次,有两种不同的实现方式:梯度累积或数据并行。


梯度累积是在同一GPU上串行计算多个迷你批次的结果,最后将它们的梯度累加并更新模型参数。具体来说,梯度累积修改了训练的最后一个步骤,原始实现是在每个批次计算完毕后都更新模型参数,梯度累积则是继续进行下一个批次,并将梯度累加,在多个批次执行完毕之后,将累加后的梯度一并更新模型参数。


如图6所示,假设全局批次有128个样本,将原本的一个批次分为4个迷你批次后,每个迷你批次含有32个样本,每个批次仅需要对32个样本进行梯度计算,对4个迷你批次计算完成后,将累积的4个梯度一并更新模型参数即可。

图6 梯度累积示意


数据并行则是一种分布式训练架构,用多个GPU分别训练更小的批次,在每个迭代的末尾将梯度归约,更新模型参数。


对比图6与图7可以发现,数据并行与梯度累积的主要区别在于切分的维度不同,数据并行按空间切分,将迷你批次放置于不同GPU上,而梯度累积按时间切分,将迷你批次分时计算。

图7 数据并行示意


显然,数据并行可以加速训练,梯度累积会消耗更多的训练时间。但是数据并行与梯度累积可以结合使用,用多个GPU并进行梯度累积,更高效地训练大模型。


值得注意的是,由于某些网络层如批正则(Batch Normalization)将会在迷你批次中计算而非在原始批次中计算,梯度累积的结果可能与原始训练的结果稍有不同。

4FlashAttention

 

FlashAttention是专为处理Transformer中的注意力层内存限制而设计的。


在原始的Transformer模型中,由于注意力层的内存需求与序列长度呈平方增长()关系,大模型受到了计算和存储的双重制约。


FlashAttention通过减少GPU高带宽内存和GPU片上SRAM之间的内存读写次数,解决了Transformer在处理长序列时速度较慢和内存占用过高的问题。


如图8所示,从访问速度来看,GPU SRAM优于GPU高带宽内存(High Bandwidth Memory,HBM),而GPU HBM又优于CPU内存。

图8 内存访问速度与大小层次示意

基于此观察,FlashAttention通过将注意力矩阵分解为多个小块,将内存读写次数降至最低。具体来说,FlashAttention将注意力矩阵分解为多个子矩阵,并将每个子矩阵存储在GPU SRAM中。这样,当计算注意力矩阵时,仅需要在GPU HBM和GPU SRAM之间进行少量的内存读写操作,从而大大减少了内存读写次数,提高了计算效率。


与传统实现不同,FlashAttention在前向传递期间避免存储大型注意力矩阵,而在反向传播期间在SRAM中重新计算(思路与梯度检查点类似),从而显著降低了内存占用,同时为长序列计算带来了显著的加速(2~4倍)。


此外,FlashAttention还具有IO感知能力,它可以根据不同的硬件配置和数据集特征,自动调整注意力矩阵的分解方式,以最大程度地减少内存读写次数。这使得FlashAttention可以在不同的硬件平台上实现高效的计算,并且具有更好的可移植性。该算法不仅实现了更快的Transformer训练,而且在模型性能上也优于现有的注意力方法。

5四种策略的适用情况

 

  • 混合精度训练通过使用半精度浮点数(FP16)替代传统的单精度浮点数(FP32),减少了内存占用,同时引入了母版权重复制、损失缩放和精度累加等机制来保证模型精度不受影响。

  • 梯度检查点技术则通过在反向传播时重新计算中间结果来节省内存,尽管这会增加一定的计算时间。

  • 梯度累积允许将大批次划分为多个小批次进行计算,从而降低单次计算的内存需求,适用于显存受限的情况。

  • FlashAttention专注于解决Transformer模型在处理长序列时遇到的内存和计算效率问题,通过将注意力矩阵分解为多个小块并利用GPU的快速存储,减少了内存读写次数,提高了计算效率。


这些内存优化策略各有侧重,能够有效应对大规模模型训练中面临的内存挑战,提升训练效率和模型性能。


作者简介:

苏之阳(博士),现任微软资深应用科学家,小冰前研发总监,专注于搜索排序算法和对话系统研发,曾主导了小冰智能评论和小冰框架等项目的架构设计和开发,在大语言模型的研发与应用方面具有丰富的经验。

王锦鹏(博士),致力于自然语言处理和推荐系统的研发,拥有在微软亚洲研究院等科技公司担任关键技术岗位的经验,参与了Office文档预训练、推荐大模型等多个重要项目的研发和优化工作。

姜迪(博士),拥有十余年工业界研发和管理经验,在雅虎、百度等知名互联网企业工作期间,为企业的多个关键业务研发了核心解决方案。

宋元峰(博士),曾就职于百度、腾讯等互联网公司,在人工智能产品开发领域拥有丰富的经验,研究涉及自然语言处理、数据挖掘与可视化等方向。


文章来源:IT阅读排行榜

本文摘编自《大语言模型:原理、应用与优化》,苏之阳、王锦鹏、姜迪、宋元峰 著,机械工业出版社出版,经出版方授权发布,转载请标明文章来源。

延伸阅读

大语言模型:原理、应用与优化

苏之阳 等著

微软等大厂的4位博士撰写

为研究人员和开发者提供系统性参考

零基础理解大模型、构建大模型和使用大模型


内容简介:

这是一本从工程化角度讲解大语言模型的核心技术、构建方法与前沿应用的著作。首先从语言模型的原理和大模型的基础构件入手,详细梳理了大模型技术的发展脉络,深入探讨了大模型预训练与对齐的方法;然后阐明了大模型训练中的算法设计、数据处理和分布式训练的核心原理,展示了这一系统性工程的复杂性与实现路径。


除了基座模型的训练方案,本书还涵盖了大模型在各领域的落地应用方法,包括低参数量微调、知识融合、工具使用和自主智能体等,展示了大模型在提高生产力和创造性任务中的卓越性能和创新潜力。此外,书中进一步介绍了大模型优化的高级话题和前沿技术,如模型小型化、推理能力和多模态大模型等。最后,本书讨论了大模型的局限性与安全性问题,展望了未来的发展方向,为读者提供了全面的理解与前瞻性的视角。

  • 本文来源:原创,图片来源:原创

  • 责任编辑:王莹,部门领导:宁姗

  • 发布人:白钰

IT阅读排行榜 技术圈的风向标,有趣,有料,有货,有品又有用
评论
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 223浏览
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 93浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 204浏览
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 158浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 124浏览
  • 故障现象一辆2017款东风风神AX7车,搭载DFMA14T发动机,累计行驶里程约为13.7万km。该车冷起动后怠速运转正常,热机后怠速运转不稳,组合仪表上的发动机转速表指针上下轻微抖动。 故障诊断 用故障检测仪检测,发动机控制单元中无故障代码存储;读取发动机数据流,发现进气歧管绝对压力波动明显,有时能达到69 kPa,明显偏高,推断可能的原因有:进气系统漏气;进气歧管绝对压力传感器信号失真;发动机机械故障。首先从节气门处打烟雾,没有发现进气管周围有漏气的地方;接着拔下进气管上的两个真空
    虹科Pico汽车示波器 2025-01-08 16:51 70浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 117浏览
  • 「他明明跟我同梯进来,为什么就是升得比我快?」许多人都有这样的疑问:明明就战绩也不比隔壁同事差,升迁之路却比别人苦。其实,之间的差异就在于「领导力」。並非必须当管理者才需要「领导力」,而是散发领导力特质的人,才更容易被晓明。许多领导力和特质,都可以通过努力和学习获得,因此就算不是天生的领导者,也能成为一个具备领导魅力的人,进而被老板看见,向你伸出升迁的橘子枝。领导力是什么?领导力是一种能力或特质,甚至可以说是一种「影响力」。好的领导者通常具备影响和鼓励他人的能力,并导引他们朝着共同的目标和愿景前
    优思学院 2025-01-08 14:54 61浏览
  •  在全球能源结构加速向清洁、可再生方向转型的今天,风力发电作为一种绿色能源,已成为各国新能源发展的重要组成部分。然而,风力发电系统在复杂的环境中长时间运行,对系统的安全性、稳定性和抗干扰能力提出了极高要求。光耦(光电耦合器)作为一种电气隔离与信号传输器件,凭借其优秀的隔离保护性能和信号传输能力,已成为风力发电系统中不可或缺的关键组件。 风力发电系统对隔离与控制的需求风力发电系统中,包括发电机、变流器、变压器和控制系统等多个部分,通常工作在高压、大功率的环境中。光耦在这里扮演了
    晶台光耦 2025-01-08 16:03 61浏览
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 108浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 164浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 141浏览
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 124浏览
  • 本文介绍编译Android13 ROOT权限固件的方法,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。关闭selinux修改此文件("+"号为修改内容)device/rockchip/common/BoardConfig.mkBOARD_BOOT_HEADER_VERSION ?= 2BOARD_MKBOOTIMG_ARGS :=BOARD_PREBUILT_DTB
    Industio_触觉智能 2025-01-08 00:06 92浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦