深入了解 大语言模型(LLM)微调方法

引言

众所周知,大语言模型(LLM)正在飞速发展,各行业都有了自己的大模型。其中,大模型微调技术在此过程中起到了非常关键的作用,它提升了模型的生成效率和适应性,使其能够在多样化的应用场景中发挥更大的价值。

那么,今天这篇文章就带大家深入了解大模型微调。其中主要包括什么是大模型微调、什么时候需要大模型微调、大模型微调方法总结、大模型微调最佳实践等。相关论文集获取,回复:LLM微调

LLM项目生命周期

在介绍大模型微调方法之前,首先带大家了解一下大语言模型的项目生命周期,它大致可以分为以下几个步骤,如下图所示

图片

「1、项目目标」:首先,明确项目目标。决定LLM是作为一个通用工具还是专注于特定任务(如命名实体识别)。明确的目标有助于节省时间和资源。

「2、模型选择」:在从头开始训练模型和修改现有模型之间做出选择。在许多情况下,适应性调整现有模型是高效的,但在某些情况下,可能需要通过新模型进行微调。

「3、模型性能与调优」:准备模型后,评估其性能。如果性能不佳,尝试进行提示工程(prompt engineering)或进一步微调。确保模型输出与人类偏好保持一致。

「4、评估与迭代」:定期使用指标和基准进行评估。在提示工程、微调和评估之间进行迭代,直到达到期望的结果。

「5、模型部署」:当模型表现符合预期时,进行部署。在这个阶段,优化计算效率和用户体验。

LLM微调

LLM微调是一个将预训练模型在较小、特定数据集上进一步训练的过程,目的是精炼模型的能力,提高其在特定任务或领域上的性能。「微调的目的是将通用模型转变为专用模型,弥合通用预训练模型与特定应用需求之间的差距,确保语言模型更贴近人类的期望」

以OpenAI的GPT-3为例,这是一个为广泛的自然语言处理(NLP)任务设计的先进LLM。假设一家医疗组织希望使用GPT-3来帮助医生从文本笔记生成患者报告。虽然GPT-3能理解和创建一般文本,但它可能没有针对复杂的医学术语和特定医疗术语进行优化。

为了提高GPT-3在这一专业角色中的性能,该组织会在包含医疗报告和患者笔记的数据集上对GPT-3进行微调。它可能会使用像SuperAnnotate的LLM定制编辑器这样的工具来构建具有所需界面的模型。通过这个过程,模型变得更加熟悉医学术语、临床语言的微妙之处和典型的报告结构。微调后,GPT-3能够协助医生生成准确且连贯的患者报告,展示了它对特定任务的适应性。

尽管微调听起来对每个LLM都很有价值,但请记住,这并非没有代价。接下来,将会详细讨论这些成本。

什么时候需要LLM微调

说起LLM,总会涉及到上下文学习、零样本、单样本和少样本推理等话题。我们先快速了解一下它们主要的功能。

**上下文学习(In-context learning) **是一种通过在提示中加入特定任务示例来改进提示的方法,为LLM提供了完成任务的蓝图。

「零样本(Zero-shot)、单样本(One-shot)和少样本(Few-shot)推理」 零样本推理是在提示中直接使用输入数据,不添加额外示例。如果零样本推理未能达到预期结果,可以使用单样本或少样本推理。这些策略涉及在提示中添加一个或多个已完成的示例,帮助较小的LLM表现得更好。

「上下文学习的问题」 将以上这些技术直接应用于用户提示,旨在优化模型输出,使其更符合用户偏好。问题是它们并不总是有效,尤其是对于较小的LLM。除此之外,在提示中包含的任何示例都会占用宝贵的上下文窗口空间,减少了包含其他有用信息的空间。

「当以上方式无法解决相关问题时,这就需要LLM微调」。但它与预训练阶段使用大量非结构化文本数据不同,微调是一个监督学习过程。这意味着你使用标记好的示例数据集来更新LLM的权重。这些标记好的示例通常是prompt-response,使得模型能更好地完成特定任务。

