首页 > 其他分享 >QLoRA原理分析

QLoRA原理分析

时间:2024-10-31 18:32:58浏览次数:3  
标签:分析 QLoRA max FP16 NF4 64 量化 原理

  QLoRA是LoRA的量化版本,在LoRA的基础上,对权重W进行量化,如图2所示,以进一步减少对GPU显存的需求。

1、算法论文及代码

  • 论文

  《QLORA: Efficient Finetuning of Quantized LLMs》

    https://arxiv.org/pdf/2305.14314

  • 代码

    https://github.com/artidoro/qlora

2、QLoRA原理

  图1将QLoRA与其他微调方式进行了对比,从中可发现QLoRA相较LoRA,多了一个与CPU内存进行页交换的功能,从而能支持更大参数量的模型微调。QLoRA的核心实现,是在peft库里,qlora官方源码里只是去调用peft库实现的NF4类型,以及双重量化和训练模型时的页交换功能。

图1 QLoRA与其他微调方式对比

       图2从公式角度,对比了LoRA与QLoRA原理差异:

  1)W权重矩阵类型由FP16,转换为NF4(Normal Float 4bit),空间大约降为原来的1/4;

  2)A、B矩阵的类型,由FP16转换为BF16(Brain Float 16 bit),空间和原来一样,但浮点的表示范围比原来大了,但表示精度较原来有所下降。

 

图2 LoRA与QLoRA原理对比

       从图2中可看出,QLoRA的主要意图是进一步降低微调大模型所需的GPU显存,同时保证精度与原来差不多,实现这种效果的关键,在于NF4类型的引入。

3、NF4(Normal Float) 

  NF4是一种统计数据类型,只取固定的几个数值,这几个数值是某种分布的分位数,其数值大小在[-1.0, 1.0],如图13所示,NF4有16个分位数,权重W中的元素,经过归一化等处理后,只能取这16个数值中的某一个数值的索引

图3 NF4的取值范围

       图4以8位量化为例,描述了权重W中的元素,是如何转换为NF4数据类型。图14中的权重矩阵W形状为[1, 4],QLoRA首先对W进行分块处理,块(Block)大小为2,然后以块为单位,对每个块内的元素选取最大值,并用该最大值除以该块内所有元素,达到归一化的效果,最后查表,将W中所有元素,使用一个与元素值最相近的值的索引,来替换W中原有元素的值,由于表索引只有8位,相较原来的FP16或FP32,减少的存储空间相当可观。

 

图4 NF4的取值计算流程

4、双重量化(Double Quantization)

  第3小节描述的是W权重元素如何从FP16转换为4Bit的NF4,这只是第一次量化,随后还需进行引二次量化,因为第一次量化,需保存各分块内部元素的最大值c_max,以便于后续将NF4还原为FP16或BF16,这就导致会产生数量比较大的c_max集合,占用的存储空间也比较可观,比如一个模型参数有6B,假设每个参数的权重形状一样,均为[4096, 4096],以块大小64进行NF4转换,则可以得到64 * 64 * 109 个块最大值,如果块最大值的数据类型为FP16,则需占用2 * 64 * 64 * 109,约8192GB的存储空间,所以需要对c_max集合做量化,量化的方式参见图16,量化过程也是先分块,再在块内寻找最大值,然后归一化。

图5 双重量化之第二次量化过程

图6 c_max集合量化过程

       对c_max集合进行量化后,c_max集合占用的空间,从2*64*64*109=8,192GB,降到64*64*109 +4*109=4096+4 GB = 4,100GB,所需存储空间降幅(8192-4100)/8192≈50%。

       图7描述了QLoRA双重量化的较完整流程。

 

图7 QLoRA双重量化原理

 

 

关注更多安卓开发、AI技术、股票分析技术及个股诊断等理财、生活分享等资讯信息,请关注本人公众号(木圭龙的知识小屋)

