大语言模型微调的基本概念介绍

大型语言模型(LLMs)正在以惊人的速度发展,LLM微调的潜力更是如此。大型语言模型的生命周期有几个关键步骤,今天我们将要介绍这个周期中最丰富、最耗时的一部分——LLM微调过程。

大语言模型的生命周期

在深入了解大型语言模型(LLM)微调之前,了解LLM的生命周期及其运行方式是很重要的。

  1. 愿景与范围:首先,应该定义项目的愿景。确定你的大型语言模型(LLM)是作为一个更普遍的工具,还是针对特定任务,如命名实体识别。明确的目标可以节省时间和资源。

  2. 模型选择:选择从头开始训练一个模型或者修改现有的模型。在许多情况下,调整一个已有的模型是高效的,但在某些情况下,可能需要通过一个新模型来进行微调。

  3. 模型性能和调整:准备好你的模型后,你需要评估其性能。如果效果不佳,尝试提示工程或进一步微调。我们将重点关注这部分。确保模型的输出与人类的偏好一致。

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

  5. 部署:一旦模型表现达到预期,便可进行部署。在此阶段,优化计算效率和用户体验。

什么是LLM微调

大型语言模型(LLM)微调是指在预训练模型的基础上,进一步使用较小且特定的数据集进行训练,以提升模型在特定任务或领域的能力和性能。微调的目的在于将通用模型转变为专业化模型。它弥合了通用预训练模型与具体应用独特需求之间的差距,确保语言模型更好地符合人类的期望。以OpenAI的GPT-3为例,这是一种设计用于广泛自然语言处理(NLP)任务的先进大型语言模型。假设某家医疗机构希望使用GPT-3帮助医生从文字记录中生成病人报告。虽然GPT-3能够理解和创建一般文本,但它可能未针对复杂的医学术语和特定的医疗术语进行优化。

为了增强其在这一专业领域的表现,该机构将GPT-3在充满医疗报告和病人记录的数据集上进行微调。通过这一过程,模型对医学术语、临床语言的细微差别以及典型报告结构变得更加熟悉。经过微调后,GPT-3具备了辅助医生生成准确且连贯的病人报告的能力,展示了其在特定任务中的适应性。

微调的局限性

微调虽然可以提升模型在特定任务上的性能,但可能会导致模型在其他未微调的任务上性能下降。这是因为微调可能会使模型过度适应特定领域的数据,从而失去一些通用性。

何时使用微调

我们的文章关于大型语言模型,涉及了上下文学习以及零/单/少样本推理等主题。以下是一个简要回顾:

上下文学习是一种通过在提示中提供特定任务示例来改进提示的方法,为大型语言模型提供了完成任务的蓝图。

零样本推理在提示中仅包含您的输入数据而不添加额外的例子。如果零样本推理没有达到预期效果,可以使用“单样本”或“少样本推理”。这些策略涉及在提示中添加一个或多个完成的示例,帮助较小的大型语言模型表现更好。

在这里插入图片描述

这些是直接在用户提示中使用的技术,旨在优化模型的输出并更好地符合用户的偏好。问题是它们并不总是有效,特别是对于较小的语言模型来说。

除此之外,你在提示中包含的任何示例都会占用上下文窗口中宝贵的空间,从而减少你用于包含其他有用信息的空间。在这里,微调技术终于登场。与使用大量非结构化文本数据的预训练阶段不同,微调是一个监督学习过程。这意味着你使用一个标记示例的数据集来更新大型语言模型的权重。这些标记示例通常是提示-响应对,从而更好地完成特定任务。

监督微调 (SFT)

监督微调是指使用标注数据来更新预训练语言模型以执行特定任务。这些使用的数据已经事先经过检查。这与未经过数据检查的无监督方法不同。通常,语言模型的初始训练是无监督的,但微调是有监督的。

微调是如何进行的?

