本文地址:https://www.cnblogs.com/wanger-sjtu/p/17470327.html

什么是LoRA

LoRA,英文全称Low-Rank Adaptation of Large Language Models,直译为大语言模型的低阶适应,是一种PEFT(参数高效性微调方法),这是微软的研究人员为了解决大语言模型微调而开发的一项技术。当然除了LoRA,参数高效性微调方法中实现最简单的方法还是Prompt tuning,固定模型前馈层参数,仅仅更新部分embedding参数即可实现低成本微调大模型,建议可从Prompt tuning开始学起。

LoRA的基本原理是冻结预训练好的模型权重参数,在冻结原模型参数的情况下,通过往模型中加入额外的网络层,并只训练这些新增的网络层参数。由于这些新增参数数量较少,这样不仅 finetune 的成本显著下降,还能获得和全模型微调类似的效果

why works

问题描述

给定一个预训练模型\(P_{\Phi}(y|x)\) , fine tuning 的过程可以表示为

\[\max_{\Phi}\sum_{x,y\in Z} \sum_{t=1}^{|y|} {log(P_{\Phi}(y_t|x,y<t))}
\]

对于fine tuning前后参数变化,其实就是

\[\Phi = \Phi_0+\Delta \Phi
\]

这种方案有一个缺点,对不同的下游任务,\(\Delta \Phi\) 需要训练,而且\(\Delta \Phi\) 的参数维度跟\(\Phi\)一样大,如果是GPT-3的话参数量要175B了。

如果\(\Delta \Phi\) 够小,只调整\(\Delta \Phi\) 这部分参数是不是就可以减少资源使用了。所以问题可以表示为

\[\max_{\Phi}\sum_{x,y\in Z} \sum_{t=1}^{|y|} {log(P_{\Phi_0+\Delta \Phi(\Theta)}(y_t|x,y<t))}
\]

LoRA

对于NN模型来说,权重都是满秩的。但是对于特定任务来说,

预训练的语言模型具有较低的“固有维度”,尽管随机投影到较小的子空间,但仍然可以有效地学习

the pre-trained language models have a low “instrisic dimension” and can still learn efficiently despite a random projection to a smaller subspace

基于此,假设与训练的LLM也具有这个性质,finetuning 的过程中也有一个低秩的性质。

对于权重 \(W_0 \in \mathbb{R}^{d\times k}\) ,权重更新可以表示为 \(W_0+\Delta W\) ,考虑低秩分解,即为\(W_0+\Delta W = W_0+BA\) , 其中\(B \in \mathbb{R}^{d\times r}\), \(A\in \mathbb{R}^{r\times k}\) , \(r << \min(d,k)\)

则:

\[h=W_0x+\Delta Wx=W_0x+BAx
\]

实现

huggingface

梯度视角下的lora

