前言
相信最近大家即使没有使用过 ChatGPT ,但是都听过 ChatGPT 这个词。
ChatGPT 是基于GPT(Generative Pre-trained Transformer)技术的大型语言模型。由OpenAI开发的一种自监督学习模型,通过在大规模文本数据上进行预训练,使其能够理解和生成自然语言。
一、LoRA 出现的原因
在了解LoRA之前,我们要先知道什么是大语言模型。
大语言模型是指在大规模文本数据上进行预训练的深度学习模型。当我们个人以及大部分公司想用大语言模型去商用时,就需要去预训练模型,但这里涉及到计算资源、时间、数据集质量和模型复杂性等方面的问题,显然重新训练所有模型参数的完全微调是不可行的。
这时,微软研究人员推出的一种新技术用于处理大语言模型的微调问题,那就是 LoRA。
一、LoRA 的原理
LoRA 全称 Low-Rank Adaptation,中文翻译为“低秩自适应”,是一类旨在通过用低维结构近似大型模型的高维结构来降低其复杂性的技术。
LoRA 通过冻结了预训练的模型权重,并将可训练的秩分解矩阵注入到 Transformer 架构的每一层中,大大减少了下游任务的可训练参数的数量。与使用 Adam 微调的 GPT-3 175B 相比,LoRA 可以将可训练参数数量减少 10,000 倍,GPU 内存需求减少 3 倍。LoRA 在 RoBERTa、DeBERTa、GPT-2 和 GPT-3 上的模型质量表现与微调相当或更好,尽管可训练参数较少、训练吞吐量较高,并且与适配器不同,没有额外的推理延迟。摘自arXiv
个人理解就是:指定一个大语言模型,在上面添加自己的训练数据和训练次数,然后 LoRA 就会基于指定的大语言模型,将训练出的结果(即是秩,相关原理可以看看这篇文章)插入到大语言模型的每层神经网络,形成新的自己训练出来的模型。
二、LoRA 应用
目前国内比较流行的是基于 Stable Diffusion(一个深度学习文本到图像生成模型)上用 LoRA 做图片微调,这是因为一个AUTOMATIC1111的程序员用python将 LoRA 的源码写成一个图形控制调试UI,如下图:
在这之前,需要安装一些必要配置:比如Stable Diffusion的安装,不想自己写描述内容的也可以去civitai网站下载喜欢的 LoRA 脚本下载直接进行微调,如下图:
总结
具体怎么安装和应用可以参考CGMI,有空我也会继续研究并且出一篇文章说明一下怎么用LoRA去对大语言模型做微调。
github地址:github.com/microsoft/L…