用LoRA微调Qwen3-7B:从数据准备到部署上线手记
为什么是LoRA不是全参业务要个垂直领域的问答模型,base选Qwen3-7B。全参微调7B要8张A100跑12小时,成本4000元。LoRA只训adapter,单张3090跑4小时,成本50元,效果差3个点,性价比完胜。记录从数据到部署的流程。
[*]数据准备:收集2万条业务问答对,格式JSONL,每条 {"instruction":"","input":"","output":""}。清洗去重,把长度超1024的截断。
[*]LoRA配置:rank=16, alpha=32, target_modules 选 q_proj、k_proj、v_proj、o_proj、gate_proj,dropout=0.05。
[*]训练:LLaMA-Factory框架,单卡命令见代码块,bs=4, grad_accum=8, epoch=3, lr=2e-4。
[*]合并:训完的adapter用peft merge到base,导出完整权重,方便部署。
训练命令
llamafactory-cli train \
--model_name_or_path Qwen/Qwen3-7B \
--dataset qa_data \
--finetuning_type lora \
--lora_rank 16 --lora_alpha 32 \
--lora_target q_proj,k_proj,v_proj,o_proj,gate_proj \
--output_dir ./qwen3-7b-lora \
--per_device_train_batch_size 4 \
--gradient_accumulation_steps 8 \
--num_train_epochs 3 \
--learning_rate 2e-4 \
--bf16 True
部署
合并后用vLLM起服务,--port 8000,单卡3090显存24G够。QPS在我们业务上能到8,p99延迟1.2秒。如果显存不够可以量化到INT8,损失1.5个点准确率但显存砍一半。
最大坑是数据质量。2万条里一开始有3000条问答不对应(问A答B),训出来模型答非所问。清洗规则:问题去重、答案长度50到500字、问和答的余弦相似度大于0.3。清洗完剩1.6万条,效果反而更好。
https://www.metk.cn/img/posts/lora_qwen3_finetune.jpg 路过的帮顶 我试过几个同类工具,效果差别挺大的,关键看数据和场景匹配度。 开源方案胜在可控,闭源胜在省事,取舍看团队能力。这套方案在数据量大的时候表现如何? 推理成本算下来并不低,规模化之前得先把这块压下去。 真正跑通的案例里,投入的人力成本往往被忽略不计了。这套方案在数据量大的时候表现如何? 最容易被忽略的是评估环节,没有好的评测集根本没法优化。你们的延迟和成本大概什么水平? 延迟和成本这两项是硬指标,演示好看但扛不住量。有对比过同类的其他方案吗? 冷启动阶段最难,没有历史数据就没法做效果对比。有没有踩过什么比较大的坑? 评估标准不统一的话,各家都说自己效果好,没法比。有没有踩过什么比较大的坑?