理解LLM微调:根据您独特的需求个性化大型语言模型

LLM微调理解:个性化大型语言模型,根据您的需求

截至2023年9月,大型语言模型(LLMs)的领域仍然见证着包括Alpaca、Falcon、Llama 2、GPT-4等模型的崛起。

利用这些LLMs潜力的一个关键方面在于微调过程,这是一种允许对预训练模型进行定制以精确适应特定任务的策略。通过这种微调,这些模型可以真正与个性化需求保持一致,提供创新且量身定制的解决方案。

然而,需要注意的是,并非所有微调途径都是平等的。例如,使用GPT-4的微调能力需要付费订阅,相对于市场上其他选择而言,费用较高。另一方面,开源领域充斥着提供更易于获取大型语言模型能力的替代方案。这些开源选项使得先进的人工智能技术更加民主化,促进了不断发展的人工智能领域的创新和包容性。

Hugging Face – 开放式LLM排行榜

为什么LLM微调很重要?

LLM微调不仅是技术改进,而且是LLM模型开发的关键方面,它允许在各种任务中更具体、更精细地应用。微调调整预训练模型以更好地适应特定数据集,提高其在特定任务中的性能,并确保更具针对性的应用。它展示了LLMs适应新数据的显着能力,显示了在不断增长的人工智能应用中至关重要的灵活性。

微调大型语言模型打开了许多机会,使它们在从情感分析到医学文献评论等特定任务中表现出色。通过将基础模型调整到特定用例,我们开启了新的可能性,提高了模型的效率和准确性。此外,与从头开始训练模型相比,它更经济地利用了系统资源,因为微调需要较少的计算资源。

随着我们深入了解本指南,我们将讨论LLM微调的复杂性,为您提供基于该领域最新进展和最佳实践的全面概述。

基于指令的微调

生成式人工智能生命周期中的微调阶段,如下图所示,特点是整合指令输入和输出,并结合逐步推理的示例。这种方法使模型能够生成不仅相关而且与输入的具体指令精确对齐的响应。在此阶段,预训练模型被调整以解决不同任务和用例,利用个性化数据集增强其功能。

生成式人工智能生命周期 – 微调

单任务微调

单任务微调侧重于提升模型在特定任务(如摘要)中的专业能力。这种方法在优化涉及大量文档或对话线程的工作流程中特别有益,包括法律文件和客户支持票据。值得注意的是,这种微调可以通过相对较少的示例(从500到1000个)实现显著的性能提升,而预训练阶段使用的标记数则达到数十亿。

单任务微调示例说明

 

LLM微调的基础:LLM:Transformer架构及更多

理解LLM微调的旅程始于把握构成大型语言模型的基础要素。这些模型的核心是Transformer架构,它是一种利用自注意机制优先处理单词上下文而不是它们在句子中的接近程度的神经网络。这种创新方法促进了对输入中标记之间远程关系的更深入理解。

在我们探索transformers的复杂性时,我们遇到了一个多步骤的过程,从编码器开始。这个初始阶段涉及将输入进行分词,并创建表示输入及其在句子中位置的嵌入向量。随后的阶段涉及使用称为查询的矩阵进行一系列计算,最终得到一个自注意力分数,决定了对句子不同部分和各种标记的关注。

Transformer架构

微调是LLM开发中的一个关键阶段,它涉及进行微小的调整以实现更理想的输出。这个阶段虽然至关重要,但也面临一系列挑战,包括处理大量参数的计算和存储需求。参数高效微调(PEFT)提供了减少需要进行微调的参数数量的技术,从而简化了训练过程。

LLM预训练:建立强大的基础

在LLM开发的初期阶段,预训练起到了核心作用,利用超参数化的transformers作为基础架构。这个过程涉及以各种方式对大规模无监督语料库中的自然语言进行建模,例如双向、自回归或序列到序列。这里的目标是创建一个基础,可以通过引入特定任务目标后续进行微调以适应特定的下游任务。

预训练,微调

