大语言模型从Scaling Laws到MoE

1、摩尔定律和伸缩法则

摩尔定律(Moore's law)是由英特尔(Intel)创始人之一戈登·摩尔提出的。其内容为:集成电路上可容纳的晶体管数目,约每隔两年便会增加一倍;而经常被引用的“18个月”,则是由英特尔首席执行官大卫·豪斯(David House)提出:预计18个月会将芯片的性能提高一倍(即更多的晶体管使其更快),是一种以倍数增长的观测。[1]

然而,由于受到晶体管的散热问题、内存带宽瓶劲等问题,摩尔定律目前已经走到了物理的极限,限制了我们做出更快的芯片。

另一方面,OpenAI提出了Scaling Laws[2],其中列举了影响模型性能最大的三个因素:计算量数据集大小模型参数量。也就是说,当其他因素不成为瓶颈时,计算量、数据集大小、模型参数量这3个因素中的单个因素指数增加时,loss会线性的下降。同时,DeepMind的研究也得出来和OpenAI类似的结论[3]。

Scaling Laws for Neural Language Models

根据Scaling Laws,模型越大、数据量越大、计算量越大,模型效果也越好。因此,目前很多LLM都是朝着更多参数、更多训练数据的方向进行scaling。然而,随着摩尔定律走到了尽头,LLM也不可能做到无限大。那么计算受到限制的时候,该如何进一步提升模型的性能呢?其中一种方法是MoE。

2、使用MoE进行LLM的scaling

MoE(the mixture of experts model)的思想是训练多个神经网络(也就是多个experts),每个神经网络 (expert) 被指定 (specialize) 应用于数据集的不同部分。对于不同来源的数据,有一个managing neural net来判断应该交给哪一个 expert 进行处理。

2.1 GLaM

2022年,Google发布了MoE的模型GLaM[4]。GLaM是一个 decoder only 模型,支持 in-context learning,一共有1.2T的参数量,其中有97B是激活的。

GLaM: Efficient Scaling of Language Models with Mixture-of-Experts

GLaM在训练和推理时所需的计算量,都远低于GPT3。同时,在zero-shot、one-shot 和 few shot 方面,GLaM的效果都优于GPT3。

2.2 Expert Choice Routing

GLaM 虽然效果不错,但是有负载不均衡问题。也就是说,会有一部分 expert 会经常被激活,而有一些 expert 很少被激活。

2022年,在 NeurIPS上,提出了新的 Expert Choice Routing 方法[5],来解决负载不均衡问题。该方法中,每个expert 会独立选择 top-k 的tokens 作为输入。每个token都可能会被不同的 expert 选择。一些比较重要的tokens会得到更多的计算资源,而不重要的 tokens 得到的计算资源会比较少。

Mixture-of-Experts with Expert Choice Routing

采用 Expert Choice Routing 的模型,相比于GLaM,在收敛速度方面可以提升2倍, 在 step time 上提速20%,并且完美解决了负载不均衡问题。8B/64E 的模型(有9.8B激活的参数),在 SuperGLUE 上效果超过了 T5-11B 的模型。

3、MoE进阶技术

3.1 Brainformers

上述MoE模型,在训练速度很慢,会成为进一步 scaling 的瓶颈。在 ICML 2023上,进一步提出了Brainformers[6]。

Brainformers: Trading Simplicity for Efficiency

为了模型计算更快,需要对矩阵乘法进行分解,从而减少计算量。同时,这些矩阵分解,必须不能损害模型的准确性。上图 (a) 中,是两种分解矩阵乘法的主要方法,分别是从横向分解(low-rank)和纵向分解(multi-expert) 。而在图 (b)中,可以对 low-rank 和 multi-expert 进行组合、堆叠,以实现更有趣且计算效率高的模型架构。

如果在 bottleneck 处,插入一个 mixure 层,模型看起来就非常像 transformers。如果在 bottleneck 处,插入一个 attention layer,模型看起来就非常像一个 multi-expert transformers。

作者对不同的参数,进行了搜索,从而找到了最优的网络模型结果。搜索的空间包括:不同的层类型(attn、moe、ffn)、隐层维度、MoE隐层维度、FFN隐层维度、attention 的 head 数、Gating Fuction、Capacity Factor、Activation Function等。

从搜索空间中,采样一组参数,构建一个 100M/32E 的模型,选择top-K的模型,然后进行scaling,如1B/64E 、8B/64E。

Brainformers: Trading Simplicity for Efficiency

相比于GLaM,可以在收敛速度方面,提速2倍;在 step time 上提速5倍。

3.2 Lifelong Language Pretraining

其他问题:如何进行增量训练,同时避免灾难性遗忘。

方法:引入新的数据分布时,引入新的 experts,同时冻结原有的权重,并且加入一个regularization loss 避免灾难性遗忘[7]。

Lifelong Language Pretraining with Distribution-Specialized Experts

相比于baseline,Lifelong-MoE 的灾难性遗忘被显著抑制,并且比 dense oracle 的效果还要好。

4、问答及彩蛋

  • MoE model 的训练,有2种方案,一种是 train from scratch,一种是 dense to sparse
  • GPT4是一个MoE model,且大概率是一个 train from scratch 的 MoE model
  • 如果 finetune 后的 MoE 效果变差,可能是 finetune 没有训好,需要增加新的 experts
  • Google 从 NVIDIA 买了 26,000 个 H100 (真有钱)
  • H100 针对 transformers 训练做了专门的优化,主要是卡与卡之间的通讯优化,比 A100 提速 10倍左右

参考

  1. 摩尔定律-维基百科 https://zh.wikipedia.org/zh-hans/%E6%91%A9%E5%B0%94%E5%AE%9A%E5%BE%8B
  2. Scaling Laws for Neural Language Models https://arxiv.org/abs/2001.08361
  3. Training Compute-Optimal Large Language Models https://arxiv.org/abs/2203.15556
  4. GLaM: Efficient Scaling of Language Models with Mixture-of-Experts https://arxiv.org/abs/2112.06905
  5. Mixture-of-Experts with Expert Choice Routing https://arxiv.org/abs/2202.09368
  6. Brainformers: Trading Simplicity for Efficiency https://arxiv.org/abs/2306.00008
  7. Lifelong Language Pretraining with Distribution-Specialized Experts https://arxiv.org/abs/2305.12281

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/831803.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS精灵图、字体图标、HTML5新增属性、界面样式和网站 favicon 图标

精灵图 为什么要使用精灵图 一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时,服务器就会频繁地接收和发送请求图片,造成服务器请求压力过大,这将大大降低页面的加载速度,因此,为了有效地减少服务…

扫雷实现详解【递归展开+首次必展开+标记雷+取消标记雷】

扫雷 一.扫雷设计思路二.扫雷代码逐步实现1.创建游戏菜单2.初始化棋盘3.打印棋盘4.随机布置雷5.统计周围雷的个数6.递归展开棋盘7.标记雷8.删除雷的标记9.保证第一次排雷的安全性棋盘必定展开10.排查雷11.判断输赢 三.扫雷总代码四.截图 一.扫雷设计思路 1.创建游戏菜单。  2.…

Leetcode—1056. 易混淆数【简单】Plus

2024每日刷题(126) Leetcode—1056. 易混淆数 💩山实现代码 class Solution { public:bool confusingNumber(int n) {int arr[10] {0};int notNum 0;int arr2[12] {0};int size 0;while(n) {int x n % 10;arr[x] 1;arr2[size] x;if(…

OneFlow深度学习框原理、用法、案例和注意事项

本文将基于OneFlow深度学习框架,详细介绍其原理、用法、案例和注意事项。OneFlow是由中科院计算所自动化研究所推出的深度学习框架,专注于高效、易用和扩展性强。它提供了一种类似于深度学习库的接口,可以用于构建神经网络模型,并…

【Java基础】Maven的生命周期(clean+site+default)

1. 前言 在 Maven 出现之前,项目构建的生命周期就已经存在,开发人员每天都在对项目进行清理,编译,测试及部署,但由于没有统一的规范,不同公司甚至不同项目之间的构建的方式都不尽相同。 Maven 从大量项目…

Java Web网页设计(7)-网页查看

7.面我们讲最后一个操作 修改的操作 在讲修改之前 我们先讲一个知识点 表单调用的通常是doPost方法 超链接通常调用的是doGet方法 操作如何在同一个方法 (doGet中) 进行区分 type OrderDao orderDaonew OrderDao(); String typereq.getParameter("type"); …

nn.GRU层输出:state与output的关系

在 GRU(Gated Recurrent Unit)中,output 和 state 都是由 GRU 层的循环计算产生的,它们之间有直接的关系。state 实际上是 output 中最后一个时间步的隐藏状态。 GRU 的基本公式 GRU 的核心计算包括更新门(update gat…

ZooKeeper以及DolphinScheduler的用法

目录 一、ZooKeeper的介绍 数据模型 ​编辑 操作使用 ①登录客户端 ​编辑 ②可以查看下面节点有哪些 ③创建新的节点,并指定数据 ④查看节点内的数据 ⑤、删除节点及数据 特殊点: 运行机制: 二、DolphinScheduler的介绍 架构&#…

将java项目上传到GitHub步骤

文章目录 GitHub 作用github如何修改默认分支为master手把手教你把项目上传github上github怎么删除仓库或项目执行到push时报错的解决办法github怎么修改仓库语言 GitHub 作用 GitHub 是一个存放软件代码的网站,主要用于软件开发者存储和管理其项目源代码&#xff…

HTB Intuition

Intuition User nmap ┌──(kali㉿kali)-[~/…/machine/SeasonV/linux/iClean] └─$ nmap -A 10.129.22.134 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-30 05:29 EDT Nmap scan report for 10.129.22.134 Host is up (0.49s latency). Not shown: 998 …

连接HiveMQ代理器实现MQTT协议传输

先下载MQTTX: MQTTX: Your All-in-one MQTT Client Toolbox 使用线上免费的MQTTX BROKER:The Free Global Public MQTT Broker | Try Now | EMQ 打开MQTTX,创建连接,点击NEW SUBSCRIPTION,创建一个主题,这里使用test/topic,在下面Json中填写…

日本2024年铃木亮平主演的电影《城市猎人》

《城市猎人》是由佐藤祐市执导、三岛龙朗担任编剧、铃木亮平主演的动作片,于2024年4月25日上线Netflix。 该片改编自北条司的同名漫画,讲述了负责处理黑社会纠纷的清道夫在寻找失踪的Cosplayer时被卷入巨大阴谋的故事 [2]。 相关星图 查看更多 佐藤佑…

中间件之搜索和数据分析组件Elasticsearch

一、概述 1.1介绍 The Elastic Stack, 包括 Elasticsearch、Kibana、Beats 和 Logstash(也称为 ELK Stack)。 能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视 化。Elaticsearch,简称为 ES&a…

【Android学习】自定义文本框和输入监听

实现功能 以上代码可实现功能: 1 自定义文本框样式 2. 文本框触发形式转变 3. 文本框输入长度监听,达到最大长度关闭软键盘 4. password框触发检测phone框内容 1. drawable自定义形状 我创建了editor_focus.xml 和 editor_unfocus.xml,两者仅…

Codeforces Round 943 (Div. 3 ABCDEFG1G2题) 视频讲解

A. Maximize? Problem Statement You are given an integer x x x. Your task is to find any integer y y y ( 1 ≤ y < x ) (1\le y<x) (1≤y<x) such that gcd ⁡ ( x , y ) y \gcd(x,y)y gcd(x,y)y is maximum possible. Note that if there is more tha…

计算机毕业设计Python+Spark考研预测系统 考研推荐系统 考研数据分析 考研大数据 大数据毕业设计 大数据毕设

安顺学院本科毕业论文(设计)题目申请表 院别&#xff1a;数学与计算机科学 专业&#xff1a;数据科学与大数据 时间&#xff1a;2022年 5月26日 题 目 情 况 题目名称 基于hive数据仓库的考研信息离线分析系统的设计与实现 学生姓名 杨娣荧 学号 201903144042 …

华为鸿蒙系统(Huawei HarmonyOS)

华为鸿蒙系统&#xff08;华为技术有限公司开发的分布式操作系统&#xff09; 华为鸿蒙系统&#xff08;HUAWEI HarmonyOS&#xff09;&#xff0c;是华为公司在2019年8月9日于东莞举行的华为开发者大会&#xff08;HDC.2019&#xff09;上正式发布的分布式操作系统。 华为鸿蒙…

使用DependencyCheck工具检测JAR依赖包的安全漏洞

引言 Dependency-Check 是一个开源工具,用于检测软件项目中使用的第三方库和组件是否存在已知的安全漏洞。它可以帮助开发团队及时发现和解决项目中的潜在安全风险,从而提高软件的安全性。 该工具通过分析项目的依赖关系,识别其中使用的第三方库和组件,并与已知的漏洞数据…

IOS 开发 - block 使用详解

1.Blobk的定义 block的写法相对难记,不必司机应被,只需要在xcode里打出"inlineBlock"--回车, 系统会自动帮你把基础版写法给你匹配出来 //Block的基础声明//等号""之前是blobk的声明,等号“”后面是block的实现/*returnType:返回类型(void、int、String *…

zabbix监控Tongweb7企业版(by lqw+sy)

此贴参考zabbix通过jmx监控Tongweb7企业版&#xff08;by lqw&#xff09;&#xff0c;是在此帖子的基础和同事整理的文档基础上重新部署验证的优化版&#xff0c;使用的是centos7。 优点&#xff1a; 1.不需要通过jmx配置进行监控。&#xff08;jmx配置需要修改tongweb的配置…