AI模型微调接单实战:从环境配置到交付验收
接AI模型微调订单,交付物不能只是“跑出一个模型”,而是客户能加载、能推理、效果可验收的完整结果。
零基础想接单,先确认自己有一块显存足够的GPU(7B模型LoRA微调建议12GB以上,QLoRA可降到8GB左右),并准备好Ubuntu系统、Python环境和数据集。
下面按实际接单顺序展开。
先确认订单边界和硬件条件
接单前和客户对齐三件事:基座模型(如Qwen2.5-7B-Instruct)、微调方式(LoRA/QLoRA/全参)、验收标准(测试集准确率或人工抽检)。
不要接“效果要好”这种无法量化的需求。
硬件检查命令:
nvidia-smi
确认驱动正常、显存满足要求。
如果客户提供数据但没说明格式,先要样本,避免训练到一半发现数据不可用。
搭建可复现的训练环境
建议用conda隔离环境,避免依赖冲突:
conda create -n finetune python=3.10 -y
conda activate finetune
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install transformers datasets peft accelerate bitsandbytes
如果使用LLaMA-Factory,直接克隆并安装:
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"
安装完执行python -c "import torch; print(torch.cuda.is_available())",输出True才算GPU可用。
数据准备与格式校验
客户数据常见格式是JSONL,每行一条:
{"instruction": "问题", "input": "", "output": "回答"}
用脚本检查空值、重复和超长样本:
python -c "
import json
with open('data.jsonl') as f:
lines=[json.loads(l) for l in f]
print('总条数', len(lines))
print('空output', sum(1 for x in lines if not x.get('output')))
"
数据量少时(几百条)优先QLoRA,避免过拟合;
数据超过几千条再考虑全参。
启动LoRA微调并观察显存
以LLaMA-Factory为例,配置文件train_lora.yaml关键项:
model_name_or_path: Qwen/Qwen2.5-7B-Instruct
stage: sft
do_train: true
finetuning_type: lora
lora_rank: 8
dataset: my_data
template: qwen
output_dir: saves/qwen_lora
per_device_train_batch_size: 1
gradient_accumulation_steps: 8
learning_rate: 2e-4
num_train_epochs: 3
启动命令:
llamafactory-cli train train_lora.yaml
训练中另开终端执行watch -n 2 nvidia-smi,显存接近上限时降低per_device_train_batch_size或改用quantization_bit: 4。
效果验证和交付清单
训练结束后用测试集推理,对比基座模型输出:
llamafactory-cli chat --model_name_or_path Qwen/Qwen2.5-7B-Instruct --adapter_name_or_path saves/qwen_lora --template qwen
交付给客户至少包含:LoRA权重目录、合并后的完整模型(如需)、推理命令说明、训练日志和测试样例。
合并命令:
llamafactory-cli export --model_name_or_path Qwen/Qwen2.5-7B-Instruct --adapter_name_or_path saves/qwen_lora --template qwen --export_dir merged_model
避坑重点:训练前备份原始数据;
不要用客户未脱敏的数据做公开测试;
交付前在干净环境重跑一次推理命令,确认路径和依赖可复现。
如果客户要求“保证效果”,提前说明微调效果取决于数据质量,并约定抽检通过标准。
常见疑问
接单需要什么显卡?
7B模型LoRA微调建议RTX 3090/4090级别,QLoRA可在RTX 3060 12GB上跑小批量,但训练时间明显变长。
客户只给几百条数据能接吗?
可以接,但优先QLoRA并降低学习率,交付时说明数据量对效果的限制,避免承诺过高。
训练loss不降怎么办?
先检查数据格式和template是否匹配,再确认学习率是否过大,可先用小样本过拟合测试流程是否通。
交付后客户加载失败怎么排查?
让对方提供完整报错,重点检查transformers版本、模型路径和adapter配置是否一致,必要时提供Docker镜像或环境导出文件。