这个领域的一个值得注意的趋势是预训练LLM的规模不可避免地增加,以参数数量来衡量。经验证据一致表明,更大的模型加上更多的数据几乎总是能够获得更好的性能。例如,具有1750亿参数的GPT-3在生成高质量自然语言和执行各种零样本任务方面树立了一个基准。

微调:模型适应之路

在预训练之后,LLM进行微调以适应特定任务。尽管预训练LLM(如GPT-3)中的上下文学习显示出令人期待的性能,但在特定任务设置中,微调仍然更加优越。然而,全参数微调的普遍方法存在挑战,包括高计算和内存需求,特别是在处理大规模模型时。

对于拥有超过十亿参数的大型语言模型,高效管理GPU内存至关重要。一个完整的32位精度模型参数需要4字节的空间,这意味着仅加载一个10亿参数模型就需要4GB的GPU内存。实际的训练过程需要更多的内存来容纳各种组件,包括优化器状态和梯度,对于这个规模的模型,可能需要高达80GB的GPU内存。

为了应对GPU内存的限制,使用了量化技术,即减少模型参数的精度,从而降低内存需求。例如,将精度从32位改为16位可以减半加载和训练模型所需的内存。后面的文章中,我们将学习使用量化概念进行微调的Qlora。

LLM GPU内存需求与参数数量和精度的关系

 

探索PEFT方法的分类

参数高效微调方法

在完全微调大型语言模型的过程中,重要的是要有一个可以高效处理大量模型权重的计算设置,尤其是对于最先进的模型,其大小现在已经达到数百GB。此外,还需要管理优化器状态的内存分配、梯度处理、前向激活以及在训练过程的各个阶段提供临时内存。

加法方法

这种调优方法可以通过增加额外的参数或层来增强预训练模型,重点是仅训练新添加的参数。尽管增加了参数数量,但这些方法提高了训练时间和空间效率。增加方法进一步分为以下子类:

  • 适配器:在变换器子层之后加入小型全连接网络,其中显著的例子包括AdaMix、KronA和Compactor。
  • 软提示:通过梯度下降微调模型输入嵌入的一部分,其中突出的例子包括IPT、前缀调优和WARP。
  • 其他增加方法:包括LeTS、AttentionFusion和Ladder-Side调优等技术。

选择性方法

选择性PEFTs根据层类型和内部模型结构来微调有限数量的顶层。这个类别包括像BitFit和LN调优这样专注于调优特定元素(如模型偏差或特定行)的方法。

重参数化方法

这些方法利用低秩表示来减少可训练参数的数量,其中最著名的是低秩自适应或LoRA。该方法利用简单的低秩矩阵分解来参数化权重更新,在低秩子空间中展示了有效的微调。

1)LoRA(低秩自适应)

LoRA是一种突破性的PEFT技术,由Edward J. Hu等人于2021年的一篇论文中提出。它属于重参数化类别,冻结LLM的原始权重,并将新的可训练低秩矩阵整合到Transformer架构的每一层中。这种方法不仅减少了可训练参数的数量,而且减少了训练时间和计算资源的需求,从而提供了比完全微调更高效的替代方案。

要理解LoRA的机理,必须回顾一下Transformer架构,其中输入提示经过标记化和转化为嵌入向量。这些向量通过Transformer的编码器和/或解码器段,遇到经过预训练的自注意力和前馈网络的权重。

LoRA使用奇异值分解(SVD)的概念。基本上,SVD将一个矩阵分解为三个不同的矩阵,其中一个是包含奇异值的对角矩阵。这些奇异值非常重要,因为它们衡量矩阵中不同维度的重要性,较大的值表示更高的重要性,较小的值表示较低的重要性。

矩阵的奇异值分解(SVD)

这种方法使LoRA能够保持数据的基本特征,同时减少维度,从而优化微调过程。

LoRA介入了这个过程,冻结了所有原始模型参数,并在原始权重旁引入了一对“秩分解矩阵”。这些较小的矩阵被标记为A和B,并通过监督学习进行训练,这个过程在前几章中有详细说明。

LoRA LLM示意图

