微信扫码
添加专属顾问
我要投稿
从零开始微调7B小模型,手把手教你避开版本冲突和数据格式的坑。 核心内容: 1. 环境配置与版本兼容性解决方案 2. 数据集准备与常见格式问题处理 3. 完整微调流程实操与效果验证
模型提示词工程、RAG都已经实践上手了一些项目。真实场景中,希望模型自己能输出企业内部知识,选择了模型微调,目的是让模型学习企业内部数据。
我这次项目主要是针对我负责的ERP销售系统,将专业术语、系统操作、常见问题等喂给它进行微调,希望微调训练后,能够学习到我负责系统的相关知识。
pytorch、cuda、python等基础软件的安装,网上一搜一堆,再次不再赘述。
但是需要注意的是不同软件的版本冲突问题。就比如我微调选择量化时发现,我的pytorch、cuda版本冲突,导致无法量化,只能lora,GPU爆满。大家根据自己GPU配置选择对应版本及后续微调参数。
(1)我们在此虚拟环境中执行:
pip install -e ".[torch,metrics]"
(2)依赖安装完成后,我们执行 llamafactory-cli version 验证安装情况:
(3)然后我们测试执行 which llamafactory-cli 可以发现,llamafactory 被安装在了 conda 创建的虚拟环境目录下:
(1)下载地址:
ModelScope - 数据集列表页
(2)下载本地:
我用的是qwen2.5-7b模型;
C:\Users\XXX\.cache\modelscope\hub\models\Qwen\Qwen2___5-7B-Instruct
D:\ai_projects\LLaMA-Factory-main\LLaMA-Factory-main\src
(1)指令性json格式要求:
踩坑经验:(让模型生成时候就把该格式生成好,不要后续浪费时间人工补充,我少了逗号,395条数据好一顿补)
● 最开始和结束必有大括号;
● 并且每条数据前后需要有逗号隔开。
[
{
"instruction":"根据下表,将每个句子分类为定义、事实或观点。",
"input":"|句子|\n|--------|\n|水果是一种通常甜味且含有种子的食物类别。|\n|苹果是一种水果。|\n|苹果是口感最好的水果。|",
"output":"|句子|分类|\n|--------|-----|\n|水果是一种通常甜味且含有种子的食物类别。|定义|\n|苹果是一种水果。|事实|\n|苹果是口感最好的水果。|观点|"
},
{
"instruction":"生成与电动汽车相关的适当关键词。",
"input":"",
"output":"电动汽车、电池技术、可持续交通、充电技术、零排放、绿色能源、智能交通、续航能力、电驱动、电动汽车市场、电池回收、电池续航、充电桩、节能减排、无尾气排放、节能汽车、低碳交通。"
}
]
这样后续在微调页面加载预览数据集了。
(2)问了AI,根据我配置GPU-3060,12GB,要求500个问题,一次训练效果较好。
大家可自行根据自己配置及目的,问AI需要多少数据量。
踩坑经验:发现一个大操作手册直接生成问题效果不好,把操作手册按章节拆分,分别让大模型生成问题。
提示词可参考如下:
#任务:帮我仔细阅读附件操作手册,帮我生成微调训练的40条数据,数据格式可直接用于微调训练,目的是小模型学习我的操作手册。
#要求:切勿瞎编乱遭,生成的微调数据,只能来源于我的附件操作手册;
#格式及样例:
{
"instruction":"根据下表,将每个句子分类为定义、事实或观点。",
"input":"|句子|\n|--------|\n|水果是一种通常甜味且含有种子的食物类别。|\n|苹果是一种水果。|\n|苹果是口感最好的水果。|",
"output":"|句子|分类|\n|--------|-----|\n|水果是一种通常甜味且含有种子的食物类别。|定义|\n|苹果是一种水果。|事实|\n|苹果是口感最好的水果。|观点|"
},
{
"instruction":"生成与电动汽车相关的适当关键词。",
"input":"",
"output":"电动汽车、电池技术、可持续交通、充电技术、零排放、绿色能源、智能交通、续航能力、电驱动、电动汽车市场、电池回收、电池续航、充电桩、节能减排、无尾气排放、节能汽车、低碳交通。"
}
实际上模型生成问答对数据集时候,我会仔细阅读,删除少量虚构的,补充必要的知识。其实高质量数据输入,就高质量数据输出,大家可自行接触AI工具,加上人工编辑,完成原始数据集的整理。后续会根据实际经验,多次测出哪种数据对模型训练效果较好。
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、打开虚拟环境
conda activate lf
#2、进入项目目录,目的后续加载训练数据
cd /d D:\ai_projects\LLaMA-Factory-main\LLaMA-Factory-main
#3、打开微调页面
llamafactory-cli webui
用modelscope先下载模型到本地,在地址填写本地,较快;
3、数据集加载【预览】:
学习率:2e-4
训练:5轮
验证比例:0.1
量化等级:4
微调:lora
大家根据自己GPU、数据等自行配置。
学习率:2e-4
训练:5轮
验证比例:0.1
量化等级:4——最后是none,因为pytorch与cuda版本冲突,暂未解决。
微调:lora
报错1:
importlib.metadata.PackageNotFoundError: No package metadata was found for The '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
pip installbitsandbytes==0.41.1 --force-reinstall --prefer-binary
#实际上我使用的是下面下载
pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.41.1-py3-none-win_amd64.whl
报错2:
ModuleNotFoundError: Could not import module 'validate_bnb_backend_availability'. Are this object's requirements defined correctly?
核心问题是 bitsandbytes 库无法正确检测 CUDA 环境,导致微调启动失败
未优化2:
Python 3.10.18 on 64bit
您配置的系统环境变量指向的是 CUDA 11.8(CUDA_PATH=v11.8)。请确保您安装的PyTorch也是与之匹配的CUDA 11.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
pip installtorch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118
#我实际使用替代方案
1:禁用量化训练
在 LLaMA-Factory 的 WebUI 中:
取消勾选 Quantization(4-bit)选项 → 使用普通 LoRA 微调(显存需求升至 14GB,RTX 3060 可能不足)
微调过程
#首次损失函数
[INFO|2025-08-22 16: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多。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-05-26
2025-06-17
2025-06-21
2025-05-26
2025-05-31
2025-06-20
2025-05-28
2025-07-03
2025-05-26
2025-05-28