选模型不是找"最强"的那个,是找"刚好够用且最省资源"的那个。

为什么要做这么细的对比?

两个延迟敏感路径:工具选择要求 <100ms,信息提取要求 <500ms。云端 API 的 p99 延迟抖动(500ms+)不可接受。另外本地模型零 API 成本——每天 1 万次工具选择,不用模型 = 每年省 ¥2,800-¥8,500。


实验设计

  • 模型:Qwen2.5-0.5B / 1.5B / 3B + Qwen3-1.7B
  • 设备:CPU (FP32) / GPU (FP26 CUDA)
  • 信息提取:30 条真实电商消息 × 5 种意图
  • 工具选择:50 条标注 query × 10 个工具

信息提取:0.5B 在编造字段

模型 设备 字段 F1 值匹配率 p50
Qwen2.5-0.5B GPU 0.723 70% 344ms
Qwen2.5-0.5B CPU 0.723 70% 1.6s
Qwen2.5-1.5B GPU 0.784 83% 570ms
Qwen2.5-1.5B CPU 0.784 83% 4.9s
Qwen3-1.7B GPU 0.984 100% 703ms
Qwen3-1.7B CPU 0.984 100% 5.5s
Qwen2.5-3B GPU 0.969 100% 922ms
Qwen2.5-3B CPU 0.969 100% 9.1s

0.5B 的最大问题不是精度低——而是它在"编造"字段。不该输出任何参数的意图,它硬塞了一个不存在的字段。1.5B 同样有"空 Schema 填充"问题:5 条错误中 3 条是"不该输出却输出了"。


工具选择:3B 的意外登顶

模型 设备 Top-1 p50
Qwen2.5-0.5B GPU 56% 63ms
Qwen2.5-0.5B CPU 58% 476ms
Qwen2.5-1.5B GPU 92% 94ms
Qwen2.5-1.5B CPU 92% 1.3s
Qwen3-1.7B GPU 88% 109ms
Qwen3-1.7B CPU 88% 1.5s
Qwen2.5-3B GPU 96% 156ms
Qwen2.5-3B CPU 96% 2.6s

3B 的完全匹配率只有 78%——它倾向于多选(如"我的订单到哪了"同时输出 query-order + check-shipping)。好消息是所有多选 case 的正确答案都在输出中,加一句"只选 1 个"的 prompt 约束即可修复。


CPU vs GPU,加速比的真相

模型 信息提取 CPU 信息提取 GPU 加速比 工具选择 CPU 工具选择 GPU 加速比
0.5B 1.6s 344ms 4.7x 476ms 63ms 7.6x
1.5B 4.9s 570ms 8.7x 1.3s 94ms 13.6x
1.7B 5.5s 703ms 7.8x 1.5s 109ms 13.3x
3B 9.1s 922ms 9.9x 2.6s 156ms 16.4x

结论:本系统必须有一个 GPU。 CPU 上信息提取最快也要 1.6s(0.5B),最慢 9.1s(3B),全部突破 500ms 的延迟红线。工具选择同样——CPU 上 3B 需要 2.6s,是 GPU 的 16 倍。CPU 降级只是"系统还能跑"的兜底,不是正常使用路径。


SFT 微调决策树:不是所有模型都值得微调

选型结果出来了,下一步是"要不要做 SFT"。这是一笔投入产出的账:

场景 当前精度 SFT 后预期 数据量 ROI
3B 信息提取 F1=0.969, 值匹配 100% 0.98-0.99 ❌ 改 prompt 即可
1.5B 信息提取 F1=0.784, 值匹配 83% 0.92-0.95 200 边界标注 ✅ ROI 最高
1.5B 工具选择 Top1=92% 95-97% 50 边界标注 ✅ 数据量小
0.5B 全部 不可用 不可预期 ❌ 放弃

决策逻辑

  • 3B 不改:96% Top1、100% 值匹配,天花板够高,SFT 的边际收益几乎为零。问题在 prompt 层面(多选倾向加一句"只选 1 个"即可)
  • 1.5B 是甜点:精度接近 3B 但显存省 2.87G(5.75G → 2.88G)。当前 83% 值匹配的差距主要集中在"空 Schema 填充"——LLM 对不该输出的意图硬塞了参数。这类错误模式固定、边界清晰,200 条标注数据即可覆盖
  • 0.5B 放弃:基础语义理解不够,SFT 无法弥补底层能力缺失

LoRA 参数:1.5B rank=8 alpha=16 ≈2M 参数 ≈8MB 适配器,训练约 20min。

SFT 数据构造方案

如果决定对 1.5B 做 SFT,数据配方如下:

  1. SFT 指令微调:~800 条(200 边界标注 + 500 LLM 蒸馏 + 50 真实日志)
    • 200 条边界标注:从第六篇的错误分析中挑出"空 Schema 填充"“字段名拼错”"误提取不存在的字段"三类 case,人工写标准输出
    • 500 条 LLM 蒸馏:用 Qwen2.5-3B 批量生成(输入→标准输出),筛掉质量差的。成本 ≈ 3B API 调用 500 次,几毛钱
    • 50 条真实日志:线上人工审核过的正确 case,保底不漂移
  2. DPO 偏好对齐:~100 对(进阶,SFT 后再做),同一输入给正确输出和典型错误输出做对比
  3. RLAIF 规则奖励:可选,但 RL 训练不稳定,不推荐在当前阶段引入

部署矩阵

方案 配置 工具选择 信息提取 显存
⭐ 最佳单模型 Qwen2.5-3B GPU 96% 100% 5.75G
轻量方案 Qwen2.5-1.5B GPU 92% 83% 2.88G
极致精度 Qwen3-1.7B + 1.5B 92% 100% 6.1G
CPU 兜底 Qwen2.5-0.5B 58% 70% 2.59G
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