一、大模型的基本概率、工作原理及其微调

一、大模型的基本概念

chagt、open ai、大模型、跨模态大模型等人工智能的词语, 在近年来越来越火。而当我们讲大模型时,不仅仅是指大语言模型,这两个是不一样的概念。
大模型(Large Model):指定是机器学习中使用的庞大的、复杂的算法模型,它们可以处理和分析大量的数据,用于各种任务,例如图像识别、自然语言处理等。甚至通过一个模型(多模态大模型)来同时处理文本、图像、视频、音频等多种数据类型,通过融合不同模态的数据,提供更为全面和准确的理解和分析。
大语言模型(Large Language Model):大语言模型是大模型的一种,专门用于处理和理解自然语言,如文本生成、语言翻译等。它们通过学习大量文本数据,掌握语言的规律和结构。总的来说,大语言模型是大模型在语言处理方面的应用。
大模型的“大”指的是模型的规模,具体体现在两个方面:

  • 模型的参数的数量:模型的参数超过上亿,超多的参数代表着模型的结构更为复杂,能够捕捉的数据特征更为丰富
  • 模型训练所需的数据量:以确保模型能够学习到足够的知识和规则,需要大量的数据,这样才能让模型足够”聪明“。
    训练ChatGPT这样的生成式AI需要至少1万张英伟达A100显卡,单张显卡的价格目前是六七万,性能更优的V100单价8万元人民币,也就是说光算力投入至少就要达到六七个亿以上

为什么大模型能像人一样回答问题呢?
大模型由三个层次来构成,分别是模型结构、模型参数和训练数据:

  • 模型结构:这可以比拟为人类的神经网络架构,人的大脑由上百亿的神经元组成,通过复杂的突触连接相互通信。神经元接收、处理并传递信息,形成处理感官输入、产生思想、指定决策等各种复杂功能的基础结构。同样地,大模型中的模型结构,就像Transformer、LSTM等网络结构,定义了信息(数据)应该如何流动和被处理的基本路径和方式,是模型能够实现各种任务能力的物理基础。
  • 模型参数:类比于人脑中的突触权重和神经元的激活阈值。每当人学习新知识或技能,大脑中的突触连接强度会因为经验的积累而发生改变,这种长期的潜能变化(例如长时程增强,LTP)让大脑能够更高效地处理相似的信息。在大模型中,参数就是这些“突触权重”,在训练过程中不断微调以优化模型的表现,反映了模型从训练数据中学习到的知识和规律。每次参数更新都类似于大脑的一次“学习”,使得模型能更好地理解和生成符合特定任务要求的语言、图像或其他形式的数据。
  • 训练数据:这相当于人一生中接触到的各种经验和知识——书籍、对话、感受、实践等所有的信息输入。人的行为、思维模式和知识体系很大程度上是由个人经历,也就是“学习材料”的质量和多样性塑造的。同样的,对于大模型而言,训练数据就像是它“经历”的世界,其中包括了大量的文本记录、图像、音频、视频等,包含了人类文化、科学、历史等全方位的信息。高质量且多样化的训练数据,能够让模型学会广泛的理解能力和表达方式,就像丰富多元的经历让人变得更加智慧和通达一样。

二、大模型的工作原理

当大语言模型回答问题的时候,其过程可以用下面的步骤:

  • 接收问题:首先,大模型接收到一个问题,就像人类的大脑通过耳朵听到别人提出的问题一样。
  • 理解问题:大模型会分析问题的意思和关键词,根据已知的语言规则和词汇理解问题的意思。类比大脑会根据以往的经验和知识、理解问题的意图。模型会通过自我注意力机制(Self-Attention)等方式,模拟大脑如何在不同记忆片段之间迅速建立关联,从而把握问题的核心要义和上下文环境。
  • 检索信息:一旦理解问题,大模型就会在它的知识库种搜索相关的信息,这就像人脑在记忆中寻找答案一样。
  • 输出回答:到相关信息后,大模型会开始构建回答,把找到的信息组织成一段连贯的文本。

