一文读懂:监督式微调(SFT)

监督式微调 (Supervised fine-tuning),也就是SFT,就是拿一个已经学了不少东西的大型语言模型,然后用一些特定的、已经标记好的数据来教它怎么更好地完成某个特定的任务。就好比你已经学会了做饭,但是要特别学会怎么做川菜,那就得用川菜的菜谱来练手。

图片

现在大多数的大型语言模型,比如今年流行的那些,都是通过这种方式来学会怎么更好地聊天或者执行命令的。

在监督式微调的过程中,这个大型语言模型会用一种叫做监督学习的方法,通过一些已经标记好的数据来学习。它会根据任务的需要,调整自己的参数,就像是在学习怎么更好地预测下一个词或者理解一句话的意思。

这种微调通常在模型已经预训练好之后进行,目的是让模型能够更好地理解用户的指令。虽然这样做比那种没有监督的微调要费事一些,但是效果通常也更好。

至于要微调多少,那就得看任务有多复杂,还有你手上有多少数据了。比如说,你要是用OpenAI的模型,比如GPT-3.5或者GPT-4,来做点简单的风格转换,有个30到50个好例子通常就够了。

如果你想把一个基础的大型语言模型变成一个能听懂指令的模型,比如从Mistral变成Mistral Instruct,那可能就得用上万个例子来训练。

比如说,一个大概有70亿参数的大模型,它的微调训练可能需要在16个Nvidia A100 GPU上跑大概4个小时,这就算是个不错的开始了。

图片

 

监督式微调,就像是给一个已经学了不少的模型来个特训,让它在某个具体任务上表现得更出色。这整个过程分成三步:

  1. 预训练:最开始,这个模型会在一大堆数据上学习,试着预测句子里的下一个词,这样它就能慢慢懂得语言的规律、语法和上下文。这个阶段就是让模型对语言有个大概的了解。

  2. 数据标注:接下来,得准备一些特别的数据,这些数据都是已经标记好的,告诉模型每个数据点的正确答案是什么。这些标记好的数据对监督学习来说特别重要,因为它们会告诉模型在微调时该怎么调整自己。

  3. 微调:最后,就是用这些已经标记好的、跟特定任务有关的数据来继续训练模型。这样模型就会调整自己,让自己在那个特定的任务上表现得更好,比如文本分类、情感分析或者问答系统。

我们说这个过程是“监督”的,是因为整个过程都是用那些已经知道正确答案的标记数据来指导学习的。这样一来,模型就能把之前学的那些广泛的语言知识,专注地用在某个特定的任务上,提高自己的准确度。

图片

 

微调类型训练数据使用场景
监督式微调使用标注数据当你有标注数据并需要将模型适配到特定任务以提高准确性时
自监督微调无需标注数据当标注数据不可用,你希望模型从数据的内在结构中学习时
无监督微调模型从输入数据生成标签当你希望利用大量未标注数据来预训练模型,以用于下游任务时
强化学习微调使用基于奖励的决策进行训练当任务涉及顺序决策制定,并且有反馈可用于指导学习时

监督式微调好处可不少:

  1. 学得更精准 — 通过调整模型的参数来适应特定的任务,模型就能掌握任务特有的那些小细节和模式。

  2. 表现更上一层楼 — 微调能让模型用上它之前从海量数据中学到的知识和技能,这样一来,在特定任务上的表现就能更上一层楼。

  3. 数据用得更精明 — 哪怕手头的标注数据不多,SFT也能让模型在各种真实世界的场景中发挥出不错的效果。

  4. 资源用得更经济 — 比起从头开始训练一个模型,微调一个已经预训练过的模型能省下不少时间和计算资源。

  5. 定制化服务 — SFT能让模型的行为、写作风格或者专业知识更贴合特定的需求,无论是语气还是术语,都能和特定的风格或专业领域紧密结合。

  6. 避免学得太死板 — 在微调的过程中,可以通过早停、dropout或者数据增强等手段来避免模型在小数据集上学得太死板,让它能更好地适应新数据。

总的来说,监督式微调就是让模型在保持广泛知识的同时,还能在特定任务上表现得更加精准和高效。

咱们聊聊那些让大型语言模型(LLMs)变得更聪明的监督式微调技术。这些技术就像是给模型们开小灶,让它们在特定任务上表现得更出色。常见的有这么几种:

  1. LoRA(低秩适应) — 这招挺巧妙,用低秩分解的方式来更新模型的权重,就像是用两个小矩阵来代替一个大矩阵,这样一来,需要调整的参数就少了,微调起来也更高效。

  2. QLoRA(量化LoRA) — 这是LoRA的一个升级版,它在内存使用上更节省,特别适合那些大块头的语言模型。

这些技术都属于参数高效微调(PEFT)的范畴,目的就是让微调过程既省资源又高效。

