背景
通义千问 Qwen3.5 是一款功能强大的开源大模型,支持 128K 上下文窗口和多种规格(7B/32B/72B)。通过微调,可以让 Qwen3.5 更好地适配特定业务场景。
微调方案
全量微调(Full Fine-tuning)
全量微调会更新模型的所有参数,适合拥有大量标注数据的场景。
适用场景:
- 数据量 ≥ 10 万条
- 需要模型完全适配特定领域
- 有足够的 GPU 算力(至少 8× A100 80GB)
LoRA 微调(推荐)
LoRA(Low-Rank Adaptation)通过在权重矩阵旁添加低秩分解矩阵来训练,大幅降低显存占用。
优势:
- 显存需求低(单卡即可微调 7B 模型)
- 训练速度快
- 可多个 LoRA 动态切换
- 原始权重保持不变
适用场景:
- 数据量 < 10 万条
- 快速迭代实验
- 资源受限环境
数据准备
数据格式(JSONL)
{"messages": [{"role": "system", "content": "你是一位专业的技术顾问"}, {"role": "user", "content": "如何微调大模型?"}, {"role": "assistant", "content": "微调大模型主要分为以下步骤..."}]}
{"messages": [{"role": "user", "content": "Qwen3.5 有哪些优势?"}, {"role": "assistant", "content": "Qwen3.5 的主要优势包括..."}]}
数据清洗建议
- 去除重复数据
- 统一回复风格
- 移除敏感信息
- 控制单轮对话长度(建议 < 2048 tokens)
训练技巧
超参数设置
| 参数 | 全量微调建议值 | LoRA 建议值 |
|---|---|---|
| 学习率 | 1e-5 ~ 5e-5 | 1e-4 ~ 3e-4 |
| Batch Size | 4 ~ 16 | 8 ~ 32 |
| Epochs | 3 ~ 5 | 3 ~ 10 |
| Warmup Ratio | 0.1 | 0.05 |
梯度技巧
- 梯度累积:模拟更大 Batch Size
- 梯度检查点:以时间换显存
- 混合精度训练:FP16/BF16 加速
模型部署
微调完成后,通过以下方式部署:
vLLM 部署
vllm serve Qwen3.5-7B \
--dtype half \
--enforce-eager \
--gpu-memory-utilization 0.9
合并 LoRA 权重
如果使用 LoRA 微调,可将权重合并回基础模型:
from peft import PeftModel
base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3.5-7B")
lora_model = PeftModel.from_pretrained(base_model, "./lora_output")
merged_model = lora_model.merge_and_unload()
merged_model.save_pretrained("./merged_model")
常见问题
Q:微调需要多少数据? A:对于 LoRA,1000~10000 条高质量数据即可看到明显效果。
Q:如何评估微调效果? A:可以构建评估集,对比微调前后的效果。关注 Loss 曲线、生成质量和领域适配度。
Q:LoRA rank 如何选择?
A:7B 模型建议 rank=864,32B 以上模型建议 rank=32128。