三、大模型的预训练和微调

3.1 预训练

大模型的预训练通常采用的是无监督学习方法,这一过程主要依赖自监督学习(self supervised learning)。其中常见的大模型预训练的无监督(自监督)学习方法:

  1. 掩码语言模型(Masked Lnaguage Modeling, MLM): 这是BERT模型采用的策略。训练时,会随机选择文本中的一些token进行”掩码“(通常用给一个特定的标志替换,如mask)。然后,模型需要基于上下文信息预测被掩码的原始词汇。这种机制迫使模型理解和学习上下文之间的依赖关系,尽管掩码的放置和真实词的预测看似有监督,但实际上“答案”(正确的被掩码词)就隐藏在输入文本中,无需人工标注。
  2. 自回归语言模型 (Autoregressive Language Modeling): 这种方式更类似于传统的语言建模,例如GPT系列所采用的方法。模型需要根据给定序列的前n个token预测下一个(或几个)token。虽然每个句子自身可以看作是有“标签”的(下一个词就是“标签”),但由于模型是在构造序列时依次生成后续单词,实质上是在学习数据本身的统计分布,属于一种自监督过程。

3.2 微调

大模型的微调(fine-tuning)是一种有监督学习的过程,目的是将已经在大模型无监督数据上预训练好的模型,进一步适应特定任务的需求。通过输入特定领域的数据集,使得模型学习到该领域知识,从而优化大模型在特定领域中的表现。
大模型的微调方法:全参数微调和参数高效微调(Parameter-Efficient Fine-Tuning,PEFT)。不同的微淘方法对显存的要求是不一样的。
在这里插入图片描述

1. Lora微调方法

Lora(Low-rank adaptation)是一种旨在微调大型预训练语言模型的技术。其核心理念在于,在模型的决定性层次引入小型、低秩的矩阵来实现模型行为的微调,而不用对整个模型结构进行大幅度修改。
这种方法的优势在于,在不显著增加额外计算负担的前提下,能够有效微调模型,同时保留模型原有的性能水准。
Lora的操作流程如下:

  • 确定微调目标权重矩阵:首先在大模型中识别出需要微调的权重矩阵,这些矩阵一般位于模型的多头自注意力和前馈神经网络部分。
  • 引入两个低秩矩阵:然后,引入两个维度较小的低秩矩阵A和B。假设原始权重矩阵的尺寸为dd,则A和B的尺寸可能为dr和rd,其中r远小于d
  • 计算低秩更新:通过这两个低秩矩阵的乘积AB来生成一个新的矩阵AB
  • 结合原始权重:最终,将新生成的矩阵AB叠加到原始权重上。因此,原始权重经过了微调,但大部分权重维持不变。这个过程可以用数学表达式描述为:新权重 = 原始权重 + AB。

2. QLora微调方法

QLora(Quantized Low-Rank Adaptation)是一种结合了LoRA(Low-Rank Adaptation)方法与深度量化技术的高效模型微调手段。QLoRA的核心在于:

  • 量化技术:QLora将预训练模型量化为4位,这一技术包括低精度存储数据类型(4-bit noramalfloat ,简称nf4)和计算数据类型(16-bit brainfloat).这种做法极大减少了模型存储需求,同时保持模型精度的最小损失。
  • 量化操作:在4位量化中,每个权重由4个比特表示,量化过程中需要最重要的值并将其映射到16个可能的值之一。首先确定量化范围,然后将这个范围分为16个区间,每个区间对应一个4-bit值。然后,原始的32位浮点数值将映射到最近的量化区间值上。
  • 微调阶段:在训练期间,QLoRA先以4-bit格式加载模型,训练时将数值反量化到bf16进行训练,这样大幅减少了训练所需的显存。例如,33B的LLaMA模型可以在24 GB的显卡上进行训练。
    量化过程的挑战在于如何设置合适的映射和量化策略,以最小化精度损失对性能的yi。在大模型中,可以显著减少内存和计算需求,使得在资源有限的环境下部署和训练成为可能。

