中小网站推广 一级域名还是二级域名,jsp网站开发模式,外国网站翻墙怎么做,汕头八景第一轮学习目标#xff1a;了解大模型理论体系
第二轮学习目标#xff1a;进行具体实操进一步深入理解大模型
从大语言模型的训练过程来理解微调 大预言模型训练主要包含四个阶段#xff1a;预训练、有监督微调、奖励建模、强化学习。
预训练#xff08;Pretraining了解大模型理论体系
第二轮学习目标进行具体实操进一步深入理解大模型
从大语言模型的训练过程来理解微调 大预言模型训练主要包含四个阶段预训练、有监督微调、奖励建模、强化学习。
预训练Pretraining阶段需要利用海量的训练数据完成深度神经网络参数训练构建基础语言模型 Base Model。
有监督微调Supervised Finetuning也称为指令微调Instruction Tuning利用少量高质量数据集合包含用户输入的提示词Prompt和对应的理想输出结果。用户输入包括问题、闲聊对 话、任务指令等多种形式和任务。得到有监督微调模型SFT 模型
奖励建模Reward Modeling阶段目标是构建一个文本质量对比模型对于同一个提示词SFT模型给出的多个不同输出结果的质量进行排序。如果 RM 模型的目标是针对 所有提示词系统所生成输出都能够高质量的进行判断该问题所面临的难度在某种程度上与文本 生成等价因此如何限定 RM 模型应用的泛化边界也是本阶段难点问题。
强化学习Reinforcement Learning阶段根据数十万用户给出的提示词利用在前一阶段训练的 RM 模型给出 SFT 模型对用户提示词补全结果的质量评估并与语言模型建模目标综合得到更好的效果。使用强化学习在 SFT 模型基础上调整参数使得最 终生成的文本可以获得更高的奖励Reward。由于强化学习方法稳定性不高并且超参数众多使得模型收敛难度大再叠加 RM 模型的准确率问题使得在大规模 语言模型如何能够有效应用强化学习非常困难。
大模型微调步骤
数据准备、选择基础模型、设置微调参数学习率、训练轮次epochs、批处理大小batch size等超参数、微调加载预训练的模型和权重、选择微调方法、选择合适的损失函数和优化器、训练
一、按微调参数规模划分
1.1全参微调Full Parameter Fine-TuningFPFT 用预训练权重作为初始化权重在特定数据集上继续训练全部参数都更新。
1.2低参微调Parameter Efficient Fine-TuningPEFT 用更少的计算资源完成参数的更新只更新部分参数或者通过对参数进行某种结构化约束例如稀疏化或低秩近似解来降低微调的参数量。 可以分为以下三类方法
增加额外参数Additive。又主要分为类适配器Adapter-like方法、软提示Soft prompts选取一部分参数更新Selective重参数化Reparametrization-based 补充 稀疏化稀疏化是指通过去除矩阵或向量中的大部分元素将其变得稀疏即非零元素较少的过程。有阈值法、L1正则化、PCA主成分分析可以实现这些方法。 低秩近似解矩阵的秩代表了矩阵中线性无关的行或列的最大数量通过减少矩阵的秩来去除冗余信息同时保留数据的主要特征从而降低存储空间和计算量。应用于矩阵补全、数据压缩等问题中。可以通过凸或者非凸松弛方法实现。
请复习线性代数的相关知识 1.2.1LoRA
LoRALow-Rank Adaptation是一种旨在微调大型预训练语言模型如GPT-3或BERT的技术。其核心理念在于在模型的决定性层次中引入小型、低秩的矩阵来实现模型行为的微调而无需对整个模型结构进行大幅度修改。
为了达到降秩且最小化目标矩阵与原矩阵差异的目的常用的方法是对原矩阵进行奇异值分 解并裁去较小的奇异值。
这种方法的优势在于在不显著增加额外计算负担的前提下能够有效地微调模型同时保留模型原有的性能水准。
LoRA的操作流程如下
确定微调目标权重矩阵首先在大型模型例如GPT中识别出需要微调的权重矩阵这些矩阵一般位于模型的多头自注意力和前馈神经网络部分。
引入两个低秩矩阵然后引入两个维度较小的低秩矩阵A和B。
计算低秩更新通过这两个低秩矩阵的乘积AB来生成一个新矩阵其秩即r远小于原始权重矩阵的秩。这个乘积实际上是对原始权重矩阵的一种低秩近似调整。
结合原始权重最终新生成的低秩矩阵AB被叠加到原始权重矩阵上。因此原始权重经过了微调但大部分权重维持不变。这个过程可以用数学表达式描述为新权重 原始权重 AB。
以一个具体实例来说假设我们手头有一个大型语言模型它通常用于执行广泛的自然语言处理任务。现在我们打算将其微调使其在处理医疗健康相关的文本上更为擅长。
AdaLoRA LoRA 算法给所有的低秩矩阵指定了唯一的秩从而忽略了不同模块、不同层的参数对于微调 特定任务的重要性差异。因此文献 [147] 提出了 AdaLoRAAdaptive Budget Allocation forParameterEfficient Fine-Tuning算法在微调过程中根据各权重矩阵对下游任务的重要性动态调整秩的大 小用以进一步减少可训练参数量的同时保持或提高性能。
1.2.2QLoRA QLoRAQuantized Low-Rank Adaptation是一种结合了LoRALow-Rank Adaptation方法与深度量化技术的高效模型微调手段。
QLoRA的核心在于量化技术QLoRA采用创新的技术将预训练模型量化为4位。这一技术包括低精度存储数据类型4-bit NormalFloat简称NF4和计算数据类型16-bit BrainFloat。这种做法极大地减少了模型存储需求同时保持了模型精度的最小损失。
补充
量化是一个将连续信号转换为离散信号的过程
1Byte8bit
32位浮点数占用4个字节的存储空间。量化后的表示将原始的32位浮点数转换为4位也就是0.5个字节。新的集合由16个不同的值组成因为2^416。
微调阶段在训练期间QLoRA先以4-bit格式加载模型训练时将数值反量化到bf16进行训练这样大幅减少了训练所需的显存。例如33B的LLaMA模型可以在24 GB的显卡上进行训练。
量化过程的挑战在于设计合适的映射和量化策略以最小化精度损失对性能的影响。在大型模型中这种方法可以显著减少内存和计算需求使得在资源有限的环境下部署和训练成为可能。
1.2.3适配器调整Adapter Tuning
适配器调整的方法是在模型的每个层或选定层之间插入小型神经网络模块称为“适配器”。这些适配器是可训练的而原始模型的参数则保持不变。
适配器调整的关键步骤包括
以预训练模型为基础初始阶段我们拥有一个已经经过预训练的大型模型如BERT或GPT该模型已经学习了丰富的语言特征和模式。
插入适配器在预训练模型的每个层或指定层中我们插入适配器。适配器是小型的神经网络一般包含少量层次并且参数规模相对较小。
维持预训练参数不变在微调过程中原有的预训练模型参数保持不变。我们不直接调整这些参数而是专注于适配器的参数训练。
训练适配器适配器的参数会根据特定任务的数据进行训练使适配器能够学习如何根据任务调整模型的行为。
针对任务的调整通过这种方式模型能够对每个特定任务进行微调同时不影响模型其他部分的通用性能。适配器有助于模型更好地理解和处理与特定任务相关的特殊模式和数据。
高效与灵活由于只有部分参数被调整适配器调整方法相比于全模型微调更为高效并且允许模型迅速适应新任务。
1.2.4前缀调整Prefix Tuning 在每一层Transformer结构的输入前都添加可训练的Token使得模型在更深层次上能够捕捉到任务相关的信息。但这也增加了参数的数量和计算成本。
前缀实际上是一种连续可微的虚拟标记Soft Prompt/Continuous Prompt与离散的Token相比它们更易于优化并且效果更佳。这种方法的优势在于不需要调整模型的所有权重而是通过在输入中添加前缀来调整模型的行为从而节省大量的计算资源同时使得单一模型能够适应多种不同的任务。
在Prefix Tuning中假设你希望模型能够更准确地翻译医学领域的句子你可以在每一层Transformer的输入前都添加一些与医学相关的Token如“[MEDICAL]”。然后通过训练这些Token模型能够更好地理解并翻译医学领域的句子。
1.2.5 提示调整Prompt Tuning
通过在输入层添加prompt tokens来为每个任务定制模型。这些prompt tokens可以看作是模型的一种“提示”它们被添加到输入序列的开头或结尾以引导模型更好地适应不同任务。
提示调整与前缀调整都涉及在输入数据中添加可学习的向量这些向量是在输入层添加的但两者的策略和目的不同
提示调整主要通过引入任务指导信息来引导模型生成特定类型的输出而前缀调整则通过提供输入数据的上下文信息来影响模型的行为。
例子原始输入句子是“What is the best place to visit in summer?”夏天最好的旅游地点是哪里?。在Prompt Tuning中你会在输入句子前添加一些额外的Token比如[TRAVEL]让输入变成[TRAVEL] What is the best place to visit in summer? 这些[TRAVEL] Token是可训练的通过训练这些Token你可以让模型更好地理解这是一个关于旅游的问题。
1.2.6 P-Tuning
核心思想是在特定位置插入可训练的Token使模型能够更好地理解下游任务的需求。
假设你有一个已经训练好的模型可以生成文章。现在你希望它能够生成关于科技的文章。原始输入句子是“Artificial intelligence is transforming the world.”人工智能正在改变世界。在P-Tuning中你会在输入序列中间插入一些Token比如[TECH]让输入变成“Artificial intelligence [TECH] is transforming the world.” 这些[TECH] Token是可训练的通过训练这些Token你可以让模型更好地理解这是一个关于科技的文章。
1.2.7. P-Tuning v2
P-Tuning v2的改进在于不仅在第一层插入连续提示而是在多层都插入连续提示且层与层之间的连续提示是相互独立的。
二、按训练流程划分
LLM训练流程 2.1上下文学习(In-Context learningICL) 不对 LLMs 执行任何的微调直接将模型的输入输出拼接起来作为一个prompt引导模型根据输入的数据结构demo给出任务的预测结果。提示微调Prompt Tuning属于ICL的方式之一。
2.1.1语境学习Incontext Learning, ICL
是指模型可以从上下文中的几个例子中学习向模型输入特定任务的一些具体例子也称示例Demonstration以及要测试的样例模型可以根据给定的示例续写出测试样例的答案。语境学习的关键思想是从类比中学习整个过程并不需要对模型进行参数更新仅执行向前的推理。 2.1.2模型上下文窗口扩展
上下文窗口context window是指语言模型在进行预测或生成文本时所考虑的前一个词元token或文本片段的大小范围。
2.2有监督微调Supervised Fine-TuningSFT
又称指令微调使用标记数据对预训练模型进行微调的过程
2.3RLHFReinforcement Learning from Human Feedback
还没学完这部分单独写一篇文章
强化学习Reinforcement Learning结合人类反馈Human Feedback来微调大语言模型
2.3.1强化学习基本概念
智能体在环境中获取某个状态后会根据该状态输出一个动作也称为决策。 动作会在环境中执行环境会根据智能体采取的动作给出下一个状态以及当前动作所带来的奖励。智能体的目标就是尽可能多地从环境中获取奖励。 从机器狗学习抓飞盘的深入理解强化学习的概念
机器狗扔飞盘机器狗形成了一个智能体。它会执行动作。飞盘的轨迹、速度构成了环境。机器狗根据当前环境反馈的关于飞盘的状态来决定采取什么动作。同时根据机器狗所执行的动作环境随后会给出一个反馈即奖励。
机器狗根据不同的环境状态采取不同的动作的过程就是学习策略的过程同时它会根据价值函数来预测自己所采取的行为可能带来的奖励是多少。
总体来说强化学习的目标就是让智能体通过与环境的互动学习到一个策略使其能够在将来获得的奖励最大化。这使得强化学习不总是关注近期奖励而是在短期的奖励与远期奖励之间找到平衡。 动作分类离散动作空间、连续动作空间
策略将输入的状态变成动作。随机性策略根据输入的状态利用概率分布采样一个动作确定性策略智能体直接采取最有可能的动作。
价值函数对未来奖励的预测。
智能体分类:基于价值的智能体Value-based Agent显式地学习价值函数隐式地学习策略。基于策略的智能体Policy-based Agent则 是直接学习策略函数。策略函数的输入为一个状态输出为对应动作的概率。演员-评论员智能体Actor-critic Agent则 是把基于价值的智能体和基于策略的智能体结合起来。
在LLM中智能体是模型动作是它输出的结果
2.3.2基于人类反馈的强化学习
步骤1预训练语言模型有标签数据微调
步骤2训练奖励模型
评判模型输出的回答在人类看来是否质量不错即输入 [提示(prompt)模型生成的回答] 奖励模型输出一个能表示回答质量的标量数字。这些不同的排序结果会通过某种归一化的方式变成定量的数据丢给模型训练从而获得一个奖励模型。也就是一个裁判员。
步骤3通过强化学习微调语言模型
近端策 略优化的实施流程如下
(1) 环境采样策略模型基于给定输入生成一系列的回复奖励模型则对这些回复进行打分获得奖励。
(2) 优势估计利用评论模型预测生成回复的未来累积奖励并借助广义优势估计Generalized Advantage EstimationGAE算法来估计优势函数能够有助于更准确地评估每次行动的 好处。
(3) 优化调整使用优势函数来优化和调整策略模型同时利用参考模型确保更新的策略不会有 太大的变化从而维持模型的稳定性。 三 总结
3.1Prompt-based Learning、Prompt tuning、Prompt engineering的区别
提示学习Prompt-based Learning
以下图为例包括三个步骤提示添加、答案搜索、答案映射。 Prompt-based Learning是一种更广泛的概念它涵盖了利用预训练语言模型处理各种下游任务的方法而Prompt Tuning和Prompt Engineering则是这种方法的两种具体实现。Prompt Tuning侧重于通过修改输入提示来引导模型生成符合特定任务或情境的输出而无需对模型的全量参数进行微调。它更关注于提示的修改和模型输出的引导。Prompt Engineering则更侧重于对输入文本的精心设计包括选择适当的词汇、语法结构和上下文等以生成能够引导模型产生期望输出的提示。它更关注于提示的优化和模型表现的提升。Prompt-based Learning、Prompt Tuning和Prompt Engineering都旨在利用预训练语言模型处理各种下游任务并通过优化输入端的提示来提高模型的准确性和效率。在实际应用中Prompt Tuning和Prompt Engineering可以相互补充。通过Prompt Tuning对输入提示进行微调可以进一步优化Prompt Engineering中设计的提示从而提高模型的表现。
3.2提示工程RAG和微调
提示工程Prompt Engineering构建文本然后把它输入给large language model得出我们想要的结果。
RAGRetrieval Augmented Generation拿到用户的question之后先在我们的知识库中去检索和用户的query相关的内容再基于这些检索的结果用它来组织prompt提示给大模型得出我们希望能够得到的那种高质量的准确的响应。
微调Fine-tuning它和前两个不同的地方在于前面两种技术不管是提示工程还是RAG大模型本身是没有任何的变化的但是如果做微调其实是要去通过一个训练的过程来修改大模型它本身的参数。
参考说明
1.【大模型微调】一文掌握7种大模型微调的方法-CSDN博客
2.大模型学习路线4——大模型微调_p-tuning v2是全参微调吗-CSDN博客
3.五万字综述Prompt-Tuning深度解读一种新的微调范式 - 知乎 (zhihu.com)
4.【大模型开发 】 一文搞懂Fine-tuning大模型微调_finetuning大模型-CSDN博客
5. 《大规模语言模型从理论到实践》书第5、6章
6.大语言模型上下文窗口初探上-CSDN博客
7.五分钟弄清楚爆火的提示工程RAG和微调-CSDN博客