让我们深入了解大型语言模型中的微调细节。在准备训练数据时,有许多开源数据集可以提供关于用户行为和偏好的洞察,即使它们不是直接以指令数据的格式存在的。例如,我们可以将产品评论的大型数据集转换为用于微调的指令提示数据集。提示模板库包含许多适用于不同任务和不同数据集的模板。
一旦指令数据集准备就绪,就像标准的监督学习一样,您将数据集划分为训练、验证和测试集。在微调期间,您从训练数据集中选择提示并传递给大型语言模型(LLM),然后生成补全。

在微调阶段,当模型接触到针对目标任务的新标记数据集时,它会计算其预测与实际标签之间的误差或差异。模型随后使用此误差来调整其权重,通常通过梯度下降等优化算法进行。权重调整的幅度和方向取决于梯度,梯度表明每个权重对误差的贡献程度。对误差负责较多的权重会被调整得更多,而对误差负责较少的权重则调整得较少。

在多次迭代(或称为训练轮次)中,模型不断调整其权重,逐步达到能够将误差降到最低的配置。目标是将先前学到的一般知识适应于新数据集中存在的细微差别和特定模式,从而使模型在特定任务上变得更加专业和有效。

在此过程中,模型通过标记数据进行更新。它根据自己的预测与实际答案之间的差异进行变化。这有助于模型学习标记数据中的细节。通过这样做,模型在它被微调的任务上得以改进。

让我们来举个例子来更好地说明这一点:如果你问一个预训练模型“为什么天空是蓝的?”,它可能会回答“因为大气散射阳光的方式。”这个答案简单直接。然而,对于一个科学教育平台的聊天机器人来说,这个答案可能过于简略。根据你的指导原则,它可能需要更多的科学细节或背景。在这种情况下,监督微调就派上用场了。
在这里插入图片描述
经过微调后,模型可以对科学问题给出更深入的回答。例如,当被问到“为什么天空是蓝色的?”时,模型可能提供如下更详细的解释:

“天空看起来是蓝色的,是由于一种叫做瑞利散射的现象。阳光进入地球大气层时,由不同颜色组成,每种颜色都有各自的波长。蓝光的波长较短,被大气中的气体和微粒向各个方向散射。这种散射导致直接的阳光看起来是白色的,但天空本身则呈现出蓝色的色调。” 这种丰富的回答既全面又适合用在科学教育平台上。

微调大型语言模型的方法

LLM微调是一种监督学习过程,其中使用标注示例的数据集来更新LLM的权重,从而提高模型针对特定任务的能力。让我们来探讨一些用于微调LLM和LLM Agent的显著方法。

指令微调

提升模型在各种任务上的性能的一种策略是指令微调。这意味着使用示例来训练机器学习模型,这些示例展示了模型应如何响应查询。用于微调整大型语言模型的数据集必须符合你的指令目的。例如,假设你微调模型以提高其总结能力,那么你应该构建一个数据集,其中的示例以“总结”指令开头,后面跟随文本或类似短语。在翻译任务中,你应该包含如“翻译这段文字”这样的指令。这些提示完成对可以让你的模型以新的特定方式“思考”,并执行给定的具体任务。
在这里插入图片描述

指令微调(Instruction Fine-Tuning,简称IFT)可以被视为监督式微调(Supervised Fine-Tuning,简称SFT)的一种形式。它通过准备特定的输入和输出对,让模型学习其中的规律,从而提升模型在特定任务上的表现。

完全微调

指令微调(Instruction fine-tuning),即更新模型的所有权重,被称为完全微调(full fine-tuning)。这个过程会产生一个具有更新权重的新版本模型。需要注意的是,与预训练类似,完全微调也需要足够的内存和计算资源来存储和处理在训练过程中更新的所有梯度、优化器和其他组件。

参数高效微调

