LLMs指令微调 Instruction fine-tuning

news2025/1/23 2:16:45

上周,您被介绍了生成型AI项目的生命周期。您探索了大型语言模型的示例用例,并讨论了它们能够执行的任务类型。
在这里插入图片描述

在本课中,您将了解如何提高现有模型在特定用例下的性能的方法。
在这里插入图片描述

您还将了解可用于评估您微调后的LLM性能并量化其相对于您开始时的基础模型的改进的重要指标。
在这里插入图片描述

让我们首先讨论如何使用指令提示来微调LLM。在课程的早期,您看到一些模型能够识别提示中包含的指令,并正确地执行零样本推理,
在这里插入图片描述

而其他一些较小的LLM可能无法执行任务,就像这里显示的示例一样。在这里插入图片描述

您还看到,包括一个或多个您希望模型执行的示例(称为一次性或少次性推理)可能足以帮助模型识别任务并生成一个好的完成。
在这里插入图片描述

然而,这种策略有几个缺点。

  1. 首先,对于较小的模型,即使包括五或六个示例,它也不总是有效。
  2. 其次,您在提示中包括的任何示例都会占用上下文窗口中宝贵的空间,减少您包括其他有用信息的空间。
    在这里插入图片描述

幸运的是,存在另一种解决方案,您可以利用一种称为微调的过程来进一步训练基础模型。
在这里插入图片描述

与使用大量非结构化文本数据通过自监督学习训练LLM的预训练相反,
在这里插入图片描述

微调是一个监督学习过程,您使用一个标记示例的数据集来更新LLM的权重。
在这里插入图片描述

这些标记示例是提示完成对,
在这里插入图片描述

微调过程延长了模型的训练,以提高其在特定任务上生成好的完成的能力。
在这里插入图片描述

一种称为指令微调的策略在提高模型在多种任务上的性能方面特别有效。

让我们更仔细地看看这是如何工作的,指令微调使用示例训练模型,这些示例演示了它应如何响应特定的指令。这里有几个示例提示来演示这个想法。两个示例中的指令都是“分类这个评论”,期望的完成是一个以“情感”开头,然后是“正面”或“负面”的文本字符串。
在这里插入图片描述

您用于训练的数据集包括许多您感兴趣的任务的提示完成示例对,每个示例都包括一个指令。

例如,如果您想微调模型以提高其摘要能力,您将建立一个以“摘要以下文本”或类似短语开始的示例的数据集。如果您正在提高模型的翻译技能,您的示例将包括像“翻译这个句子”这样的指令。这些提示完成示例允许模型学习生成遵循给定指令的响应。
在这里插入图片描述

指令微调,其中所有模型的权重都被更新,被称为全面微调。该过程产生了一个具有更新权重的模型的新版本。重要的是要注意,就像预训练一样,全面微调需要足够的内存和计算预算来存储和处理所有在训练期间被更新的梯度、优化器和其他组件。因此,您可以从上周学到的内存优化和并行计算策略中受益。
在这里插入图片描述

那么您实际上如何进行指令微调和LLM呢?第一步是准备您的训练数据。有许多公开可用的数据集已经用于训练早期代的语言模型,尽管它们大多数都没有格式化为指令。幸运的是,开发人员已经组装了提示模板库,这些库可以用于获取现有的数据集,例如亚马逊产品评论的大型数据集,并将它们转换为用于微调的指令提示数据集。

提示模板库包括不同任务和不同数据集的许多模板。这里有三个提示,它们被设计用于与亚马逊评论数据集一起工作,并且可以用于微调用于分类、文本生成和文本摘要任务的模型。
在这里插入图片描述

您可以看到,在每种情况下,您都将原始评论(这里称为review_body)传递给模板,其中它被插入到以像“预测相关评级”、“生成星级评论”或“给出以下产品评论的简短句子描述”这样的指令开始的文本中。结果是一个现在包含指令和数据集中的示例的提示。
在这里插入图片描述

一旦您准备好了指令数据集,就像标准的监督学习一样,您将数据集划分为训练、验证和测试分割。
在这里插入图片描述

