很多人 pull 完 Llama 3 一聊中文就发现两件事:能读能写但味儿不对,长句和术语特别容易跑偏;换成小尺寸或者低比特量化之后更是直接答非所问。这篇不讲榜单也不劝你换模型,只顺着「先确认是模型问题还是配置问题,再按顺序调」这条线,给你一套能在本机跑一遍的排查顺序和调优动作。
ollama 上拉一个 Llama 3 下来,前几句中文聊得还行,多问两轮就开始露馅:句子能读但味儿不对,术语乱造,长段落前后不一致。很多人第一反应是「这模型中文不行」,就急着换模型。其实这里面混着两件事:模型底子的中文水平,和你本机这套配置。两者症状长得很像,但处理方式完全不同。
这篇不评榜单也不劝你换模型,只做一件事:给你一条排查顺序,先分清是底子问题还是配置问题,再按提示词、量化档位、运行时参数三处依次动手。每一步都只改一个变量,改完能验证,这样才不会白折腾一晚上。
先分清是模型底子问题还是你的用法问题
Llama 3 的预训练语料以英文为主,中文属于「会用但不够地道」。典型表现是词序生硬、成语和行业术语自己造、写到第三段就开始漂。这部分是底子问题,调参只能缓解,不能根治。你要接受它做中文的上下限,然后决定剩下的活是调优还是换路。
另一类症状是配置问题:上下文被悄悄截断、温度设高了、量化档位太低。它们和底子差的表现几乎一样,但换个问法就能明显好转。分界线很简单,做一次对照实验就能判断。
| 测试方式 | 观察结果 | 结论倾向 |
|---|---|---|
| 同一个问题纯中文问一遍 | 中文答案明显更差、更飘 | 偏底子问题 |
| 同一个问题英文问一遍 | 英文明显更靠谱、结构更清晰 | 偏底子问题 |
| 中英文问都答非所问 | 两边都离谱,连题意都没抓住 | 先查配置:上下文、温度、量化 |
| 换个更短的问法立刻好转 | 说明是上下文或提示词问题 | 偏配置问题 |
用一组固定题把基线量出来,别凭感觉说好不好
「感觉还行」是最没用的判断,因为下一轮你可能就换了个模型、换了个档位,前面的感觉全作废。正确做法是先固定一组题,跑三遍,把结果记下来当基线。以后任何调优都和这份基线对比,才知道是变好还是只是换了种错法。
- 固定五类题各一道术语解释、把英文邮件改写成中文、多轮追问保持人物设定、带数字的表格整理、长文摘要。这五类基本覆盖日常真实要干的活,缺哪类就补哪类。
- 每题跑三遍看稳定性只看最好那一次会误判。同一提示词三次答案差很多,说明温度或采样设置有问题,先解决这个,再谈调优。
- 把耗时和显存占用一起记输出速度的测量口径不统一,你分不清换档位之后是变慢还是变好。可以到 测速工具(/tools/speed-test) 先把延迟基线对齐。
- 基线跑完再改动每次只改一处设置,改完重跑同一组题。归因不了的变化,等于没变。
提示词改成中文优先,比换模型便宜得多
这是投入产出比最高的一步。系统提示词直接写中文,不要写成英文再补一句「answer in Chinese」。后者模型要先做一次语言切换,往往把注意力放在「我要用中文」上,反而把任务本身的要求丢了。
- 中文系统提示里显式声明:请用简体中文回答,术语首次出现时给出中文和英文对照。这一句能救掉大量半英半中的输出。
- 给输出定形状:要求分点、要求先给结论再给理由、要求不确定时直说不确定。中文长答最容易跑偏的就是没有形状约束的那部分。
- 少堆「作为一个…」这类角色模板。堆太多,模型会把注意力花在扮演角色上,而不是干活。
- 代码生成、英文文档处理这类活,英文提示词往往更准,别为了风格统一硬掰成中文。
判断标准:改完提示词之后,同一组基线题的中文答案如果明显更像人话、术语更稳,就说明之前主要卡在用法上,模型底子其实够用。
量化档位怎么选:显存先够,再谈中文质量
低比特量化对中文的伤害通常比英文更明显。原因是中文的词表映射更依赖权重精度,压缩之后英文还能勉强用,中文先崩。你看到的「一换档位就答非所问」,多数不是模型变笨,是精度掉了。
选择顺序很简单:先按显存选能塞下的最高档位,再看输出速度能不能接受。档位换太勤没意义,不如先把一个档位跑满基线,心里有数再动。显存和档位的对应关系别拍脑袋,去 部署测算(/models/deploy) 按你的卡和参数量过一遍。
| 任务类型 | 档位可以放到多低 | 说明 |
|---|---|---|
| 短句分类、关键词抽取 | 可以低一些 | 任务是窄的,答案形式固定,中文长文不是重点 |
| 中文长文生成、摘要 | 尽量用高档位 | 低比特下后半段容易漂、术语乱造 |
| 需要术语一致的多轮对话 | 用高档位优先 | 精度影响的是前后一致性,不是单句对错 |
| 代理、工具调用类任务 | 看输出格式要求 | 格式要求严的任务,低比特更容易漏字段 |
只动三个运行时参数:上下文、温度、常驻
ollama 相关的参数一堆,但真正影响中文体验的就三个。其余的先别碰,碰了只会让你没法归因。
- 上下文长度
- 本地跑不要拉满。上下文越大,显存越紧张、速度越慢,而且长上下文下中文后半段更容易跑偏。按你实际单次输入长度留余量就够。
- 温度
- 中文任务上低温度通常更稳。你要的是创意文案再往上调,同时准备好接受措辞不稳定。
- 常驻内存
- 让模型留在内存里能省掉反复加载的等待,但会一直占着显存。显存本来就紧的机器别开。
排查顺序是:先固定上下文,再调温度,最后才考虑常驻。三个一起改,出了问题你根本定位不了是哪一项的锅。如果你追的是速度而不是质量,可以顺手到 测速工具(/tools/speed-test) 对齐一下口径,再看换档位值不值。
什么时候该承认调不动,换路走
调优有天花板,认清它比死磕省钱。需要中文写长文、做严谨的合同或财务文本处理时,本地这个尺寸的模型通常不够,靠提示词硬撑只会把风险往后推。这类活更适合走接口,或者换一个中文底子更好的开源模型。
批量、稳定、高并发的中文输出是另一道坎。本地单机跑,并发和吞吐很快见顶。先到 算力测算(/compute/sizing) 按模型估一下几张卡够用,再决定是加设备还是走接口。
- 个人用的中文问答、资料整理:本地这套完全够,调优收益比换设备高得多。
- 要中文成篇写作、对准确性有硬要求:别指望提示词,换路。
- 要大批量稳定输出:先算吞吐,再谈本地还是接口。
- 调优投入已经超过直接把这段活外包出去的成本:停手,换路。
常见问题
Ollama 上的 Llama 3 中文差,是不是我拉错模型了?
先别怀疑模型。确认你拉的是你要的那一档,再检查上下文有没有被截断、温度是不是偏高、是不是用了很低的量化档位。这三项排除完再判断模型本身。同一档位在不同机器上表现差很多,多半是后两项造成的。
换成中文提示词真的有用吗?
多数场景有用,尤其是需要它稳定说人话的任务。中文系统提示词能减少它把英文语序硬翻成中文的情况,术语和格式要求也更容易被遵守。但如果任务是代码或英文文档,英文提示词反而更准,别一刀切。
低比特量化会明显影响中文吗?
通常会,而且中文受影响比英文更早出现。表现是答得出来但用词更怪、长句更容易断。如果显存允许,尽量用高一点的档位;如果只能低比特,就把任务收窄到短句和抽词这类活。
怎么判断是模型不行还是我用法不对?
做对照:同一问题分别用中文和英文问,再跑三次看稳定性。英文明显更好、三次结果漂移大,都是可诊断的信号。把每一项单独改动、单独记录,两三轮就能定位到具体原因。
本地跑它做中文知识库靠谱吗?
做个人和小团队的资料检索问答够用,前提是把上下文和量化档位设对,并且接受它措辞不完美。要是涉及对外的正式文本或者需要很高准确率,建议先小范围试跑,再决定要不要换成接口。