首页 > 其他分享 >SSD:清华出品,可切换密集稀疏的大模型预训练加速方案 | ICML'24i3

SSD:清华出品,可切换密集稀疏的大模型预训练加速方案 | ICML'24i3

时间:2024-11-28 14:13:28浏览次数:6  
标签:训练 ICML 模型 聚类 稀疏 SSD 激活 24i3

来源:晓飞的算法工程笔记 公众号,转载请注明出处

论文: Exploring the Benefit of Activation Sparsity in Pre-training

创新点


  • 研究了激活属性在预训练过程中的变化,发现Transformer在大多数预训练过程中表现出稀疏激活,同时激活相关性随着训练的进行而不断演变。
  • 提出了可切换的稀疏-密集学习(Switchable Sparse-Dense LearningSSD),在预训练过程中自适应地在基于专家混合(Mixtures-of-Experts, MoE)稀疏训练和传统的密集训练之间切换,充分利用稀疏训练的效率,避免了稀疏训练的静态激活相关性。
  • 与密集训练相比,SSD在相同模型规模下实现了可比的性能,并降低了预训练成本。
  • 使用SSD训练的模型可以直接作为MoE模型用于稀疏推理,并且在推理速度上可实现与密集模型相同的性能,速度提升可达 2× 。

内容概述


预训练的Transformer本质上具有稀疏激活的特征,即每个token只有一小部分神经元被激活。尽管稀疏激活在后训练(推理)方法中得到了探索,但其在预训练中的潜力仍未被发掘。

论文研究了Transformer在预训练过程中的激活情况,发现模型在预训练的早期阶段变得稀疏激活,随后在这种稀疏状态中稳定下来。尽管这表明稀疏激活是一个普遍现象,但激活模式仍然是动态的:对于某个输入,被激活的神经元集合在不同的预训练阶段之间存在变化。因此,针对预训练的稀疏训练方法应该适应激活模式的变化。

基于这些观察,论文提出了可切换稀疏-密集学习(Switchable Sparse-Dense LearningSSD),利用稀疏激活现象加速Transformer的预训练,并提高推理效率。

SSD包含两种训练阶段:

  • 原始的密集训练,有助于激活模式的演变。
  • 稀疏训练,旨在在激活模式稳定之后有效优化模型参数。

在整个预训练过程中,SSD在这两个阶段之间切换。具体而言,当激活稀疏性增加并且激活模式变得稳定时,通过将密集模型转换为稀疏激活专家混合模型(Sparsely-activated Mixture-of-ExpertsSMoE)来切换到稀疏训练,从而有效近似原始密集模型。此外,最终的密集模型熟悉稀疏计算形式,这对后续的稀疏推理是有利的。

与传统的密集训练相比,SSD在相同模型大小和更少的预训练成本下实现了可比的性能,在FLOPs上实现了高达 1.44× 的加速。此外,使用SSD预训练的模型可以作为SMoE模型进行推理,而无需任何额外训练,同时将前馈网络的推理时间减少了高达 2× ,且性能与密集预训练模型相当。

SSD


SSD专注于加速Transformer中的前馈网络(通常占总计算量的60%以上),通过在预训练阶段切换稀疏和密集模式实现加速。

  1. 在稀疏计算下,模型被转换为SMoE模型,相较于其原始形式,计算成本更低。稀疏激活使得SMoE模型能够模拟原始模型,从而在效率和效果之间取得平衡。
  2. 在密集计算期间,所有模型参数都被计算和优化,以实现更好的性能。

最终模型恢复为密集配置,以充分利用模型容量。此外,最终模型也适配稀疏计算,可以直接用于高效的稀疏推理,而无需任何额外的训练。

在密集计算中,前馈网络(FFNs)通过以下方式计算:

FFN(x)=Woσ(Wix+bi)+bo,在稀疏计算中,前馈网络(FFNs)被均分为 N 个专家,并以SMoE的方式进行计算,

FFNSMoE(x)=N∑n=1αnWo,nσ(Wi,nx),使用门控网络来评估每个专家对于给定输入 x 的重要性,选择重要性分数最高的 K 个专家来计算输出。未被选择的专家的 αn 被设置为 0 。

密集转换为稀疏

  • 神经元聚类

使用平衡的k-means聚类将 Wi 的行(每一行代表一个特定神经元)聚类成 N 组,假定具有相似权重的神经元更可能被同时激活。

基于聚类结果 s∈Rdff ,其中包含每个神经元的相应专家索引,将权重矩阵 Wi,Wo 分割为 N 个子矩阵 Wi,n,Wo,n 。

为了使转换更平滑,使用前一个checkkpoint的聚类中心作为当前checkkpoint聚类的初始化。这个简单的策略通常提供更好的结果,小于随机初始化中心的簇内平方和(WCSS)。

为了避免局部最优(特别是训练早期),进行两次聚类,一次使用随机初始化,另一次使用来自前一个checkkpoint的初始化,并选择更好的结果。形式上,第 j 次checkkpoint的聚类结果 sj 由以下公式计算:

sj=mins∈{f(Wi),f(Wi,sj−1)}WCSS(Wi,s),其中 f(Wi) 和 f(Wi,sj−1) 分别是使用随机初始化和来自前一个checkkpoint的初始化的聚类结果。

  • 专家选择

使用输入 x 与聚类中心之间的相似性作为重要性评分,以选择前 K 个专家。形式上,第 n 个专家的重要性评分由以下公式计算:

