主题
📋 模型版本管理
微调了 5 个版本,两周后客户说 v2 更好,但 v2 已经被你覆盖了——版本管理就是防这个的
为什么需要版本管理
一次微调可能经历:
v1: 初次微调,效果一般
v2: 加了 200 条数据,效果好多了
v3: 调了学习率,反而退步了
v4: 换 rank=16,效果最好
v5: 新增法律条文数据,合同审查更强了没有版本管理,你只能保留一个。客户说"上周那个版本更好",你只能傻眼。
命名规范
固定命名规则,一眼看出是什么:
{模型名}-{任务}-{版本号}-{日期}
示例:
qwen2.5-7b-contract-v3-20260807
qwen2.5-7b-contract-v4-20260814-legal
deepseek-r1-8b-bidding-v1-20260728版本号用 v + 递增数字,后缀可以加特性描述。
存储方案
方案一:目录加日期(最简单)
bash
# 模型存储目录结构
/models/
├── qwen2.5-7b-contract/
│ ├── v1-20260701/ # 初版
│ │ ├── adapter_model.safetensors
│ │ └── adapter_config.json
│ ├── v2-20260715/ # 改进版
│ │ ├── adapter_model.safetensors
│ │ └── adapter_config.json
│ └── current -> v2-20260715/ # 当前生产版本(软链接)
├── deepseek-r1-8b-bidding/
│ ├── v1-20260728/
│ └── current -> v1-20260728/切换版本只需改软链接:
bash
# 回滚到 v1
ln -sfn v1-20260701 /models/qwen2.5-7b-contract/current
# Ollama 重新加载
ollama create contract-reviewer -f Modelfile方案二:Ollama 标签管理
bash
# 每次微调完导入时打标签
ollama create contract-reviewer:v1 -f Modelfile-v1
ollama create contract-reviewer:v2 -f Modelfile-v2
ollama create contract-reviewer:v3 -f Modelfile-v3
# 查看所有版本
ollama list | grep contract
# 使用指定版本
ollama run contract-reviewer:v1方案三:HuggingFace Hub(私仓)
bash
# 推送 LoRA 权重到 HuggingFace 私有仓库
huggingface-cli login
huggingface-cli upload your-org/contract-model-v3 \
./qwen-lora-contract-final \
--private好处:有版本记录、可协作、不怕丢。
版本对比(A/B 测试)
同一批测试样本,跑两个版本对比:
python
import json
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="***")
test_samples = [
"审查:违约金每日千分之五是否合规?",
"分析:甲方单方终止合同的条款是否有风险?",
# ... 50条测试样本
]
results = {"v3": [], "v4": []}
for version in ["v3", "v4"]:
# 切换模型(vLLM 热加载,Ollama 需重启)
for sample in test_samples:
resp = client.chat.completions.create(
model=f"contract-reviewer-{version}",
messages=[{"role": "user", "content": sample}]
)
results[version].append(resp.choices[0].message.content)
# 输出对比结果,人工判断哪个版本好
for i, (v3_r, v4_r) in enumerate(zip(results["v3"], results["v4"])):
print(f"=== 样本 {i+1} ===")
print(f"v3: {v3_r[:100]}...")
print(f"v4: {v4_r[:100]}...")
print()版本日志(CHANGELOG)
每个版本必须记录:
markdown
## v4 - 2026-08-14
### 变更
- 新增 150 条劳动法相关合同数据
- LoRA rank 从 8 提到 16
- 学习率从 2e-4 降到 1e-4
### 效果
- 合同审查准确率:v3 82% → v4 89%
- 劳动法专项通过率:v3 65% → v4 85%
- 通用能力无明显退化
### 已知问题
- 长合同(>5000字)审查速度下降 15%回滚流程
bash
# 1. 确认当前版本
ollama list | grep contract
# 2. 切回旧版本
ollama rm contract-reviewer:current
ollama cp contract-reviewer:v3 contract-reviewer:current
# 3. 验证
ollama run contract-reviewer:current "审查:违约金每日千分之五"
# 4. 通知使用者
echo "合同审查模型已回滚至 v3,v4 因长文速度问题暂时下线"🎯 本章要点
- 用
模型名-任务-v版本号-日期统一命名 - 存储三选一:目录+软链接(最简)、Ollama 标签、HuggingFace 私仓
- 每个版本写 CHANGELOG:改了什么、效果对比、已知问题
- A/B 测试用同一批样本跑两个版本,人工对比输出质量
- 回滚 = 切软链接或改 Ollama 标签,1 分钟完成
加载练习题中...