如何提升深度学习算法效率,谷歌有这些绝招(上)

简介: 如何提升深度学习算法效率,谷歌有这些绝招

前言


选自谷歌博客 机器之心编译 编辑:铭怿

大型机器学习模型在多个领域展现出具有变革性的结果,但在现实世界中,训练和推理效率正在成为关键需求。Google Research 一直在通过开发新的基础技术来提高大型 ML 模型的效率。本文中,谷歌以「提升模型效率」为主题,介绍如何使 ML 模型更加强韧、高效。


十年前,深度学习崛起的部分原因在于新算法和架构的融合、数据的显著增加以及计算能力方面的提升。过去 10 年里,AI 和 ML 模型更加深入、复杂、有了更多的参数和训练数据,也因而变得更大、更繁琐,这也为机器学习历史带来了最具变革性的成果。这些模型越来越多地应用于生产和业务应用程序中,与此同时,其效率和成本已经从次要的考虑因素演变为主要的限制。为了应对在高效架构,训练效率,数据效率和推理效率四个层面的重大挑战,谷歌继续在 ML 效率上投入大量资金。除了效率之外,这些模型还面临着许多关于真实性、安全性、隐私性和新鲜度的挑战。接下来,本文将重点介绍 Google Research 为了应对上述挑战,在开发新算法方面所做的努力。研究的基本问题在于「是否有更好的方法来参数化模型以提高效率?」2022 年,研究人员专注于通过检索上下文、混合专家系统,以及提升 Transformer(大型 ML 模型的心)的效率来研发通过增强模型来注入外部知识的新技术。 


正文


上下文增强模型


为了追求更高的质量和效率,可以使用来自大型数据库或可训练内存的外部上下文来增强神经模型。通过利用检索到的上下文,神经网络无需在其内部参数中广泛地储备知识,就能实现更好的参数效率、可解释性和真实性。 一篇名为《用于上下文增强语言建模的解耦上下文处理》(Decoupled Context Processing for Context Augmented Language Modeling)的文章中探索了一种基于解耦编码器 - 解码器架构的简单架构,用于将外部上下文合并到语言模型中。在自回归语言建模和开放领域问答任务中,这大大节省了计算量。然而,预训练大型语言模型(LLMs)通过在大型训练集上的自监督消耗了大量的信息。但是,目前还不清楚这些模型对世界的认识是如何与所呈现的上下文相互作用的。通过知识感知微调(KAFT),研究人员将反事实和不相关的上下文纳入标准监督数据集,这加强了 LLM 的可控性和鲁棒性。1.png


论文地址:https://arxiv.org/abs/2210.05758

2.png

用于上下文合并的编码器 - 解码器交叉注意机制,允许上下文编码与语言模型推理解耦,进而提升上下文增强模型的效率。

在寻求模块化深度网络的过程中,其中一个问题是如何设计具有相应计算模块的概念数据库。研究人员提出了一种理论体系架构,将「记忆事件」(remember events)以 sketches 的形式存储在一个外部 LSH 表中,其中包括一个 pointers 模块来处理 sketches。

利用加速器从大型数据库中快速检索信息是上下文增强模型的另一大挑战。研究人员开发了一种基于 TPU 的相似度搜索算法,该算法与 TPU 的性能模型保持一致,并对预期召回率提供了分析保证,实现了峰值性能。搜索算法通常涉及大量的超参数和设计选择,这使得在执行新任务时很难对它们进行调整。研究人员提出了一种新的约束优化算法,用于自动化超参数调优。将期望的成本或召回率固定为输入,所提出的算法产生的调优在经验上非常接近速度 - 召回率帕累托边界(speed-recall Pareto frontier),并在标准基准测试中提供领先的性能。


混合专家模型


经证明,混合专家 (MoE)模型是在不过度增加计算成本的前提下,提高神经网络模型容量的有效手段。MoE 的基本思想是由许多专家子网络构建出一个统一网络,其中每个输入由一个合适的专家子集处理。因此,与标准神经网络相比,MoE 只调用了整个模型的一小部分,从而产生了如 GLaM 等语言模型应用程序所示的高效率。3.gif

GLaM 体系架构中的每个输入 token 被动态路由到 64 个专家网络中的两个进行预测。

对于给定的输入,路由函数负责决定应当激活哪些专家,该函数的设计具有挑战性,因为研究者希望避免对每个专家的利用不足和过度利用。最近的一项工作提出了专家选择路由,这是一种新的路由机制,它不是将每个输入 token 分配给 top-k 专家,而是将每个专家分配给 top-k token。这将自动确保专家的负载平衡,同时也自然地允许多个专家处理一个输入 token。

4.png

专家选择路由。具有预定缓冲区容量的专家被分配 top-k token,从而保证负载平衡。每个 token 可以由数量不定的专家处理。


有效的 Transformer


Transformer 是当下正火热的序列到序列模型,在从视觉到自然语言理解等一系列具有挑战性的问题上取得了显著的成功。这种模型的核心组成部分是注意力层,它识别查询和键之间的相似性,并使用这些相似性构造一个适当的值加权组合。虽然性能强,但注意力机制的计算效率却不高,复杂度通常为输入序列长度的二次方。

随着 Transformer 规模的不断增长,其中一个问题的研究十分有价值,即是否有任何自然发生的结构或模式的学习模型,可以破解注意力有效的原理。为此,研究人员研究了中间 MLP 层中的学习嵌入,并且发现它们非常稀疏 —— 例如,T5-Large 模型有 1% 的非零项。稀疏性进一步表明,人们可以在不影响模型性能的情况下潜在地降低 FLOPs。