有监督微调(SFT)

有监督微调意味着使用标记数据更新预先训练的语言模型来完成特定任务。所使用的数据已提前检查过。这与不检查数据的无监督方法不同。「通常语言模型的初始训练是无监督的,但微调是有监督的」。接下来将为您介绍大模型微调具体流程,如下图所示:

图片

「1、数据准备」 有许多开源数据集可以提供关于用户行为和偏好的洞察,即使它们没有直接格式化为指令性数据。例如,我们可以利用亚马逊产品评论的大量数据集,将其转化为微调的指令提示数据集。提示模板库包含了许多针对不同任务和不同数据集的模板。

「2、执行微调」 将数据集分为训练、验证和测试部分。在微调过程中,你会从训练数据集中选择提示,并将它们传递给LLM,然后模型会生成完成的文本。

具体来说,当模型接触到针对目标任务的新标记数据集时,它会计算其预测与实际标签之间的误差或差异。然后,模型使用这个误差来调整其权重,通常通过梯度下降等优化算法。权重调整的幅度和方向取决于梯度,梯度指示了每个权重对误差的贡献程度。对误差贡献更大的权重会被更多地调整,而贡献较小的权重则调整较少。

「3、迭代调整」 在数据集的多次迭代(或称为周期)中,模型继续调整其权重,逐渐找到一种配置,以最小化特定任务的误差。目标是将之前学到的一般知识适应到新数据集中的细微差别和特定模式,从而使模型在目标任务上更加专业化和有效。

「4、模型更新」 在这个过程中,模型会根据标记数据进行更新。它根据其猜测与实际答案之间的差异进行改变。这有助于模型学习标记数据中的细节。通过这样做,模型在微调的任务上的表现会得到提升。

举个简单的例子,针对“天空为什么是蓝色?”这个问题,模型微调之前给出的答案为:“因为大气层散射阳光的方式。”,但是如果将该模型应用到科教平台,这个答案就显得太简短了。收集相关数据进行模型微调之后,给出的答案为:“天空之所以呈现蓝色,是因为一种叫做瑞利散射的现象。当阳光进入地球大气层时,它包含了不同颜色的光,每种颜色都有其特定的波长。蓝光波长较短,被大气中的气体和颗粒物向各个方向散射。这种散射使得直射阳光看起来是白色的,而天空本身则呈现出蓝色。”,上面的这个回答很全面就非常适合科教平台了。

微调方法

LLM微调是一个有监督学习过程,主要使用标注数据集来更新LLM的权重,并使模型提高其特定任务的能力。接下来将为大家介绍一些值得注意的微调方法。

「1、指令微调」 一种提高模型在各种任务上表现的策略是指令微调。这涉及到使用示例来训练机器学习模型,展示模型应该如何响应查询。用于微调大型语言模型的数据集必须符合你的指令目的。

例如,如果你想提高模型的摘要能力,你应该构建一个包含摘要指令和相关文本的数据集。在翻译任务中,应包含“翻译这段文本”等指令。这些提示有助于让模型以新的专业方式“思考”,并服务于特定任务。如下图所示

图片

「2、全微调(FFT)」 即更新模型所有权重的过程,被称为全微调。这个过程会产生一个具有更新权重的新模型版本。需要注意的是,与预训练一样,全微调需要足够的内存和计算预算来存储和处理训练过程中的所有梯度、优化器和其他更新组件。

「3、参数高效微调(PEFT )」训练语言模型是一项计算密集型任务。对于LLM全微调,内存不仅来存储模型,还要存储训练过程中必要的参数。你的计算机可能能够处理模型权重,但在训练过程中为优化状态、梯度和前向激活分配多余的内存可能会存在挑战。

