十分钟学会微调大语言模型

有同学给我留言说想知道怎么训练自己的大语言模型,让它更贴合自己的业务场景。完整的大语言模型训练成本比较高昂,不是我们业余玩家能搞的,如果我们只是想在某个业务场景或者垂直的方面加强大模型的能力,可以进行微调训练。

本文就来介绍一种大语言模型微调的方法,使用的工具是我最近在用的 Text Generation WebUI,它提供了一个训练LoRA的功能。

LoRA是什么

LoRA之于大语言模型,就像设计模式中的装饰器模式:装饰器模式允许向一个对象添加新的功能,而不改变其结构。具体来说,装饰器模式会创建一个装饰类,用来包装原有的类,并在保持原有类方法签名完整性的前提下,提供额外的功能。

LoRA,全称为Low-Rank Adaptation,是一种微调大型语言模型的技术。LoRA通过向大型语言模型添加一层额外的、低秩的可训练权重,来增强或调整模型的功能,而不需要改变原有模型的结构或重新训练整个模型。这就像是用装饰器包装了一个对象,增强了其功能,但没有改变原有对象的本质。

LoRA的关键思想是在模型的某些部分(通常是Transfomer注意力机制的权重矩阵)中引入低秩矩阵(低秩就是矩阵的行和列相对大模型的矩阵比较少)。在前向传播和反向传播过程中,这些低秩矩阵与大模型的权重矩阵相结合,从而实现对模型的微调。

相比完整的训练,LoRA训练具备两个明显的优势:

  • 高效:微调过程中需要的计算资源和存储空间相对很少,如果训练数据只是几千条对话数据,我们可以在分钟级的时间内完成微调。
  • 灵活:因为引入的参数数量相对较少,可以在一定程度上避免过拟合问题,使得模型更容易适应新任务。

因此,研究人员和开发者使用LoRA,可以在不牺牲模型性能的前提下,以较低的成本对模型进行有效的定制和优化。

工具安装

Text Generation WebUI 是一个开源项目,提供了一个Web界面方便大家做模型的推理和训练

安装比较简单,如果遇到问题,欢迎留言讨论。


为了方便测试,我在云环境也创建了一个镜像,相关的环境都配置好了,大家都可以用,内置了几个国内开源的大语言模型,比如清华智谱的ChatGLM3-6B、零一万物的Yi-34B,还有最近阿里云开源的Qwen1.5-32B。

镜像使用方法:

1、访问AutoDL([www.autodl.com]),注册个账号,充上几个米,金额要大于所租用服务器的小时单价。

2、GPU型号:最好选择 3090 或者 4090。因为大模型需要的显存一般都不低,6B、7B的模型做推理都需要15G左右的显存。GPU数量选择1个就够了。

3、镜像:选择“社区镜像”,输入 yinghuoai-text-generation-webui ,即可选择到我分享的镜像。

4、服务器开机后,点击“JupyterLab”进入一个可编程的Web交互环境。

5、镜像内置了一个“启动器”,点击其中的启动按钮可以直接启动WebUI。

程序默认加载的是阿里开源的 Qwen1.5-7B-Chat 模型,你也可以更换别的模型,只需要去掉命令前边的“#”,注意同时只能加载一个模型,其它模型不使用时,请使用“#”注释掉。

6、在下方的日志中看到类似输出的时候,就代表启动成功了。其中的 [xxx.gradio.live]就是WebUI的链接,点击就可以在浏览器打开它的使用界面。

Lora训练方法

终于来到重点环节了。

训练

训练需要一个基础模型,镜像默认加载的是 Qwen1.5-7B-Chat。你也可以在WebUI中更换别的模型(前提是已经下载到模型目录),在 Model 页签这里选择别的模型,然后点击 Load 加载它。

我们先来快速的过一遍训练过程,请按照下边的步骤开启LoRA训练:

1、切换到 Training 页签。

2、点击 Train LoRA,进入LoRA训练设置页面。

3、填写Lora模型的名字,注意名字中不能包含英文的点(.)。

4、点击 Formatted DataSet,代表训练将使用格式化的数据集。

5、Data Format 数据格式,这里选择 alpaca-format,这是一种Json数据格式,每条数据声明了指令、输入和输出(其中input是可选的,我们可以把input的内容填写到instructions中,从而去掉input节点),如下所示:

