大语言模型(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 发布!

techlead_kris
78 声望61 粉丝

TeahLead_KrisChang,复旦博士,10+年的互联网和人工智能从业经验,10年+技术团队和业务团队管理经验,阿里云认证云服务资深架构师,上亿营收AI产品业务负责人。丰富的传统软件工程、互联网软件工程、人工智能软...