这种策略中的关键要素是称为秩(’r’)的参数,它决定了低秩矩阵的大小。精心选择的’r’值可以产生令人印象深刻的结果,即使值较小,也可以创建具有较少参数需要训练的低秩矩阵。这种策略已经在像HuggingFace Transformers这样的开源库中得到了有效实施,从而实现了各种任务的LoRA微调,具有显著的效率。

2)QLoRA:进一步提高LoRA的效率

在LoRA奠定的基础上,QLoRA进一步减少了内存需求。由Tim Dettmers等人于2023年提出,它将低秩自适应与量化相结合,使用一种称为NormalFloat或nf4的4位量化格式。量化基本上是将数据从较高的信息表示转换为较少信息的过程。这种方法保持了16位微调方法的有效性,将4位权重解量化为在计算过程中所需的16位。

比较微调方法:QLORA通过4位精度量化和适用于内存峰值管理的页面优化器增强了LoRA

QLoRA利用NumericFloat4(nf4)针对Transformer架构中的每一层,并引入双重量化的概念,进一步缩小了进行微调所需的内存占用。这是通过对已经量化的常量进行量化来实现的,该策略通过使用页面优化器和统一内存管理来避免典型的梯度检查点内存峰值。

Guanaco是一个经过QLORA调整的集成模型,在开源聊天机器人解决方案中树立了一个基准。通过系统人工和自动评估验证的性能突显了其在领域中的主导地位和效率。

经过修改的OASST1数据集进行微调的Guanaco的65B和33B版本成为ChatGPT甚至GPT-4等知名模型的强有力竞争者。

使用人类反馈进行强化学习微调

当对预训练语言模型进行微调以更紧密地与人类价值观对齐时,人类反馈强化学习(RLHF)发挥作用。这个概念由Open AI于2017年引入,奠定了增强文档摘要和InstructGPT开发的基础。

RLHF的核心是强化学习范式,一种机器学习技术,其中一个代理通过执行行动并接收奖励来学习如何在环境中行为。这是一个连续的行动反馈循环,代理受到激励选择能够产生最高奖励的选择。

将此转化为语言模型的领域,代理就是模型本身,它在给定上下文窗口的环境中运行,并根据当前上下文窗口中的标记进行决策的状态定义。 “动作空间”包括模型可以选择的所有潜在标记,目标是选择与人类偏好最接近的标记。

RLHF过程广泛利用人类反馈,用于训练奖励模型。这个模型在微调过程中起到了至关重要的作用,鼓励预训练模型生成更符合人类价值观的输出。这是一个动态而迭代的过程,模型通过一系列的“回合”进行学习,这个术语用于描述在语言生成的上下文中导致奖励的状态和行动序列。

Instruct-GPT

RLHF的一个显着潜力是能够在AI助手中培养个性化,使其与个别用户的偏好相 reson 鸣,无论是他们的幽默感还是日常例行事项。它为创建不仅在技术上熟练,而且在情感智能方面也能理解和回应人类沟通细微差别的AI系统打开了大门。

然而,需要注意的是,RLHF并不是一个万无一失的解决方案。模型仍然容易生成不理想的输出,这反映了它们所训练的广泛且常常无序和有偏见的数据。

结论

微调过程是利用Alpaca、Falcon和GPT-4等大型语言模型的全部潜力的关键步骤,已经变得更加成熟和专注,为各种任务提供了量身定制的解决方案。

我们已经看到了单任务微调,它专门针对特定角色的模型,以及包括LoRA和QLoRA在内的参数高效微调(PEFT)方法,旨在使训练过程更加高效和经济。这些发展为更广泛的受众打开了高级AI功能的大门。

此外,Open AI引入的人类反馈强化学习(RLHF)是朝着创建更加理解和与人类价值观和偏好更加密切对齐的AI系统迈出的一步,为不仅智能而且还敏感于个别用户需求的AI助手奠定了基础。RLHF和PEFT共同协作,增强了大型语言模型的功能和效率。

随着企业和个人寻求将这些经过精细调整的LLMs整合到他们的业务中,他们实际上正在迎接一个未来,其中人工智能不仅仅是工具,而是一个能够理解和适应人类环境的合作伙伴,提供创新和个性化解决方案。