训练语言模型是一项计算密集型任务。进行完整的大型语言模型(LLM)微调时,不仅需要内存来存储模型,还需要用于训练过程的参数。你的计算机可能能够处理模型权重,但在训练过程中,为优化状态、梯度和前向激活分配内存是一个具有挑战性的任务。简单的硬件无法应对如此大的困难。在这种情况下, PEFT(参数高效微调)是至关重要的。虽然完整的LLM微调会在监督学习过程中更新每一个模型权重,但PEFT方法只更新一小部分参数。这种迁移学习技术选择特定的模型组件并“冻结”其余的参数。结果是需要调整的参数数量比原始模型少得多(在某些情况下,仅为原始权重的15-20%;LoRA可以将可训练参数的数量减少到原来的1万分之一)。这使得内存需求更易于管理。不仅如此,PEFT还可以解决灾难性遗忘的问题。由于它不会改变原有的大型语言模型,模型不会忘记先前学习到的信息。完整的微调会为每个训练的任务生成模型的新版本。每一个模型的大小都与原始模型相同,因此如果对多个任务进行微调,可能会造成昂贵的存储问题。

其他类型的微调

迁移学习:迁移学习是指从在通用大型数据集上学习的模型出发,并在特定任务的数据上进行训练。这些数据集可能包括与该领域相关的标注示例。迁移学习用于数据不足或缺乏时间进行训练的情况下,其主要优势是提供更高的学习率和准确性。你可以使用已经在大量数据上预训练的大型语言模型(LLM),如GPT-3/4和BERT,并根据自己的用例进行定制。

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

例如,使用该任务的示例数据集进行翻译。有趣的是,使用相对较少的示例也可以获得良好的结果。通常,只需几百或几千个示例就可以获得良好的性能,而模型在预训练阶段看到的是数十亿条文本。然而,在单一任务上进行微调可能会导致一个潜在的缺点,即灾难性遗忘。

灾难性遗忘发生在完整的微调过程中修改了原始大型语言模型的权重。虽然这在单一微调任务上表现出色,但可能会降低在其他任务上的性能。例如,微调可以提高模型执行某些自然语言处理(NLP)任务(如情感分析)的能力,并导致高质量的完成,但模型可能会忘记如何执行其他任务。在微调前,模型能够正确识别命名实体。

多任务学习:多任务微调是单任务微调的扩展,其中训练数据集包含多个任务的输入和输出示例。在这里,数据集包含指导模型执行各种任务的示例,包括摘要、评论评级、代码翻译和实体识别。通过在这个混合数据集上训练模型,可以提高模型在所有任务上的性能,从而避免灾难性遗忘的问题。经过多次训练迭代,计算出的损失用于更新模型的权重,结果是一个微调后的模型,能够同时在多种不同任务上表现良好。多任务微调模型的一个缺点是需要大量的数据。你可能需要多达5万到10万个示例在你的训练集中。然而,收集这些数据是非常值得的,结果往往是非常有能力且适合在需要多任务良好性能的情况下使用的模型。

顺序微调:顺序微调是指在几个相关任务上依次适应预训练模型。在转移到通用领域后,LLM可以在更具体的子集上进行微调。例如,它可以从一般语言微调到医学语言,然后从医学语言微调到小儿心脏病学。

请注意,还有其他微调示例——自适应、行为和指令、强化微调大型语言模型。这些涵盖了训练语言模型的一些重要具体情况。

微调方法现在也被广泛应用于小型语言模型(SLM),这已成为2024年最大的生成式AI趋势之一。微调小型语言模型实际上更加方便且易于实现,特别是如果你是一家小企业或开发人员,想要提高模型的性能。

检索增强生成(RAG)

检索增强生成(RAG)是一种广为人知的微调替代方法,它结合了自然语言生成和信息检索。RAG 确保语言模型以外部最新的知识来源/相关文档为基础,并提供信息来源。

RAG相比于微调的一个优点是信息管理。传统的微调将数据嵌入到模型的架构中,从而“固化”了知识,导致难以进行修改。而RAG允许训练数据的持续更新,并能够删除或修订数据,确保模型保持最新和准确。

在语言模型的背景下,RAG和微调通常被视为竞争方法。然而,将二者结合使用可以显著提升性能。特别是,可以对RAG系统进行微调,以识别和改进其较弱的部分,帮助它们在特定的大型语言模型任务中表现出色。

为什么需要微调?什么时候需要一个微调模型?

我们知道,Chat GPT和其他语言模型能够回答大量的问题。但问题在于,个人和公司希望拥有自己的大语言模型接口,以便处理他们的私人和专有数据。这是技术领域新热门话题——面向企业的大语言模型。

