大模型私人定制:5分钟教你不写一行代码微调构建属于你的大模型(使用llama-factory微调Qwen大模型)

前言

DeepSeek, QWQ一系列实力强劲大模型的发布标志着我国在人工智能大模型领域进入世界领导者行列。越来越多领域开始关注并使用大模型。各行各业都积极赋能并开发相关专业领域大模型,比如东南大学推出的“法衡-R1”法律大模型,哈工大推出的“华佗”医疗诊断模型都取得了优异表现。那么它们是如何将大模型这个“博学家”变成领域的“专家”呢?这就需要使用我们今天分享的大模型微调技术。这篇文章带你5分钟学会使用llama-factory微调大模型,不写一行代码,一起来看看吧~

一、什么是大模型微调?

1.1 为什么进行大模型微调

训练时为保证大模型的通用能力会使用多类别数据,例如:数学类别,代码类别数据等等来训练。训练后的大模型是一个“博学家”,具备回答所有类别基础问题的能力,但是在面对更深度的专业领域问题时,大模型的表现往往一般。为了让大模型在某个专业领域具备突出能力,需要使用专业领域的数据集,对大模型进行进一步的参数微调(继续训练),提升它在专业领域方面的表现。

1.2 大模型微调原理简介

关于微调的概念大家可参考我的博文不懂这些概念,你敢说你了解大模型嘛?(一)—大模型“瘦身”指南。大模型微调分为全参微调和高效微调,全参微调就是将大模型所有层的参数进行微调,优点是可以充分利用已有大模型的特征,缺点是调整全部参数需要消耗大量的计算资源。高效微调旨在最小化微调参数量和计算复杂度提升训练模型在新任务上的表现。即使在计算时间和资源受限的情况下,高效微调技术也能够利用模型的知识快速适应新任务。

高效微调常用的方法是LORA,示意图如下,左边是模型的原始权重,在训练阶段原始模型参数是不变的。右边是被训练的升维和降维矩阵,这两个矩阵的参数量要比原始模型参数小很多。LORA的思想很简单,词向量同时输入原始模型权重和升降维权重,得到的两个结果相加得到最终结果(相当于在原有知识上附加了一层知识表示,可以看成专业领域的知识增量),我们本次微调也使用LORA方法。

img

二、使用llama-factory进行微调

2.1 llama-factory简介

