组会 | 大语言模型 + LoRA

目录

    • 1 大语言模型概述
      • 1.1 模型的架构
      • 1.2 模型的细节:标记化和嵌入化
      • 1.3 模型的核心
    • 2 多头注意力机制
    • 3 LoRA 概述
      • 3.1 冻结部分模型参数
      • 3.2 低秩适配(LoRA)
        • 3.2.1 核心工作原理:冻结模型参数
        • 3.2.2 核心工作原理:添加低秩权重矩阵
      • 3.3 QLoRA


⚠️ 本博客仅记录了组会里提及的内容



1 大语言模型概述

1.1 模型的架构

在这里插入图片描述

模型的训练过程包含以下步骤:

  1. 标记化:将文本划分为更小的片段,即标记,便于模型处理;
  2. 嵌入化:将标记转换为向量,以捕捉语义信息;
  3. 前向传播:向量在模型中逐层传递并计算输出,直到生成最终的预测值;
  4. 计算损失:使用损失函数计算预测值与真实值之间的差距;
  5. 反向传播:根据链式法则,计算损失函数相对于模型中每个参数的梯度;
  6. 优化器:根据计算出的梯度以及所采用的策略来更新模型的参数;
  7. 训练迭代:模型多次遍历数据,每次遍历称为一个 epoch,如此循环直至训练收敛。


1.2 模型的细节:标记化和嵌入化

在这里插入图片描述

标记化的步骤包括:

  1. 将输入文本分解为单个句子;
  2. 将句子进一步分解为标记,即一个小而有意义的单位。

说明:可以根据实际任务需求设置 “标记” 的大小,即它不仅可以是单词,还可以细分到标点,甚至是字母。

嵌入化的步骤包括:

  1. 将标记映射到词汇字典中的唯一 ID;
  2. 将 ID 转换为模型可以理解的向量。

注意:正如上周组会所提到的,Embedding 的过程中需要考虑上下文语境。比如,我们希望使用不同的向量来表示 “an apple and an orange” 和 “an apple phone” 中的 “apple” 一词,这是因为 “apple” 在两个句子中的语义不同。



1.3 模型的核心

语言模型的核心由编码器、解码器和注意力机制组成:

  • 编码器:处理输入文本并生成丰富的语义表示;
  • 解码器:利用编码器的表示生成输出文本,通常以自回归方式逐步预测;
  • 注意力机制:帮助模型在生成输出文本时,关注于输入文本中最相关的部分。

我的理解:编码器负责转换为模型理解的形式,解码器负责转换为人类理解的形式。



2 多头注意力机制

这里回顾多头注意力机制,貌似是因为 LoRA 从中汲取了灵感 😇

在这里插入图片描述

先计算每个头,公式如下:

h e a d i = A t t e n t i o n ( Q W i Q , K W i K , V W i V ) head_i=\mathrm{Attention}(QW_i^Q, KW_i^K, VW_i^V) headi=Attention(QWiQ,KWiK,VWiV)

再拼接所有头,公式如下:

M u l t i H e a d ( Q , K , V ) = C o n c a t ( h e a d 1 , . . . , h e a d n ) W O \mathrm{MultiHead}(Q,K,V)=\mathrm{Concat}(head_1,...,head_n)W^O MultiHead(Q,K,V)=Concat(head1,...,headn)WO

我们可以通过牺牲模型的表达能力,来换取更快的计算速度。

上图将 Q Q Q K K K 分成四部分,而我们可以只将 Q Q Q K K K 分成两部分。虽然 Q i Q_i Qi K i K_i Ki 的个数减少了,但通过与个数保持不变的 V i V_i Vi 相乘,仍然可以保持 h e a d i head_i headi 的个数保持不变。如下图所示:

在这里插入图片描述

我的理解:本质上是减少了 W i Q W_i^Q WiQ W i K W_i^K WiK 的个数。



3 LoRA 概述

3.1 冻结部分模型参数

之所以介绍本小节内容,是因为 LoRA 有用到

  • 目的:优化内存使用
  • 含义:冻结参数在模型训练过程中不会参与更新
  • 该方式使得我们无需保存冻结参数的梯度,从而减少 GPU 内存的使用

