大语言模型从Scaling Laws到MoE

2024-05-05 08:28
文章标签 语言 模型 scaling moe laws

本文主要是介绍大语言模型从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

这篇关于大语言模型从Scaling Laws到MoE的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/961243

相关文章

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus

本地私有化部署DeepSeek模型的详细教程

《本地私有化部署DeepSeek模型的详细教程》DeepSeek模型是一种强大的语言模型,本地私有化部署可以让用户在自己的环境中安全、高效地使用该模型,避免数据传输到外部带来的安全风险,同时也能根据自... 目录一、引言二、环境准备(一)硬件要求(二)软件要求(三)创建虚拟环境三、安装依赖库四、获取 Dee

Go语言利用泛型封装常见的Map操作

《Go语言利用泛型封装常见的Map操作》Go语言在1.18版本中引入了泛型,这是Go语言发展的一个重要里程碑,它极大地增强了语言的表达能力和灵活性,本文将通过泛型实现封装常见的Map操作,感... 目录什么是泛型泛型解决了什么问题Go泛型基于泛型的常见Map操作代码合集总结什么是泛型泛型是一种编程范式,允

DeepSeek模型本地部署的详细教程

《DeepSeek模型本地部署的详细教程》DeepSeek作为一款开源且性能强大的大语言模型,提供了灵活的本地部署方案,让用户能够在本地环境中高效运行模型,同时保护数据隐私,在本地成功部署DeepSe... 目录一、环境准备(一)硬件需求(二)软件依赖二、安装Ollama三、下载并部署DeepSeek模型选