下面是需要对大语言模型(LLM)进行微调的一些原因:

  1. 特殊性和相关性:尽管LLM在大量数据上进行了训练,它们可能不了解与特定业务或行业相关的专门术语、细微差别或上下文。微调可以确保模型理解并生成高度相关的业务内容。

  2. 提高准确性:对于关键的业务功能,错误的容忍度很低。对特定业务数据进行微调可以帮助实现更高的准确性水平,确保模型的输出与预期密切一致。

  3. 定制化互动:如果您将LLM用于客户互动,例如聊天机器人,微调可以帮助调整响应以符合您品牌的声音、语调和指导原则,从而确保一致且拥有品牌特色的用户体验。

  4. 数据隐私和安全:通用的LLM可能会基于公开可用的数据生成输出。微调允许企业控制模型接触的数据,确保生成的内容不会无意中泄露敏感信息。

  5. 应对罕见场景:每个企业都会遇到特定领域中的罕见但重要的场景。一般的LLM可能无法最佳地处理这些情况。微调可以确保有效满足这些特殊情况。

虽然LLM提供了广泛的能力,微调可以使这些能力更加符合企业的独特需求,确保最佳性能和结果。

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

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

相关文章

三次握手内部实现原理

socket()创建一个新的套接字 int socket(int domain, int type, int protocol); 参数: domain:地址族,如 AF_INET(IPv4),AF_INET6(IPv6) type:套接字类型&…

【Mac】git使用再学习

目录 前言 如何使用github建立自己的代码库 第一步:建立本地git与远程github的联系 生成密钥 将密钥加入github 第二步:创建github仓库并clone到本地 第三步:上传文件 常见的git命令 git commit git branch git merge/git rebase …

CSS—text文本、font字体、列表list、表格table、表单input、下拉菜单select

目录 1.文本 2.字体 3.列表list a.无序列表 b.有序列表 c.定义列表 4.表格table a.内容 b.合并单元格 3.表单input a.input标签 b.单选框 c.上传文件 4.下拉菜单 1.文本 属性描述color设置文本颜色。direction指定文本的方向 / 书写方向。letter-spacing设置字符…

【前端基础】1、HTML概述(HTML基本结构)

一、网页组成 HTML:网页的内容CSS:网页的样式JavaScript:网页的功能 二、HTML概述 HTML:全称为超文本标记语言,是一种标记语言。 超文本:文本、声音、图片、视频、表格、链接标记:由许许多多…

Java---入门基础篇(下)---方法与数组

前言 本篇文章主要讲解有关方法与数组的知识点 ,是基础篇的一部分 , 而在下一篇文章我会讲解类和对象的知识点 入门基础篇上的链接给大家放在下面啦 ! Java---入门基础篇(上)-CSDN博客 感谢大家点赞👍🏻收藏⭐评论✍🏻 欢迎各位大佬指点…

论coding能力 new bing 对比 chatgpt

近日需要编程计算每个月的第二个星期二是哪一天,因为那一天需要做一件重要的事情,我想在这个日期做一个提醒,于是把这个重任交给当下最火的AI,微软new bing和chatGPT,实验对比结果如下:微软new bing会给你参…

C语言:51单片机 基础知识

一、单片机概述 单片机的组成及其特点 单片机是指在一块芯片上集成了CPU、ROM、RAM、定时器/计数器和多种I/O接口电路等,具有一定规模的微型计算机。 特点: 1、单片机的存储器以ROM、RAM严格分工。 2、采用面向控制的指令系统。 3、单片机的I/O口引脚通…

【计算机网络入门】初学计算机网络(六)

目录 1.回忆数据链路层作用 2. 组帧 2.1 四种组帧方法 2.1.1 字符计数法 2.1.2 字节填充法 2.1.3 零比特填充法 2.1.4 违规编码法 3. 差错控制 3.1 检错编码 3.1.1 奇偶校验码 3.1.2 CRC(循环冗余校验)校验码 3.2 纠错编码 3.2.1 海明校验码…