例如,我们可以只保留 Transformer 中最后的线性层作为可训练部分,如下图所示:

在这里插入图片描述
虽然该方法减少了内存占用并加快了训练速度,但也限制了模型的表达能力和性能。



3.2 低秩适配(LoRA)

  • 全称:Low-Rank Adaptation
  • 作用:是一种高效的微调方法,旨在减少内存占用和计算资源,同时保持良好的性能表现

3.2.1 核心工作原理:冻结模型参数
  • 在使用 LoRA 时,预训练模型的所有参数将被冻结,即这些参数在微调过程中不会被更新;
  • 其目的是减少内存占用,同时保留预训练模型所具备的知识。

3.2.2 核心工作原理:添加低秩权重矩阵
  • 含义:在模型的某些 “冻结模型参数” 矩阵上,添加一个新的、可训练的低秩矩阵;
  • 其中低秩矩阵是两个较小的矩阵 A A A B B B 的乘积结果,即: Δ W = A × B \Delta W=A\times B ΔW=A×B
  • 由于矩阵 A A A B B B 的维度较小,因此能够显著减小可训练参数的数量。

在这里插入图片描述

上图中超参数 r r r 的取值为 8 8 8

超参数: r r r B e t a = A l p h a / r \mathrm{Beta}=\mathrm{Alpha}/r Beta=Alpha/r

B e t a \mathrm{Beta} Beta 参数的作用:

  • 使得模型能够学习对新领域的适配方法,同时又不会偏离原始模型太远;
  • 防止过拟合,同时避免遗忘预训练模型已经学到的知识。

GPT:Beta 参数用于控制低秩矩阵对原始模型输出的影响程度。如果 Beta 值较大,那么低秩矩阵的影响会更显著;如果 Beta 值较小,那么其影响则会减弱。



3.3 QLoRA

  • QLoRA 在 LoRA 的基础上,进一步对模型参数进行了量化;
  • 即在微调前,将模型参数从高精度(如 float32 或 float16)量化到低精度(如 float8 或更低);
  • 该方法大幅减少了模型的内存占用,同时保持了较高的计算效率。


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

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

相关文章

Qt——天气预报项目

一.ui界面的设计流程 1.窗口1:使用水平布局,内包含俩个QLabel类和一个QLineEdit类 这里可以设置LineEdit中的提示文字 2.窗口2:使用栅格布局,这个天气图标组件的大小需限制一下 3.窗口3:里面包含一个子窗口&#xff…

【高阶数据结构】LRU Cache

> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解什么是LRU Cache,并能简单的模拟实现。 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安! &…

jupyter notebook的 markdown相关技巧

目录 1 先选择为markdown类型 2 开关技巧 2.1 运行markdown 2.2 退出markdown显示效果 2.3 注意点:一定要 先选择为markdown类型 3 一些设置技巧 3.1 数学公式 3.2 制表 3.3 目录和列表 3.4 设置各种字体效果:加粗,斜体&#x…

stm32 指定变量存储地址

uint8_t array[10] attribute((at(0x20000000))) 当你使用 attribute((at(地址))) 强制将变量放置在特定地址时,编译器和链接器通常不会自动调整其他变量的地址以避免冲突。这意味着,如果指定的地址已经被其他变量占用,就会发生冲突。 如果…

安宝特分享 | 如何利用AR技术革新医疗实践:从远程急救到多学科协作

AR技术在国内外医院的应用 在现代医疗环境中,患者面临的挑战依然严峻:看病难、看病远、看病急。这些问题不仅影响了患者的治疗效果,也让医务工作者倍感压力。幸运的是,随着增强现实(AR)技术的发展&#xf…

从零开始:如何使用第三方视频美颜SDK开发实时直播美颜平台

开发一个具有实时美颜功能的直播平台,能够显著提高用户体验和内容质量。而利用第三方视频美颜SDK可以大大简化开发过程,加快产品上市速度。本篇文章,小编将从零开始,详细讲解如何使用第三方视频美颜SDK开发一个实时直播美颜平台。…

记录第一次安装laravel项目

window系统 Laravel中文文档:https://laravel-docs.catchadmin.com/docs/11/getting-started/installation 1.使用composer安装全局laravel composer global require laravel/installer2.安装完成后在命令行输入laravel,如果报错:laravel不是…