简单的硬件无法处理这种挑战。这就是参数高效微调(PEFT)的关键所在。「虽然全LLM微调在监督学习过程中更新每个模型的权重,但PEFT方法只更新一小部分参数」。这种迁移学习技术选择特定的模型组件并“冻结”其余参数。结果是,与原始模型相比,参数数量显著减少(在某些情况下,仅为原始权重的15-20%;2021年微软提出的 LORA,斯坦福提出的 Prefix-Tuning,谷歌提出的 Prompt Tuning,2022年清华提出的 P-tuning v2、2023年华盛顿大学提出的QLoRA、2024年英伟达提出DoRA等基本上都是属于该范畴)。

这使得内存需求更加可管理。不仅如此,「PEFT还解决了灾难性遗忘问题。由于它不触及原始LLM,模型不会忘记之前学到的信息」。全微调会为每个训练任务产生一个新版本的模型,每个新版本都与原始模型大小相同,如果你在多个任务上进行微调,这可能会造成昂贵的存储问题。

其它微调类型

「1、迁移学习」:迁移学习是将已在通用、大规模数据集上训练过的模型,应用于特定任务的数据集上。这种方法适用于数据不足或时间紧迫的情况,优势在于训练后能获得更高的学习率和准确性。你可以使用像GPT-3和BERT这样在大量数据上预训练过的LLMs,并根据你的用例进行定制。

「2、任务特定微调」:任务特定微调是在特定任务或领域上,使用为该领域设计的数据集对预训练模型进行微调。这种方法比迁移学习需要更多的数据和时间,但可以在特定任务上获得更高的性能。

「3、灾难性遗忘」:在全微调过程中,模型在单一任务上的权重被修改,可能导致在其他任务上的性能下降。例如,模型在微调后可能在情感分析等NLP任务上表现更好,但可能忘记如何执行其他任务。

「4、多任务学习」:多任务微调是单任务微调的扩展,训练数据集包含多个任务的输入和输出示例。这种方法可以同时提高模型在所有任务上的性能,避免灾难性遗忘的问题。训练过程中,通过多个周期的损失计算来更新模型权重,最终得到一个擅长多种任务的微调模型。但多任务微调模型需要大量数据,可能需要5万到10万个示例。

「5、顺序微调」:顺序微调是将预训练模型按顺序适应多个相关任务。在初步迁移到一般领域后,LLM可能针对更具体的子集进行微调,例如从通用语言到医学语言,再到儿科心脏病学。

注意,其实还有其它的微调类型,如自适应、行为和指令、强化微调,这些涵盖了训练语言模型的一些重要特定情况。

检索增强RAG

说到模型微调,这里就必须要提一下检索增强RAG了。RAG是微调的一种替代方法,它结合了自然语言生成和信息检索。RAG确保语言模型通过外部最新知识或相关文档提供信息来源。「这种技术弥合了通用模型广泛知识与最新知识信息需求之间的差距」。因此,RAG是事实随时间演变情况下的重要技术。

图片

「RAG的优势」 RAG相较于微调的一个优势在于信息管理。传统的微调将数据嵌入到模型架构中,实质上是“硬编码”知识,这不容易修改。而RAG允许训练数据的持续更新,并允许数据的移除或修订,确保模型保持准确。

「RAG与微调的关系」 在语言模型的背景下,RAG和微调通常被视为竞争方法。然而,它们的结合使用可以显著提高性能。特别是,微调可以应用于RAG系统,以识别和改进其较弱的组件,帮助它们在特定LLM任务上表现出色。

详细的RAG介绍可以参考这两篇文章:

带你全面了解 RAG,深入探讨其核心范式、关键技术及未来趋势!

一文带你了解RAG(检索增强生成) | 概念理论介绍+ 代码实操(含源码)

微调最佳实践

「明确任务」:在微调大型语言模型的过程中,明确任务是基础步骤。它可以提供清晰的方向,确保模型的强大能力被引导用于实现特定目标,并为性能测量设定明确基准。

