Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

张倩、杜伟报道

Jeff Dean:我们写了一份「稀疏模型设计指南」,请查收

稀疏模型在深度学习领域发挥着越来越重要的作用。对于给定的 token 或样本,它可以只激活模型的一小部分,从而在拥有很大的参数量的同时也能做到计算友好。但是,如何可靠地训练这类模型依然是一个需要解决的问题。在这篇文章中,来自谷歌的 Barret Zoph、Irwan Bello、William Fedus 、Jeff Dean 等研究者给出了一份「高效稀疏专家模型设计指南」。


图片



稀疏专家神经网络展示了纯规模的优势,并为当今常用的静态神经网络架构提供了一种有效的替代方案。稀疏专家网络不是对所有输入应用相同的参数,而是为每个输入动态选择使用哪些参数。这允许网络极大地扩展参数的数量,同时保持每个 token 的 FLOPs 大致不变。这些方法的采用已经带来了 SOTA 翻译模型、4-7 倍的预训练加速,以及仅使用 1/3 的训练成本就能达到 GPT-3 级的 one-shot 性能。尽管参数数量惊人,但稀疏模型将训练大型神经网络的碳足迹降低了一个数量级。然而,困难依然存在。

Fedus et al. (2021)观察到,与之前的 SOTA 方法(Raffel et al., 2019)相比,稀疏 1.6T 参数模型实现了 4 倍的预训练加速,但在 SuperGLUE 等常用基准上进行微调时,却落后于较小的模型。在 Artetxe et al. (2021)中,研究者在域外数据上对 MoE 语言模型进行了微调,并观察到了相似的差距。

为了解决这一问题,Switch-XXL 模型被提出,该模型参数较少,但计算占用空间增加到原来的 8 倍(FLOPs 大约等于最大的 T5 模型),在自然语言理解任务上的性能有所提高。然而,必要的预训练受到先前在小规模研究中未检测到的训练不稳定性的阻碍。这些不稳定性后来在其他稀疏模型中被识别出来。这些结果揭示了参数和计算的必要平衡,但如何可靠地训练这种模型依然是一个待解决的问题。

这篇论文的目的就是提高稀疏模型的实用性和可靠性。他们研究了这两个问题,并给出了设计指南。最后,他们将稀疏模型的参数缩放到 269B,其计算成本与 32B 密集编码器 - 解码器 Transformer(稳定、可迁移的 Mixture-of-Experts、ST-MoE-32B)相当。这是稀疏模型首次在迁移学习中实现 SOTA 性能,跨越了一系列不同的任务,包括推理(SuperGLUE、ARC Easy、ARC Challenge)、摘要(XSum、CNN-DM)、闭卷问答(WebQA、Natural Questions)和对抗式构造任务(Winogrande、ANLI R3)。

图片


本文的贡献可以概括如下:

1、开展了一项关于稳定性技术的质量 - 稳定性权衡(quality-stability trade-offs)大规模研究;
2、引入了 router z-loss 来解决稳定性问题,同时略微提高了模型质量;
3、给出了关于稀疏和密集模型的微调分析,揭示了二者对批大小和学习率的不同超参数敏感性;他们发现,糟糕的超参数导致密集模型上几乎没有微调增益,尽管预训练有很大的加速;
4、给出了分布式环境下设计 Pareto 高效稀疏模型的架构、routing 和模型设计原则;
5、给出了追踪跨专家层的 token routing 决策的定性分析;
6、训练出了一个 269B 稀疏模型,在一组不同的自然语言基准上实现了 SOTA 性能。

router z-loss

稳定神经网络最成功的方法之一是对激活的约束和梯度。一种流行的方法是在通过深度网络反向传播时,裁剪梯度范数来弥补爆炸梯度。

在这篇论文中,研究者使用 Adafactor 优化器是因为它的内存效率(尽管最近推出的 8 位优化器 (Dettmers et al., 2021) 可能会提供更好的 trade-off)。Adafactor 使用更新裁剪(update clipping),而不是梯度裁剪(gradient clipping),其中对权重的更改被限制在一定的范数以下。他们尝试将更新裁剪收紧到更小的值。

接下来,他们研究了即将进入 router 的 logit 上的约束。router 以 float32 计算专家的概率分布。然而,研究者发现,在最大的规模下,这不足以带来可靠的训练结果。为了解决这个问题,他们引入了 router z-loss,

其中,B 是 token 的数目,N 是专家数,x ∈ RB×N 是将要进入 router 的 logit。

下表 4 显示,在三次运行中,update clipping 和 router z-loss 都稳定了模型,但是 update clipping 严重影响了模型的质量。因此,研究者使用 z-loss 方法来固定模型稳定性。

图片