3. 适配器调整(Adapter Tuning)微调方法

与LoRA技术类似,适配器调整的目标是在保留预训练模型原始参数不变的前提下,使模型能够适应新的任务。适配器调整的方法是在模型的每个层或选定层之间插入小型神经网络模块,称为“适配器”。这些适配器是可训练的,而原始模型的参数则保持不变。
适配器调整的关键步骤包括:

  • 以预训练模型为基础:初始阶段,拥有一个已经预训练的大模型,该模型已经学习了丰富的语言特征
  • 插入适配器:在预训练模型的每一层或指定层中,插入适配器。适配器是小型的神经网络,一般包含少量层次,并且参数规模相对较少。
  • 维持预训练参数不变:在微调过程中,原有的预训练模型参数保持不变。我们不直接调整这些参数,而是专注于适配器的参数训练。
  • 训练适配器:适配器的参数会根据特定任务的数据进行训练,使适配器能够学习如何根据任务调整模型的行为。
    针对任务的调整:通过这种方式,模型能够对每个特定任务进行微调,同时不影响模型其他部分的通用性能。适配器有助于模型更好地理解和处理与特定任务相关的特殊模式和数据。
    高效与灵活:由于只有部分参数被调整,适配器调整方法相比于全模型微调更为高效,并且允许模型迅速适应新任务。

LoRA与适配器调整的主要区别在于:

  1. LoRA:在模型的权重矩阵中引入低秩矩阵来实现微调,这些低秩矩阵作为原有权重矩阵的修改项。在标准的LoRA方法实践中,通常会保持大部分或全部原始模型的权重不变(即冻结),仅在训练过程中优化这些新引入的低秩矩阵参数。
  2. 适配器调整:通过在模型各层中添加小型神经网络模块,即“适配器”,来实现微调。适配器独立于模型的主体结构,仅适配器的参数在微调过程中更新,而模型的其他预训练参数保持不变。

4. 前馈调整(Prefix Tuning)微调方法

与传统的微调范式不同,前缀调整提出了一种新的策略,即在预训练的语言模型(LM)输入序列前添加可训练、任务特定的前缀,从而实现针对不同任务的微调,这意味这我们可以为不同任务保存不同的前缀,而不是为每个任务保存一整套微调后的模型权重,从而节省了大量的存储空间和微调成本。
[图片]
前缀实际上是一种连续可微的虚拟标记(Soft Prompt/Continuous Prompt),与离散的Token相比,它们更易于优化并且效果更佳。这种方法的优势在于不需要调整模型的所有权重,而是通过在输入中添加前缀来调整模型的行为,从而节省大量的计算资源,同时使得单一模型能够适应多种不同的任务。前缀可以是固定的(即手动设计的静态提示)或可训练的(即模型在训练过程中学习的动态提示)。

5. 提示调整(Prompt Tuning)微调方法

提示调整是一种在预训练语言模型输入中引入可学习嵌入向量作为提示的微调方法。这些可训练的提示向量在训练过程中更新,以指导模型输出更适合特定任务的响应。
提示调整与前缀调整都涉及在输入数据中添加可学习的向量,这些向量是在输入层添加的,但两者的策略和目的不同:

  • 提示调整:旨在模仿自然语言中的提示形式,将可学习向量(通常称为提示标记)设计为模型针对特定任务生成特定类型输出的引导。这些向量通常被视为任务指导信息的一部分,倾向于使用较少的向量来模仿传统的自然语言提示。
  • 前缀调整:可学习前缀更多地用于提供输入数据的直接上下文信息,作为模型内部表示的一部分,可以影响整个模型的行为。
    以下是两者的训练示例,以说明它们的不同:
  • 提示调整示例:
    输入序列: [Prompt1][Prompt2] “这部电影令人振奋。”
    问题: 评价这部电影的情感倾向。
    答案: 模型需要预测情感倾向(例如“积极”)
    提示: 没有明确的外部提示,[Prompt1][Prompt2]作为引导模型的内部提示,这里的问题是隐含的,即判断文本中表达的情感倾向。
  • 前缀调整示例:
    输入序列: [Prefix1][Prefix2][Prefix3] “I want to watch a movie.”
    问题: 根据前缀生成后续的自然语言文本。
    答案: 模型生成的文本,如“that is exciting and fun.”
    提示: 前缀本身提供上下文信息,没有单独的外部提示。