在微调期间,您从训练数据集中选择提示并将它们传递给LLM,然后生成完成。接下来,您将LLM的完成与训练数据中指定的响应进行比较。您可以在这里看到,模型做得不是很好,它将评论分类为中性,这有点夸张了。评论显然是非常积极的。记住,LLM的输出是一个概率分布,across tokens跨越令牌。
在这里插入图片描述

因此,您可以比较完成的分布和训练标签的分布,并使用标准的crossentropy交叉熵函数来计算两个令牌分布之间的损失。
在这里插入图片描述

然后使用计算出的损失来更新模型权重,以标准的反向传播。您将为许多批次的提示完成对进行这样的操作,并在几个时代内更新权重,以便模型在任务上的性能得到提高。
在这里插入图片描述

与标准的监督学习一样,您可以定义单独的评估步骤,以使用保留的验证数据集来衡量您的LLM性能。这将给您提供验证准确性,
在这里插入图片描述

而在您完成微调后,您可以使用保留的测试数据集进行最终性能评估。这将给您提供测试准确性。在这里插入图片描述

微调过程产生了一个更擅长您感兴趣的任务的基础模型的新版本,通常称为指导模型。使用指令提示进行微调是目前微调LLM最常见的方式。从这一点开始,当您听到或看到“微调”一词时,您可以假设它总是意味着指令微调。
在这里插入图片描述

参考

https://www.coursera.org/learn/generative-ai-with-llms/lecture/exyNC/instruction-fine-tuning

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

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

相关文章

Netty简易聊天室

文章目录 本文目的参考说明环境说明maven依赖日志配置单元测试 功能介绍开发步骤 本文目的 通过一个简易的聊天室案例,讲述Netty的基本使用。同时分享案例代码。项目中用到了log4j2,junit5,同时分享这些基础组件的使用。项目中用到了awt&…

开源的经济影响:商业与社区的平衡

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

Qt 解析XML文件 QXmlStreamReader