{"instruction": "下面是一个对话:","input":"只剩一个心脏了还能活吗?","output": "能,人本来就只有一个心脏。"
}

6、Dataset 选择数据集,我这里从 huggingface 上下载了一份[弱智吧的问答数据集],镜像中已经内置。你如果使用自己的训练数据集,请上传到 text-generation-webui/training/datasets 中,然后在这里刷新后就可以选择到。

7、点击 Start LoRA Training 开始训练。

8、这里会展示训练的进度,还剩多长时间。

训练完成后,这里会显示“Done”。注意这里有个问题:如果WebUI和服务器断开了网络连接,这里就不更新进度了,此时可以去 AutoDL的 jupyterlab 或者你的命令界面中查看训练进度。

验证

训练完成后,我们需要测试下效果,参考如下步骤:

1、切换到 Model 页面。

2、点击 Reload 重新加载模型,因为此时模型已经被训练污染了。

3、刷新LoRA列表。

4、选择我们训练出来的模型。

5、Apply LoRAs 应用LoRA模型。

然后在 Parameters 中选择内置的聊天对话角色。

最后切换到 Chat 页面,开始对话测试。下面是我分别使用基础模型和添加LoRA模型后的对话截图,测试不是很严谨,但也能看到比较明显的差别。

两个 Qwen1.5-7B-Chat 很难回答正确的问题:

  • 生鱼片是死鱼片吗?
  • 小明的爸爸妈妈为什么不邀请小明参加他们的婚礼?

训练参数

在上边的步骤中我们使用的都是默认的训练参数,一般也就够了。但有时候对训练出的生成效果不太满意,就可以手动调整下训练参数,重新训练。

我这里把主要的几个参数介绍下:

1、目标模块

这个参数仅针对 llama 类型的模型结构,默认勾选的是 q_proj 和 v_proj,具体的名词不容易理解,我就不多说了,可以简单的认为是对模型的理解能力进行优化,一般这两个就够了。当然我们可以勾选更多的项目,优化模型的生成效果。但是可能会导致两个问题,一是训练要使用更多的资源,更慢;二是可能导致过拟合问题,也就是只在训练的数据上表现的好,面对新问题就不灵了。Qwen1.5-7B的模型结构也是llama类型的。

2、Epochs

这个参数代表我们要训练多少轮。训练的轮次越多,模型从训练数据中学到的越多,生成就越精确,不过也可能会导致过拟合的问题,所以需要根据实际测试的结果进行调整。

3、LoRA Rank

维度计数,模型权重的更新量。值越大越文件越大,内容控制力更强;较低的值则表示文件更小,控制程度较低。

对于较为简单的任务或者数据量较小的应用场景,可以选择较低的值,比如4或8。这样可以保持模型的简洁性,减少所需的存储空间和计算资源,同时避免过拟合。

对于复杂的自然语言处理任务,特别是需要捕捉精细语义关系、句法结构或领域专业知识的任务,或者大规模训练数据时,可能需要选择较高的值,如128、256甚至1024以上,这样才有足够的容量来学习到复杂的模式。更高的LoRA Rank需要更多的显存支持。

LoRA Rank还应该与LLM的基础模型规模相匹配,百亿权重的模型可以设置更大值,因为它可以承受更多的权重调整而不会过拟合。

4、LoRA Alpha

数值越高代表LoRA的影响力越大,默认是LoRA Rank值的两倍。当这个值较高时,适应新任务的能力会增强,但是对基础模型的影响会比较大,有过拟合的风险,尤其是在数据量有限的情况下。当这个值比较低时,对基础模型参数的改变较为温和,这可以保持预训练模型的泛化能力,但也会降低对新任务的适应性,特别是LoRA任务与预训练任务差异比较大时。

5、Learning Rate

学习率。机器学习在训练过程中会不断检查自己与训练数据的偏离程度,它有个名词叫损失(loss),一个合适的学习率会让损失逐渐收敛在一个最小值。如果学习率太大,步子就会迈的太大,不能获取较好的效果;但是如果学习率太小,又会训练的很慢,成本太高。如下图所示:

默认值 3e-4 表示 3 乘以 10 的负 4 次方,也就是 0.0003。最大1e-2表示0.01,最小1e-6表示0.000001。

