首页 > 其他分享 >大模型LLM微调策略一览

大模型LLM微调策略一览

时间:2024-11-25 16:03:50浏览次数:7  
标签:缩放 一览 微调 参数 LLM 256 模型 向量

大语言模型(LLM)借助大规模数据集进行训练,能够在零样本或少样本提示下完成多种任务。随着检索增强生成(RAG)方法的兴起,这些通用模型越来越多地被组织用于各种应用,从简单的聊天机器人到更复杂的智能自动化代理。尽管像 GraphRAG 这样的技术已经被开发出来,用于基于实体跨文档提取关系,但由于基础模型缺乏足够的上下文,这些技术可能无法完全满足每个领域的特定需求。这一局限性导致每月都有新的模型不断被推出。

对于领域特定的模型,可以在现有LLM架构的基础上调整其权重,使其学习特定领域的上下文信息,这一过程被称为** 微调(fine-tuning) **。在本文中,我们将探讨语言模型的微调过程,分析微调的多种类型、涉及的关键考虑因素,并举例介绍一种几乎无需编码的开源工具。

file

微调

为了更好地理解微调,我们用一个类比来说明。想象你是一名学生,正在为一场科学考试做准备。你从课堂上获得了扎实的基础知识。随着考试临近,你开始专注于即将考查的特定主题。你通过练习题检验自己的理解,然后根据表现重新审视相关的学习材料。与此同时,你可能会向朋友寻求指导、查阅在线资源或重温关键主题。

这一过程与微调非常相似:我们利用一个经过预训练的模型(就像拥有扎实基础的学生),让它专注于特定任务(复习特定主题),评估其表现(通过练习测试),并反复迭代,直到根据性能指标实现最佳结果。正如一个学生能够在特定领域达到精通一样,我们也可以开发一个在某些领域或多个领域都表现卓越的语言模型。最终,这一过程的成效取决于所选模型、具体任务以及所使用训练数据的质量。

微调应用场景

在深入探讨微调之前,让我们通过一些场景分析它为何必要。

语言学习

以下是两个Llama版本在回答泰米尔语问题时的对比。

示例:

file
基础模型

file
微调后的模型

如上图所示,基础版本的Llama模型难以理解请求的语言,而经过微调的模型则能够流利地用泰米尔语响应。这一能力来自微调过程,使模型能够学习并识别新语言中的模式。
简单的RAG应用无法有效地将新上下文与现有知识联系起来。在需要模型整合和学习多样化上下文的情况下,微调显得尤为重要。

可控输出

大模型开发中的一个重要挑战是大模型的可控输出。假设一个税务助手AI突然开始回答心理健康相关的问题。这种多功能性固然令人惊叹,但也可能带来风险,尤其是在涉及敏感领域时。

即使通过指令限制模型不回答特定问题,也存在以下问题:
• 提示注入攻击(Prompt Hacking): 用户可以通过操纵输入绕过限制。
• 上下文窗口问题: 大模型的上下文窗口有限,尽管像Llama 3.1提供128k的上下文窗口,但过多的指令仍然会占用实际内容的空间。

有效的提示模板可以有所帮助,但无法涵盖所有可能的细微差别。即使上下文窗口变大,也不能完全解决问题,这使得微调成为更可靠的选择。例如,Meta推出的LlamaGuard是一个经过微调的Llama版本,用于防止有害响应并强化聊天安全。

角色定制

新闻媒体通常报道相同的新闻,但每个渠道的视角和风格都不同。想象一个辅助写作的聊天助手,通过多个来源收集信息。如果您使用预训练模型(如ChatGPT),通过设计有效的用户指令和系统提示可以生成有用的新闻摘要。然而,这些内容可能并不完全符合您组织的风格或准则。

通过使用您团队撰写的新闻文章对模型进行微调,可以确保生成的内容始终符合您的组织语调和标准。此外,许多初创企业正在开发企业级AI角色,简化重复性任务。

小参数但智能

实现卓越表现并不总需要庞大的模型。参数规模较小的模型(甚至仅有几百万参数)通常能够以更高的效率完成特定任务,同时节约运行成本。这一策略显著降低了模型运行和维护的成本。

本文将探讨一种称为** 参数高效微调(PEFT)** 的技术。这一方法利用矩阵分解将大模型转换为更小、更易管理的形式,从而避免使用全部参数以完成目标任务。

微调考量

在微调之前,需要考虑以下因素:

  1. ** 数据充足性 **: 是否拥有足够的数据用于有效训练模型?
  2. ** 硬件可用性 **: 是否有必要的硬件用于训练和运行模型?
  3. ** RAG策略 **: 问题是否可以通过现有LLM API和RAG方法解决?
  4. ** 上线时间 **: 您需要多快将服务投入使用?

这些考虑因素将帮助您判断是否应采用微调方法,或者通过现有API结合打造统一产品。

