关于后端:优刻得大模型技术实践四|参数高效微调技术解析及AdaLoRA的应用

52次阅读

共计 4828 个字符,预计需要花费 13 分钟才能阅读完成。

在上一期的大模型技术实际中,咱们为大家介绍了基于“LangChain+LLM”框架疾速搭建常识加强后的问答机器人,并探讨了晋升模型内容了解和执行能力的潜在优化方向。
本期内容 UCloud 将为您解析参数高效微调技术(PEFT),即对已预训练好的模型,固定住其大部分参数,而仅调整其中小局部或额定的参数,以达到与全副参数微调相近的成果。
参数高效微调办法,可大抵分为三个类别:减少式办法、抉择式办法和从新参数化式办法 [1]。
1 减少式办法(Additive methods)
减少式办法通过减少额定的参数或层来扩大现有的预训练模型,且仅训练新减少的参数。目前,这是 PEFT 办法中被利用最宽泛的类别。
在减少式办法中,大抵分为 Adapter 类办法和软提醒(Soft Prompts)。2019 年 1 月至 2022 年 3 月期间,Adapter 类的办法 Adapter Tuning,软提醒类的办法 Prefix Tuning、P-Tuning、Prompt Tuning、P-Tuning v2 相继呈现。
1.1 Adapter Tuning[2]
Adapter 的架构如下:

在每一个 Transformer 层中的每个子层之后插入两个串行的 Adapter。在 Adapter 微调期间,绿色层是依据上游数据进行训练的,而预训练模型的原参数放弃不变。
1.1.1 Adapter 的特点
Adapter 模块次要由两个前馈(Feed-forward)子层组成。

  1. 第一个前馈子层将原始特色的维度 d 投影到一个更小的维度 m,利用非线性函数,再投影回维度 d 的特色(作为 Adapter 模块的输入)。
  2. 总参数量为 2md + d + m。通过设置 m < d,咱们限度了每个工作增加的参数数量。
  3. 当投影层的参数初始化靠近零时,依据一个 skip-connection,将该模块就初始化为近似恒等函数,以确保微调的有效性。
    1.1.2 Adapter 的试验后果
    应用公开的预训练 BERT 作为根底模型。Adapter 微调具备高参数效率,能够生成性能强劲的紧凑模型,与齐全微调相比体现相当。Adapter 通过应用原始模型 0.5-5% 大小的参数量来微调,性能与 BERT-LARGE 上具备竞争力的后果相差不到 1%。
    1.2 Soft Prompts
    晚期的提醒微调通过批改输出文原本管制语言模型的行为,称为硬提醒(Hard Prompts)微调。这些办法很难优化,且受到最大模型输出长度的限度。下图为离散的人工设计的 Prompt 示例:

    比方扭转输出模式去询问模型:

    软提醒(Soft Prompts)将离散的“提醒”问题转为间断的“提醒”问题,通过过反向流传和梯度降落更新参数来学习 Prompts,而不是人工设计 Prompts。有仅对输出层进行训练,也有对所有层进行训练的类型。上面将介绍几种热门的 Soft Prompts 微调办法。
    1.2.1 Prefix Tuning
    其构造如下:

    只优化前缀(红色前缀块),该前缀增加到每一个 Transformer Block 中。
    1.2.1.1 Prefix Tuning 的特点

  4. 解冻预训练语言模型的参数,为每个工作存储特定的间断可微的前缀,节俭空间。
    2. 训练间减少 MLP 层以达到稳固。
  5. 对于不同模型结构不同的 Prefix。
    1.2.1.2 Prefix Tuning 的试验后果
    对于表格到文本工作,应用 GPT-2MEDIUM 和 GPT-2LARGE 模型。在表格到文本工作上,Prefix Tuning 优于 Fine-Tuning(全量微调)和 Adapter-Tuning。对于摘要工作,应用 BART-LARGE 模型。在摘要工作上,Prefix Tuning 比全量微调弱。
    1.2.2 P-Tuning
    其构造如下:

1.2.2.1 P-Tuning 的特

  1. P-Tuning 只在输出层退出可微的 Virtual Token,其会主动插入到文本提醒的离散 Token 嵌入中。
  2. Virtual Token 不肯定作为前缀,其插入地位是可选的。
    1.2.2.2 P-Tuning 的试验后果
    应用的是 GPT 系列和 BERT 系列的模型。P-Tuning 与全参数成果相当,且在一些工作上优于全参数微调,能够显著进步 GPT 模型在自然语言了解方面的性能,并且 BERT 格调的模型也能够取得较小的增益.
    1.2.3 Prompt Tuning
    其构造如下:

    上图中,仅 Virtual Token 局部会由梯度降落法去更新参数。
    1.2.3.1 Prompt Tuning 的特点

  3. 只在输出层退出 Prompt,并且不须要退出 MLP 进行调整来解决难训练的问题。
  4. 提出了 Prompt Ensembling,即通过在同一工作上训练 N 个提醒,也就是在同一个批次中,对同一个问题增加不同的 Prompt,相当于为工作创立了 N 个独立的“模型”,同时依然共享外围语言建模参数。
    1.2.3.2 Prompt Tuning 的试验后果
    应用的是预训练的各种 T5 模型。在风行的 SuperGLUE 基准测试中,Prompt Tuning 的工作性能与传统的模型调优相当,且随着模型规模的减少,差距逐步减小。在零样本畛域迁徙中,Prompt Tuning 能够改善泛化性能。
    1.2.4 P-Tuning v2
    其构造如下:

1.2.4.1 P-Tuning v2 的特点
P-Tuning v2 每一层的输出都退出了 Tokens,容许更高的工作容量同时放弃参数效率;且增加到更深层的提醒对模型的预测有更间接的影响。
1.2.4.2 P-Tuning v2 的试验后果
应用的是 BERT 系列和 GLM 系列模型。P-Tuning v2 是一种在不同规模和工作中都可与微调相媲美的提醒办法。在 NLU 工作中,整体上 P -Tuning v2 与全量微调的性能相差很小。
2 抉择式办法
选择性办法对模型的现有参数进行微调,能够依据层的深度、层类型或者甚至是个别参数进行抉择。
2.1 BitFit
2022 年 9 月 5 日,BitFit 呈现,这是一种稠密微调办法,仅批改模型的 Bias(偏置项)或其中的子集。
2.1.1 BitFit 的特点

  1. 解冻大部分 Transformer 编码器的参数,只训练偏置项和工作特定的分类层。
  2. 优化的偏置项参数包含 Attention 模块中计算 Query、Key、Value 时,计算 MLP 层时,计算 Layernormalization 层时遇到的偏置项参数。
  3. 每个新工作只须要存储偏置项参数向量(占总参数数量的不到 0.1%)和工作特定的最终线性分类器层。
    2.1.2 BitFit 的试验后果
    应用公开可用的预训练 BERTBASE、BERTLARGE 和 RoBERTaBA 模型。BitFit 微调后果不迭全量参数微调,但在极少数参数可更新的状况下,远超 Frozen(解冻模型参数)形式。
    3 从新参数化办法
    基于从新参数化的高效微调办法利用低秩示意来最小化可训练参数的数量,其中包含 2021 年 10 月到 2023 年 3 月间呈现的 LoRA 和 AdaRoLA 办法。3.1 LoRA 该办法认为模型权重矩阵在特定微调后具备较低的本征秩,故基于秩合成的概念,将预训练模型的现有权重矩阵分成两个较小的矩阵。

    3.1.1 LoRA 的特点

  4. 将矩阵乘积 BA 加到原模型参数矩阵 W 上能够防止推理提早。
  5. 可插拔的低秩合成矩阵模块,不便切换到不同的工作。
    3.1.2 LoRA 的试验后果 **
    应用的模型是 RoBERTa、DeBERTa、GPT-2、GPT-3 175B。在多个数据集上,LoRA 在性能上能和全量微调相近,且在某些工作上优于全量微调。
    **3.2 AdaLoRA
    3.2.1 AdaLoRA 的特点 **
    该办法基于权重矩阵的重要性而自适应调整不同模块的秩,节俭计算量,可了解为 LoRA 的升级版。

    AdaLoRA 的做法是让模型学习 SVD 合成的近似。在损失函数中减少了惩办项,避免矩阵 P 和 Q 偏离正交性太远,以实现稳固训练。
    3.2.2 AdaLoRA 的试验后果
    应用的模型是 DeBERTaV3-base 和 BART-large 模型。AdaLoRA 的性能通常高于参数量更高的办法。其中,AdaLoRA 在 0.32M 微调参数时,在 CoLA 数据集上达到了 70.04 的 Mcc 分数。
    4 参数微调办法小结
    以上几类参数高效微调办法,各有千秋。Adapter 办法在预训练模型的层中插入可训练模块的模式简略,但减少推理延时。Soft Prompts 办法防止了人工“硬提醒”的局限性,却可能难收敛。
    Soft Prompts 办法中,Prefix Tuning 率先提出可用梯度降落法优化的的 Tokens,而 P-Tuning、Prompt Tuning、P-Tuning v2 相继作出不同的扭转,比方:

  6. 退出的 Tokens:P-Tuning 仅限于输出层,而 Prefix-Tuning 在每一层都加。
  7. P-Tuning 和 Prompt Tuning 仅将间断提醒插入到输出嵌入序列中,而 Prefix Tuning 的“软提醒”增加在每一个 Transformer Block 中。
  8. Prompt Tuning 不须要额定的 MLP 来解决难训练的问题,P-Tuning v2 移除了重参数化的编码器。
    BitFit 办法只更新模型外部偏置项参数所以训练参数量很渺小,但整体成果比 LoRA、Adapter 等办法弱。LoRA 办法不存在推理延时,但无奈动静更新增量矩阵的秩,不过改进版 AdaLoRA 解决了这个问题。
    **5 AdaLoRA 办法的试验
    5.1 试验模型为 ChatGLM2-6B**
    官网代码在 Git Clone https://github.com/THUDM/ChatGLM2-6B,可去 Hugging Face 下载其模型文件。利用 AdaLoRA 之后的模型训练参数仅占总参数的 0.0468%。

    5.2 试验数据为中文医疗问答数据
    下载链接为 https://github.com/Toyhom/Chinese-medical-dialogue-data,包含儿科、内科等问答数据,数据中会有倡议去医院看病之类的文字。此处选取儿科和内科的数据别离 10000 条数据作为训练数据集,将文件保留为 json 格局。
    5.2.1 结构数据
    文件为 dataset.py。

    5.2.2 训练代码

  9. 文件为 FT.py。
  10. 配置文件 config_accelerate.yml
  11. 执行文件 run.sh

    5.2.3 测试代码

    后果为:

    6 结语
    除了以上 3 大类办法之外,还有混合参数高效微调办法,其是综合了多种 PEFT 类别思维的办法。比方 MAM Adapter 同时联合了 Adapter 和 Prompt-Tuning 的思维,UniPELT 综合了 LoRA、Prefix Tuning 和 Adapter 的思维。混合参数高效微调办法大概率优于单个高效微调办法,但训练参数和推理延时的都减少了。下次将会对大模型的减速并行框架进行探讨,欢送大家继续关注!
    相干文章
    [1]《Scaling Down to Scale Up: A Guide to Parameter-Efficient Fine-Tuning》
    [2]《Parameter-Efficient Transfer Learning for NLP》
    [3]《Prefix-Tuning: Optimizing Continuous Prompts for Generation》
    [4]《GPT Understands, Too》
    [5]《The Power of Scale for Parameter-Efficient Prompt Tuning》
    [6]《P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks》
    [7]《BitFit: Simple Parameter-efficient Fine-tuning for Transformer-based Masked Language-models》
    [8]《LoRA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS》
    [9]《ADAPTIVE BUDGET ALLOCATION FOR PARAMETEREFFICIENT FINE-TUNING》

正文完
 0