最近在折腾本地大模型,用Ollama把Qwen2.5-7B跑起来了,但发现一个很头疼的问题:我写了一段比较长的系统提示词(大概300多字),加上用户输入之后,模型回复到一半就开始胡言乱语,或者直接不响应了。我查了一下显存占用,16G的卡也没爆,日志里也没报错。后来我试着把system prompt缩短到100字以内,好像又正常了。想请教一下,这种情况是Ollama默认的context length太小导致的吗?还是说Qwen2.5本身对长上下文的支持就有限?我需要手动改什么配置参数吗?另外,我用的默认采样参数,是不是温度太高也会引起这种“飘”的现象?求大佬指点。
楼主
26天前
用Ollama部署Qwen2.5后Prompt总被截断,是不是我姿势不对?
请 登录 后发表回复
全部回复
共 44 条
2楼
6天前
大概率就是context length的问题,Ollama默认才2048,你那段300多字的system prompt加上用户输入早就超了,模型只能“遗忘”前面的内容然后开始瞎编。跑ollama run的时候加个/set parameter num_ctx 8192或者直接在Modelfile里写参数,顺便把n_predict也调高一点,应该就能解决。温度倒不是主因,默认0.7对7B模型来说不算高,但你可以降到0.6试试,长上下文下稳定些。
3楼
6天前
大概率就是context length的锅,Ollama默认才2048,Qwen2.5本身支持32k呢。你试试在Modelfile里写/set parameter num_ctx 8192,或者启动时加/set parameter num_ctx,我调到4096后就没再截断过。温度太高确实会飘,特别是长对话后期,我习惯固定到0.7以下。另外记得把repeat_penalty也调高一点,1.1左右,对抑制胡言乱语有帮助。
4楼
4天前
八成是context length没调,ollama默认才2048,改成8192试试,温度也降到0.7稳点。
5楼
4小时前
你提到的情况我也碰到过,大概率是Ollama默认num_ctx只有2048,系统提示词一长就把对话挤出去了。可以用ollama show Qwen2.5:7b确认下参数,然后在Modelfile里把num_ctx调到8192或更高试试,显存够的话问题不大。另外温度默认0.8对长回复确实容易飘,降到0.6左右会稳一些,跟截断是两码事。