标签:分析,QLoRA,max,FP16,NF4,64,量化,原理
From: https://www.cnblogs.com/tgltt/p/18518597

相关文章

  • 极验4 文字点选 拉勾网 分析
    声明:本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!有相关问题请第一时间头像私信联系我删除博客!前言简单分析一下极验4文字点选。逆向过程训练和孪生......
  • LoRA原理
    图1描述了LoRA微调的原理,即在原模型的基础上,建立一个旁支模型,旁支模型由A和B两个小矩阵构成,且A@B的维度等于原模型的维度。图1LoRA原理图1的LoRA原理,也可写成式2的等式,权重W的新状态W’,为图10左路WFP16与右路AFP16@BFP16乘积之和,其中W、A、B的上标FP16,意指其矩阵元......
  • C语言和Julia在数据分析和科学计算上的区别
    ###开头段落在比较C语言和Julia在数据分析和科学计算上的差异时,主要区别体现在执行效率、易用性、生态系统、以及并行计算能力。C语言以其高度的执行效率和广泛的应用背景著称,被广泛用于系统编程和性能敏感的应用。相对而言,Julia设计之初就致力于科学计算和数据分析,提供了易用......
  • ChatGLM3-6B模型分析
    ChatGLM3是清华、智谱2023年开源的一款大模型。ChatGLM3-6B模型代码,目前还在研读中,尚未全部读完。图1为ChatGLM3-6B模型简图,其结构基于TransformerEncoder架构的Encoder,大体上与BERT架构类似。ChatGLM3实现模型架构时,已预置支持P-tuningv2微调结构,图7中的PrefixEncoder......
  • 【算法笔记】位运算算法原理深度剖析
    【算法笔记】位运算算法原理深度剖析......
  • ChatGPT、Python和OpenCV支持下的空天地遥感数据识别与计算(地质监测、城市规划、农业
    在科技飞速发展的时代,遥感数据的精准分析已经成为推动各行业智能决策的关键工具。从无人机监测农田到卫星数据支持气候研究,空天地遥感数据正以前所未有的方式为科研和商业带来深刻变革。原文链接:ChatGPT、Python和OpenCV支持下的空天地遥感数据识别与计算(地质监测、城市规划、......
  • BERT模型分析
       在2018年Google提出Transformer框架后,2019年,BERT作为最早期的大模型,便应运而生,因为BERT有强大的自然语言理解能力,因此在其被提出后便风靡NLP领域。研读BERT代码,是因为BERT作为大模型起源鼻祖,比GPT起源还早,弄明白其算法思想和其主体代码具体实现逻辑,有利于理解现行流......
  • bellman_ford算法原理
    是什么松弛在《算法四》中,对松弛的解释是:relaxtheedge,看起来比较抽象,不过如果我们从生活中的实例去理解,就简单多了:试想一根绳索,当你握着绳索的两头使劲用力拉伸时,绳子紧绷,长度会变长;而当你减小用力时,绳子松弛,长度会变短。当你没有用任何力时,此时绳子的长度最短。这里当用力减......
  • AI智能分析视频分析网关区域人数不足检测算法:智能监控的新篇章
    在当今社会快速发展的背景下,公共场所如购物中心、交通枢纽、教育机构等地的人群聚集现象越来越普遍。如何高效地管理和控制这些区域的人流,保障安全的同时提升服务水平,成为一个迫切需要解决的挑战。传统的人流统计方法,例如人工计数或基础的传感器技术,常常因效率低和准确度不足而受......
  • 系统分析师:知识整理(一)
    1、系统规划步骤:(1)对现有系统进行初步调查(2)分析和确定系统目标(3)分析子系统的组成和基本功能(4)拟定系统的实施方案(5)进行系统的可行性研究(6)制定系统建设方案2、需求分析的任务(1)绘制系统上下文范围关系图(2)创建用户界面原型(3)分析需求的可行性(4)确定需求的优先级(5)为需求创建模型(6)创建数据......