5.png


地址:https://arxiv.org/pdf/2210.06313.pdf

最近,有研究推出 Treeformer—— 一种依赖于决策树的标准注意力计算的替代方案。简单来说,这可以快速识别与查询相关的键的一小部分,并且只对该集合执行注意力操作。根据经验,Treeformer 可以将注意力层的 FLOPs 降低 30 倍。除此之外还有序列注意力 —— 一种结合了注意力和贪婪算法的可微分特征选择方法。该技术对线性模型有很强的可证明保证,并可无缝扩展到大型嵌入模型。

另一种提高 Transformer 效率的方法是在注意力层中加速 softmax 计算。在「low-rank approximation of the softmax kernel」研究基础上,研究人员提出了一类新的随机特征,提供了 softmax kernel 的首个「positive and bounded」随机特征近似,并且在序列长度上的计算是线性的。


训练效率


高效的优化方法是现代 ML 应用程序的基石,在大规模设置中,这一点尤其重要。在这种设置下,即使是像 Adam 这样的一阶自适应方法通常也很昂贵,并且训练稳定性面临重重挑战。此外,这些方法通常对神经网络的架构不可知,从而忽略了架构的丰富性,导致训练效率低下。这也促使新技术不断被提出以更有效地优化现代神经网络模型。研究人员正在开发新的架构感知训练技术,例如,用于训练 Transformer 网络的一些研究,包括新的规模不变的 Transformer 网络和新的剪枝方法,并与随机梯度下降(SGD)结合使用,以加快训练进程。在该方法的帮助下,研究人员第一次能够使用简单的 SGD 有效地训练 BERT,而不需要自适应。


6.png


论文地址:https://arxiv.org/pdf/2210.05758.pdf

此外,研究人员在 LocoProp 的帮助下提出了一种新的方法 —— 在使用与一阶优化器相同的计算和内存资源的同时,实现与二阶优化器类似的性能。LocoProp 采用模块化的神经网络视图,将它们分解成层的组合。然后允许每一层都有自己的损失函数以及输出目标和权重正则化器。有了这个设置,经过适当的前后传递后,LocoProp 继续对每一层的局部损失进行并行更新。事实上,无论是理论上还是经验上,这些更新可以被证明类似于那些高阶优化器。在深度自编码器基准上,LocoProp 实现了与高阶优化器相当的性能,同时更具速度优势。

7.png

论文链接:https://proceedings.mlr.press/v151/amid22a.html

与反向传播类似,LocoProp 应用前向传递来计算激活。在向后传递中,LocoProp 为每一层设置每个神经元目标。最后,LocoProp 将模型训练拆分为跨层的独立问题,其中几个本地更新可以并行应用于每个层的权重。

SGD 等优化器的核心思想是,每个数据点从分布中独立且相同地采样。可惜这在实际环境中很难满足,比如强化学习,在这种情况下,模型(或智能体)必须从基于自己预测生成的数据中学习。研究人员提出了一种新的基于反向经验重放的 SGD 算法,该算法可以在线性动力系统、非线性动力系统和 Q-learning 中找到最优解。此外,已经有研究证明该方法的增强版本 IER 是目前最先进的版本,并且是在各种流行的 RL 基准测试中最稳定的体验重放技术。

98.png

论文地址:https://arxiv.org/pdf/2103.05896.pdf

相关文章
|
3天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
92 55
|
12天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
83 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
6天前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如"How are you"、"I am fine"、"I love you"等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
9天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。
|
21天前
|
机器学习/深度学习 数据采集 数据可视化
TensorFlow,一款由谷歌开发的开源深度学习框架,详细讲解了使用 TensorFlow 构建深度学习模型的步骤
本文介绍了 TensorFlow,一款由谷歌开发的开源深度学习框架,详细讲解了使用 TensorFlow 构建深度学习模型的步骤,包括数据准备、模型定义、损失函数与优化器选择、模型训练与评估、模型保存与部署,并展示了构建全连接神经网络的具体示例。此外,还探讨了 TensorFlow 的高级特性,如自动微分、模型可视化和分布式训练,以及其在未来的发展前景。
47 5
|
29天前
|
算法 测试技术 量子技术
时隔5年,谷歌再创量子霸权里程碑!RCS算法让电路体积增加一倍
谷歌在量子计算领域取得重大突破,通过随机电路采样(RCS)算法,成功将量子电路体积翻倍,实现了量子霸权的里程碑。这一成果发表于《自然》杂志,展示了量子动力学与噪声交互作用下的相变现象,推动了量子计算在密码学、材料科学等领域的应用潜力。尽管如此,量子计算仍面临错误率高、可扩展性差等挑战。
39 3
|
1月前
|
算法 测试技术 量子技术
时隔5年,谷歌再创量子霸权里程碑!RCS算法让电路体积增加一倍
谷歌在量子计算领域取得新突破,其研究人员在《自然》杂志上发表论文《随机电路采样中的相变》,介绍了一种名为随机电路采样(RCS)的算法。该算法通过优化量子关联速度、防止经典简化和利用相变现象,使量子电路体积在相同保真度下增加一倍,为量子计算的发展树立了新的里程碑。实验结果显示,RCS算法在67个量子比特和32个周期的条件下,实现了1.5×10^-3的保真度。这一成果不仅提升了量子计算的效率,也为解决噪声问题提供了新思路。
77 3
|
1月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
77 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
1月前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
77 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
1月前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
79 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型