本地模型横评:8 个 7B~14B 模型在同一套题上的实测
用 120 道固定的中文任务题,测了 8 个能本地跑的中等规模模型。含评分标准、原始数据表和我的选型结论。
网上不缺榜单,但榜单测的东西和你实际要用的事情往往差很远。所以我按自己真实的用法出了 120 道题,把能本地跑的模型都测了一遍。
先说结论:没有一个模型在所有维度上都最好,但选型其实没那么难 —— 先确定你的瓶颈是「中文写作」「代码」「指令跟随」还是「长文本」,答案立刻就收敛了。
测试方法
为什么不用 MMLU / C-Eval。 这些基准已经被训练数据覆盖得差不多了,分数区分度很低。而且它们测的是知识,不是「能不能按我的要求完成任务」。
120 道题的构成:
| 题型 | 数量 | 说明 |
|---|---|---|
| 指令跟随 | 30 | 带格式约束(输出 JSON、限定字数、指定结构) |
| 中文写作改写 | 25 | 润色、压缩、换语气、改写受众 |
| 代码 | 25 | 补全、改 bug、解释、跨语言转换 |
| 信息抽取 | 20 | 从长文本里抽结构化字段 |
| 长文本理解 | 20 | 8K~32K 上下文的定位与总结 |
评分方式 是混合的:能用程序判定的(JSON 合法性、代码能否通过单测、抽取字段是否准确)全部自动评分;主观题(写作、改写)由我和另外一位同事盲评,两轮取平均。
测试环境:RTX 4090 24 GB,全部使用 4-bit 量化版本,同一套 prompt 模板,temperature 0.3,上下文按各模型能力给到上限。
总分与分项
满分 100。
| 模型 | 总分 | 指令跟随 | 中文写作 | 代码 | 抽取 | 长文本 |
|---|---|---|---|---|---|---|
| Qwen2.5-14B-Instruct | 84.2 | 91 | 86 | 78 | 88 | 79 |
| Qwen2.5-7B-Instruct | 78.6 | 87 | 82 | 71 | 83 | 68 |
| GLM-4-9B-Chat | 77.9 | 84 | 88 | 70 | 80 | 72 |
| InternLM2.5-7B-Chat | 74.1 | 79 | 80 | 68 | 76 | 71 |
| Llama-3.1-8B-Instruct | 72.4 | 82 | 64 | 85 | 71 | 75 |
| Mistral-Nemo-12B | 71.8 | 76 | 66 | 80 | 70 | 81 |
| Yi-1.5-9B-Chat | 70.3 | 78 | 79 | 66 | 72 | 62 |
| DeepSeek-Coder-7B | 66.5 | 65 | 52 | 88 | 58 | 55 |
几个值得说的发现
Qwen2.5-14B 是这一档的综合最优。 除了代码,其他四项都是前两名,指令跟随 91 分拉开明显差距。24 GB 卡跑 4-bit 版本大概 19 GB,还能留点余量做 KV Cache。如果你只装一个模型,选它。
中文写作 GLM-4-9B 最好。 88 分,明显比 Qwen 的 86 更有「人味」—— 它的句子更短、更少用「首先/其次/总之」这类套话。写公众号、写产品文案,我会用 GLM。
代码任务 Llama-3.1-8B 和 DeepSeek-Coder 明显更强。 DeepSeek-Coder 在代码上 88 分,但中文写作只有 52 分 —— 它是纯代码模型,用它写文档会很痛苦。这类专用模型只适合放在代码补全的位置上。
长文本 Mistral-Nemo-12B 意外地好。 81 分,而且它的原生上下文是 128K。要做长文档处理又只有单卡,它是个被低估的选择。
7B 和 14B 的差距比想象中大。 Qwen 7B 到 14B,参数量翻倍,总分只涨了 5.6 分,但指令跟随涨了 4 分、长文本涨了 11 分。复杂任务上这个差距会放大。
分项第一的实用含义
要模型严格按格式输出 → Qwen2.5-14B(91 分)
要中文写得自然 → GLM-4-9B(88 分)
要写代码 / 改 bug → DeepSeek-Coder-7B(88 分)
要处理长文档 → Mistral-Nemo-12B(81 分)
要一个都不差 → Qwen2.5-14B
实际生产中我见过最常见的错误是用一个模型硬扛所有任务。如果你的场景里既有代码又有中文文案,用两个小模型各管一摊,效果和成本都比用一个大模型好。
指令跟随:差距最悬殊的一项
这项的分差最大(88 到 65),也最影响实际体验。几个观察:
格式约束是试金石。 要求「输出严格的 JSON,不要包含任何解释文字」时,DeepSeek-Coder 和 Yi 会经常加一句「好的,这是结果:」在前面。对需要程序解析的场景,这就是致命的。
限制性约束最容易失败。 「用不超过 50 字概括」这类要求,小模型普遍会超。Qwen-14B 的超标率是 12%,而 Yi-9B 达到 41%。
多约束叠加会断崖式下降。 单独要求 JSON 没问题,单独要求字数也没问题,但两个一起要求时,7B 级别模型的通过率从 85% 掉到 47%。
应对办法很朴素:能拆成多次调用就拆开,一次只给它一个约束。
复现方式
下载区里有完整的 120 道题、评分脚本和 8 个模型的原始输出。评测脚本支持接 OpenAI 兼容接口,所以对着 vLLM 起的本地服务就能直接跑:
python bench.py \
--base-url http://localhost:8000/v1 \
--model Qwen2.5-14B-Instruct \
--tasks tasks_120.jsonl \
--output results/qwen14b.jsonl
python score.py results/qwen14b.jsonl # 自动评分 + 分项统计
如果你想测自己关心的场景,改 tasks_120.jsonl 就行 —— 格式是每行一个 JSON,字段就是 prompt / type / checker。
说实话,测完之后我最大的感受是:这一档模型的差距,远小于「会不会写 prompt、会不会做后处理」带来的差距。 与其纠结选哪个,不如先把评测做起来。
资源下载
2 个入口- 百度网盘同上,备用链接提取码mb66
链接若失效,欢迎发邮件告诉我,我会尽快重新上传。