另外需要平衡学习率和轮次:

高学习率 + 低轮次 = 非常快但质量较低的训练。

低学习率 + 高轮次 = 较慢但质量较高的训练。

6、LR Scheduler

学习率调度算法,默认的是线性衰减,也就是随着学习轮次的增加学习率逐渐降低。

还有使用常量、余弦退火、逆平方根、多项式时间等算法,线性衰减和余弦退火比较简单有效,平常使用的比较多,逆平方根衰减和多项式时间衰减在处理大规模数据或需要长时间训练时能提供更为稳定的收敛表现。


一个好的模型与训练数据和训练参数都有很大的关系,很难一蹴而就。

如果你对训练的结果不满意,可以调整这几个参数试试。注意重新训练前,先把基础模型重新加载。

那么,我们该如何学习大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

一、大模型全套的学习路线

学习大型人工智能模型,如GPT-3、BERT或任何其他先进的神经网络模型,需要系统的方法和持续的努力。既然要系统的学习大模型,那么学习路线是必不可少的,下面的这份路线能帮助你快速梳理知识,形成自己的体系。

L1级别:AI大模型时代的华丽登场

L2级别:AI大模型API应用开发工程

L3级别:大模型应用架构进阶实践

L4级别:大模型微调与私有化部署

一般掌握到第四个级别,市场上大多数岗位都是可以胜任,但要还不是天花板,天花板级别要求更加严格,对于算法和实战是非常苛刻的。建议普通人掌握到L4级别即可。

以上的AI大模型学习路线,不知道为什么发出来就有点糊,高清版可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

51交通灯

一、基本原理 利用51单片机控制各个路口红绿灯及时间显示。 设计的重点: 1、各个路口红绿灯亮灭的规则,暂不考虑左转方向; 2、倒计时的实现,利用单片机的定时器进行计数得到秒信号; 3、时间显示:东西南…

【LLM之RAG】Adaptive-RAG论文阅读笔记

研究背景 文章介绍了大型语言模型(LLMs)在处理各种复杂查询时的挑战,特别是在不同复杂性的查询处理上可能导致不必要的计算开销或处理不足的问题。为了解决这一问题,文章提出了一种自适应的查询处理框架,动态选择最合…

LeetCode | 434.字符串中的单词数

这道题直接使用语言内置的 split 函数可直接分离出字符串中的每个单词,但是要注意区分两种情况:1、空串;2、多个空格连续,分割后会出现空字符的情况,应该舍弃 class Solution(object):def countSegments(self, s):&qu…

通过MATLAB实现PID控制器,积分分离控制器以及滑模控制器

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 通过MATLAB实现PID控制器,积分分离控制器以及滑模控制器。通过对比三个算法可知,采用滑模控制算法,其具有最快的收敛性能,较强的鲁棒性&…

机器学习:人工智能的子领域之一

引言 人工智能(AI)已经成为现代科技的重要组成部分,推动了许多领域的创新与进步。在人工智能的诸多子领域中,机器学习(ML)无疑是最关键和最具影响力的一个。机器学习通过自动分析和学习数据中的模式&#x…

react 0至1 案例

/*** 导航 Tab 的渲染和操作** 1. 渲染导航 Tab 和高亮* 2. 评论列表排序* 最热 > 喜欢数量降序* 最新 > 创建时间降序* 1.点击记录当前type* 2.通过记录type和当前list中的type 匹配*/ import ./App.scss import avatar from ./images/bozai.png import {useState} …

云电脑有多好用?适合哪些人使用?

云电脑作为一种新型的计算模式,其应用场景广泛且多样,适合各类人群使用。云电脑适合什么人群使用?云电脑有哪些应用场景?有什么好的云电脑推荐?以下本文将详细探讨云电脑的主要应用场景及其适用人群的相关内容&#xf…

基于单片机的数控稳压开关电源研究

为了解决多种类供电的电压需求,克服供电电路体积大、性价比低的问题,复杂电路系统以单片机控制为核心,尝试构建单片机数控开关稳压电源的硬件平台,并开发软件程序,实现系统多种类供电电压输出的控制。实验证明&#xf…

ARM单片机使用CAN总线部署BootLoader

