
大模型私人定制:5分钟教你不写一行代码微调构建属于你的大模型(使用llama-factory微调Qwen大模型)
训练时为保证大模型的通用能力会使用多类别数据,例如:数学类别,代码类别数据等等来训练。训练后的大模型是一个“博学家”,具备回答所有类别基础问题的能力,但是在面对更深度的专业领域问题时,大模型的表现往往一般。为了让大模型在某个专业领域具备突出能力,需要使用专业领域的数据集,对大模型进行进一步的参数微调(继续训练),提升它在专业领域方面的表现。大模型微调分为全参微调和高效微调,全参微调就是将大模型所有
前言
DeepSeek, QWQ一系列实力强劲大模型的发布标志着我国在人工智能大模型领域进入世界领导者行列。越来越多领域开始关注并使用大模型。各行各业都积极赋能并开发相关专业领域大模型,比如东南大学推出的“法衡-R1”法律大模型,哈工大推出的“华佗”医疗诊断模型都取得了优异表现。那么它们是如何将大模型这个“博学家”变成领域的“专家”呢?这就需要使用我们今天分享的大模型微调技术。这篇文章带你5分钟学会使用llama-factory微调大模型,不写一行代码,一起来看看吧~
一、什么是大模型微调?
1.1 为什么进行大模型微调
训练时为保证大模型的通用能力会使用多类别数据,例如:数学类别,代码类别数据等等来训练。训练后的大模型是一个“博学家”,具备回答所有类别基础问题的能力,但是在面对更深度的专业领域问题时,大模型的表现往往一般。为了让大模型在某个专业领域具备突出能力,需要使用专业领域的数据集,对大模型进行进一步的参数微调(继续训练),提升它在专业领域方面的表现。
1.2 大模型微调原理简介
大模型微调分为全参微调和高效微调,全参微调就是将大模型所有层的参数进行微调,优点是可以充分利用已有大模型的特征,缺点是调整全部参数需要消耗大量的计算资源。高效微调旨在最小化微调参数量和计算复杂度提升训练模型在新任务上的表现。即使在计算时间和资源受限的情况下,高效微调技术也能够利用模型的知识快速适应新任务。
高效微调常用的方法是LORA,示意图如下,左边是模型的原始权重,在训练阶段原始模型参数是不变的。右边是被训练的升维和降维矩阵,这两个矩阵的参数量要比原始模型参数小很多。LORA的思想很简单,词向量同时输入原始模型权重和升降维权重,得到的两个结果相加得到最终结果(相当于在原有知识上附加了一层知识表示,可以看成专业领域的知识增量),我们本次微调也使用LORA方法。
二、使用llama-factory进行微调
2.1 llama-factory简介
llama-factory 是一个国内北航开源的低代码大模型训练框架,专为大语言模型的微调而设计。其主要功能特点包括:
- 支持种类丰富的大模型,支持高效且低成本地对100多个模型进行微调
- 提供了用户友好的Web界面,用户无需代码就可轻松上手
- 丰富的数据集选项,支持多种格式数据集选项并提供范例,用户可以选择自带的数据集或自己生成数据集修改成相应格式进行微调。
- 多样算法支持,支持包括LORA,DPO强化方法在内的多种微调方法和优化技术。
llama-factory如此丰富的功能自然而然成为大模型微调的不二选择(还有一种unsloth微调的方法也被大家广泛使用,我之后也会分享Unsloth使用,感兴趣大家关注一下点个赞吧~),下面就让我们使用llama-factory实践微调我们的大模型。
2.2 llama-factory环境搭建
llama-factory使用前需要安装cuda驱动,pytorch, metrics, transformers等众多配置,为避免环境冲突最好安装anaconda工具管理python环境。大家不想挨个下载的话可以关注微信公众号:大模型真好玩, 私信:llamafactory微调,免费下载cuda安装包、anaconda安装包,llama-factory的虚拟环境zip包,只需要将两个安装包安装完毕,并将llama_factory虚拟环境解压在anaconda安装目录中的envs文件夹中即可跳过下面的环境配置步骤:
2.2.1 检查gpu和相关驱动
llama-factory 支持使用pytroch gpu版本和cpu版本对大模型进行微调,但cpu版本在大模型微调任务中性能低下,我们不作考虑。
首先检查我们gpu和cuda情况,输入nvidia-smi
命令和nvcc -v
命令, 出现下图结果表示你的cuda已经配置完成不需要继续安装, 我这里使用的是windows 11系统,cuda是12.2版本,显卡是一张2G显存的NVIDIA MX450(别骂了别骂了,没在实验室,只能用手头电脑给大家分享了)。
如果你的显示和上面不一样,可以在英伟达官网 developer.nvidia.com/cuda-12-2-0… 中下载cuda的exe安装包,下载之后双击运行一路安装即可(建议安装到C盘)
2.2.2 安装anaconda管理虚拟环境
anaconda是一个管理多版本python的工具,它允许你在PC上安装多个python版本,避免不同环境间的污染。在Anaconda官网www.anaconda.com/download/su… 下载anaconda安装包,选择安装路径(要记住安装路径),一路点击next, 注意在出现环境变量选项时按下图勾选:
安装好之后我们打开cmd命令行窗口, 执行如下命令指定python版本为3.11,命名为llama_factory的虚拟环境:
conda create -n llama_factory python=3.11
创建完成后使用如下命令激活llama_factory环境,出现如下界面,命令行前由base改为llama_factory说明我们环境切换成功,以后所有的命令都要在llama_factory环境下操作。
conda activate llama_factory
2.2.3 安装llama-factory
执行如下命令安装llama_factory
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"
等待llama-factory和torch, metrics等包完成安装后,执行llamafactory-cli version
命令,出现下图内容表示你已经安装成功
特别注意: 为保证微调顺利执行,除了检查llama-factory安装成功外,还需要保证成功安装了gpu版本的pytorch, 在llama_factory虚拟环境中执行如下命令:
import torch
print(torch.__version__) # 输出Pytorh版本
print(torch.version.cuda) # 输出pytorch cuda版本,
print(torch.cuda.is_available()) # 输出为True,则安装无误
有用户反馈直接通过llama_factory安装的pytorch版本是cpu版本的,也就是torch.cuda.is_available()
输出为False
。这种情况还需要执行如下命令:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
windows下还需要安装bitsandbytes库,采用如下命令
pip install bitsandbytes==0.43.1 --extra-index-url https://download.pytorch.org/whl/cu124
以上包全部安装完成后,我们的微调环境就搭建好啦!
2.3 模型微调实战
2.3.1 模型下载
微调模型的第一步当然是要下载模型,受限于显卡资源我这里使用 Qwen2.5 0.5B 模型进行训练(原理一样,训练别的大模型只需要下载别的模型即可)。
我们在modalscope网站上下载模型,首先执行命令pip install modelscope
下载modelscope工具,然后执行modelscope download --model Qwen/Qwen2.5-0.5B-Instruct
命令,模型就会被下载到当前目录下,我这边的执行结果如下:
2.3.2 数据集构建
我们如何构造模型微调的数据集呢?llama-factory给我们展示了很多微调数据集的格式,在llama-factory目录下的data文件夹中
我们这里以alpca_zh_demo.json
文件为例讲解,数据必须保存为json列表格式,列表中每个json对象都应该包含instruction: 指示也就是用户问题
, input:用户输入数据
, output:大模型输出
三部分,如下图,在构造自己数据集的时候,也应该把自己的数据构造为json问答对的格式,同时把构造的数据集放在llama-factory文件夹下的data文件夹中。
注意: 构造数据集后还要完成数据集注册,具体做法是在llama-factory目录下的data文件夹下,打开dataset_info.json文件,在其中按照下图标注的格式填入你的数据集名称,这样在llama-factory界面选择时才能识别到你的数据集。
2.3.3 模型参数设置
在命令行中执行llamafactory-cli webui
, 稍等片刻默认浏览器会自动进入llama-factory界面,没自动进入的小伙伴按照命令行中的地址进入,我这里是http://0.0.0.0:7860
。
接下来我们就详细解读llama-factory的每个参数设置:
语言: 微调中文模型,我们选择zh
模型名称: llama-factory支持很多模型,我们选择 Qwen2.5-0.5B-Instruct
模型路径: 从modelscope下载模型的绝对路径,我这里是 E:\LLamaFactory\Qwen2.5-0.5B-Instruct
微调方法: 选择lora
检查点路径: 你如果以前使用过llama-factory训练模型,训练得到的结果会默认保存下来,我们把这个中间结果叫检查点,检查点路径就是你要不要接着你以前的检查点接着训练,这里我们首次使用llama-factory,空白即可。
量化等级: 我们这里不需要量化,选择none, 量化表示将模型精度降低从而缩减模型大小
量化方法: 我们不需要量化,这里随便选一个即可
提示模板: 千问模型选择qwen
RopE插值方法: 这个是用来扩展模型上下文长度的,rope会使模型理解输出更长的上下文,我们这次不需要扩展模型上下文长度,选择none
加速方式: 不需要特别加速,我们这里选择auto
选择Train窗口,设置我们的训练方法:
训练方式: Supervised Fine-Tuning有监督微调
数据文件夹: data,也就是存放我们数据集文件的地方
数据集: 构造并注册的数据集,我们这里选择alpaca_zh_demo, 还有预览数据集功能。
学习率: 可以理解为模型学习的快慢,学习率越大模型收敛越快,但学的比较粗糙,学习率越小模型收敛越慢但学的精细。这里取经验值5e-5
训练轮数: 同样的数据要重复训练几次,我们这里取2
最大梯度范数: 用于梯度裁剪的范数,经验值1.0
最大样本数: 比你的数据集中数据个数大即可,我这里随意填了10000
计算类型: 没有量化,还是选择原始bf16
截断长度: 大模型最多能处理的文本长度,这里是2048
批处理大小: 大模型每次处理的数目,和损失函数有关,这里选2
梯度累积: 大模型依据多少步才调整参数,这里选择8,大模型相当于在8*2=16个例子后才调整参数
验证集比例: 我们人工验证取0
学习率调节器: 这里默认取cosine即可
还需要设置lora参数
LORA秩: 默认为8即可,表示Lora参数量
LORA缩放系数: 写为16,经验值
其余设置均可保持默认
2.3.4 模型微调
以上参数设置好之后,我们填入输出模型的目录和配置路径(保存我们上面设置的配置参数),同时llama-factory会自动检测我们gpu的数量并填入:
点击开始后,llama-factory自动开始训练,训练过程中的日志也会在网站下方打印,右侧的图片也会对损失函数进行展示,方便用户观察训练中损失, 命令行中也会打印当前进度:
2.3.5 模型评测
模型训练好之后需要评估我们的模型是否正确,首先需要把我们的模型导出,新建本地目录,我这里是E:\LLamaFactory\Qwen2.5-0.5B-SFT
, 选择导出模式,并填入我们训练完成的检查点路径,点击开始导出:
刷新浏览器网站,我们切换llama-factory到chat模式,保持检查点路径为空,同时修改模型目录为我们新导出的模型文件目录,我这里是E:\LLamaFactory\Qwen2.5-0.5B-SFT
, 点击加载模型:
加载我们训练好的模型,拖到页面底部,从数据集中挑一个问题进行提问:【识别并解释给定列表中的两个科学理论:细胞理论和日心说。】
以下是微调后模型回答:
将模型路径改为原始模型路径E:\LLamaFactory\Qwen2.5-0.5B-Instruct
,测试:
可以看到该问题微调模型回答与原始模型回答已经有了很大不同,显然微调模型更依照我们的数据集进行回答。以上只是针对这个案例的简单评测,真实评测中需要使用测试集大规模评测,或通过语义相似度检测和专业人员评测多种手段进行精细评测。
三、总结展望
通过以上分享我们成功使用llama-factory在不写一行代码情况下微调了大模型。然而限于篇幅原因,还有很多需要提升的地方:
- 数据集构建: 如何从大量文本中构建适合模型训练的数据集
- 模型微调参数: 模型微调参数为什么要这么设置?还涉及很多深度学习的专业知识
- 模型部署: 目前我们只是微调成功大模型,距离真正使用还需要将其部署在Ollama等大模型 服务中
- 微调方法: 除了llama-factory, unsloth也是目前最广泛的微调工具,甚至超越了llama-factory,我们之后也会出unsloth微调qwq和deepseek-r1的分享。
零基础如何学习AI大模型
领取方式在文末
为什么要学习大模型?
学习大模型课程的重要性在于它能够极大地促进个人在人工智能领域的专业发展。大模型技术,如自然语言处理和图像识别,正在推动着人工智能的新发展阶段。通过学习大模型课程,可以掌握设计和实现基于大模型的应用系统所需的基本原理和技术,从而提升自己在数据处理、分析和决策制定方面的能力。此外,大模型技术在多个行业中的应用日益增加,掌握这一技术将有助于提高就业竞争力,并为未来的创新创业提供坚实的基础。
大模型典型应用场景
①AI+教育:智能教学助手和自动评分系统使个性化教育成为可能。通过AI分析学生的学习数据,提供量身定制的学习方案,提高学习效果。
②AI+医疗:智能诊断系统和个性化医疗方案让医疗服务更加精准高效。AI可以分析医学影像,辅助医生进行早期诊断,同时根据患者数据制定个性化治疗方案。
③AI+金融:智能投顾和风险管理系统帮助投资者做出更明智的决策,并实时监控金融市场,识别潜在风险。
…
这些案例表明,学习大模型课程不仅能够提升个人技能,还能为企业带来实际效益,推动行业创新发展。
大模型就业发展前景
根据脉脉发布的《2024年度人才迁徙报告》显示,AI相关岗位的需求在2024年就已经十分强劲,TOP20热招岗位中,有5个与AI相关。字节、阿里等多个头部公司AI人才紧缺,包括算法工程师、人工智能工程师、推荐算法、大模型算法以及自然语言处理等。
除了上述技术岗外,AI也催生除了一系列高薪非技术类岗位,如AI产品经理、产品主管等,平均月薪也达到了5-6万左右。
AI正在改变各行各业,行动力强的人,早已吃到了第一波红利。
最后
大模型很多技术干货,都可以共享给你们,如果你肯花时间沉下心去学习,它们一定能帮到你!
大模型全套学习资料领取
如果你对大模型感兴趣,可以看看我整合并且整理成了一份AI大模型资料包,需要的小伙伴文末免费领取哦,无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发
部分资料展示
一、 AI大模型学习路线图
整个学习分为7个阶段
二、AI大模型实战案例
涵盖AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,皆可用。
三、视频和书籍PDF合集
从入门到进阶这里都有,跟着老师学习事半功倍。
四、LLM面试题
五、AI产品经理面试题
六、deepseek部署包+技巧大全
😝朋友们如果有需要的话,可以V扫描下方二维码联系领取~
更多推荐
所有评论(0)