返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

微调实战之上手训一个7b小模型

[复制链接]
链载Ai 显示全部楼层 发表于 4 小时前 |阅读模式 打印 上一主题 下一主题

微调目的


模型提示词工程、RAG都已经实践上手了一些项目。真实场景中,希望模型自己能输出企业内部知识,选择了模型微调,目的是让模型学习企业内部数据。

我这次项目主要是针对我负责的ERP销售系统,将专业术语、系统操作、常见问题等喂给它进行微调,希望微调训练后,能够学习到我负责系统的相关知识。



【首次】环境安装(各版本不冲突)


1、基础软件及包安装:


pytorch、cuda、python等基础软件的安装,网上一搜一堆,再次不再赘述。


但是需要注意的是不同软件的版本冲突问题。就比如我微调选择量化时发现,我的pytorch、cuda版本冲突,导致无法量化,只能lora,GPU爆满。大家根据自己GPU配置选择对应版本及后续微调参数。


2、llamafactory安装


(1)我们在此虚拟环境中执行:


pip install -e ".[torch,metrics]"



(2)依赖安装完成后,我们执行 llamafactory-cli version 验证安装情况:



(3)然后我们测试执行 which llamafactory-cli 可以发现,llamafactory 被安装在了 conda 创建的虚拟环境目录下:



3、训练的模型下载


(1)下载地址:


ModelScope - 数据集列表页


(2)下载本地:


我用的是qwen2.5-7b模型;


C:\Users\XXX\.cache\modelscope\hub\models\Qwen\Qwen2___5-7B-Instruct


4、对应LLaMA-Factory-main下载


D:\ai_projects\LLaMA-Factory-main\LLaMA-Factory-main\src



数据集准备


1、数据集要求


(1)指令性json格式要求:


踩坑经验:(让模型生成时候就把该格式生成好,不要后续浪费时间人工补充,我少了逗号,395条数据好一顿补)


●最开始和结束必有大括号;


●并且每条数据前后需要有逗号隔开。


[



{
"instruction":"根据下表,将每个句子分类为定义、事实或观点。",
"input":"|句子|\n|--------|\n|水果是一种通常甜味且含有种子的食物类别。|\n|苹果是一种水果。|\n|苹果是口感最好的水果。|",
"output":"|句子|分类|\n|--------|-----|\n|水果是一种通常甜味且含有种子的食物类别。|定义|\n|苹果是一种水果。|事实|\n|苹果是口感最好的水果。|观点|"
},
{
"instruction":"生成与电动汽车相关的适当关键词。",
"input":"",
"output":"电动汽车、电池技术、可持续交通、充电技术、零排放、绿色能源、智能交通、续航能力、电驱动、电动汽车市场、电池回收、电池续航、充电桩、节能减排、无尾气排放、节能汽车、低碳交通。"
}
]



这样后续在微调页面加载预览数据集了。


(2)问了AI,根据我配置GPU-3060,12GB,要求500个问题,一次训练效果较好。


大家可自行根据自己配置及目的,问AI需要多少数据量。



2、数据集-问答对准备


(1)大模型生成


踩坑经验:发现一个大操作手册直接生成问题效果不好,把操作手册按章节拆分,分别让大模型生成问题。


提示词可参考如下:


#任务:帮我仔细阅读附件操作手册,帮我生成微调训练的40条数据,数据格式可直接用于微调训练,目的是小模型学习我的操作手册。



#要求:切勿瞎编乱遭,生成的微调数据,只能来源于我的附件操作手册;
#格式及样例:
{
"instruction":"根据下表,将每个句子分类为定义、事实或观点。",
"input":"|句子|\n|--------|\n|水果是一种通常甜味且含有种子的食物类别。|\n|苹果是一种水果。|\n|苹果是口感最好的水果。|",
"output":"|句子|分类|\n|--------|-----|\n|水果是一种通常甜味且含有种子的食物类别。|定义|\n|苹果是一种水果。|事实|\n|苹果是口感最好的水果。|观点|"
},
{
"instruction":"生成与电动汽车相关的适当关键词。",
"input":"",
"output":"电动汽车、电池技术、可持续交通、充电技术、零排放、绿色能源、智能交通、续航能力、电驱动、电动汽车市场、电池回收、电池续航、充电桩、节能减排、无尾气排放、节能汽车、低碳交通。"
}



