属于一个比较场景的问题,因为ollama num_ctx 默认是2048 对于比较大的上下文窗口数据会出现被截断的问题
解决方法
目前基本分类两种方法,一种是临时以及持久的,机制上还有一些差异,因为ollama 内部实际也是拉起的llama.cpp 服务
对于调用chat api 可以直接通过api 调用参数传递,对于兼容openai 模式的暂时就不行了(官方说是不兼容,实际上目前openai 的api 可以进行一些额外参数的传递,只要兼容也可以解决)
- 接口参数传递
chat 模式的, 如下包含了支持的参数
curl http://localhost:11434/api/generate -d '{
"model": "llama3",
"prompt": "Why is the sky blue?",
"stream": false,
"options": {
"num_keep": 5,
"seed": 42,
"num_predict": 100,
"top_k": 20,
"top_p": 0.9,
"min_p": 0.0,
"tfs_z": 0.5,
"typical_p": 0.7,
"repeat_last_n": 33,
"temperature": 0.8,
"repeat_penalty": 1.2,
"presence_penalty": 1.5,
"frequency_penalty": 1.0,
"mirostat": 1,
"mirostat_tau": 0.8,
"mirostat_eta": 0.6,
"penalize_newline": true,
"stop": ["\n", "user:"],
"numa": false,
"num_ctx": 1024,
"num_batch": 2,
"num_gpu": 1,
"main_gpu": 0,
"low_vram": false,
"f16_kv": true,
"vocab_only": false,
"use_mmap": true,
"use_mlock": false,
"num_thread": 8
}
}'
"model": "llama3",
- 修改Modelfile 直接修改默认的num_ctx 如下
FROM qwen2:7b
PARAMETER num_ctx 32768
之后就是创建新的模型
说明
以上是基于ollama 的num_ctx 修改,实际上也说了内部是基于lama.cpp的,我在测试的时候开始的时候发现修改是成功了,但是没有使用gpu,之后进行cuda 升级,以及机器重启,之后发现又可以使用gpu 了,同时调整还会占用比较的资源,实际还是需要多测试,大模型推理没有gpu 速度的确比较差
参考资料
https://github.com/ollama/ollama/blob/main/docs/modelfile.md#parameter