参数高效微调 (PEFT)

参数高效微调(PEFT)是一种技术,其核心思想是并非需要更新大型语言模型(LLM)的所有参数才能实现最佳性能。通过冻结大多数参数,仅优化一小部分关键参数,可以显著减少微调所需的计算资源和时间。

想象一间教室里有一名学生,在许多学科中表现优秀,但在某些特定领域需要提高。与其彻底重建整个课程,老师会在这些领域提供有针对性的额外练习。这种方法效率更高,因为它基于学生现有的知识,集中资源在最需要的地方。同样,在PEFT中,我们仅优化最具影响力的权重。

通过冻结大多数参数、继续使用残差连接(residual connections)、并应用适当的正则化技术,这些模型能够保留其已有知识,从而避免灾难性遗忘(catastrophic forgetting)。例如,像GaLore这样的方法使得在个人计算机上微调大型模型(如Llama-3)成为可能,从而让高级语言建模更易于实现。

file

如上图所示,PEFT方法可分为三大类:

  1. ** 基于添加 (Addition-based) **: 通过在现有模型中添加新的可训练参数模块来实现微调。这些新增模块通常会减少对原始模型参数的修改,从而提高训练效率。
  2. ** 基于选择 (Selection-based) **: 从基础模型中选择一个参数子集进行微调,而不是对整个模型的所有参数进行优化。这种方法通过专注于最相关的参数,显著降低计算成本。
  3. ** 基于重新参数化 (Reparametrization-based) **: 使用替代表示形式对模型进行微调。例如,通过将权重矩阵分解为低秩表示,仅优化分解后的小部分参数。

接下来,我们将探讨几种代表性的PEFT技术,需注意的是,这些技术并非相互排斥,可以结合使用。

适配器(Adapters)

适配器属于基于添加(Addition-based)的PEFT方法。它们是添加到现有Transformer架构中的前馈模块,用于减少全连接层之间的参数空间,如下图所示。

file

如何减少特征空间?

假设一个全连接层将256维输入降维到16维,然后下一个全连接层将其重新升维回256维。计算其参数数量为:256 x 16 + 16 x 256 = 8192

相比之下,单个全连接层直接将256维输入映射到256维输出需要:256 x 256 = 65536

通过这种方式,适配器模块显著减少了参数数量。在适配器微调中,仅对适配器模块、层归一化(Layer Norms)和最终输出层进行训练,而不是调整整个模型的所有参数。这使得训练更快且更高效。

低秩适配 (LoRA)

这是一种重新参数化(Reparameterization)的方法,通过采用语言模型的替代表示形式进行微调。该技术通过将注意力层中的大权重矩阵分解为两个较小的矩阵,显著减少了微调过程中需要调整的参数数量。与直接分解矩阵不同,它从分解后的表示(伪分解)中进行学习。

相比于向模型添加新参数,LoRA方法专注于这种替代表示形式。一般共识是根据训练数据量和模型规模设置秩(rank)r,以缓解过拟合问题并有效管理模型预算。同时,研究表明LoRA的特性是“学得少,忘得少”,这也是预期的结果。

file

假设我们有两个矩阵A和B,分别包含 100 和 500 个参数。那么,总的权重参数数量WA和WB为:

WA x WB = 100 * 500 = 50000

现在假设秩(rank)为 5,新生成的权重矩阵WA和 WB 分别为:

WA = 100 x 5 = 500,WB = 500 x 5 = 2500

新的权重参数数量为:

W = WA + WB = 3000

相比原始的 50,000 个参数,这减少了 94%。

通过抑制和放大内部激活的注入式适配器 (IA3)

IA3 是另一种基于添加的微调方法,涉及三个阶段:向量添加、重新缩放(抑制/放大)以及下游任务的微调。在微调过程中,学习到的向量用于对模型中相应的元素进行重新缩放。这种缩放可以根据学习向量的值来抑制(减少)或放大(增加)激活值。通过这种方式,模型在特定任务中调整其表现。最终,这些重新缩放的向量在下游任务中微调,随着微调过程的进行,向量不断更新以优化模型性能。

file

具体包括以下三种新增向量:

  1. 键值重新缩放向量(Key Rescaling Vector):
    该向量与自注意力层中的键(keys)相乘。
  2. 值重新缩放向量(Value Rescaling Vector):
    该向量与自注意力层以及编码器-解码器注意力层中的值(values)相乘。
  3. 中间激活重新缩放向量(Intermediate Activation Rescaling Vector):
    该向量与位置前馈网络中的中间激活相乘。

