weizhang2024

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

调参方式设计以及训练策略链

在UniLM中,我们可以调用各种先进的技术和机制来协同工作,以实现高效和多任务处理:

  • 自注意力机制:核心组件,用于捕捉全局依赖和并行计算。
  • 自注意力掩码:用于控制信息流,适应不同任务需求。
  • Flash Attention:优化自注意力计算,加速训练和推理。
  • ROPE(Rotary Position Embedding):增强位置编码,捕捉相对位置关系。
  • Multi-Query Attention(MQA):简化自注意力计算,优化资源使用。

调参方式-量化与微调

LORA(一种PEFT的具体实现)

LoRA 是一种微调技术,旨在在预训练模型的基础上添加低秩结构,以实现高效的参数化微调。与传统的微调不同,LoRA 不需要修改原始预训练模型的参数,而是添加一个低秩适应层,这使得微调更为参数高效。

在项目中:

if lastest_checkpoint is not None: # resume lora training or quantized inference
    model = PeftModel.from_pretrained(model, lastest_checkpoint, is_trainable=is_trainable)

模型结构中的 LoRA: 在这段代码中,我们可以看到检查模型是否具有 pretrained_model 属性。如果模型具有这个属性(并且有一个名为 v_head 的属性),这意味着它使用了 LoRA 或某种类似的技术,其中 pretrained_model 可能代表的是预训练的主模型,而其他属性(如 v_head)可能是该模型上的附加头部或部分。

量化

量化 在深度学习中主要是指将模型的参数从浮点数转化为更小范围、更低精度的表示,例如从32位浮点数转为8/4位整数。量化的主要目的是减少模型的大小和推理时间,同时保持精度损失在可接受范围内。

量化过程中涉及两个主要步骤:

训练:在模型训练阶段,可以使用模拟量化,即在前向传播时使用低精度数值,但在反向传播和权重更新时仍使用原始的高精度数值。

推理:在模型推理阶段,模型使用量化后的低精度数值。

在本项目中:

量化模型的恢复: 当存在一个最新的检查点时,模型可能会恢复为 LoRA 训练或量化推理模式。

if lastest_checkpoint is not None: # resume lora training or quantized inference
    model = PeftModel.from_pretrained(model, lastest_checkpoint, is_trainable=is_trainable)

检查点与量化的关系: 在这段代码中,我们可以看到关于量化模型和检查点之间的一些断言。具体来说,量化模型只接受一个检查点,而 LoRA 微调可以接受多个检查点。

if finetuning_args.finetuning_type != "lora":
    assert len(model_args.checkpoint_dir) == 1, "Only LoRA tuning accepts multiple checkpoints."else:
    assert model_args.quantization_bit is None or len(model_args.checkpoint_dir) == 1, 
        "Quantized model only accepts a single checkpoint."

量化评估的警告: 如果模型在 4/8 位模式下进行评估,可能会导致得分较低,这里给出了一个警告。

if model_args.quantization_bit is not None and (not training_args.do_train):
    logger.warning("Evaluating model in 4/8-bit mode may cause lower scores.")

这些代码段提供了关于在此特定实现中如何处理与量化相关的逻辑的一些信息。具体来说,它们描述了如何在恢复、保存和评估模型时处理量化。

量化位设置: 这部分代码定义了一个名为 quantization_bit 的字段,它允许用户指定用于量化模型的位数。

quantization_bit: Optional[int] = field(
    default=None,
    metadata={"help": "The number of bits to quantize the model."}
)

量化类型设置: 除了量化位数外,还定义了一个名为 quantization_type 的字段,允许用户选择在 int4 训练中使用的量化数据类型,可选值为 "fp4" 和 "nf4"。

quantization_type: Optional[Literal["fp4", "nf4"]] = field(
    default="nf4",
    metadata={"help": "Quantization data type to use in int4 training."}
)

这些代码段为量化提供了配置选项,允许用户根据需要进行自定义设置。量化在LoRA模型中具有重要作用,通过减少存储需求、加快推理速度和降低计算资源消耗,提高了模型的整体效率和适用性。量化技术的应用,使得LoRA模型能够在保持高性能的同时,优化资源利用,适应更广泛的应用场景。

PEFT调参简介