如何使用QXmlStreamReader来解析格式良好的XML,Qt的文档中指出,它是一种更快、更方便的Qt自己的SAX解析器(QXmlSimpleReader)的替代,它也较快,在某种情况下,比DOM(QDomDocument&…

原生小案例:如何使用HTML5 Canvas构建画板应用程序

使用HTML5 Canvas构建绘图应用是在Web浏览器中创建交互式和动态绘图体验的绝佳方式。HTML5 Canvas元素提供了一个绘图表面,允许您操作像素并以编程方式创建各种形状和图形。本文将为您提供使用HTML5 Canvas创建绘图应用的概述和指导。此外,它还将通过解释…

密码学与加密通信: 解析密码学基础、加密算法、数字签名和安全通信协议,探讨保护数据传输的技术。

在数字化时代,数据的安全性和隐私保护变得至关重要。随着互联网的普及,人们的个人信息、商业机密以及敏感数据需要在网络传输中得到保护,这就是密码学及其在加密通信中的作用所在。本文将深入探讨密码学的基础知识、常见的加密算法、数字签名…

公网中Linux系统下Redis使用注意事项以及被pnscan病毒攻击的经过

一次惨痛的教训&#xff1a;被pnscan病毒攻击的经过&#xff08;公网中Linux系统下Redis使用注意事项&#xff09; 0.案发情况pnscan病毒感染惨状&#xff1a;>>提示<< 1.案发原因2.排查过程简单排查之后&#xff0c;发现啥都做不了。先百度到了如下文章&#xff1…

8086汇编test指令学习

Test指令将两个操作数进行逻辑与运算&#xff0c;并根据运算结果设置相关的标志位。Test的两个操作数不会被改变。运算结果在设置过相关标记位后会被丢弃。 TEST AX,BX 与 AND AX,BX 命令有相同效果&#xff0c;只是Test指令不改变AX和BX的内容&#xff0c;而AND指令会把结果保…

HTML番外篇(五)-移动端适配

一、媒体查询 1.认识媒体查询 媒体查询是一种提供给开发者针对不同设备需求进行定制化开发的一个接口。 你可以根据设备的类型&#xff08;比如屏幕设备、打印机设备&#xff09;或者特定的特性(比如屏幕的宽度)来修改你的页面。 媒体查询的使用方式主要有三种&#xff1a;…

CPU、MCU、MPU、SOC、SOCPC、概念解释之在嵌入式领域常听到的名词含义

CPU、MCU、MPU、SOC等几个在嵌入式领域学习过程中会涉及到的几个名词。我们来学习一下&#xff0c;资料从网上搜集的&#xff0c;有错的地方可以指出。。。 CPU、MCU、MPU、SOC、SOCPC、 1. CPU2. MPU3.MCUMPU和MCU的区别&#xff1a;4.SOC5. SoPC 1. CPU CPU&#xff0c;即中…

行业追踪,2023-08-24

自动复盘 2023-08-24 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

mysql--数据库的操作

数据库&#xff0c;是数据存储的最大单元。 1 创建数据库 create database mydatabase; 每次创建数据库的时候&#xff0c;都会多一个文件夹&#xff0c;关系型数据库是存储在磁盘当中的&#xff0c;所以这时候可以查看新建的数据库 2 指定字符集 MySQL中的字符集转换过程 制…

浅谈Python网络爬虫应对反爬虫的技术对抗

在当今信息时代&#xff0c;数据是非常宝贵的资源。而作为一名专业的 Python 网络爬虫程序猿&#xff0c;在进行网页数据采集时经常会遭遇到各种针对爬虫行为的阻碍和限制&#xff0c;这就需要我们掌握一些应对反爬机制的技术手段。本文将从不同层面介绍如何使用 Python 进行网…

【面试】线上 CPU 100% 问题排查

回答套路一般为&#xff1a;线上服务器没有排查过&#xff0c;线上服务器只有运维才有操作权限。在平时开发的时候&#xff0c;在测试服务器上排查过。 一、复现代码 public class Test {public static void main( String[] args ){int a 0;while (a < 100) {a * 10;}} }…

直流电机(2)

励磁损耗不大&#xff0c; 空载磁场是平顶波。 电枢磁势电枢电流*匝数 电刷不在几何中心线上时&#xff0c;分两个分量&#xff0c; 电枢反应具有一定的饱和去磁作用。 发电机 &#xff1a;输出电势&#xff0c; 电动机:输出转矩 电势和转矩是最重要的! 磁通越大&#xff0c…

C++快速回顾(三)

前言 在Android音视频开发中&#xff0c;网上知识点过于零碎&#xff0c;自学起来难度非常大&#xff0c;不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》&#xff0c;结合我自己的工作学习经历&#xff0c;我准备写一个音视频系列blog。C/C是音视频必…

猜数游戏-Rust版

cargo new guessing_game 创建项目 输入任意内容&#xff0c;并打印出来 main.rs: use std::io; // 像String这些类型都在预先导入的prelude里&#xff0c;如果要使用的不在prelude里&#xff0c;则需要显式导入fn main() { println!("猜数"); println!("…

uniap记录一场问题

终于解决了一个问题 立即报名跳转到报名详情后&#xff0c;输入的信息可以跳转回来同时在首页显示&#xff0c;不断的增添。 中间卡在数据传输卡了很久。 问题一、处在tartab的传值不允许&#xff0c;onload不在非tabbar界面跳转tabbar界面的时候重新加载&#xff0c;搞了半天…

pyqt Pyton VTK 使用 滑块 改变 VTK Actor 颜色

使用 PyQt5 vtk vtk球体 使用滑块 RGB 改变 Actor 颜色 CODE import sys from PyQt5.QtWidgets import * from PyQt5.QtWidgets import (QApplication, QCheckBox, QGridLayout, QGroupBox,QMenu, QPushButton, QRadioButton, QVBoxLayout, QWidget, QSlider,QLineEdit,QLabe…

变压器绝缘油微量水分测试

试验目的 变压器注油前做绝缘油的含水量测试&#xff0c;是为了防止水分随油进入变压器内&#xff0c;导致油一一纸绝缘系统吸潮&#xff0c;使绝缘材料降解老化、介质损耗增加、绝缘电阻降低、局部起始电压下降&#xff0c;严重影响变压器运行寿命。纯净干燥的绝缘油很容易吸…

MySQL回表是什么?哪些情况下会回表

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责…