(2)人工生成问题


实际上模型生成问答对数据集时候,我会仔细阅读,删除少量虚构的,补充必要的知识。其实高质量数据输入,就高质量数据输出,大家可自行接触AI工具,加上人工编辑,完成原始数据集的整理。后续会根据实际经验,多次测出哪种数据对模型训练效果较好。


3、数据集提前配置


business_qa.json,就是我自己设置的数据集,将上述数据放入此文件。文件再进行实际配置,具体我的地址如下,大家可根据自己实际配置,D:\ai_projects\LLaMA-Factory-main\LLaMA-Factory-main\data:


(1)修改文件:dataset_info.json中


"business_qa":{
"file_name":"business_qa.json",
"formatting":"alpaca",
"columns":{
"prompt":"instruction",
"query":"input",
"response":"output"
}
}



(2)再将数据集business_qa.json放入此文件夹data中。



【每次使用】打开虚拟环境及微调页面


1、打开微调页面:


#1、打开虚拟环境



conda activate lf



#2、进入项目目录,目的后续加载训练数据



cd /d D:\ai_projects\LLaMA-Factory-main\LLaMA-Factory-main



#3、打开微调页面



llamafactory-cli webui



2、模型选择:


用modelscope先下载模型到本地,在地址填写本地,较快;



3、数据集加载【预览】:



4、微调页面各种参数选择:


学习率:2e-4


训练:5轮


验证比例:0.1


量化等级:4


微调:lora


大家根据自己GPU、数据等自行配置。



实际微调记录


1、【财务微调】8.22日,


(1)数据集-395条数据


(2)微调参数:


学习率:2e-4


训练:5轮


验证比例:0.1


量化等级:4——最后是none,因为pytorch与cuda版本冲突,暂未解决。


微调:lora


(3)微调过程:


报错1:


importlib.metadata.PackageNotFoundError: No package metadata was foundforThe'bitsandbytes>=0.39.0'distribution was not found and is required by this application.



To fix: run`pip install bitsandbytes>=0.39.0`.



已经优化1:


# 强制卸载并重装(关键!)



pip uninstall -y bitsandbytes



pip cache purge



pipinstallbitsandbytes==0.41.1 --force-reinstall --prefer-binary



#实际上我使用的是下面下载



pipinstallhttps://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.41.1-py3-none-win_amd64.whl



报错2:


ModuleNotFoundError: Could notimportmodule'validate_bnb_backend_availability'.Are this object's requirements defined correctly?



核心问题是 bitsandbytes 库无法正确检测 CUDA 环境,导致微调启动失败



未优化2:


Python3.10.18 on 64bit

您配置的系统环境变量指向的是 CUDA11.8(CUDA_PATH=v11.8)。请确保您安装的PyTorch也是与之匹配的CUDA11.8版本,否则会出现更深层次的冲突。
python -c"import torch; print(torch.version.cuda)"

#下面我自己未优化,直接不用量化了
(lf)C:\Users\>python -c"import torch; print(torch.version.cuda)"
12.1
如果输出不是11.8,您需要重新安装匹配的PyTorch:
pip uninstall torch torchvision torchaudio -y
pipinstalltorch==2.0.1+cu118torchvision==0.15.2+cu118torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118

#我实际使用替代方案
1:禁用量化训练
在 LLaMA-Factory 的 WebUI 中:
取消勾选 Quantization(4-bit)选项 → 使用普通 LoRA 微调(显存需求升至 14GB,RTX3060可能不足)



微调过程


#首次损失函数



[INFO|2025-08-2216:19:04]llamafactory.train.callbacks:143>>{'loss':4.3177,'learning_rate':1.9940e-04,'epoch':0.22,'throughput':17.82}
{'loss':4.3177,'grad_norm':5.115846157073975,'learning_rate':0.00019940356672322037,'epoch':0.22,'num_input_tokens_seen':5520,'train_runtime':309.7212,'train_tokens_per_second':17.822}



微调结果:曲线还是很美的,损失值从最开始4,逐步降到0.5,耗时1h多。






回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