FineTune+LLaMA-Factory+DeepSeek+LoRA企业数据训练,全流程详细教程,构建AI电商客服等应用(AI实战系列,附实战经验)

【背景概述】

现在流行的、开源的大模型,是通用型大模型,但每一个企业都有垂直的领域,或是电商,或是医疗,或是金融等等,若企业想在各自垂直领域训练自有大模型,那就需要对通用模型进行微调了。(当然也可以从头训练模型,但对于中小企业成本太高了。)

在学习运用RAG技术搭建企业知识库,了解了LangChain、Embedding、向量库以及调用本地DeepSeek等内容后,本文将继续从企业AI落地的角度,介绍如何使用LLaMA-Factory对通用模型进行微调,通俗的说,微调就是在已有的通用模型基础上,进行再次数据训练,训练的方式有很多,比如指令监督微调、偏好微调等,与RAG的区别,简单说微调是要模型通过数据训练进行自我学习提升,考试时完全靠自己掌握的知识,而RAG则是“开卷考试”了。(RAG、微调的区别可以看上一篇。)

AI实战系列前三篇:

DeepSeek本地运行全流程解析,企业私有化,数据安全、降本增效双搞定!含ollama命令聊天、chatbox界面聊天效果(AI实战系列,保姆级教程)

教你打造企业自有大模型(基于ollama、deepseek),走出定制化第一步,沉淀AI技术能力,让AI变成生产力!【AI实战系列】

企业知识管理混乱?RAG+LangChain+DeepSeek构建会思考的企业知识库!(AI实战系列,附有详细代码)

一、哪些场景适合微调?LLaMA-Factory是什么?

上一篇我们已经使用RAG技术,对大模型进行了知识库的扩展,那为何还要进行微调呢?所以首先我们要识别一下哪些场景需要进行微调。

1、哪些场景适合微调?(个人观点)

(1)具有特定领域的精确需求。比如是在医疗、法律、金融或建筑等领域,因为其需要有高度的准确性,还有很多专业术语,因为行业的知识壁垒,就算开卷考试,恐怕也很难考过了。‌‌‌

(2)具有拟人化的风格、语气以及行为需求。通用模型通常是助手的角色,相对语言比较生硬,若想让模型更加拟人化,一般需要使用LCCC这类真人对话数据进行训练,才能有特定的风格、语调或行为特征,可能是需要微调的,当然若模型已经具备较强能力,也可以通过提示词工程来达到效果。

(3)降低模型服务使用成本。微调可以将大型模型提炼到更小的模型中,在不牺牲质量的情况下降低成本和延迟。而且,微调后的模型,使用时减少了提示词中上下文的长度,可以节省token,进一步降低成本。

当然,肯定还有很多其他场景,有技术要求,也有非技术要求,比如企业品牌的塑造,就是需要一个自研的企业大模型,微调自然是必须要的。

2、LLaMA-Factory是什么?

图片

LLaMA-Factory是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过LLaMA-Factory,在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调。

(1)支持的模型:LLaMA、DeepSeek、Qwen、ChatGLM等,基本上市面上开源大模型都支持。

(2)支持的训练算法:(增量)预训练、(多模态)指令监督微调、奖励模型训练、PPO训练、DPO训练、KTO训练、ORPO训练等。

(3)支持的运算精度:16比特全参数微调、冻结微调、LoRA微调和QLoRA微调。

3、LLaMA -Factory以外,还有哪些工具可以微调?

主要有ms-swift、unsloth、FastChat以及Firefly等,这里列一下,大家了解下,有个印象即可。

二、LLaMA-Factory的安装、微调

1、安装

运行以下指令以安装LLaMA-Factory及其依赖:

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git# 也可以点击左下角关注,回复“AI实战系列资料”获取# 切换到目录下cd LLaMA-Factory# pip3版本pip3 install -e ".[torch,metrics]"# 或者pip,看自己电脑环境pip install -e ".[torch,metrics]"

如果出现环境冲突,请尝试使用如下命令解决。

