探索更高效的模型架构, MoE是最具代表性的方向之一。
MoE架构的主要优势是利用稀疏激活的性质,将大模型拆解成若干功能模块,每次计算仅激活其中一小部分,而保持其余模块不被使用,从而大大降低了模型的计算与学习成本,能够在同等计算量的情况下产生性能优势。
然而,此前像MoE等利用稀疏激活性质的研究工作,都认为大模型需要在预训练阶段就额外引入模块化结构约束。
如今,来自清华的一项最新研究打破了以上思维定式,并将MoE架构进行了革新。
具体而言,研究人员受启发于人脑高效的稀疏模块化架构,在论文《Configurable Foundation Models: Building LLMs from a Modular Perspective》中提出了一种类脑高效稀疏模块化架构:Configurable Foundation Model。
该架构将大模型的模块拆分为预训练阶段产生的涌现模块(Emergent Brick)与后训练阶段产生的定制模块(Customized Brick),然后通过模块的检索、组合、更新与增长可以高效地实现复杂功能配置与组合,因此,将这一类模块化模型架构命名为“Configurable Foundation Model”——可配置的基础模型。
从此,训练大模型无需在预训练阶段就像MoE架构一样引入模块化结构约束,而是可以在预训练阶段产生涌现模块之后,像搭积木一样来构建大模型!
如下图所示,大模型看做是一个大的积木,将其按照功能拆分成一个一个小模块之后,给定一个指令时,我们仅需选用部分相关的模块组成子模型即可完成任务。
该研究揭示了「模块化」是大模型本身自带的性质,所有 Transformer-based 大模型的预训练和后训练等工作都可以通过模块化的视角进行解构,其中MoE、Delta tuning只是Configurable Foundation Model包含的一种路线。
Configurable Foundation Model架构具有高效性、可复用性、可溯源性、可扩展性,并且更适合分布式计算,能够更好地契合未来大模型在端侧部署、在广泛的场景中使用、在新环境中进化的未来趋势。
论文链接:https://arxiv.org/pdf/2409.02877
论文单位:清华大学、加州大学圣地亚哥分校、卡耐基梅隆大学、面壁智能、中国人民大学、普林斯顿大学、新加坡国立大学、斯坦福大学和加州大学洛杉矶分校。
研究人员描述了涌现模块和定制模块两种模块类型及其构建方式。
随机初始化的模型参数,在预训练过程中,模型神经元将会自发地产生功能分化的现象,进而组成了大模型的功能分区。在推理阶段,只有与当前输入内容相关的功能分区会被激活,并作用于模型的输出结果。
在该机制作用下,许多研究致力于发掘大模型神经元的稀疏激活性质与功能定位:
稀疏激活:
最早利用稀疏激活性质的模型架构为稀疏混合专家模型,它通过预定义的模块化结构,强制每个词仅能使用部分专家进行计算。
进一步地,在稠密训练的模型中,神经元同样存在稀疏激活现象:在处理每个词语过程中,大量神经元激活值的绝对值很低,无法对输出产生有效贡献。稀疏激活的性质使得我们可以训练高效的参数选择器,在推理时动态选择参数进行计算,以降低计算开销。
功能定位:
与人脑类似,大模型神经元在预训练后产生了功能分化,各自仅负责部分功能。目前已经被广泛发现的功能神经元包括:
这些功能神经元的发现进一步佐证了大模型具备与人脑一样进行高效稀疏化推理的潜力。
预训练之后,我们往往需要对模型进行后训练,从而将模型与人类需求对齐,并增强包括领域能力和任务能力在内的模型能力。最近的研究表明,后训练过程中参数变化本质上是低秩的,这意味着该过程只训练少部分参数。受这些发现的启发,多样化的定制模块(插件)被提出。
其中,最广为人知的是通过少参数微调形成的任务模块,保持模型主体参数不变,仅微调少量的任务相关参数。进一步地,许多研究发现,小规模的外部插件,不仅可以赋予大模型任务特定的能力,还可以为它们补充更多额外的知识和功能,例如用于世界知识注入的知识插件、用于多模态组合的模态插件、用于长文本处理的记忆插件,以及用于推理加速的压缩插件等。
因此,该论文研究者认为,后训练的本质是定制模块的训练,这些模块可以充分补充和激发大模型的知识和能力。
由涌现模块与定制模块构成的可配置的大模型相比于传统的稠密模型拥有五大优势:
在定义了可配置的大模型架构之后,研究人员提出了四种主要的模块操作,通过这些操作,可以让不同模块进行灵活地配合,实现复杂能力。
这些模块化操作,使得我们能够更方便地对模型能力进行高效配置。
进一步地,为了验证大模型模块化观点,作者对现在被广泛使用的通用生成式大模型(Llama-3-8B-Instruct,Mistral-7B-Instruct-v0.3)进行了涌现模块分析:
(1)针对稀疏激活特性,作者采用了神经元激活值、神经元输出向量的模长两个指标,作为神经元是否激活的评价指标。并且,作者还开展了扰动实验,探究对每个词语将其中激活指标最低的神经元给遮盖掉之后,模型性能是否会受到影响。
结果表明,对于神经元激活值和输出向量模长两个指标而言,神经元激活指标均存在长尾分布特点,即绝大多数神经元的激活指标均较低。同时,将每个词激活指标最低的70%-80%的神经元进行遮盖,模型性能仅会受到非常微弱的影响。这充分表明了,通用生成式大模型存在稀疏激活特性,每次计算过程中,大量神经元的计算对输出并不会造成太多的影响。
(2)针对功能分化特性:作者选取了7种大模型能力,包括代码、伦理、知识、语言、数学、翻译和写作能力,并且计算了神经元激活与输入指令所需能力之间的相关性。下图结果表明,每种能力都有非常少量的神经元与其高度相关,而在需要改能力的指令中,大部分与该能力无关的神经元的激活特性与随机激活的神经元相似。
进一步地,作者尝试将每种能力特定的神经元进行剪枝,观察这些神经元对其他能力的影响。
下图结果表明,对大部分能力而言,剪除与其最相关的神经元,对其他能力影响甚微,表明了这些神经元的特异性。
比如,对于Llama-3-8B-Instruct而言,剪除代码神经元之后,性能下降(PPL上涨了) 112%,而对其他能力的性能影响均不超过8%。
此外,Llama-3-8B-Instruct中的知识相关神经元、Mistral-7B-Instruct-v0.3中翻译相关神经元对每一种能力都非常关键,这可能是常驻神经元的影响,识别特定能力神经元时算法,将常驻神经元识别出来,影响了模型通用能力。这也进一步需要研究者针对神经元能力探索开展更多的后续研究。
(3)功能分区特性:作者对不同能力神经元开展了分布上的分析,结果发现,不同能力神经元之间重叠度很低。这表明,我们可以进一步将神经元进行聚类分隔,形成功能分区。
Configurable Foundation Model由预训练阶段的涌现模块与后训练阶段的定制化模块构成。前文已经对大模型涌现模块的相关性质进行了分析。同样,作者团队已经在插件构建层面,取得了很多有益的尝试:
论文链接:https://arxiv.org/pdf/2305.17691 https://arxiv.org/pdf/2305.17660
论文链接:https://arxiv.org/pdf/2402.04617
论文链接:https://arxiv.org/pdf/2310.15724
在本篇文章中,作者提出了一种高效模块化架构 —— 由涌现模块与定制模块组成的可配置大模型。该架构强调将大模型根据功能拆解为若干模块,通过模块的检索、组合、更新、增长实现复杂能力的组合。该架构具有高效性、可复用性、可溯源性、可扩展性,并且更适合分布式计算,能够更好地契合未来大模型在端侧部署、在广泛的场景中使用、在新环境中进化的未来趋势。
清华大学自然语言处理实验室已经在大模型稀疏模块化架构方面开展了大量的研究工作,附上相关论文列表,供大家参考:
1.参数模块化聚类
Moefication: Transformer feed-forward layers are mixtures of experts (https://arxiv.org/pdf/2110.01786)
2.大模型稀疏模块性增强:
ProSparse: Introducing and Enhancing Intrinsic Activation Sparsity within Large Language Models (https://arxiv.org/pdf/2402.13516)
ReLU^2 Wins: Discovering Efficient Activation Functions for Sparse LLMs (https://arxiv.org/pdf/2402.03804)
3.大模型模块化性质分析:
Emergent Modularity in Pre-trained Transformers (https://arxiv.org/pdf/2305.18390)
4.稀疏模块化预训练:
Exploring the Benefit of Activation Sparsity in Pre-training (https://arxiv.org/pdf/2410.03440?)
5.神经元功能定位:
Finding Skill Neurons in Pre-trained Transformer-based Language Model(https://arxiv.org/pdf/2211.07349)
6.大模型知识插件:
7.大模型记忆插件:
8.大模型加速插件:
9.大模型任务插件:
文章来自于微信公众号“量子位”,作者“CFM团队”
【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。
项目地址:https://github.com/microsoft/graphrag
【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。
项目地址:https://github.com/langgenius/dify
【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。
项目地址:https://github.com/infiniflow/ragflow/tree/main
【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目
项目地址:https://github.com/phidatahq/phidata
【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。
项目地址:https://github.com/TaskingAI/TaskingAI
【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。
项目地址:https://github.com/InternLM/xtuner