「选择合适的预训练模型」:使用预训练模型进行微调至关重要,因为它利用了从大量数据中获得的知识,确保模型不会从零开始学习。这种方法既计算效率高又节省时间。此外,预训练捕捉了通用语言理解,使微调能够专注于领域特定的细节,通常能在专业任务中带来更好的模型性能。

「设置超参数」:超参数是模型训练过程中可调整的变量,对找到适合任务的最优配置至关重要。学习率、批量大小、周期数、权重衰减等是关键的超参数,需要调整以优化模型。

「评估模型性能」:微调完成后,通过测试集评估模型性能。这提供了对模型在未见数据上预期表现的无偏评估。如果模型仍有改进空间,也应考虑迭代优化模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/461673.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【运维】StarRocks数据迁移到新集群(针对于集群互通、不互通的情况)

文章目录 一. 迁移整体思路1. 对于新旧集群互通的情况2. 对于新旧集群不互通的情况 二、迁移过程(两个集群互通的情况)1. 备份过程1.1. 通过mysqlclient与starrocks进行关联1.2. 创建仓库与minio建立联系1.3. 备份数据到minio 2. 迁移过程2.1. 通过mysql…

个人网站制作 Part 9 | Web开发项目

文章目录 个人网站制作 Part 9 | Web开发项目👩‍💻 基础Web开发练手项目系列:个人网站制作🚀 添加博客功能🔨使用Express和MongoDB🔧步骤 1: 创建博客模型🔧步骤 2: 创建博客路由 &#x1f528…

边缘计算网关的工作原理及其在工业领域的应用价值-天拓四方

随着物联网技术的快速发展,物联网时代已经悄然来临。在这个时代,数以亿计的设备相互连接,共享数据,共同构建智慧的世界。边缘计算网关通过将计算能力和数据存储推向网络的边缘,实现了对海量数据的实时处理,…

VBA combox/listbox 控件响应鼠标滚轮事件

在vba中,我们在用户窗体中如果添加有combox控件,或者是listbox控件。正常情况下,combox 和 listbox 是不响应鼠标滚轮事件的,且默认的VBA控件中,也没有提供响应鼠标滚轮事件的方法和入口。如此以来,我们在c…

三维卡通数字人解决方案,支持unity和Maya

企业对于品牌形象和宣传手段的创新需求日益迫切,美摄科技凭借其在三维卡通数字人领域的深厚积累,推出了面向企业的三维卡通数字人解决方案,帮助企业轻松打造独具特色的虚拟形象,提升品牌影响力和市场竞争力。 美摄科技的三维卡通…

AI技术崛起:数据可视化之路更近

在当今AI技术蓬勃发展的时代,数据可视化作为信息传达的重要手段,其门槛逐渐降低。然而,这并不意味着我们可以忽视学习数据可视化的重要性。即使不需要深入专业技术,对数据可视化的基础知识的了解也是至关重要的。那么,…

应用程序开发教学:医保购药系统源码搭建实战

医保购药系统作为医疗服务的重要组成部分,其开发不仅能够为患者提供更加便捷的购药服务,还能够提高医疗机构的管理效率。接下来,小编将为您讲解医保购药系统的源码搭建过程,介绍应用程序开发的基本步骤和技巧。 一、系统设计 我…

01背包 与 emo题目背景(周超人的遗憾) 的爱恨情仇

本题背景有意思,大家当乐子看,目前没有找到题目原题,也没有写过完全是01背包模板的题目,该篇文章大家注意其01背包一维写法的模板就好,注意各个关键点 ✨欢迎来到脑子不好的小菜鸟的文章✨ 🎈创作不易&…

Vue3-03_组件基础_上

单页面应用程序 什么是单页面应用程序 单页面应用程序(英文名:Single Page Application)简称 SPA,顾 名思义,指的是一个 Web 网站中只有唯一的一个 HTML 页面,所有的 功能与交互都在这唯一的一个页面内完…