Materials Studio MS2020在linux系统上的安装包下载地址 支持centos Ubuntu rocky等系统

下载地址:MS2020-linux官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘 Materials Studio 2020是一款功能强大的材料科学计算模拟软件,以下是其详细介绍: 核心模块功能 CASTEP模块:采用平面波赝势方法,适用于周…

JSON Schema 入门指南:如何定义和验证 JSON 数据结构

文章目录 一、引言二、什么是 JSON Schema?三、JSON Schema 的基本结构3.1 基本关键字3.2 对象属性3.3 数组元素3.4 字符串约束3.5 数值约束 四、示例:定义一个简单的 JSON Schema五、使用 JSON Schema 进行验证六、实战效果6.1 如何使用 七、总结 一、引…

初探Ollama与deepseek

什么是Ollama?它与大模型有什么联系? 简单说,Ollama就像是你电脑上的一个 “大模型小助手”。 以前,很多强大的大语言模型,比如能回答各种问题、写文章、翻译等的那些模型,要么只能在网上的服务器上用&am…

【word】保存重开题注/交叉引用消失,全局更新域问题

目录 一、更新域是什么二、更新域常见问题及解决方法(一)更新域后内容未变化(二)域代码显示异常(三)交叉引用无法更新(四)全选更新域出现错误 三、交叉引用与题注的关系及操作&#…

区块链中的数字签名:安全性与可信度的核心

数字签名是区块链技术的信任基石,它像区块链世界的身份证和防伪标签,确保每一笔交易的真实性、完整性和不可抵赖性。本文会用通俗的语言,带你彻底搞懂区块链中的数字签名! 文章目录 1. 数字签名是什么?从现实世界到区块…

人工智能之数学基础:矩阵的范数

本文重点 在前面课程中,我们学习了向量的范数,在矩阵中也有范数,本文来学习一下。矩阵的范数对于分析线性映射函数的特性有重要的作用。 矩阵范数的本质 矩阵范数是一种映射,它将一个矩阵映射到一个非负实数。 矩阵的范数 前面我们学习了向量的范数,只有当满足几个条…

【MySQL】数据库初识

目录 一、什么是数据库 与数据结构的区别 各类软件(数据库)代表 关系型 vs 非关系型 关系型数据库 非关系型数据库 二、初识MySQL数据库 三、MySQL数据库安装 四、常用数据类型 内存 vs 硬盘 数值类型 字符串类型 日期类型 五、MySQL数据库…

Minio文件存储及Springboot集成

文章目录 Minio简介Minio安装使用下载Minio.exe启动访问WebUI MinIO基本概念Spingboot集成Minio设置本地Minio访问秘钥创建文件存储bucket项目pom.xml添加依赖配置文件修改Minio配置类Minio工具类定义HttpStatus定义统一返回结果定义controller类 总结 Minio简介 MinIO 是高性…

P8651 [蓝桥杯 2017 省 B] 日期问题--注意日期问题中2月的天数 / if是否应该连用

P8651 [P8651 [蓝桥杯 2017 省 B] 日期问题--注意日期问题中2月的天数 / if是否应该连用 题目 分析代码 题目 分析 代码中巧妙的用到3重循环,完美的解决了输出的顺序问题【题目要求从小到大】 需要注意的是2月的值,在不同的年份中应该更新2月的值 还有…

蓝桥杯练习代码

一、最接近的三数之和 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 示例 1: 输入:nums [-1,2,1,-4], targe…

Go中slice和map引用传递误区

背景 关于slice和map是指传递还是引用传递,很多文章都分析得模棱两可,其实在Go中只有值传递,但是很多情况下是因为分不清slice和map的底层实现,所以导致很多人在这一块产生疑惑,下面通过代码案例分析slice和map到底是…

DeepSeek如何快速开发PDF转Word软件

一、引言 如今,在线工具的普及让PDF转Word成为了一个常见需求,常见的PDF转Word工具有收费的WPS,免费的有PDFGear,以及在线工具SmallPDF、iLovePDF、24PDF等。然而,大多数免费在线转换工具存在严重隐私风险——文件需上…