PEFT(Parameter-Efficient Fine-Tuning)是一种在保留模型大部分预训练参数的同时,通过调整少量参数来进行微调的方法。这种方法特别适用于大规模预训练模型,因为它在不需要全面微调模型的情况下,可以显著减少计算资源和时间的消耗。以下是PEFT训练过程的详细描述:

1. 背景与概念

传统微调

  • 传统的微调方法需要调整模型的所有参数,这在处理大规模预训练模型(如BERT、GPT-3)时可能非常耗时且资源密集。

PEFT方法

  • PEFT通过调整少量参数来实现微调,以提高效率和效果。这些参数通常是模型中的特定部分,如最后几层、适应层或插入的新参数层。

2. PEFT训练过程

2.1 选择可微调参数
  • 确定参数子集:选择模型中需要微调的参数子集。通常,这些参数子集包括模型的最后几层、特定的层(如适应层)、或插入的新参数层。
  • 冻结其他参数:冻结模型中其余不需要微调的参数,保持其值不变。
2.2 构建适应层(Adapter Layers)
  • 插入适应层:在模型的特定位置插入适应层。这些层通常是小型的神经网络层,用于捕捉新的任务特定特征。

  • 设计适应层

    :适应层的设计可以多种多样,常见的包括:

    • 瓶颈层(Bottleneck Layers):通过降维和升维操作来捕捉特征。
    • 低秩近似(Low-Rank Approximations):使用低秩矩阵近似大型权重矩阵。
    • 混合层(Mixture of Layers):结合多种适应层结构。
2.3 训练过程
  • 初始化参数:初始化选择的参数子集和适应层的参数,通常使用随机初始化或预训练模型的初始值。

  • 微调

    :在特定任务数据集上进行微调,优化选择的参数子集和适应层的参数,同时保持其他参数不变。

    • 优化算法:使用常见的优化算法,如Adam或SGD,通过最小化任务特定的损失函数来调整参数。
    • 学习率:设置适当的学习率,对于不同的参数子集和适应层可能需要不同的学习率。
2.4 模型评估与调整
  • 评估性能:在验证集上评估微调后的模型性能,检查其在特定任务上的表现。
  • 调整策略:根据评估结果,调整微调策略,如改变可微调参数子集、调整适应层结构或优化超参数。

3. 优势与应用

优势

  • 参数效率:仅调整少量参数,减少了计算和存储开销。
  • 适应性强:适应层可以灵活插入到模型的不同位置,适应多种任务需求。
  • 快速训练:由于只微调部分参数,训练过程更快,适合资源有限的环境。

应用

  • 领域适应:在特定领域(如法律、医学)中微调预训练模型,使其更适应领域内的任务。
  • 任务适应:在特定任务(如文本分类、命名实体识别)上微调模型,提高其任务性能。

4.LoRA概念

LoRA是一种具体的PEFT方法,通过将预训练模型的权重矩阵分解为低秩矩阵,并仅微调这些低秩矩阵,从而实现参数高效的微调。