6. P-Tuning微调方法

P-Tuning(基于提示的微调)和提示调整都是为了调整大型预训练语言模型(如GPT系列)以适应特定任务而设计的技术。两者都利用预训练的语言模型执行特定的下游任务,如文本分类、情感分析等,并使用某种形式的“提示”或“指导”来引导模型输出,以更好地适应特定任务。
提示调整与P-Tuning的主要区别在于:

  1. 提示调整:使用静态的、可训练的虚拟标记嵌入,在初始化后保持固定,除非在训练过程中更新。这种方法相对简单,因为它只涉及调整一组固定的嵌入参数,在处理多种任务时表现良好,但可能在处理特别复杂或需要细粒度控制的任务时受限。
  2. P-Tuning:使用一个可训练的LSTM模型(称为提示编码器prompt_encoder)来动态生成虚拟标记嵌入,允许根据输入数据的不同生成不同的嵌入,提供更高的灵活性和适应性,适合需要精细控制和理解复杂上下文的任务。这种方法相对复杂,因为它涉及一个额外的LSTM模型来生成虚拟标记嵌入。

P-Tuning中使用LSTM(长短期记忆网络)作为生成虚拟标记嵌入的工具,利用了LSTM的以下优势:

  1. 更好的适应性和灵活性:LSTM可以捕捉输入数据中的时间序列特征,更好地理解和适应复杂的、顺序依赖的任务,如文本生成或序列标注。
  2. 改进的上下文理解:LSTM因其循环结构,擅长处理和理解长期依赖关系和复杂的上下文信息。
  3. 参数共享和泛化能力:在P-Tuning中,LSTM模型的参数可以在多个任务之间共享,这提高了模型的泛化能力,并减少了针对每个单独任务的训练需求。而在提示调整中,每个任务通常都有其独立的虚拟标记嵌入,这可能限制了跨任务泛化的能力。
    这些特性使得LSTM特别适合处理复杂任务和需要细粒度控制的应用场景。然而,这些优势也伴随着更高的计算复杂度和资源需求,因此在实际应用中需要根据具体需求和资源限制来权衡使用LSTM的决策。

7. P-Tuning v2微调方法

P-Tuning v2是P-Tuning的进一步改进版,在P-Tuning中,连续提示被插入到输入序列的嵌入层中,除了语言模型的输入层,其他层的提示嵌入都来自于上一层。这种设计存在两个问题:

  1. 它限制了优化参数的数量。由于模型的输入文本长度是固定的,通常为512,因此提示的长度不能过长。
  2. 当模型层数很深时,微调时模型的稳定性难以保证;模型层数越深,第一层输入的提示对后面层的影响难以预测,这会影响模型的稳定性。
    P-Tuning v2的改进在于,不仅在第一层插入连续提示,而是在多层都插入连续提示,且层与层之间的连续提示是相互独立的。这样,在模型微调时,可训练的参数量增加了,P-Tuning v2在应对复杂的自然语言理解(NLU)任务和小型模型方面,相比原始P-Tuning具有更出色的效能。

参考链接:https://blog.csdn.net/2401_85280307/article/details/140459854

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值