LLM-TAP随笔——有监督微调【深度学习】【PyTorch】【LLM】

文章目录

  • 5、 有监督微调
    • 5.1、提示学习&语境学习
    • 5.2、高效微调
    • 5.3、模型上下文窗口扩展
    • 5.4、指令数据构建
    • 5.5、开源指令数据集

5、 有监督微调

5.1、提示学习&语境学习

提示学习

完成预测的三个阶段:提示添加、答案搜索、答案映射

在这里插入图片描述

提示添加

“[X] 我感到 [Z]”

x = “我不小心错过了公共汽车。”

x’ = “我不小心错过了公共汽车。我感到[Z]”

答案搜索

Z = {“太好了”,“好”,“一般”,“不好”,“糟糕”}

将给定提示 x ′ 而模型输出为 z 的过程记录为函数 f f i l l ( x ′ , z ) f_{fill} (x ′ , z) ffill(x,z),对于每个答案空间 Z Z Z中的候选答案 z z z,分别计算模型输出它的概率, 从而找到模型对[Z] 插槽预测得分最高的输出:

z ~ = s e a r c h z ∈ Z P ( f f i l l ( x ′ , z ) ; θ ) \tilde{z} = search_{z∈Z}P(f_{fill}(x',z);θ) z~=searchzZP(ffill(x,z);θ)

答案映射

将模型的输出与最终的标签做映射。映射规则是人为制定的,比如,将“太好了”、“好”映射为“正面”标签,将“不好”,“糟糕”映射为“负面”标签,将“一般”映射为“中立”标签。

在这里插入图片描述

提示学习方法易于理解且效果显著,提示工程、答案工程、多提示学习方法、基于提示的训练策略等已经成为从提示学习衍生出的新的研究方向。

语境学习

关键思想是从类比中学习,整个过程并不需要对模型进行参数更新,仅执行向前的推理。

向模型输入特定任务的一些具体例子以及测试样例,让模型根据示例续写出测试样例的答案。

如下情感分类,续写情感极性:
在这里插入图片描述

5.2、高效微调

高效微调:在缩减训练参数量和GPU显存占用,同时使训练后的模型具有与全量微调相当的性能。

全量微调:微调全部参数需要相当高的算力。

LoRA( Low-Rank Adaptation of Large Language Models)

计算流程

h = W 0 x + Δ W x = W 0 x + B A x h = W_0x + \Delta Wx = W_0x + BAx h=W0x+ΔWx=W0x+BAx

矩阵 A 通过高斯函数初始化,矩阵 B 为零初始化,使得训练开始之前旁路对原模型不造成影响,即参数改变量为 0。

将原权重与训练后权重合并后, 推理时不存在额外的开销。

在这里插入图片描述

低秩矩阵通常有以下特点:

  1. 线性相关性较高:矩阵中的行或列之间存在较强的线性相关性,因此可以用较少的线性独立分量来近似表示。
  2. 信息冗余较多:由于线性相关性,低秩矩阵中包含了一些冗余信息,可以通过较低秩的近似来减少存储和计算成本。
  3. 较小的维度:低秩矩阵通常具有较低的维度,因为它们可以用较少的基向量(或特征向量)来表示。

其它高效微调方式

  • 微调适配器(Adapter

分别对 Transformer 层中的自注意力模块与多层感知(MLP)模块,在其与其之后的残差连接之间添加适配器层(Adapter layer)作为可训练参数。

该方法及其变体会增加网络的深度,从而在模型推理时带来额外的时间开销。

  • 前缀微调( Prefix Tuning

前缀微调是指在输入序列前缀添加连续可微的软提示作为可训练参数。由于模型可接受的最大输入长度有限,随着软提示的参数量增多,实际输入序列的最大长度也会相应减小,影响模型性能。

软提示:连续提示的方法。

5.3、模型上下文窗口扩展

上下文窗口:在自然语言处理中,LLM(Large Language Model,大型语言模型)的上下文窗口指的是模型在处理文本时所考虑的文本片段或单词的范围。

  • 具有外推能力的位置编码

ALiBi

相对位置编码

注意力加上线性偏置

S o f t m a x ( q i K T + m ⋅ [ − ( i − 1 ) , . . . , − 2 , − 1 , 0 ] ) Softmax(q_iK^T+m·[-(i-1),...,-2,-1,0]) Softmax(qiKT+m[(i1),...,2,1,0])

  • m为坡度,取值为: { 1 a , 1 a 2 , . . . , 1 256 } , 其中 a n u m _ h e a d s = 256 \{\frac{1}{a} , \frac{1}{a^2},...,\frac{1}{256} \} ,其中 a^{num\_heads} =256 {a1,a21,...,2561},其中anum_heads=256
  • [ − ( i − 1 ) , . . . , − 2 , − 1 , 0 ] [-(i-1),...,-2,-1,0] [(i1),...,2,1,0]表示相对位置,取值:-(k索引[1,i] - q索引[i])
  • 插值法

RoPE位置插值:

f ’ ( x , m ) = f ( x , m L ′ ) L f’(x,m) = f(x,\frac{m}{L'})L f(x,m)=f(x,Lm)L

将更大的位置索引范围 [0,L′) 缩减至原始的索引范围 [0,L)

在这里插入图片描述

5.4、指令数据构建

指令数据的质量多样性是衡量指令数据的重要维度,影响有监督微调过程的关键因素。

指令数据由指令、输入、输出组成。

指令数据示例:

在这里插入图片描述

  1. 手动构建

手动编写提示与相应的回答;
大量人力投入。

  1. 自动生成指令

Self-instruct

Self-instruct
其数据生成过程是一个迭代引导算法。

在这里插入图片描述

  1. 生成任务指令

手动构建175 seed tasks;

每次采样8个task 指令(人工6 + 迭代生成2);

直到停止生成 || 达到模型长度限制。

  1. 确定指令是否代表分类任务

处理不同。

不同原因:避免分类任务时,生成过多某些特定任务Input,而忽视其他类别。

  1. 生成任务输入和输出

输出:完整指令数据

No:Input-first, Input i n s t r u c t i o n > \frac{instruction}{}> instruction>Output

在这里插入图片描述
Yes:Output-first, Output i n s t r u c t i o n > \frac{instruction}{}> instruction>Input

在这里插入图片描述

  1. 过滤低质量数据

多样性:ROUGE-L相似度<0.7;

质量:启发式规则:除掉含某些关键字(如“图片”)、重复、过长或过短数据。

LLaMA 模型上进行有监督微调得到 Alpaca 模型, 所使用的指令数据集的示例

在这里插入图片描述

5.5、开源指令数据集

开源数据指令集

在这里插入图片描述

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

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

相关文章

动态内存操作(2)

接上一篇文章http://t.csdn.cn/1ONDq&#xff0c;这次我们继续讲解关于动态内存的相关知识。 一、常见的动态内存错误 1.对NULL指针进行解引用操作 #include<stdio.h> #include<stdlib.h> #include<limits.h> int main() {int* p (int*)malloc(INT_MAX/4);…

Leetcode198. 打家劫舍

https://leetcode.cn/problems/house-robber/description/ 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&…

ubuntu18.04 OpenGL开发(显示YUV)

源码参考&#xff1a;https://download.csdn.net/download/weixin_55163060/88382816 安装opengl库 sudo apt install libglu1-mesa-dev freeglut3-dev mesa-common-dev 安装opengl工具包 sudo apt install mesa-utils 检查opengl版本信息&#xff08;桌面终端执行&#xff09…

CEC2013:CEC2013测试函数及多种智能优化算法求解CEC2013对比

一、CEC2013测试函数 CEC2013&#xff0c;该测试集合也是目前高质量论文应用较广泛的测试集&#xff0c;CEC2013测试集函数复杂&#xff0c;非常具有挑战力。 二、多种智能优化算法求解CEC2013 2.1 本文参与求解CEC2013的智能优化算法 本文选取一些经典的智能优化算法参与测…

喜讯 | 怿星科技获评SAE“优秀核心零部件企业”,测试软件平台工具广受赞誉

2023年9月22日-23日&#xff0c;SAE 2023汽车智能与网联技术国际学术会议成功举行。此次学术会议由SAE International与南昌智能新能源汽车研究院联合主办&#xff0c;大会汇聚了来自国内外智能网联领域的顶尖专家和学者。大会同期颁布的奖项旨在向行业推选出更多新时代涌现的杰…

领取我的国庆头像

一年一度的国庆节来了,祝大家节日快乐,本文教大家用Python绘制国庆专属头像。 文章目录 一、效果图二、实现代码一、效果图 这是把微信头像和红旗相结合制作出来的效果图:       如需图片和代码进行练习,可到公众号中发送“国庆头像”即可免费获取 二、实现代码 具体实…

深入理解JavaScript中的事件冒泡与事件捕获

在JavaScript中&#xff0c;事件是交互式网页开发中的关键概念之一。了解事件冒泡和事件捕获是成为一名优秀的前端开发者所必需的技能之一。本文将深入探讨这两个概念&#xff0c;解释它们是如何工作的&#xff0c;以及如何在实际应用中使用它们来处理事件。 一.什么是事件冒泡…

当两界交汇:前端开发、后端开发与全栈开发的对比与选择

编程世界就像一座大城市&#xff0c;前端开发和后端开发就像城市的两个不同街区。在这两个街区&#xff0c;前端和后端开发都有自己的价值和机会。 一、引言 有些人更喜欢在前端创造令人印象深刻的用户界面&#xff0c;而有些人更喜欢处理数据和系统逻辑。在选择时&#xff…

【VUE复习·4】计算属性computed:原理、完整写法(不常用)、与 methods 的区别、简写(最常用)、应用案例!

总览 1.简介计算属性 2.computed 与 methods 的区别 3.computed 的简写&#xff08;不修改计算属性&#xff0c;只显示&#xff09; 4.经典应用场景 一、计算属性 1.为什么需要计算属性&#xff1f; 首先&#xff0c;如果我们要写一个插值语法&#xff0c;而 {{ }} 内的内容…

idea 如何在命令行快速打开项目

背景 在命令行中从git仓库检出项目&#xff0c;如何在该命令行下快速用idea 打开当前项目&#xff0c;类似vscode 可以通过在项目根目录下执行 code . 快速打开当前项目。 步骤 以macos 为例 vim /usr/local/bin/idea 输入如下内容 #!/bin/sh open -na "IntelliJ IDE…

华为OD机试 - 判断字符串子序列(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述1、输入2、输出3、说明 四、Java算法源码五、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&am…

使用ElementUI结合Vue完善主页的导航菜单和书籍管理的后台数据分页查询

目录 一、动态树 ( 1 ) 数据表 ( 2 ) 后端 ( 2 ) 前端 二、书籍管理 数据表 后端 前端 ElementUI的背景 是一套基于Vue.js的桌面端组件库&#xff0c;由饿了么前端团队开发维护。它提供了丰富的UI组件和交互效果&#xff0c;可以帮助开发者快速构建出美观、易用的We…

(三)Python变量类型和运算符

所有的编程语言都支持变量&#xff0c;Python 也不例外。变量是编程的起点&#xff0c;程序需要将数据存储到变量中。 变量在 Python 内部是有类型的&#xff0c;比如 int、float 等&#xff0c;但是我们在编程时无需关注变量类型&#xff0c;所有的变量都无需提前声明&#x…

Activiz 9.2 for Linux Crack

Activiz 9.2 在 C#、.Net 和 Unity 软件中为您的 3D 内容释放可视化工具包的强大功能。 ActiViz 允许您轻松地将 3D 可视化集成到您的应用程序中。 ActiViz 功能 用 C# 封装的 3D 可视化软件系统 允许在 .NET 环境中快速开发可投入生产的交互式3D 应用程序 支持窗口演示基础 (…

Kafka:介绍和内部工作原理

展示Kafka工作方式的简单架构。 什么是Kafka&#xff1f;为什么我们要使用它&#xff1f;它是消息队列吗&#xff1f; •它是一个 分布式流处理平台或分布式 提交日志*。*•Kafka通常用于实时流数据管道&#xff0c;即在系统之间传输数据&#xff0c;构建不断流动的数据转换系统…

【GDB】 command 命令

GDB command 命令 语法 command 命令是一个很好用的调试命令&#xff0c;它配合断点使用&#xff0c;可以在指定的断点执行预先设置的命令 其语法为&#xff1a;command bread_id&#xff0c;这样会提示你输入你要执行的命令&#xff0c;以 end 结束。这个 bread_id 就是用 …

ElementUI之首页导航及左侧菜单(模拟实现)

目录 ​编辑 前言 一、mockjs简介 1. 什么是mockjs 2. mockjs的用途 3. 运用mockjs的优势 二、安装与配置mockjs 1. 安装mockjs 2. 引入mockjs 2.1 dev.env.js 2.2 prod.env.js 2.3 main.js 三、mockjs的使用 1. 将资源中的mock文件夹复制到src目录下 2. 点击登…

web前端tips:js继承——寄生式继承

上篇文章给大家分享了 js继承中的 原型式继承 web前端tips&#xff1a;js继承——原型式继承 今天给大家分享一下 js 继承中的 寄生式继承 寄生式继承 寄生式继承&#xff08;Parasitic Inheritance&#xff09;是一种基于原型式的继承方式&#xff0c;它通过创建一个仅用于…

聊聊wireshark的进阶使用功能 | 京东云技术团队

1. 前言 emmm&#xff0c;说起网络知识学习肯定离不来wireshark工具&#xff0c;这个工具能够帮助我们快速地定位网络问题以及帮助正在学习网络协议这块的知识的同学验证理论与实际的一大利器&#xff0c;平时更多的只是停留在初步的使用阶段。也是利用部门内部的网络兴趣小组…

使用YOLOv5的backbone网络识别图像天气 - P9

目录 环境步骤环境设置包引用声明一个全局的设备 数据准备收集数据集信息构建数据集在数据集中读取分类名称划分训练、测试数据集数据集划分批次 模型设计编写维持卷积前后图像大小不变的padding计算函数编写YOLOv5中使用的卷积模块编写YOLOv5中使用的Bottleneck模块编写YOLOv5…