【了解LLM】——LoRA的更多相关文章

  1. 使用 LoRA 和 Hugging Face 高效训练大语言模型

    在本文中,我们将展示如何使用 大语言模型低秩适配 (Low-Rank Adaptation of Large Language Models,LoRA) 技术在单 GPU 上微调 110 亿参数的 F ...

  2. 解密Prompt系列6. lora指令微调扣细节-请冷静,1个小时真不够~

    上一章介绍了如何基于APE+SELF自动化构建指令微调样本.这一章咱就把微调跑起来,主要介绍以Lora为首的低参数微调原理,环境配置,微调代码,以及大模型训练中显存和耗时优化的相关技术细节 标题这样写 ...

  3. 痞子衡嵌入式:一表全搜罗常见低功耗广域物联网协议(NB-IoT/eMTC/LoRa/SigFox...)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是低功耗广域物联网协议. 上一篇痞子衡给大家搜罗了短距离无线通信协议,它是物联网的基础,但它的应用距离比较短,对于长距离的物联网应用鞭长莫 ...

  4. 有了GPRS为什么还要LoRa和NB-IoT?【转】

    转自:https://blog.csdn.net/i_am_Banmei2/article/details/81869724 与其说是GPRS和NB-IoT的比较,不如说是传统网络与新兴网络的比较,我 ...

  5. LoRa无线技术介绍

    什么是LoRa LoRa是semtech公司创建的低功耗局域网无线标准,低功耗一般很难覆盖远距离,远距离一般功耗高,要想马儿不吃草还要跑得远,好像难以办到.LoRa的名字就是远距离无线电(Long R ...

  6. Lora开发

    NB-IOT和GPRS模块有什么异同 安装STM32CubeMX简介 HAL库与STD库 安装STM32CubeMX软件  MO工程建立 第四步是验证代码: 1.怎么进行IO配置 (1)看懂原理图 建 ...

  7. LoRa与NB-IoT对比(转载)

    物联网的基本架构包括三个层面:感知层.网络层和应用层. 物联网架构图 感知层通过传感器采集某些数据(声.光.电等),基于网络层的终端模组,对接到网络层的基站,实现数据采集后的传输. 网络层负责将感知层 ...

  8. LoRa网关/RAK831

    Semtech SX1301 同时在不同的信道上接收数据 RAK831 能够在不同信道上同时接收多达 8 个同时发送不同扩频因子的 LoRa 数据 包

  9. LoRa基础

    一.LoRa技术 LoRa 是LPWAN通信技术中的一种,是美国Semtech公司采用和推广的一种基于扩频技术的超远距离无线传输方案.这一方案改变了以往关于传输距离与功耗的折衷考虑方式,为用户提供一种 ...

  10. 无线LoRa智能远传水表

    1.1 主流程 无线远传智能预付费水表是基于瑞萨R7F0C002芯片开发的一款水表,该款水表包含了电子计数.远程充值.远程开关阀.费控.欠费提醒等功能. 水表通信采用LoRa无线模式,芯片采用SX12 ...

随机推荐

  1. [ACM]快速排序模板

    思路 快排基本思路应该就是二分+递归,从两侧同时(实则先从右往左)往中间找,同时和参变量对比,发现位置颠倒后交换位置,然后通过二分将其一块一块的分割开,直到分割到一个元素位置,即完成了快排. 代码 # ...

  2. 如何在Solidity中建立DAO(去中心化自治组织)?

    本文将帮助您理解 DAO 的概念,并帮助您构建一个基本的 DAO. 什么是 DAO? 您可以将 DAO 视为基于互联网的实体(比如企业),由其股东(拥有代币和比例投票权的成员)共同拥有和管理.在 DA ...

  3. 一步步制作下棋机器人之 coppeliasim进行Scara机械臂仿真与python控制

    稚晖君又发布了新的机器人,很是强大. 在编写时看到了稚晖君的招聘信息,好想去试试啊! 小时候都有一个科幻梦,如今的职业也算与梦想有些沾边了.但看到稚晖君这种闪着光芒的作品,还是很是羡慕. 以前就想做一 ...

  4. .NET中使用Redis总结——2.项目实战

    接上篇.NET中使用Redis总结 -- 1.Redis搭建 看一些Redis相关资料,.NET 方面ServiceStack.Redis 用的比较多,就直接拿来用了. 在使用过程中经常过出现假死状态 ...

  5. systemctl 命令设置开机自启动失败

    哈喽大家好,我是咸鱼.今天跟大家分享一个关于 Linux 服务(service)相关的案例   案例现象 我在 3 月 31日的时候发表了一篇<shell 脚本之一键部署安装 Nginx> ...

  6. Java设计模式 —— 建造者模式

    8 建造者模式 8.1 建造者模式概述 Builder Pattern:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 建造者模式可以将部件本身和它们的组装过程分开,关注如 ...

  7. 开心档之MySQL 连接

    MySQL 连接 使用mysql二进制方式连接 您可以使用MySQL二进制方式进入到mysql命令提示符下来连接MySQL数据库. 实例 以下是从命令行中连接mysql服务器的简单实例: [root@ ...

  8. jquery 禁用按钮无效 disabled属性设置无效

    禁用按鈕 $(this).prop("disabled", true); 啟用按鈕 $(this).prop("disabled", false); 禁用按鈕 ...

  9. [Tensorflow]模型持久化的原理,将CKPT转为pb文件,使用pb模型预测

    文章目录 [Tensorflow]模型持久化的原理,将CKPT转为pb文件,使用pb模型预测 一.模型持久化 1.持久化代码实现 convert_variables_to_constants固化模型结 ...

  10. [C++核心编程] 3、函数提高

    文章目录 3 函数提高 3.1 函数默认参数 3.2 函数占位参数 3.3 函数重载 3.3.1 函数重载概述 3.3.2 函数重载注意事项 3 函数提高 3.1 函数默认参数 在C++中,函数的形参 ...