《Django 5 By Example》阅读笔记:p651-p678

《Django 5 By Example》学习第9天,p651-p678总结,总计28页。 一、技术总结 1.aggregate() (1)aggregate:ad-(“to”) gregare(“to collection into a flock(群), to gather”) 因为ad 后面跟的是gregate,为了发…

安卓手机5G网络频繁掉4G 问题解决 手机5G网络优化方案

问题环境 在某个长期停留的位置(例如:躺平)使用手机时网络突然从5G跳到4G,偶尔跳来跳去导致网络体验很差,经过调整5G网络情况下网速及其他体验都要更好,基于这样的情况使用一种简单的操作,锁定5…

利用c语言详细介绍下希尔排序

希尔排序是针对插入排序的优化算法。它是缩少增量的算法,一开始增量从元素个数len/2的增量开始,然后缩小增量gapgap/2,直到gap为1,最终完成序列排序。 一、图文介绍 我们还是使用数组【10,5,3,2…

基于MATLAB的超宽带(UWB)信号的仿真和测试系统

基于MATLAB的超宽带(UWB)信号的仿真和测试系统 引言 随着无线通信技术的发展,超宽带(Ultra-Wideband, UWB)技术因其高数据传输速率、低功耗、抗多径衰落等优点而受到广泛关注。UWB技术适用于短距离高速数据传输,如个人区域网络、…

深度学习:GPT-1的MindSpore实践

GPT-1简介 GPT-1(Generative Pre-trained Transformer)是2018年由Open AI提出的一个结合预训练和微调的用于解决文本理解和文本生成任务的模型。它的基础是Transformer架构,具有如下创新点: NLP领域的迁移学习:通过最…

day06(单片机高级)PCB设计

目录 PCB设计 PCB设计流程 元器件符号设计 原理图设计 元器件封装设计 元器件库使用 PCB设计 目的:学习从画原理图到PCB设计的整个流程 PCB设计流程 元器件符号设计 元器件符号:这是电子元器件的图形表示,用于在原理图中表示特定的元器件。例…

人工智能(AI)与机器学习(ML)基础知识

目录 1. 人工智能与机器学习的核心概念 什么是人工智能(AI)? 什么是机器学习(ML)? 什么是深度学习(DL)? 2. 机器学习的三大类型 (1)监督式学…

Java 调用 MULTIPART_FORM_DATA 接口

以 QAnthing 上传文件(POST)接口为例,展示Java如何调用上传文件接口。 接口文档如下: QAnthign接口文档地址 编码 RestTemplate 版 /** * * param url 接口地址 * param filePath 文件本地路径 */ public void uploadFile(S…

Vue3-小兔鲜项目出现问题及其解决方法(未写完)

基础操作 (1)使用create-vue搭建Vue3项目 要保证node -v 版本在16以上 (2)添加pinia到vue项目 npm init vuelatest npm i pinia //导入creatPiniaimport {createPinia} from pinia//执行方法得到实例const pinia createPinia()…

【Vue】 npm install amap-js-api-loader指南

前言 项目中的地图模块突然打不开了 正文 版本太低了,而且Vue项目就应该正经走项目流程啊喂! npm i amap/amap-jsapi-loader --save 官方说这样执行完,就这结束啦!它结束了,我还没有,不然不可能记录这篇文…

C#桌面应用制作计算器进阶版01

基于C#桌面应用制作计算器做出了少量改动,其主要改动为新增加了一个label控件,使其每一步运算结果由label2展示出来,而当点击“”时,最终运算结果将由label1展示出来,此时label清空。 修改后运行效果 修改后全篇代码 …

Linux下Intel编译器oneAPI安装和链接MKL库编译

参考: https://blog.csdn.net/qq_44263574/article/details/123582481 官网下载: https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit-download.html?packagesoneapi-toolkit&oneapi-toolkit-oslinux&oneapi-linoffline 填写邮件和国家,…

文件管理 IV(文件系统)

一、文件系统结构 文件系统(File system)提供高效和便捷的磁盘访问,以便允许存储、定位、提取数据。文件系统有两个不同的设计问题:第一个问题是,定义文件系统的用户接口,它涉及定义文件及其属性、所允许的…