αn=x⊤cn,cn=NdffdffN∑m=1Wmi,n,其中 Wmi,n 是 Wi,n 的第 m 行,而 cn 是第 n 个专家的聚类中心。

  • 转换时机

通过监控激活模式的变化以确定过渡时间,其中激活模式的相似性反映了激活模式的变化速率,当激活稀疏度较高且激活模式稳定时进行转换。

具体而言,设定一个阈值 τ ,当两个连续checkkpoint之间的激活模式相似性大于 τ 时切换到稀疏训练。

稀疏转换为密集

SMoE模型的性能往往落后于具有相同参数的稠密模型,为了最优地利用模型容量并避免稀疏计算形式的过拟合,在训练期间战略性地多次回归到稠密训练。

当 K=N 时,SMoE计算与稠密计算是一致的,因此过渡到稠密计算是平滑的。通过连接所有专家的权重矩阵来进行此转换,从而获得稠密权重矩阵,同时忽略门控网络。

这个过渡使得全参数优化成为可能,有效缓解了稀疏训练引起的表示崩溃问题,并促进了激活模式的演变。

  • 转换时机

为了实现可控的速度比率,建议保持稀疏训练步骤与所有训练步骤之间的常数比率 r 。此外,为了确保最终模型可以进行稠密使用,在训练结束时采用稠密训练。

主要实验


如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

work-life balance.

标签:训练,ICML,模型,聚类,稀疏,SSD,激活,24i3
From: https://www.cnblogs.com/westworldss/p/18574167

相关文章

  • GaussDB数据库SQL系列-表连接(JOIN)
    一、前言SQL是用于数据分析和数据处理的最重要的编程语言之一,表连接(JOIN)是数据库中SQL的一种常见操作,在实际应用中,我们需要根据业务需求从两个或多个相关的表中获取信息。二、GaussDBJOINGaussDB是华为推出的企业级分布式关系型数据库。GaussDBJOIN子句是基于两个或者多个表......
  • GaussDB数据库SQL系列-UNION & UNION ALL
    一、前言SQL(结构化查询语言)是一种用于管理关系型数据库的标准语言。它允许用户通过使用SQL语言来操作数据库中的数据。而在SQL中,UNION是一个非常强大的功能,它可以将多个SELECT语句的结果合并成一个结果集。本文将以GaussDB数据库为例,介绍一下UNION操作符的使用。二、GaussDBUN......
  • GaussDB数据库SQL系列-SQL与ETL浅谈
    一、前言在SQL语言中,ETL(抽取、转换和加载)是一种用于将数据从源系统抽取到目标系统的过程。ETL过程通常包括三个阶段:抽取(Extract)、转换(Transform)和加载(Load)。但这些其实都脱离不了数据库系统,本节从GaussDB数据库生态出发,给大家简单讲一下SQL与ETL的过程与关系。二、SQL与ETL的......
  • GaussDB技术解读系列:运维自动驾驶探索
    ​随着企业数字化转型进入深水区,数据库系统越来越复杂,运维团队维护的数据库规模越来越大,传统工具化的运维已无法满足当前运维的要求,数据库运维逐渐向智能化发展。如何更好地感知和预测数据库故障,进而进行智能诊断、自适应恢复,是我们一直探索的内容。接下来本篇将分享GaussDB在运......
  • SSD(Single Shot MultiBox Detector)目标检测
    **SSD(SingleShotMultiBoxDetector)**是一种广泛使用的目标检测算法,它能够在单个前向传递过程中同时进行目标的分类和定位,从而实现实时、高效的目标检测。SSD是一种基于卷积神经网络(CNN)的目标检测方法,它的创新点在于通过多个尺度的特征图来检测目标,这使得SSD在速度和精度之......
  • GaussDB分区表查询性能异常分析
    问题现象使用分区表进行相关查询业务,SQL性能慢。原因分析导致分区表业务慢的常见原因有以下几种:分区索引失效,顺序扫描导致的SQL性能慢分区表无法进行分区剪枝导致的SQL性能慢SQL计划选择非最优导致的SQL性能慢处理方法判断是否存在索引异常的行为部分分区DDL如果不带UP......
  • GaussDB内存过载分析
    问题现象数据库进程内存占比较高长时间占比较高观察监控平台内存占用的变化曲线,无论当前数据库是否有业务在运行,数据库进程内存占总机器内存的比例长时间处于较高状态,且不下降。执行作业期间占比较高数据库进程在没有业务执行时,内存使用持续处于较低的状态,当有业务执行时,内......
  • GaussDB SQL调优:建立合适的索引
    ​背景GaussDB是华为公司倾力打造的自研企业级分布式关系型数据库,该产品具备企业级复杂事务混合负载能力,同时支持优异的分布式事务,同城跨AZ部署,数据0丢失,支持1000+扩展能力,PB级海量存储等企业级数据库特性。拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关......
  • 再识华为云数据库——GaussDB
    前言:华为云数据库GaussDB是一款拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力,能为企业提供功能全面,稳定可靠,扩展性强,性能优越的企业级数据库服务。同时具有PB级海量数据存储、实时高效访问、自动化运维等特点,广泛应用于金融、电信、物流、电商、政......
  • 通过公网连接GaussDB数据库实例
    @目录1.通过公网连接GaussDB1.1实验介绍1.1.1关于本实验1.1.2实验目的1.2购买GaussDB数据库(可选)1.3公网IP绑定1.3.1购买弹性公网IP1.3.2绑定GaussDB数据库2附录一:安装和配置JDK2.1下载并安装JDK2.2配置JDK环境变量本实验概览图1.通过公网连接GaussDB1.1实验介绍......