优化大型语言模型微调:MoLA层级专家分配策略

2024-08-31 04:44

本文主要是介绍优化大型语言模型微调:MoLA层级专家分配策略,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

人工智能咨询培训老师叶梓 转载标明出处

大模型(LLMs)的微调过程中,计算资源的需求巨大,这促使研究者们探索参数高效微调(PEFT)技术。低秩适应(LoRA)和专家混合模型(MoE)的结合显示出了提升性能的潜力,但大多数现有方法只是简单地在MoE框架下用LoRA适配器替换专家,并且每一层都分配相同数量的专家。这种方法可能会导致一些问题,比如由于表示崩溃或学习到的路由策略过拟合,导致专家之间的冗余。来自美国西北大学、Mineral Research和Google DeepMind的研究人员提出了一种新颖的参数高效MoE方法,通过层级专家分配(MoLA)来优化Transformer模型的性能。

论文链接:https://arxiv.org/pdf/2402.08562

项目链接:https://github.com/GCYZSL/MoLA

方法

MoE-LoRA与层级分配(MoLA)的新方法不仅结合了LoRA和MoE技术,还通过智能的层级专家分配来优化模型。在这种方法中,不是给Transformer的每一层分配相同数量的专家,而是根据每一层的需求分配不同数量的专家。

Figure 1 展示了MoLA架构的总览。在这种架构下,LoRA-MoE被应用于预训练的Transformer模型,并且每个模型层可以采用不同数量的专家。在训练过程中,预训练的权重被冻结,只有LoRA专家被调整作为权重的适配器。这种设计允许模型在保持预训练权重不变的同时,通过调整LoRA专家来适应特定的任务或数据集。

在训练预训练的LLM时,不是将每个密集线性层的权重矩阵分解成一对低秩矩阵,而是创建多对低秩矩阵,每对称为一个LoRA专家。通过学习一个路由模块来为每个输入令牌指定不同的LoRA专家。对于具有m层的Transformer模型,为第j层分配Nj个专家,并有个专家总计。对于第j层模块t中的预训练权重矩阵,创建Nj对低秩矩阵{​}和{}。每个矩阵从随机高斯分布初始化,将设置为零。然后,使用具有可训练权重矩阵​的路由器为输入x指定不同的LoRA专家。MoLA选择顶部K个专家进行计算,并在每一层应用负载平衡损失。

研究者提出了四种基于不同假设的层级专家配置(Figure 2):MoLA Triangle (MoLA-△)、MoLA Inverted-Triangle (MoLA-▽)、MoLA Hourglass (MoLA-▷◁) 和 MoLA Rectangle (MoLA-□)。每种配置都基于不同的假设,显示了如何在不同层级分配专家。

  • MoLA Triangle (MoLA-△):基于假设,较低层次学习更多词级特征,如词义、语法,而高层次捕获更抽象的高级信息。因此,假设较低层次需要更多的专家来区分细微的意义,而高层次需要较少的专家进行泛化。
  • MoLA Inverted-Triangle (MoLA-▽):与MoLA-△相反,假设处理词级信息的更多专家可能会在信息处理中引入冗余。由于高层次学习更抽象和高级的信息,这些特征用于下游任务,可能需要更多的专家。
  • MoLA Hourglass (MoLA-▷◁):第三种模型假设,由于较低和较高层次都专注于处理基本特征和抽象特征,它们需要更多的专家。中间层次在聚合基本特征和将它们映射到高维空间进行抽象推理方面发挥作用,需要较少的细粒度特征。
  • MoLA Rectangle (MoLA-□):最后一种配置是MoE的原始设计,其中每个Transformer层都有相同数量的专家,用作基线。

通过这些方法,MoLA旨在提高LLMs微调的效率和效果,同时减少训练过程中的计算资源需求。

想要掌握如何将大模型的力量发挥到极致吗?叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具。9月22日晚,实战专家1小时讲解让您轻松上手,学习如何使用 Llama Factory 微调模型。

加助理微信提供直播链接:amliy007,29.9元即可参加线上直播分享,叶老师亲自指导,互动沟通,全面掌握Llama Factory,关注享粉丝福利,限时免费CSDN听直播后的录播讲解。
LLaMA Factory 支持多种预训练模型和微调算法。它提供灵活的运算精度和优化算法选择,以及丰富的实验监控工具。开源特性和社区支持使其易于使用,适合各类用户快速提升模型性能。

实验

实验包括了指导微调(instruction-tuning)后进行微调(fine-tuning),以及直接微调两种不同的设置。为了确保比较的一致性和清晰性,研究者们为大模型设计了四种MoLA的专家分配配置,他们采用了含有32层的LLaMA2作为基础模型,并为不同的层分配了不同数量的专家。

实验设置:

  • MoLA-△:在前8层每层分配8个专家,接下来的8层每层分配6个专家,17-24层每层分配4个专家,最后8层每层分配2个专家,表示为8642。
  • MoLA Inverted Triangle:在较低层次分配较少的专家,而为更高层次分配更多的专家,表示为2468。
  • MoLA Hourglass 和 MoLA Rectangle:分别采用8228和5555的分配方式。所有变体的总专家数保持一致,即具有相同数量的可训练参数。