llama-factory ( https://github.com/hiyouga/LLaMA-Factory )是一个国内北航开源的低代码大模型训练框架,专为大语言模型的微调而设计。其主要功能特点包括:

  1. 支持种类丰富的大模型,支持高效且低成本地对100多个模型进行微调
  2. 提供了用户友好的Web界面,用户无需代码就可轻松上手
  3. 丰富的数据集选项,支持多种格式数据集选项并提供范例,用户可以选择自带的数据集或自己生成数据集修改成相应格式进行微调。
  4. 多样算法支持,支持包括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文件夹中即可跳过下面的环境配置步骤:

img

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(别骂了别骂了,没在实验室,只能用手头电脑给大家分享了)。

img

img

如果你的显示和上面不一样,可以在英伟达官网 https://developer.nvidia.com/cuda-12-2-0-download-archive/?target_os=Windows&target_arch=x86_64&target_version=11&target_type=exe_local 中下载cuda的exe安装包,下载之后双击运行一路安装即可(建议安装到C盘)

img

2.2.2 安装anaconda管理虚拟环境

anaconda是一个管理多版本python的工具,它允许你在PC上安装多个python版本,避免不同环境间的污染。在Anaconda官网https://www.anaconda.com/download/success

下载anaconda安装包,选择安装路径(要记住安装路径),一路点击next, 注意在出现环境变量选项时按下图勾选:

img

安装好之后我们打开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

img

2.2.3 安装llama-factory

执行如下命令安装llama_factory

1. git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
2. cd LLaMA-Factory
3. pip install -e ".[torch,metrics]"

等待llama-factory和torch, metrics等包完成安装后,执行llamafactory-cli version命令,出现下图内容表示你已经安装成功

img

特别注意: 为保证微调顺利执行,除了检查llama-factory安装成功外,还需要保证成功安装了gpu版本的pytorch, 在llama_factory虚拟环境中执行如下命令:

import torch
print(torch.__version__) # 输出Pytorh版本
print(torch.version.cuda) # 输出pytorch cuda版本,
print(torch.cuda.is_available())  # 输出为True,则安装无误

img

有用户反馈直接通过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命令,模型就会被下载到当前目录下,我这边的执行结果如下:

img

2.3.2 数据集构建

我们如何构造模型微调的数据集呢?llama-factory给我们展示了很多微调数据集的格式,在llama-factory目录下的data文件夹中

img

我们这里以alpca_zh_demo.json文件为例讲解,数据必须保存为json列表格式,列表中每个json对象都应该包含instruction: 指示也就是用户问题, input:用户输入数据, output:大模型输出三部分,如下图,在构造自己数据集的时候,也应该把自己的数据构造为json问答对的格式,同时把构造的数据集放在llama-factory文件夹下的data文件夹中。

img

注意: 构造数据集后还要完成数据集注册,具体做法是在llama-factory目录下的data文件夹下,打开dataset_info.json文件,在其中按照下图标注的格式填入你的数据集名称,这样在llama-factory界面选择时才能识别到你的数据集。

img

img

2.3.3 模型参数设置

在命令行中执行llamafactory-cli webui, 稍等片刻默认浏览器会自动进入llama-factory界面,没自动进入的小伙伴按照命令行中的地址进入,我这里是http://0.0.0.0:7860

img

img

**
**

接下来我们就详细解读llama-factory的每个参数设置:

**
**

语言: 微调中文模型,我们选择zh
模型名称: llama-factory支持很多模型,我们选择 Qwen2.5-0.5B-Instruct
模型路径: 从modelscope下载模型的绝对路径,我这里是 E:\LLamaFactory\Qwen2.5-0.5B-Instruct

img

微调方法: 选择lora
检查点路径: 你如果以前使用过llama-factory训练模型,训练得到的结果会默认保存下来,我们把这个中间结果叫检查点,检查点路径就是你要不要接着你以前的检查点接着训练,这里我们首次使用llama-factory,空白即可。img量化等级: 我们这里不需要量化,选择none, 量化表示将模型精度降低从而缩减模型大小(具体解释可见我以前的科普文章:大模型瘦身指南:微调,量化,蒸馏)。
量化方法: 我们不需要量化,这里随便选一个即可
提示模板: 千问模型选择qwen
RopE插值方法: 这个是用来扩展模型上下文长度的,rope会使模型理解输出更长的上下文,我们这次不需要扩展模型上下文长度,选择none
加速方式: 不需要特别加速,我们这里选择auto

img

选择Train窗口,设置我们的训练方法

训练方式: Supervised Fine-Tuning有监督微调
数据文件夹: data,也就是存放我们数据集文件的地方
数据集: 构造并注册的数据集,我们这里选择alpaca_zh_demo, 还有预览数据集功能。

img

学习率: 可以理解为模型学习的快慢,学习率越大模型收敛越快,但学的比较粗糙,学习率越小模型收敛越慢但学的精细。这里取经验值5e-5
训练轮数: 同样的数据要重复训练几次,我们这里取2
最大梯度范数: 用于梯度裁剪的范数,经验值1.0
最大样本数: 比你的数据集中数据个数大即可,我这里随意填了10000
计算类型: 没有量化,还是选择原始bf16
截断长度: 大模型最多能处理的文本长度,这里是2048
批处理大小: 大模型每次处理的数目,和损失函数有关,这里选2
梯度累积: 大模型依据多少步才调整参数,这里选择8,大模型相当于在8*2=16个例子后才调整参数
验证集比例: 我们人工验证取0
学习率调节器: 这里默认取cosine即可

img

还需要设置lora参数

LORA秩: 默认为8即可,表示Lora参数量
LORA缩放系数: 写为16,经验值
其余设置均可保持默认

img

2.3.4 模型微调

以上参数设置好之后,我们填入输出模型的目录和配置路径(保存我们上面设置的配置参数),同时llama-factory会自动检测我们gpu的数量并填入:

img

点击开始后,llama-factory自动开始训练,训练过程中的日志也会在网站下方打印,右侧的图片也会对损失函数进行展示,方便用户观察训练中损失, 命令行中也会打印当前进度:

img

img

2.3.5 模型评测

模型训练好之后需要评估我们的模型是否正确,首先需要把我们的模型导出,新建本地目录,我这里是E:\LLamaFactory\Qwen2.5-0.5B-SFT, 选择导出模式,并填入我们训练完成的检查点路径,点击开始导出:

img

img

刷新浏览器网站,我们切换llama-factory到chat模式,保持检查点路径为空,同时修改模型目录为我们新导出的模型文件目录,我这里是E:\LLamaFactory\Qwen2.5-0.5B-SFT, 点击加载模型:

img

加载我们训练好的模型,拖到页面底部,从数据集中挑一个问题进行提问:【识别并解释给定列表中的两个科学理论:细胞理论和日心说。】

img

img

以下是微调后模型回答:

img

将模型路径改为原始模型路径E:\LLamaFactory\Qwen2.5-0.5B-Instruct,测试:

img

可以看到该问题微调模型回答与原始模型回答已经有了很大不同,显然微调模型更依照我们的数据集进行回答。以上只是针对这个案例的简单评测,真实评测中需要使用测试集大规模评测,或通过语义相似度检测和专业人员评测多种手段进行精细评测。

三、总结展望

通过以上分享我们成功使用llama-factory在不写一行代码情况下微调了大模型。然而限于篇幅原因,还有很多需要提升的地方:

  1. 数据集构建:

    如何从大量文本中构建适合模型训练的数据集

  2. 模型微调参数:

    模型微调参数为什么要这么设置?还涉及很多深度学习的专业知识

  3. 模型部署:

    目前我们只是微调成功大模型,距离真正使用还需要将其部署在Ollama等大模型 服务中

  4. 微调方法:

    除了llama-factory, unsloth也是目前最广泛的微调工具,甚至超越了llama-factory,我们之后也会出unsloth微调qwq和deepseek-r1的分享。

零基础入门AI大模型

今天贴心为大家准备好了一系列AI大模型资源,包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

有需要的小伙伴,可以点击下方链接免费领取【保证100%免费

点击领取 《AI大模型&人工智能&入门进阶学习资源包》

1.学习路线图

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

在这里插入图片描述

在这里插入图片描述

(都打包成一块的了,不能一一展开,总共300多集)

3.技术文档和电子书

这里主要整理了大模型相关PDF书籍、行业报告、文档,有几百本,都是目前行业最新的。
在这里插入图片描述

4.LLM面试题和面经合集

这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。
在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

5.免费获取

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码或者点击以下链接都可以免费领取【保证100%免费】

点击领取 《AI大模型&人工智能&入门进阶学习资源包》

在这里插入图片描述

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