除了LoRA和QLoRA,还有其他一些技巧:

  • 基本超参数调整 — 这就像是给模型调校引擎,通过手动调整学习率、批量大小和训练周期数等超参数,直到模型的表现达到最佳。

  • 迁移学习 — 这种方法是让模型在已经学会的基础上,再用标注数据来学习新的特定任务。

  • 多任务学习 — 这就像是让模型同时学几门课,这样它就能学会在不同任务之间找到共通点。

  • 少样本学习 — 当可用的标注数据不多时,这种方法能让模型利用有限的信息来做出预测。

  • 任务特定微调 — 这种方法就是让模型全身心投入到一个特定任务中,通过调整所有层的参数来提高性能。

  • 奖励建模 — 这招是通过给模型设定奖励,让它在标注数据集上学习,从而更准确地预测结果。

  • 近端策略优化 — 这种方法用人类反馈来指导模型,就像是有个教练在旁边指导,帮助模型在特定任务上做得更好。

  • 比较排名 — 这招是训练模型去判断不同输出的相关性或质量,就像是让模型学会自己给自己打分,从而提高输出的质量。

这些技术就像是模型的私人教练,帮助它们在特定领域里变得更加专业。

微调方法描述使用场景
LoRA(低秩适应)减少可训练参数当你需要在有限的计算资源下进行高效的微调时使用
QLoRA(量化LoRA)LoRA的内存效率变体当内存限制是一个问题,并且你需要微调大型模型时使用
超参数调整手动调整学习率和批量大小当你需要通过参数调整来优化模型性能时使用
迁移学习在特定任务上进行微调当你有新任务的标注数据,并希望利用预训练的知识时使用
多任务学习同时在多个任务上进行训练当你希望模型学习跨任务的共享表示时使用
少样本学习在少量标注示例上进行训练当标注数据稀缺,你希望利用模型的现有知识时使用
任务特定微调在任务特定数据上训练整个模型当你需要为特定任务调整所有模型层时使用
奖励建模在有正确答案的标注数据集上进行训练当你需要模型基于奖励准确预测标签时使用
近端策略优化使用人类反馈的强化学习进行微调当任务涉及从人类偏好中学习以提高性能时使用
比较排名训练模型根据相关性对输出进行排名当你需要模型生成高质量、相关性强的输出时使用

这些微调技术就像是给大型语言模型(LLMs)穿上了定制的外衣,让它们能够更好地适应各种特定的任务和领域。这样一来,模型不仅性能更上一层楼,而且能更精准地理解和生成语言,无论是处理自然语言、做翻译、写摘要还是分析情感,都能大显身手。

不过,监督式微调LLMs的时候也会遇到一些常见的挑战:

  1. 过拟合 — 就是模型在训练数据上表现太好,以至于在新的、没见过的数据上就懵了。这在机器学习里挺常见的,微调的时候也得留心。

  2. 超参数调整 — 这就像是调琴弦,如果调得不好,模型学起来可能就慢了,或者学完也用不好。找到合适的超参数是个技术活,也挺费时间。

  3. 数据质量问题 — 微调的效果好不好,很大程度上取决于你给模型喂的数据质量如何。如果数据不靠谱,模型学出来的效果可能也就不理想。

  4. 灾难性遗忘 — 有时候模型在学新东西的时候,会不小心把以前学过的重要知识给忘了,这在微调的时候就可能会发生。

  5. 性能不一致 — 有时候模型在处理一些特殊情况或者少见的样本时,表现可能会不稳定,或者在理解上下文的时候,如果信息太少,也会影响表现。

要解决这些问题,咱们得用上一些策略。比如,可以用网格搜索或者贝叶斯优化这样的自动化技术来调整超参数,这样能更高效地找到最佳设置。对付过拟合和灾难性遗忘,可以试试看知识蒸馏这样的技术。当然,保证数据的质量和相关性也特别重要。最后,微调的过程得持续监控,不断分析错误,然后一点点改进。这样,模型就能越学越好,越来越聪明。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络的整体认识---网络协议,网络传输过程

计算机网络背景 网络发展 独立模式: 计算机之间相互独立; 网络互联: 多台计算机连接在一起, 完成数据共享; 局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起; 广域网WAN: 将远隔千里的计算机都连在一起;所谓 "局域网" 和 "广域网" 只是一个相…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-28

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-28 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-28目录前言1. Cognitive phantoms in LLMs through the lens of latent variables摘要研究背景问题与挑战创新点算法模型实验效果…

如何调整云桌面安装的虚拟机分辨率?

如何调整云桌面安装的虚拟机分辨率? 1. 编辑GRUB配置文件2. 修改分辨率3. 更新GRUB4. 重启虚拟机 💖The Begin💖点点关注,收藏不迷路💖 在云桌面环境中,虚拟机分辨率过低且无法调整时,可以通过以…

【React】react项目中的redux使用