实现方式

  • 低秩分解:将模型中的权重矩阵分解为两个低秩矩阵的乘积。具体来说,如果一个权重矩阵 $W∈Rd×kW \in \mathbb{R}^{d \times k}W∈Rd×k$,可以分解为两个低秩矩阵 $A∈Rd×rA \in \mathbb{R}^{d \times r}A∈Rd×r$ 和 $B∈Rr×kB \in \mathbb{R}^{r \times k}B∈Rr×k$,其中 $r≪min⁡(d,k)r \ll \min(d, k)r≪min(d,k)$。
  • 微调低秩矩阵:在微调过程中,仅调整低秩矩阵$A$和 $B$ 的参数,而保持原始权重矩阵 $W$不变。这显著减少了需要微调的参数数量。
  • 组合输出:最终输出通过组合原始权重矩阵和低秩矩阵的乘积来计算,即 $W^{'}=W+AB$。

PEFT通过调整模型中少量参数或插入适应层来实现高效微调。其训练过程包括选择可微调参数、构建适应层、在特定任务数据集上进行微调,并通过模型评估和调整优化性能。这种方法在保持高效性的同时,显著提高了大规模预训练模型在特定任务和领域中的适应性。

训练策略

我们即将大致按照如下的训练策略 Pre-Training(PT)、Seq2Seq Fine-Tuning Model(SFM)、Reward Model(RM)、Proximal Policy Optimization(PPO)

1. Pre-Training(PT)

Pre-Training(预训练)是指在大规模无标注数据集上对模型进行训练,以捕捉广泛的语言特征和模式。这一阶段不涉及特定任务,而是为了让模型学习到通用的语言知识。

在UniLM中的应用:

  • UniLM的预训练:
  • 多任务学习:UniLM在预训练阶段通过多任务学习的方式进行,即结合掩码语言模型(Masked Language Model, MLM)、单向语言模型和序列到序列(Seq2Seq)模型的预训练任务。
  • MLM任务:随机掩盖一部分输入词汇,并要求模型根据上下文预测被掩盖的词汇。这类似于BERT的预训练方法,使模型学习到丰富的上下文信息。
  • 单向语言模型:模型从左到右(或从右到左)进行预测,学习生成任务的能力,这类似于GPT的预训练方法。
  • Seq2Seq任务:编码器-解码器架构,编码器读取输入序列,解码器生成输出序列。这使得模型能够处理机器翻译、摘要生成等任务。

2. Seq2Seq Fine-Tuning Model(SFM)

Seq2Seq Fine-Tuning Model指在具体的Seq2Seq任务上对预训练模型进行微调,使其能够更好地适应特定任务的需求。

在UniLM中的应用:

  • 微调阶段:
  • 任务特定数据:在预训练完成后,UniLM会在具体任务的数据集上进行微调。例如,在机器翻译任务中,使用大量的双语对照数据对模型进行微调。
  • 适应性调整:通过调整模型参数,使其能够更好地执行特定任务。微调的过程包括反向传播和梯度下降等优化算法。
  • 注意力掩码:在Seq2Seq任务中,UniLM使用适当的注意力掩码机制,如编码器使用双向掩码,解码器使用单向掩码,解码器还可以访问编码器的输出。

3. Reward Model(RM)

Reward Model(奖励模型)在强化学习中用于评估策略,根据模型输出的行为给予奖励或惩罚,从而指导模型进行优化。虽然UniLM主要通过监督学习进行训练,但在生成任务中可以结合奖励模型进行优化。

在UniLM中的应用:

  • 生成任务优化:
  • 对话系统:在对话生成任务中,使用奖励模型评估生成对话的质量。奖励模型可以基于对话的连贯性、相关性和用户满意度等指标。
  • 策略优化:通过结合奖励模型,UniLM在生成任务中可以逐步调整策略,提高生成文本的质量。这涉及到强化学习中的策略梯度方法。

4. Proximal Policy Optimization(PPO)

Proximal Policy Optimization(PPO)是一种强化学习算法,用于优化策略,使得在保持策略更新稳定性的同时,提升模型性能。PPO通过限制策略更新的步长,避免策略变化过大导致的训练不稳定。

在UniLM中的应用:

  • 生成任务中的强化学习:
  • PPO算法:在对话生成或文本生成任务中,可以结合PPO算法进行策略优化。PPO通过在策略更新时添加约束,保证每次更新不会偏离当前策略太远,从而保持训练的稳定性和效果。
  • 强化学习结合:尽管UniLM主要通过监督学习进行训练,但在特定任务(如对话生成)中,通过结合PPO,可以进一步优化模型生成的文本质量。

总结

UniLM通过预训练和微调阶段,结合多任务学习和灵活的注意力掩码机制,实现了对多种NLP任务的高效处理。具体来说:

  • Pre-Training(PT):在大规模无标注数据上进行多任务预训练,使模型学习广泛的语言特征。
  • Seq2Seq Fine-Tuning Model(SFM):在具体Seq2Seq任务上进行微调,使模型适应特定任务需求。
  • Reward Model(RM):在生成任务中结合奖励模型,通过奖励机制优化生成文本的质量。
  • Proximal Policy Optimization(PPO):通过强化学习中的PPO算法,优化生成任务的策略,提高文本生成的质量和稳定性。

通过这些方法,UniLM不仅能够处理多种NLP任务,还能在生成和理解任务上表现出色,具有广泛的应用前景和较强的适应性。

posted on 2024-05-31 12:42  weiZhang2024  阅读(44)  评论(0)    收藏  举报