微信扫码
与创始人交个朋友
我要投稿
点击“蓝字” 关注我们
当前通用的预训练模型在面对特定领域或任务时,往往存在一定的局限性。为了使模型更好地适应特定需求,领域自适应成为了关键技术,而 Fine-Tuning(微调)则是其中一种重要的方法。今天我们一起来了解一下 Fine-Tuning。
大多数先进的 LLMs 基于 Transformer 架构,这一架构自 2017 年被提出后,凭借其独特的 “注意力” 机制,在自然语言处理领域取得了突破性进展。Transformer 架构由编码器和解码器两个主要模块组成。编码器专注于将自然语言语义转换为上下文相关的向量表示,适用于分类、命名实体识别和语义搜索等任务;解码器则通过训练预测下一个词元,能够以递归方式生成文本,常用于文本生成任务。在 Fine-Tuning 中,我们主要关注解码器模型,因为它们在生成式人工智能中占据重要地位。
数据收集与选择
Fine-Tuning 的数据来源广泛,包括文档库、人工创建内容等。对于特定领域的微调,数据质量至关重要,需要考虑数据的准确性、完整性、相关性等因素。同时,还需关注数据的保密性、知识产权、许可协议、版权和个人可识别信息(PII)等方面。
训练数据集可分为无标签和有标签(包括偏好数据)两类。领域自适应微调通常需要无标签文本数据,如用户手册、内部文档或法律合同等。而有标签数据集,如指令 - 上下文 - 响应数据集,可用于监督微调方法。近年来,强化学习方法利用人类或机器创建的偏好数据(如二进制反馈或多响应排名)来对齐模型与实际用户反馈,取得了良好效果。但收集有标签数据往往更困难、昂贵,尤其是在大规模和具有足够领域专业知识的情况下。
数据预处理
为了使数据适合下游训练算法,需要进行一系列预处理步骤。包括质量相关的预处理,如格式化、去重和 PII 过滤;与微调方法相关的预处理,如将数据渲染为监督微调的提示模板;以及自然语言处理相关的预处理,如分词、嵌入和根据上下文窗口进行分块等。
模型训练
Fine-Tuning 通过在特定领域数据上训练来更新模型权重,同时保持网络架构不变。训练方法采用自监督学习,与传统的无监督或监督学习不同。在自监督学习中,模型通过遮蔽输入中的特定词元来自我监督。对于解码器模型,通常采用因果语言建模(CLM)方法,基于单向上下文预测下一个词元。模型训练的目标是最小化损失函数,如交叉熵或困惑度损失,通过梯度下降在深度神经网络中反向传播来优化模型权重。
以生物技术领域为例,通用的预训练 LLMs 在处理 COVID - 19 疫苗研究相关任务时可能表现不佳,因为其预训练数据中来自该领域的比例较低。通过 Fine-Tuning,可以将领域特定的知识(如专业术语、行业特定缩写等)注入模型,扩展模型的 “舒适区”,提高其在特定任务上的性能。例如,使用生物技术领域的研究论文和相关文献进行持续预训练(Continued Pre - training,也称为领域自适应微调),使模型能够更好地理解和处理该领域的语言和知识。
监督微调(SFT)
人类在解决问题时往往希望模型具备聊天或指令遵循等能力,而不仅仅是简单的文本完成。监督微调通过在有标签数据集上训练,使模型能够根据特定任务需求调整其行为。例如,在训练模型进行问答、数据提取(如实体识别)或防止有害响应(红队测试)等任务时,SFT 能够让模型更好地理解任务目标,产生更准确的输出。
以使用 “dolly - 15k” 数据集对模型进行指令遵循训练为例,将数据集中的每个指令 - 上下文 - 响应示例转换为特定的提示模板,然后进行预处理和训练。这样,模型就能学会根据提示中的指令进行准确响应,满足特定任务的要求。
人类偏好对齐技术
之前的微调方法所使用的数据往往是对用户需求的近似估计,而人类偏好对齐技术旨在将实际用户反馈纳入模型训练,以提高模型与用户期望的一致性。
强化学习从人类反馈(RLHF)与近端策略优化(PPO):这一方法分两步进行。首先,训练一个奖励模型,通过向模型提供提示数据集,获取多个推理结果并由人类标注者评分,基于此训练奖励模型。然后,使用奖励模型来调整实际模型的权重,通过近端策略优化算法,使模型的回答能够最大化奖励。同时,为了防止模型行为在训练过程中过度漂移,还会添加预测偏移惩罚项。
直接策略优化(DPO):DPO 是 RLHF 的一种替代方法,它跳过了奖励模型的训练,直接在偏好数据上调整最终的偏好对齐 LLM。通过对奖励模型参数化进行数学转换,将其转化为损失函数,并使用偏好数据上的概率值替代实际奖励值,从而节省了计算和算法复杂性。
卡尼曼 - 特沃斯基优化(KTO):KTO 基于卡尼曼和特沃斯基的前景理论,通过定义一个奖励函数来捕捉生成结果的相对 “好坏”,并优化模型以最大化该奖励的预期值。与 RLHF 和 DPO 不同,KTO 只需要知道给定输出对于输入是期望还是不期望的二进制信号,而不需要完整的偏好对数据。这使得 KTO 在偏好数据稀缺或昂贵的情况下更具优势,能够更高效地利用数据,并且在某些情况下可能匹配或超过基于偏好方法的性能。
几率比偏好优化(ORPO):ORPO 旨在解决现有偏好对齐方法的局限性,如 RLHF 和 DPO 通常需要单独的监督微调阶段、参考模型或奖励模型。ORPO 将这些阶段合并为一个,通过在传统因果语言建模损失中引入基于几率比的惩罚项,同时实现了领域自适应和偏好对齐的目标。它可以在不需要单独的参考模型、奖励模型或两步微调方法的情况下,更有效地微调预训练语言模型以适应特定领域或任务,并确保模型输出与人类偏好一致。
考虑使用平台提供的模型,并注意模型在不同地区的可用性差异。
组织应根据任务需求选择最适合的模型,虽然 Fine-Tuning可以提升模型性能,但在选择基础模型时可以参考其初始评估结果。
预算也是一个重要因素,较大模型通常需要更多计算资源和多 GPU 实例进行训练和服务,这会影响总成本(TCO)。
注意模型的许可模式,无论是专有模型还是开源模型,都有其使用领域和商业模型的限制。
遵循组织的治理、伦理和负责任人工智能准则,确保模型选择符合合规要求。
根据要执行的任务确定所需的模型行为,如聊天性、指令遵循等,然后从期望的任务行为出发,选择合适的微调路径,以确保最终模型能够满足任务要求。
在选择起始点时,要合理利用现有资源。如果模型库中有已经经过微调且符合部分需求的模型,可以优先考虑使用,避免重复劳动。
认识到 Fine-Tuning是一个迭代且可能递归的过程,但要注意避免灾难性遗忘。可以采用参数高效的微调方法,如 LoRA,来减轻这一问题。
根据数据可用性选择路径。通常组织拥有更多无标签文本数据,而获取有标签数据可能成本较高,因此要根据实际数据情况进行决策。
示例一
假设目标是为生物技术领域构建一个符合用户偏好的指令模型,并提升其在该领域的性能。首先选择 LLaMA - 2 - 7b 模型家族作为起始点,由于没有现成的指令模型,从文本完成模型 LLaMA - 2 - 7b - base 开始。然后使用生物技术领域的研究论文进行持续预训练,接着在开源指令数据集(如 dolly - 15k)上进行监督微调,得到 BioLLaMA - 2 - 7b - instruct 模型。最后,收集用户偏好数据集,训练奖励模型,并使用 RLHF with PPO 进行偏好对齐。
示例二
若要使用一个聊天模型并使其与实际用户偏好对齐。选择 LLaMA - 2 - 7b 模型家族,发现有现成的聊天微调模型 LLaMA - 2 - 7b - chat 可作为起始点。接下来,收集用户偏好数据集,训练奖励模型,然后使用 RLHF with PPO 进行偏好对齐。
与上下文学习(In - context Learning)相比,Fine-Tuning通过更新模型权重,能够更深入地将领域特定知识融入模型,从而在长期性能提升方面具有优势。上下文学习在处理少量特定任务时可能较为灵活,但对于复杂的领域自适应需求,Fine-Tuning 能够提供更强大的解决方案。同时,Fine-Tuning 内部的不同方法(如持续预训练、监督微调、各种人类偏好对齐技术等)也各有优劣,在实际应用中需要根据具体任务、数据和资源情况进行权衡选择。
Fine-Tuning作为一种高效且灵活的方法,在大型语言模型域适应中具有广泛的应用前景。通过微调预训练模型的参数,可以使其适应特定任务或领域的数据分布,从而提高模型的性能和准确性。同时,Fine-Tuning还具有高效性、灵活性、可解释性和可扩展性等优势,为大型语言模型在不同应用场景中的应用提供了有力的支持。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-11-19
大模型RAG神器,利用LangSmith监测、跟踪、微调LLM和RAG
2024-11-19
9.9比9.11大0.79,让大模型准确地做好数学题
2024-11-19
LLM实践系列-详聊OpenRLHF中的各种Loss
2024-11-18
LLM实践系列-聊聊大模型STF的数据清洗过程有多繁琐?
2024-11-16
深入理解预训练与微调,为什么需要预训练,什么是微调?
2024-11-16
GenAI部署:成功率与ROI为何双下滑?
2024-11-13
无需网络,轻松在手机上离线布署本地大模型
2024-11-13
DataOps for LLM 的数据工程技术架构实践
2024-07-11
2024-07-11
2024-07-09
2024-09-18
2024-06-11
2024-07-23
2024-07-20
2024-07-12
2024-07-26
2024-07-23
2024-11-18
2024-11-16
2024-11-16
2024-10-31
2024-10-31
2024-10-27
2024-10-26
2024-10-25