1. store目录结构设计 2. react组件中使用store中的数据——useSelector 3. react组件中修改store中的数据——useDispatch 4. 示例 react-basic\src\store\moduels\counterStore.js import { createSlice } from reduxjs/toolkitconst counterStore createSlice({name: cou…

LeetCode讲解篇之15. 三数之和

文章目录 题目描述题解思路题解代码 题目描述 题解思路 这道题如果我们直接使用三层循环暴力搜索,时间复杂度是O(n3),大概率会超时 那还有更优解吗,答案是绝对的,查询搜索想要优化,就要思考如何进行排除法加速搜索过…

OIDC6-OIDC 授权流程类型

OpenID Connect(OIDC)支持三种主要的授权流程(Authorization Flow),分别是授权码流程(Authorization Code Flow)、隐式流程(Implicit Flow)和混合流程(Hybrid…

OpenCV视频I/O(6)检查视频捕获对象是否已成功打开的函数isOpened()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 如果视频捕获已经初始化,则返回 true。 如果之前调用 VideoCapture 构造函数或 VideoCapture::open() 成功,则该方法返回…

File systems

inode descriptor 文件系统中核心的数据结构就是inode和file descriptor。后者主要与用户进程进行交互。 inode,这是代表一个文件的对象,并且它不依赖于文件名。实际上,inode是通过自身的编号来进行区分的,这里的编号就是个整数…

游戏厅计时器ps5计算时间的软件 佳易王电玩计时计费管理系统操作教程

一、前言 游戏厅计时器ps5计算时间的软件 佳易王电玩计时计费管理系统操作教程 软件为绿色免安装版,解压即可使用。 二、软件程序教程 计时的时候,点击 开始计时按钮 开台后可设置定时语音提醒的时间 时间设置好后,点击 开启提醒 即可 三、…

C++远端开发环境安装(centos7)

使用VMWare安装centos7 启用网卡设备 修改文件/etc/sysconfig/network-scripts/ifcfg-ens33中的ONBOOTyes 重启网络服务 systemctl restart network 配置yum仓库 直接将如下内容覆盖原有的/etc/yum.repos.d/CentOS-Base.repo文件 清理yum缓存 yum clean all 刷新yum y…

深度学习常见术语介绍

文章目录 数据集(Dataset)特征(Feature)标签(Label)训练集(Training Set)测试集(Test Set)验证集(Validation Set)模型(Mo…

急!现在转大模型还来得及吗?零基础入门到精通,收藏这一篇就够了

大模型的出现,让行内和行外大多数人都感到非常焦虑。 行外很多人想了解却感到无从下手,行内很多人苦于没有硬件条件无法尝试。想转大模型方向,相关的招聘虽然层出不穷,但一般都要求有大模型经验。而更多的人,则一直处…

黑马程序员pink前端查漏补缺笔记,耗时6天,针对必要案例进行练习

HTML 1)插件 自动闭合标签,修改开标签时闭标签跟着变(微信开发者工具没有这个功能) 主题 保存格式化 浏览器打开 实时刷新,不用按浏览器的刷新按钮 win←/→ 快速分屏 2)初始结构标签 文档类型声明标签…

社交电商团购平台构建策略与用户体验设计思路

一、电商拼团系统开发思路 1、需求分析: 深入理解业务需求:与商家深入沟通,明确其业务目标和需求,包括拼团模式的具体要求(如参与人数、时间限制、价格策略等)、用户参与限制、商品管理、订单处理、支付流…

828华为云征文|部署敏捷项目管理系统工具 ZenTao

828华为云征文|部署敏捷项目管理系统工具 ZenTao 一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置2.4 Docker 环境搭建 三、Flexus云服务器X实例部署 ZenTao3.1 ZenTao 介绍3.2 ZenTao 部署3.3 ZenTao 使用 四、总…

P1303 A*B Problem Python题解

A*B Problem 题目背景 高精度乘法模板题。 题目描述 给出两个非负整数,求它们的乘积。 输入格式 输入共两行,每行一个非负整数。 输出格式 输出一个非负整数表示乘积。 样例 #1 样例输入 #1 1 2样例输出 #1 2提示 每个非负整数不超过 1 0…

万字面试题大模型面试,最全八股和答案

自ChatGPT开启大模型时代以来,大模型正迎来飞速发展,现在从事大模型开发相关工作可谓是处在时代的风口。那么大模型面试需要哪些技能和技巧呢,本文详细整理了全套的面试问题及答案,希望对大家有所帮助! 目录 大模型&a…

平衡二叉搜索树插入的实现

前言 因为二叉搜索树在插入的时候最坏的情况可能会变成一条单一链表,从而使查找或者插入的时候消耗大量的时间。所以为了解决这一情况诞生了平衡二叉搜索树,其作用是为了减少二叉搜索树的整体高度,从而使查找插入删除的效率提高。 一、平衡二…

Sublime Text4的下载安装以及汉化

sublime官网:https://www.sublimetext.com/ 按照指示一步步操作即可 汉化操作: 等一会就会弹出搜索框, 帮助菜单这里可以切换语言,

【C++报错已解决】std::bad_alloc

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…