这种方法可以简单理解为,模型在处理输入数据时,会针对不同的任务“调整音量”。“音量大”意味着放大激活值,“音量小”意味着抑制激活值,从而灵活地适应任务需求。比如,在文本分类任务中,模型可能需要放大与关键主题词相关的激活值,而抑制无关词的激活值,以确保准确地分类。同样地,在机器翻译任务中,模型可能会放大与句子语法结构相关的激活值,而对不影响翻译质量的冗余信息进行抑制。通过这种方式,IA3不仅能够以最少的参数调整完成对任务特定需求的适配,还能提高计算效率,减少过拟合风险,保持模型整体性能。

本文由博客一文多发平台 OpenWrite 发布!

标签:缩放,一览,微调,参数,LLM,256,模型,向量
From: https://www.cnblogs.com/xfuture/p/18567844

相关文章

  • Qwen2大模型微调入门实战,零基础入门到精通,收藏这一篇就够了
    Qwen2大模型微调入门实战Qwen2是通义千问团队最近开源的大语言模型,由阿里云通义实验室研发。以Qwen2作为基座大模型,通过指令微调的方式做高精度文本分类,是学习LLM微调的入门任务。在本文中,我们会使用Qwen2-1.5b-Instruct模型在复旦中文新闻数据集上做指令微调训练,同......
  • 【NLP高频面题 - LLM架构篇】什么是旋转位置编码(RoPE)?
    【NLP高频面题-LLM架构篇】什么是旋转位置编码(RoPE)?重要性:★★★......
  • 表格数据处理中大语言模型的微调优化策略研究
    论文地址ResearchonFine-TuningOptimizationStrategiesforLargeLanguageModelsinTabularDataProcessing论文主要内容这篇论文的主要内容是研究大型语言模型(LLMs)在处理表格数据时的微调优化策略。具体来说,论文探讨了以下几个关键方面:背景与挑战:大型语言模型......
  • 2024 CCF BDCI 小样本条件下的自然语言至图查询语言翻译大模型微调|Google T5预训练语
    代码详见https://gitee.com/wang-qiangsy/bdci目录一.赛题介绍1.赛题背景2.赛题任务二.关于GoogleT5预训练语言模型1.T5模型主要特点2.T5模型与赛题任务的适配性分析3.模型的优化三.解题思路1.数据准备2.数据处理3.模型训练4.模型评估四.代码实现1.配置类(Config)2.数据集类(Cyp......
  • LLM应用测试策略与方法
    评估LLMs是一个复杂的过程,因为与传统软件开发不同,LLMs的结果不可预测,缺陷也无法像逻辑可以归因于特定代码块那样进行调试。LLMs是一个黑盒,具有无限可能的输入和输出。然而,这并不意味着传统软件测试中的概念不能应用于测试LLMs。单元测试构成了功能测试、性能测试和可靠性测试,它们......
  • 【LLM训练】从零训练一个大模型有哪几个核心步骤?
    【LLM训练】从零训练一个大模型有哪几个核心步骤?⚠︎重要性:★★★NLPGithub项目:NLP项目实践:fasterai/nlp-project-practice介绍:该仓库围绕着NLP任务模型的设计、训练、优化、部署和应用,分享大模型算法工程师的日常工作和实战经验AI藏经阁:https://gitee.com/fas......
  • 【LLM训练】从零训练一个大模型有哪几个核心步骤?
    【LLM训练】从零训练一个大模型有哪几个核心步骤?⚠︎重要性:★★★NLPGithub项目:NLP项目实践:fasterai/nlp-project-practice介绍:该仓库围绕着NLP任务模型的设计、训练、优化、部署和应用,分享大模型算法工程师的日常工作和实战经验AI藏经阁:https://gitee.com/fastera......
  • 大语言模型(LLM)的训练微调 Fine Tuning -- part3 本地调用
    以下代码示范如何调用已经微调后的大语言模型,调用本地模型先决条件已经有了本地训练好的大语言模型,如何训练可以参考我的博文《生成式AI》课程作业6大语言模型(LLM)的训练微调FineTuning--part2-CSDN博客文章浏览阅读148次,点赞2次,收藏2次。代码围绕一个主工作目录展开,......
  • 《生成式 AI》课程 作业6 大语言模型(LLM)的训练微调 Fine Tuning -- part2
    资料来自李宏毅老师《生成式AI》课程,如有侵权请通知下线IntroductiontoGenerativeAI2024Spring来源背景说明该文档主要介绍了国立台湾大学(NTU)2024年春季“生成式人工智能(GenAI)”课程的作业5(GenAIHW5)相关内容,包括任务概述、待办事项、解码参数、提交与评分、参考......
  • 机器学习(ML)和大型语言模型(LLMs)学习路线图
    学生应该在微积分、统计学、计量经济学、基本经济理论和任何高级语言(最好是Python)的编程经验方面有扎实的基础。微积分有助于理解优化问题,这是许多机器学习算法的核心,特别是在梯度下降和神经网络。统计对于理解概率分布、假设检验和推理至关重要,这些是大多数机器学习模型的......