1.引言 1.1.单片机开发BootLoader意义 单片机开发BootLoader的原因主要与其在嵌入式系统中的关键作用有关。BootLoader是硬件启动的引导程序,它在操作系统内核或用户应用程序运行之前执行。以下是单片机开发BootLoader的主要原因: 初始化硬件设备&…

本地运行大语言模型(LLMs)

用例 像PrivateGPT、llama.cpp、Ollama、GPT4All、llamafile 等项目的流行度凸显了本地(在您自己的设备上)运行大型语言模型(LLMs)的需求。 这至少有两个重要的好处: 1.隐私:您的数据不会发送给第三方&a…

【odoo | XML-RPC】odoo外部API解读,实现跨系统间的通讯!

概要 文章注意对官方的XML-RPC进行解读实操,以python为例,给大家介绍其使用方式和调用方法。 内容 什么是odoo的外部API? Odoo 的外部 API 是一种允许外部应用程序与 Odoo 实例进行交互的接口。通过 API,可以执行各种操作,例如…

Determinant 一个翻译很不友好的名字 行列式 det(A)

Determinant 一个翻译很不友好的名字 行列式 det(A) flyfish determinant 美[dɪtɜːrmɪnənt] 英[dɪtɜːmɪnənt] adj. 决定性的n. 决定性因素 / <数>行列式 / 决定因素 / 方阵举一个最简单的例子说明行列式 假设有一个 2x2 矩阵 A&#xff1a; A ( 2 1 1 2…

React+TS前台项目实战(九)-- 全局常用组件弹窗Dialog封装

文章目录 前言Dialog公共弹窗组件1. 功能分析2. 代码详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局公共弹窗Dialog组件封装&#xff0c;将用到上篇封装的模态框Modal组件。有时在前台项目中&#xff0c;偶尔要用到一两个常用的组件&#xff0c;如 弹窗&#x…

问题(05)elementui 输入框里面禁止浏览器自动填充用户名密码、弹出浏览器历史密码提示框

问题描述 el-input&#xff0c;非密码框&#xff0c;在输入时&#xff0c; 问题1&#xff1a; 浏览器自动填充用户名密码。问题2&#xff1a;右边显示浏览器历史密码提示框。 问题解决 问题1&#xff1a;使用auto-complete"new-password" <input type"te…

11.3 Go 标准库的使用技巧

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

大数据数据挖掘系统可视化设计艺术

1.系统背景 在我们实际进行数据挖掘研发过程中&#xff0c;为了验证某些算法在业务中的性能每次都需要去从头写代码&#xff0c;如果我们将我们研发的算法以模块化的思想封装起来&#xff0c;下次再使用的时候直接在系统中进行拖拉一下生成一个工作流&#xff0c;就能完成数据挖…

Advanced XUV Spectroscopy 成像采集设备的比较分析

设备简介 CCD-Andor&#xff1a; 类型&#xff1a;CCD相机 特点&#xff1a;高灵敏度、低噪声 应用&#xff1a;适用于弱光成像、高动态范围成像 sCMOS-PI&#xff1a; 类型&#xff1a;sCMOS相机&#xff08;Princeton Instruments&#xff09; 特点&#xff1a;高分辨率、…

cs与msf权限传递,以及mimikatz抓取win2012明文

cs传递shell给msf cs有一台上线主机&#xff1a; 1.msf开启监听&#xff1a; use exploit/multi/handler set payload windows/meterpreter/reverse_http&#xff08;注&#xff1a;这里是http,与cs上线的监听器一致&#xff09; set lhost 本机ip set lport 自己的端口号…

算法金 | 再见!!!K-means

大侠幸会&#xff0c;在下全网同名「算法金」 0 基础转 AI 上岸&#xff0c;多个算法赛 Top 「日更万日&#xff0c;让更多人享受智能乐趣」 今天我们来聊聊达叔 6 大核心算法之 —— k-means 算法。最早由斯坦福大学的 J. B. MacQueen 于 1967 年提出&#xff0c;后来经过许多…

GPT办公与科研应用、论文撰写、数据分析、机器学习、深度学习及AI绘图高级应用

原文链接&#xff1a;GPT办公与科研应用、论文撰写、数据分析、机器学习、深度学习及AI绘图高级应用https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247606667&idx3&sn2c5be84dfcd62d748f77b10a731d809d&chksmfa82606ccdf5e97ad1a2a86662c75794033d8e2e…