记录一下最近完成的模型微调全流程,从语料到部署,4个模型全部上线。
📊 母模型 · Qwen2.5-7B 全参数SFT
基座:Qwen2.5-7B(76.2亿参数)
语料:1,868条真实对话 → 预处理后11,470条 · 2100万tokens
训练方式:全参数SFT · 只对assistant回复计算loss
GPU:RTX PRO 6000 Blackwell × 1(96GB显存 · 实际占用77.5GB)
精度:BF16
超参:3 Epochs · LR 2e-5 余弦衰减 · 梯度累积8
总耗时:4小时10分钟
Loss:2.504 → 0.052 · 降幅98%
第一轮跑到20%时loss已降至0.53(降幅79%),说明语料信号极强
GPU利用率全程97%~100% · 温度74°C~84°C
训练成本:¥278(AutoDL包日)
📊 代码模型 · Qwen2.5-Coder-7B 全参数SFT
同样语料和配置
Loss:2.544 → 0.071 · 降幅97%
代码基座首次接触纯自然语言语料,起步稍慢,三轮后基本追平母模型
最终loss差距仅0.019
📊 蒸馏 · 7B → 1.5B
Track1:母模型 → 1.5B 通用蒸馏(2.9GB)
Track2:代码模型 → 1.5B 代码蒸馏(2.9GB)
两条track均已完成
📊 产出
4个模型全部训练完成,已部署上线
母模型 7B SFT(14.2GB)
代码模型 7B SFT(14.2GB)
蒸馏 1.5B · 通用基座(2.9GB)
蒸馏 1.5B · 代码基座(2.9GB)
几个心得:
语料质量 > 语料数量。1868条高质量对话预处理后效果比几万条通用数据好
只对assistant回复算loss,不加system prompt,让模型从语料本身学思维方式
全参SFT成本没有想象中那么高,一张96GB卡跑4小时,不到300块
蒸馏出来的1.5B可以在CPU上跑,日常推理几乎零成本
从语料收集 → 数据清洗 → 全参微调 → 蒸馏 → 部署上线,全流程跑通。