赞
踩
最近正在读 LLM 论文的综述,当前采取的策略是部分内容走读+记录,论文原文见《A Survey of Large Language Models》
前情提要:
《NLP深入学习:《A Survey of Large Language Models》详细学习(一)》
《NLP深入学习:《A Survey of Large Language Models》详细学习(二)》
《NLP深入学习:《A Survey of Large Language Models》详细学习(三)》
第一章介绍了论文的摘要、引言以、总述部分
第二章讲解了 LLMs 相关资源,包含公开模型、API、预训练的数据集以及微调的数据集,
第三章介绍预训练部分,这是 LLMs 的重要部分!
本文继续介绍 LLMs 的适应性训练
在本节将介绍两种主要的适应预训练的 LLMs 的方法,即指令调优和对齐调优。前一种方法主要旨在增强 LLMs 能力,而后一种方法的目的是将 LLMs 的行为与人类的价值观或偏好保持一致。
是一种训练大型语言模型以更好地理解和遵循自然语言指令的技术。在这一过程中,预训练的 LLMs 被进一步优化,使其能够根据给定的文本指令执行相应的任务,而无需对整个模型进行大规模微调。
实例格式的说明和构造指令格式实例的三种不同方法:
通常,指令格式的实例由任务描述(称为指令)、可选的输入、相应的输出和少量的演示(可选)组成。构建的几个方式:
Formatting NLP Task Datasets(格式化 NLP 任务数据集):
在为预训练语言模型创建格式化的实例时,首先需要将标准 NLP 任务的数据集转换成遵循特定格式的实例。例如,对于文本分类任务,研究人员可能将原始数据集中的每个样本(如新闻文章)与对应的类别标签一起包装在一个包含指令和输入输出示例的语境中。这种格式化的实例使模型能够根据给定的指令来理解其应执行的任务。
Formatting Daily Chat Data(格式化日常对话数据):
为了提高模型在日常对话场景下的表现,还需要将日常聊天数据格式化。这通常涉及到整理实际对话记录,将其转化为以自然语言指令开头的互动式样例,然后附上预期的回应或行为。这样模型在学习过程中就能通过模仿真实对话情境,学会在各种社交环境下提供恰当、连贯且有意义的回复。
Formatting Synthetic Data(格式化合成数据):
制作合成数据是另一种增强模型适应性的方法。通过对现有数据集进行扩展或创造全新的模拟数据,可以构造出更多样化和可控的指令-响应对。格式化的合成数据可以帮助模型处理边缘案例、强化基础概念理解,并填补真实数据集中可能存在的空白。
构建有效格式化实例时需考虑的关键因素包括:
Scaling the instructions(指令规模的调整):
Formatting design(格式化设计):
与训练前不同,指令调优通常更有效,因为只有中等数量的实例用于训练。因为指令调优可以被认为是一个监督训练,有四个重要的方面需要考虑:
Balancing the Data Distribution(平衡数据分布):
在进行指令调优时,数据分布的平衡是一个关键因素。由于涉及多个不同任务的数据混合训练,研究人员需要确保各类任务在训练过程中有适当的比例和权重。通常采用的方法是按各任务实例数量的比例进行均匀混合(例如使用例子比例混合策略),同时也可以根据任务的质量或重要性对特定高质量数据集(如 FLAN 和 P3)增加采样率,以优化整体性能。
Combining Instruction Tuning and Pre-Training(结合指令调优和预训练):
为了更有效地利用预训练阶段学习到的知识并提高指令调优过程的稳定性和效率,一些研究提出了结合预训练数据与指令格式化数据进行训练的方法。比如 OPT-IML 等研究通过将部分预训练数据纳入指令调优过程中作为正则化手段,而 GLM-130B 和 Galactica 则直接将少量指令格式化的数据整合到预训练语料库中,旨在实现预训练和指令调优优势的同时利用。
Multi-stage Instruction Tuning(多阶段指令调优):
多阶段指令调优策略针对不同类型的任务指令进行了分步优化。对于大量任务格式化指令和日常聊天类指令,它们的数量差异显著。实践中,首先会用大规模任务格式化指令对 LLMs 进行微调,然后在第二阶段使用日常聊天类指令进一步微调模型。为防止过拟合于某单一类型任务而导致的能力遗忘问题,还会在第二阶段继续加入一定比例的任务格式化指令。这种分阶段策略有助于逐步提升模型理解和执行复杂指令的能力。
Other Practical Tricks(其他实用技巧):
指令调优对大型语言模型的影响体现在以下几个方面:
Performance Improvement(提升性能):
指令调优通过在预训练模型上进一步训练,使其能够理解和遵循自然语言形式的指令,从而显著提升了模型在各类任务上的性能。
Task Generalization(任务泛化):
指令调优增强了模型的任务泛化能力,即使在未见过的任务上,经过调优的模型也能根据给出的指令执行新任务。
Domain Specialization(领域专家):
除了提高一般性任务表现,指令调优还被用于将通用语言模型调整为特定领域的专家模型。
尽管 LLMs 在各种自然语言处理任务上表现出色,但它们也可能出现生成不准确、误导性内容或违反人类价值观的情况。以下是相关背景及对齐标准的具体介绍:
背景
大型预训练语言模型基于大规模文本数据进行训练,其目标函数通常是最大化预测下一个单词的概率,这使得模型学习到了广泛的语言模式和知识。然而,在实际应用中,模型可能无法完全符合人类的价值观和社会规范,有时会生成潜在有害、有偏见或者违背用户意图的内容。
Alignment Criteria(对齐标准)
在收集人类反馈方面,文章讨论了两个关键环节:Human Labeler Selection(人工标注员的选择)和Human Feedback Collection(人类反馈的收集)。
Human Labeler Selection(人工标注员的选择):
Human Feedback Collection(人类反馈的收集):
收集人类对于大型语言模型(LLMs)生成结果的评价和反馈数据,以便于指导模型优化其输出质量、提高与人类偏好和价值观的对齐程度。以下是三种主要的人类反馈收集方法:
Reinforcement Learning from Human Feedback (RLHF) 是一种利用人类反馈优化大型语言模型(LLMs)输出的方法。在这一框架下,模型通过强化学习算法调整其行为策略以更好地符合人类偏好和价值观。
RLHF 系统主要包含三个关键组件:预训练的大型语言模型、基于人类反馈训练的奖励模型(Reward Model),以及用于更新原模型参数的强化学习算法(如Proximal Policy Optimization, PPO)。首先,使用一个预训练好的LM 作为基础模型,然后用人工标注数据训练出一个奖励模型,该模型能够预测人类对模型生成文本的偏好程度。最后,将强化学习算法应用于预训练模型上,使其根据奖励模型给出的反馈信号来改进生成策略,从而产生更加符合人类期望的输出。
RLHF 关键步骤:
RLHF 通用策略:
为了更有效地实施 RLHF,研究者提出了一系列实用策略,例如:
过程监督的 RLHF:
在实际操作中可能涉及的过程监督方法是对整个 RLHF 流程进行监督,即不仅关注最终生成文本的质量,也监控模型在整个迭代过程中如何逐渐改变策略以满足人类反馈标准,确保整个优化过程稳定且有效。
在不使用强化学习从人类反馈(RLHF)的情况下实现模型对齐,研究者采取了其他策略来收集和利用数据以调整大型语言模型的行为,使其更符合人类价值观和社会规范。
数据集:
为了直接调整模型的输出以满足人类期望,首先需要收集高质量的对齐数据集。这些数据集通常包含根据人类编写的指导原则生成或筛选出的示例,用于展示期望的模型行为。
Reward model based approaches(基于奖励模型的方法):
LLM based generative approaches(基于 LLM 生成的方法):
LLM based interactive approaches(基于 LLM 交互式方法):
监督学习的方式:
在收集到对齐数据后,研究者采用监督学习的方式微调大型语言模型。这种方法的核心在于,在原有的预训练模型基础上,进一步在高质对齐数据上进行有监督的微调训练,使得模型能够学习到如何遵循特定指令并产生既定价值观下的恰当输出。Supervised Alignment Tuning是一种直接在大型语言模型(LLMs)上利用高质量的对齐数据进行微调的技术,以确保模型的输出更加符合人类偏好和期望行为。以下是该方法中主要训练目标及辅助优化目标的介绍:
主要训练目标:
首要的训练目标基于传统的序列到序列学习任务中的交叉熵损失函数。这种情况下,对齐数据集通常包括带有明确指令及其对应理想响应的样例。模型通过微调预训练参数来最大化正确响应的概率,即使模型能够根据给定指令生成与人工标注的理想答案尽可能一致的响应。
辅助性优化目标:
除了基本的交叉熵损失外,研究者还探索了多种辅助优化目标以进一步提升模型从对齐数据中学习的效果。例如 Ranking loss,为了增强模型对不同响应质量的区分能力,可以采用排序损失。例如,在拥有多个候选响应的情况下,可以通过奖励模型为每个响应打分,然后调整模型使得其更倾向于生成高评分的响应。
由于 LLMs 由大量的模型参数组成,全参数调优的代价高昂。在本节中,我们将讨论如何对 LLMS 进行有效的调整。
在大型语言模型(LLMs)的参数高效微调方法中,以下四种策略是研究者重点探索并广泛应用的:
Adapter Tuning:
适配器微调技术是在预训练模型原有结构基础上插入可学习的小型模块——适配器层。这些适配器通常包含一层或多层小规模的神经网络,它们不对原始模型参数进行任何更改,而是通过额外添加和训练这些轻量级组件来适应下游任务。这种方法允许模型在保留预训练知识的同时,仅更新少量参数以完成新任务的学习。
Prefix Tuning:
前缀微调则聚焦于输入侧,它不是修改模型本身的权重,而是在每个批次的输入序列前附加一个可训练的“前缀”向量或短语,以此影响模型生成的结果。这种策略使得模型能够在不改变主体结构的情况下,仅通过对输入部分的调整来优化模型表现,从而实现参数效率提升。
Prompt Tuning:
提示微调是另一种基于提示的参数高效微调方法。该方法通常涉及在模型输入端加入人工设计或可学习的提示词,用于指导模型生成特定类型的响应。在某些变体如 P-tuning 中,只对模型输入层的提示嵌入进行训练,而保持其余大部分模型参数固定,这样可以在不同任务间共享大部分预训练模型的知识,同时仅针对具体任务微调一小部分参数。
Low-Rank Adaptation (LoRA):
LoRA 是一种低秩近似的方法,它旨在减少微调时需要更新的参数数量。对于大规模的语言模型,LoRA 提出将参数矩阵的更新近似为低秩矩阵乘积的形式,即仅对模型中的稠密层引入两个较小维度的新矩阵 A 和 B 进行训练,而不是更新整个原矩阵 W。通过这种方式,LoRA 显著降低了内存使用和存储需求,并且可以维持单个大模型副本,同时为多个下游任务维护一组与任务相关的低秩分解矩阵,以实现高效的参数化适应。
由于大量的模型参数,LLMs 推理占用了大量的内存空间,这使得在实际应用程序中部署它的成本非常高。在本节中,我们将讨论如何通过一种流行的模型压缩方法(即模型量化)来减少内存占用。
Post-Training Quantization (PTQ)
后训练量化是一种无需重新训练模型即可将模型从高精度浮点数格式转换为低精度(如 INT8 或更低)整数格式的方法。这样可以极大地减少模型所需的存储空间和计算资源,并加快推理速度,从而使得大规模模型能在内存和计算力有限的设备上部署。
Other Quantization Methods
Bitsandbytes:这是一个基于论文中提出的 LRA 和8-bit 优化器方法开发的开源库。它专注于对 LLMs 的权重和激活值进行量化,并支持4位和8位精度的矩阵乘法运算以实现高效推理。该库还包含一个针对训练阶段设计的8位优化器,旨在提高量化模型训练时的性能。
GPTQ-for-LLaMA:这个专门针对 LLaMA 系列模型开发的量化库,允许对不同规模的LLaMA模型进行4位量化处理。该库提供了与bitsandbytes对比的功能,并在其项目网站上展示了量化后的模型在内存使用和性能方面的比较结果。
AutoGPTQ:同样是基于 GPTQ 算法的一个量化包,支持 INT4 级别的量化,适用于 LLMs 的参数量化。该库通过整合到 HuggingFace 的 PEFT 库中,为用户提供了一种简便的方式来执行 LLMs 的量化操作。
lama.cpp:专门针对大型语言模型(LLMs)进行了优化和实现,特别是为量化后的 LLM 模型提供了高效运行的支持。它通过C/C++实现,在资源有限的设备上(例如MacBook等笔记本电脑)运行量化后的 LLMs 成为可能。支持 INT4、INT5 和 INT8 级别的量化模型,可以处理将模型参数从高精度浮点数转换为低精度整数格式后的 LLMs,从而大幅度减少内存占用并提高推理速度。
《A Survey of Large Language Models》
《NLP深入学习:《A Survey of Large Language Models》详细学习(一)》
《NLP深入学习:《A Survey of Large Language Models》详细学习(二)》
《NLP深入学习:《A Survey of Large Language Models》详细学习(三)》
后续内容也在持续更新中…
欢迎关注本人,我是喜欢搞事的程序猿; 一起进步,一起学习;
也欢迎关注我的wx公众号:一个比特定乾坤
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。