router z-loss 引入了另一个超参数 (c_z),这是一个加权系数,作为优化的总损失的一部分。总损失是交叉熵损失 (cross entropy loss, L_CE)、辅助负载平衡损失 (auxiliary load balance loss, L_B) 和 router z-loss (L_Z) 的线性加权组合。

图片


基于用超参数扫描进行预训练后的最佳模型质量,研究者选择 c_z = 0.001 的值。附录 B 记录了预训练过程中的损失。

稀疏模型的设计

密集模型的设计受到 Kaplan et al. (2020) 的基础工作的指导。但是到了稀疏模型这里,还有无数的额外问题需要解决,比如:(1)使用多少专家?(2)使用哪种 routing 算法?(3)容量因子(capacity factor)的值是多少?(4)硬件如何改变这些决策?在本文中,研究者给出的建议是:

1、在他们的设置中,他们推荐容量因子为 1.25 的 top-2 routing,每个核心最多有一个专家;
2、在评估期间,可以更改容量因子,以适应新的内存 / 计算要求;
3、密集层叠加和乘法偏置(multiplicative bias)可以提高质量。

 更多细节请参考原论文。

图片


论文链接:https://arxiv.org/pdf/2202.08906.pdf
理论稀疏模型Jeff Dean
2
相关数据
范数技术

范数(norm),是具有“长度”概念的函数。在线性代数、泛函分析及相关的数学领域,是一个函数,其为向量空间内的所有向量赋予非零的正长度或大小。半范数反而可以为非零的向量赋予零长度。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

交叉熵技术

交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小

自然语言理解技术

自然语言理解是人工智能的核心课题之一,也被广泛认为是最困难和最具标志性的任务。最经典的两个人工智能思想实验——图灵测试和中文房间,都是围绕自然语言理解来构建的。自然语言理解在人工智能技术体系中的重要性不言而喻,它一方面承载着机器和人的交流,另一方面直达知识和逻辑。自然语言理解也是人工智能学者孜孜以求的圣杯,机器学习的巨擘 Michael I. Jordan 就曾经在 Reddit 上的 AMA(Ask Me Anything)栏目中畅想用十亿美元建立一个专门用于自然语言理解的实验室。

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

概率分布技术

概率分布(probability distribution)或简称分布,是概率论的一个概念。广义地,它指称随机变量的概率性质--当我们说概率空间中的两个随机变量具有同样的分布(或同分布)时,我们是无法用概率来区别它们的。

学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

专家网络技术

专家网络建立在专家系统(expert system)的基础之上,它的本质是一个事件驱动性的(event-driven)神经网络。与普通神经网络不同,专家网络的线性和非线性处理更加复杂,因为它以知识库(knowledge base)和推理机(inference machine)为基础。根据知识库构造一个推理网络,用专家系统的推理规则(inference rule)定义网络节点的线性和非线性处理函数。知识库系统的主要工作是搜集人类的知识,将之有系统地表达或模块化,使计算机可以进行推论、解决问题。推理机是由算法或决策策略来进行与知识库内各项专门知识的推论,依据使用者的问题来推得正确的答案。因此,专家网络初始的拓朴结构由知识库确定,网络的动态性则由推理机确定。

迁移学习技术

迁移学习是一种机器学习方法,就是把为任务 A 开发的模型作为初始点,重新使用在为任务 B 开发模型的过程中。迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务,虽然大多数机器学习算法都是为了解决单个任务而设计的,但是促进迁移学习的算法的开发是机器学习社区持续关注的话题。 迁移学习对人类来说很常见,例如,我们可能会发现学习识别苹果可能有助于识别梨,或者学习弹奏电子琴可能有助于学习钢琴。

参数模型技术

在统计学中,参数模型是可以使用有限数量的参数来描述的分布类型。 这些参数通常被收集在一起以形成单个k维参数矢量θ=(θ1,θ2,...,θk)。

优化器技术

优化器基类提供了计算梯度loss的方法,并可以将梯度应用于变量。优化器里包含了实现了经典的优化算法,如梯度下降和Adagrad。 优化器是提供了一个可以使用各种优化算法的接口,可以让用户直接调用一些经典的优化算法,如梯度下降法等等。优化器(optimizers)类的基类。这个类定义了在训练模型的时候添加一个操作的API。用户基本上不会直接使用这个类,但是你会用到他的子类比如GradientDescentOptimizer, AdagradOptimizer, MomentumOptimizer(tensorflow下的优化器包)等等这些算法。

语言模型技术

语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。由于字词与句子都是任意组合的长度,因此在训练过的语言模型中会出现未曾出现的字串(资料稀疏的问题),也使得在语料库中估算字串的机率变得很困难,这也是要使用近似的平滑n元语法(N-gram)模型之原因。

推荐文章
暂无评论
暂无评论~