Square Pair

传送门 题意 思路 实际上我们要的 AiAj 肯定是 (ab)^2 所以我们只需要关注于 ai 这个数经过质因数分解 除掉平方数的结果 也就是Ai​ 除去完全平方数因子 每次我们对ai讨论只需要加上 cnt[a[i]] 即可 此外 0 需要特判 code

mysql 排序底层原理解析

前言 本章详细讲下排序,排序在我们业务开发非常常见,有对时间进行排序,又对城市进行排序的。不合适的排序,将对系统是灾难性的,这个不是危言耸听。可能有些人会想,对于排序mysql 是怎么实现的,…

WWW2024 | PromptMM:Prompt-Tuning增强的知识蒸馏助力多模态推荐系统

论文:https://arxiv.org/html/2402.17188v1 代码:https://github.com/HKUDS/PromptMM 研究动机 多模态推荐系统极大的便利了人们的生活,比如亚马逊和Netflix都是基于多模态内容进行推荐的。对于研究,人们也遵循工业界的趋势,进行modality-aware的用户…

生成器建造者模式(Builder)——创建型模式

生成器/建造者模式——创建型模式 什么是生成器模式? 生成器模式是一种创建型设计模式, 使你能够分步骤创建复杂对象。 该模式允许你使用相同的创建代码生成不同类型和形式的对象。 提炼两个关键点:Ⅰ.分步骤创建复杂对象。Ⅱ.相同创建代码…

北斗卫星在桥隧坡安全监测领域的应用及前景展望

北斗卫星在桥隧坡安全监测领域的应用及前景展望 北斗卫星系统是中国独立研发的卫星导航定位系统,具有全球覆盖、高精度定位和海量数据传输等优势。随着卫星导航技术的快速发展,北斗卫星在桥隧坡安全监测领域正发挥着重要的作用,并为相关领域…

python 目录和文件基本操作

目录操作 获取当前目录: import os dir_path os.getcwd() print("当前目录:", dir_path) 当前目录: D:\work\pycharm\object 创建目录: import osdir_path os.getcwd() print("当前目录:", d…

【算法刷题 | 栈】3.16(有效的括号、删除字符串中的所有相邻重复项、逆波兰表达式求值)

文章目录 1.有效的括号1.1题目1.2解法:栈 2.删除字符串中的所有相邻重复项2.1题目2.2解法:栈 3.逆波兰表达式求值3.1题目3.2解法:栈 1.有效的括号 1.1题目 给定一个只包括 (,),{,},[&#xff…

Midjourney绘图欣赏系列(十二)

Midjourney介绍 Midjourney 是生成式人工智能的一个很好的例子,它根据文本提示创建图像。它与 Dall-E 和 Stable Diffusion 一起成为最流行的 AI 艺术创作工具之一。与竞争对手不同,Midjourney 是自筹资金且闭源的,因此确切了解其幕后内容尚不…

element ui 中文离线文档(百度云盘下载)

一般内网开发上不了网,用离线版本比较方便,下载地址: https://download.csdn.net/download/li836779537/88355878?spm1001.2014.3001.5503 下载后里面有个 index.hrml 双击打开就可以用 效果如下:

ADC架构III:Σ-Δ型ADC基础

简介 Σ-Δ型ADC是现代语音频带、音频和高分辨率精密工业测量应用所青睐的转换器。高度数 字架构非常适合现代细线CMOS工艺,因而允许轻松添加数字功能,而又不会显著增加成 本。随着此转换器架构的广泛使用,了解其基本原理显得非常重要。 历…

河南大学大数据平台技术实验报告二

大数据平台技术课程实验报告 实验二:HDFS操作实践 姓名:杨馥瑞 学号:2212080042 专业:数据科学与大数据技术 年级:2022级 主讲教师:林英豪 实验时间:2024年3月15日3点 至 2024年3月15日4点40 …