在实验的第一阶段,研究者们在指导微调数据集上使用PEFT方法进行指导微调,随后对下游任务进行微调。在直接微调设置中,研究者们直接对下游任务进行微调,不经过指导微调阶段。

MoLA旨在对下游任务进行LLMs微调,研究者们评估了包括自然语言处理(NLP)任务和常识推理(CR)任务在内的多个数据集。这包括:

  • Microsoft’s Research Paraphrase Corpus (MRPC):用于判断句子对是否为同义句。
  • Recognizing Textual Entailment (RTE):用于判断句子间是否具有蕴含关系。
  • Corpus of Linguistic Acceptability (COLA):用于判断英语句子是否符合语法规范。
  • ScienceQA:用于评估模型对科学知识的理解和常识推理能力。
  • CommonsenseQA 和 OpenbookQA:用于评估常识推理能力。

MoLA与三种参数高效微调方法进行了比较:prompt tuning、LLaMA-Adapter和LoRA。还评估了全参数微调的性能。

实验使用了LLAMA2-7B作为基础语言模型。在指导微调设置中,对采样的指导微调数据集进行了3个epoch的训练。在两种设置中,对下游任务微调的epoch数量进行了网格搜索,包括10、15和20个epoch。优化器采用AdamW,学习率为3e-4,截断长度设为256,批量大小为128。

Table 1 展示了直接微调设置的结果,其中MoLA-▽在所有基准测试中均优于其他变体或基线,即使在参数数量减少近40%的情况下,也能与MoLA-□ (8888) 竞争或表现得更好。

Table 2 展示了指导微调及下游微调设置的结果,MoLA-▽在所有数据集上均显著优于LoRA,显示出MoLA在传递学习能力方面的优势。

研究者们观察到在更高层次分配更多的LoRA专家可以带来更多的性能提升。基于这一假设,他们进一步研究了不同层次专家的冗余性。Figure 3 展示了通过抽样指导微调数据集训练的MoLA-□(8888)和MoLA-□(5555)模型中,每层自注意力模块中任意两个不同LoRA专家的权重矩阵之间的Frobenius范数平均值。从图中可以看出,从较低层次到更高层次,专家之间的平均Frobenius范数逐渐增加,表明较低层次的专家相似度更高,因此冗余性更大。这一发现支持了研究者的假设,即在总专家数量一定的情况下,为更高层次分配更多的专家可以更有效地提高模型性能。

研究者们还分析了每层专家的平均路由权重和被选择次数。分析显示,大多数专家被选择进行类似的工作负载并得到了充分的利用。在具有相似选择权重和次数的情况下,较低层次由于专家间更相似而具有更高的专家冗余性,再次支持了研究者的论断。

研究者们还探讨了基于MoE的架构在持续学习环境下的表现。他们选择了ScienceQA数据集中训练样本最多的五个主题:生物学、物理学、化学、经济学和地球科学,对MoLAs进行了持续微调,并研究了在先前领域上的性能下降情况。根据Chaudhry等人(2018)的方法,他们计算了整体性能(OP):

其中,t 是领域数量,R_t,i​ 表示在连续训练领域t后模型在领域i上的准确率。他们还提出了一个性能下降分数来衡量领域遗忘,通过计算持续学习过程中的性能下降来得出,如下所示:

Table 3 展示了在持续学习环境中不同MoLA模型的整体性能和性能下降分数。结果显示,MoLAs能够实现比LoRA更好的整体性能。特别是,MoLA-▽通过具有-0.47的性能下降分数显示出避免领域知识遗忘的优越能力,这与研究者们关于更高层次具有较少专家冗余的洞察一致。

通过这些分析和实验,研究者们进一步验证了MoLA模型的有效性,并展示了其在处理更复杂下游问题时的潜力。这些发现为未来LLMs的微调和优化提供了有价值的参考。

这篇关于优化大型语言模型微调:MoLA层级专家分配策略的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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 语言中,有三种主要

Deepseek使用指南与提问优化策略方式

《Deepseek使用指南与提问优化策略方式》本文介绍了DeepSeek语义搜索引擎的核心功能、集成方法及优化提问策略,通过自然语言处理和机器学习提供精准搜索结果,适用于智能客服、知识库检索等领域... 目录序言1. DeepSeek 概述2. DeepSeek 的集成与使用2.1 DeepSeek API

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

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

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

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom

SpringBoot中的404错误:原因、影响及解决策略

《SpringBoot中的404错误:原因、影响及解决策略》本文详细介绍了SpringBoot中404错误的出现原因、影响以及处理策略,404错误常见于URL路径错误、控制器配置问题、静态资源配置错误... 目录Spring Boot中的404错误:原因、影响及处理策略404错误的出现原因1. URL路径错