pip3 install --no-deps -e .

如果以上还不能解决,可以独立创建一个环境。可以使用Anaconda进行环境管理,进行环境切换。

conda activate llamafactory

图片

若看到上图内容安装完成,其中最前面的(llamafactory)即为当前环境。

如果想启用量化LoRA(QLoRA),可以安装bitsandbytes。

pip3 install bitsandbytes

2、安装校验

完成安装后,可以通过以下命令快速校验安装是否成功。

llamafactory-cli version

如果能看到下面界面,说明安装成功了。

图片

3、启动UI界面

通过以下命令启动。

llamafactory-cli webui

界面内容还是比较多的(一屏截不下),如下。

图片

默认是英文的,已经切换为中文了。

此时,微调的工具环境准备好了,按照上图的内容,还需要准备两个内容:

  • “第一行”,需要填入“模型路径”,需要我们下载模型文件。

  • “Train”这一行,需要填入数据集,需要我们准备自有数据。

4、下载模型

本次依旧选用DeepSeek模型,由于网络原因,我们在魔搭社区下载对应模型。

访问魔搭社区:https://modelscope.cn/

选择“模型库”,搜索“DeepSeek”,选择一款适合自己的模型即可。

进入详情页,点击“下载模型”按钮,会出现相应的提示,如下。

图片

按照右侧的提示下载,即使用如下命令。

pip3 install modelscopemodelscope download --model deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B

此时模型就下载好了。

5、数据集准备

LLaMA-Factory支持Alpaca格式和ShareGPT格式的数据集,这是两种格式的数据集,可以自行搜索下。

(1)数据格式

本次主要进行Alpaca格式数据的指令监督微调(Instruct Tuning),其他的训练方式,后面根据具体场景介绍。

数据格式如下:

# 在下载的LLaMA-Factory项目的data目录中,可以找到该文件alpaca_zh_demo.json{  "instruction": "",  "input": "",  "output": ""}

其中instruction列对应的内容为人类指令,input列对应的内容为人类输入,output列对应的内容为模型回答。

(2)电商客服场景数据准备

本文准备的数据集是电商客服场景的,文件为mall_kf_demo_data.json。

数据集有如下特征:

  • 场景全覆盖:包含价格咨询、物流查询、售后处理、产品咨询等典型客服场景。

  • 真实业务逻辑:体现优惠叠加规则、价保政策、跨境税费等专业知识点。

  • 情感处理:包含投诉安抚场景,示范如何化解客户不满。

  • 结构化回复:所有回答均遵循"致歉/感谢+解决方案+补偿选项"的专业话术结构。

  • 数据多样性:涵盖家电、服饰、数码、美妆、家居等常见品类。

从中也可以看出,在实际业务场景的数据训练过程中,数据集的特征是要着重考虑的!部分内容如下:

图片

注:内容仅供参考,不能直接投产使用,需要根据实际业务调整具体内容,特别是价格、时效等敏感信息。

以上只截取了部分数据。若想要全部数据,点击左下角关注,回复“AI实战系列资料”,即可获取AI实战系列资料哦。

然后,千万记得,要将文件复制到LLaMA-Factory项目的data目录下哦,后续才能进行数据预览!

(3)添加至dataset_info.json

dataset_info.json同样位于下载的LLaMA-Factory项目的data目录中,其中已包含了所有经过预处理的本地数据集以及在线数据集。

因为我们使用的是自己准备的数据集,所以需要在dataset_info.json文件中添加该数据集相关的定义。

打开文件,在最后添加如下内容。

# 注意上面还有个逗号哦  "mall_kf_demo_data": {    "file_name": "mall_kf_demo_data.json",    "columns": {      "prompt": "instruction",      "query": "input",      "response": "output"    }  } # 本案例中columns字段可以省略 # 但如果是特殊数据结构,比如多轮对话结构,是需要声明的

那肯定有人不明白为什么要加呢?

添加的目的是,在“Train”这一行能够选到我们的自定义数据集。效果如下:

图片

可以点击预览数据。

图片

至此,数据集已经添加完成了。

6、数据训练

在开始训练模型之前,我们需要指定如下参数:

  • 模型名称及路径:

    本次选择DeepSeek-R1-1.5B-Distill。

    路径要特别注意!需要填写modelscope下载的位置,默认是在“/用户/.cache/modelscope/hub/models/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B”,若不填写本地路径,训练时会到“huggingface”上下载。

  • 训练阶段:默认,选择Supervised Fine-Tuning

  • 微调方法:默认,选择lora

  • 训练数据集:选择mall_kf_demo_data

  • 学习率、训练轮数等训练参数:默认

  • 微调参数等其他参数:默认

  • 输出目录及配置路径:默认生成

点击预览命令,可以看到生成的命令以及相关参数,如下。

图片

可以看出,使用UI界面训练之外,我们也可以直接使用命令进行训练。

在点击“开始”训练之前,最后先验证一下模型是否可用。点击“chat”->“加载模型”,若如下图,显示“模型已加载,可以开始聊天了!”,即表示模型可用,也可以进行聊天了。

图片

此时一切准备就绪了,点击“开始”了。

等待一顿输出后,“训练完毕”,如下。

图片

模型生成的目录是:LLaMA-Factory/saves/。

此时大功告成了!

三、验证:电商客服提问

1、加载训练好的LoRA文件

模型信息不动,在微调方法那一行,点击“检查点路径”,选择我们上一次训练的检查点,后续若再训练或者执行chat的时候,会将此LoRA一起加载。

图片

点击加载模型,若之前加载过模型,需先卸载模型。

为增加回复速度可以在提问前关闭“思考模式”,即取消勾选“启用思考模式”。

2、加载好之后,可以提问看看效果了

(1)首先要看下我们如何提问呢?

根据上述的数据结构,instruction列对应的内容会与input列对应的内容拼接后作为提问的输入,即输入instruction\ninput。\n代表要换行。

拿下面的数据举例理解一下:​​​​​​​

{"instruction":"处理商品质量问题","input":"刚买的耳机有杂音,怎么办?","output":"非常抱歉遇到这种情况。请您尝试重置设备后测试,如果仍有问题,我们提供15天质量问题免费退换服务。您可以选择:1.技术人员远程指导排查 2.直接申请售后换新。"}

提问时应该是这样,中间要换行!​​​​​​​

处理商品质量问题刚买的耳机有杂音,怎么办?

那就用这个提问。

图片

回答效果与原数据相似了。

3、训练优化

也许可能你跑完发现好像模型没有变化?

是的,首先本次使用的模型是1.5B,本身能力比较弱,前几次训练好,提问后都是回复“联网查找之类的”,很傻的。

能达到上述的效果,我是经过连续训练,训练轮数300次以上,一直训练到下图的曲线趋于平衡,才达到这个效果的。

图片

这也正说明了,中小企业可以通过小模型打造自己的领域模型!

所以,在实际业务中可以通过以下方式优化,一是选用更好用的模型,二是提供更多高质量的数据,三是通过大量的训练及标注。

当然,模型训练完成后,可以导出,这个比较简单,就不详细说明了。后续单独写一篇从LLaMA-Factory把模型导出来,再将模型导入Ollama,这样可以对外提供服务了。

至此,本次大模型微调完成了,大模型微调相对之前难度要高一些,大家要静下心来,好好消化下。

因为篇幅有限,涉及内容较多,难免有些笔误,敬请谅解!遇到问题可以关注私信交流。有企业模型定制需求的,也欢迎私信。

若有需要源码,可以私信,也可以看下图的方式获取

​​​​​​​

欢迎点赞、收藏、评论、关注,后续持续分享,如何基于DeepSeek等大模型,实现企业AI集成、企业知识库、电商场景应用、模型微调、智能问答、多模态、RPA等项目实战。致力为中小企业提供实用的企业级AI解决方案!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

StarkLi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值