Ollama提供了一个管理大语言模型的便捷接口,但在部分情况下,从Ollama仓库拉取的模型可能无法满足运行需求(例如,上下文大小或卸载到GPU的层数)。此时,可以通过建立副本模型的方法,修改模型的默认加载参数。
在Ollama中下载模型
您可以从 https://ollama.com/models 获取您需要的模型的名称(以下表示为“MODEL_NAME”),然后使用ollama pull命令下载模型到本地计算机:
ollama pull MODEL_NAME
您也可以使用ollama run命令下载模型并运行:
ollama run MODEL_NAME
通过在启动Ollama前配置OLLAMA_MODELS环境变量,您可以指定Ollama模型文件的存储路径。
导出基底模型的模型描述文件
Ollama通过Modelfile模型描述文件控制模型的加载选项,您可以使用下面的命令导出模型的Modelfile:
ollama show --modelfile MODEL_NAME > Path/To/Modelfile
修改模型描述文件
您可以使用任意文本编辑器打开模型描述文件,随后您即可开始修改模型的默认加载选项。
开始前,请遵照模型描述文件头部“# To build a new Modelfile based on this, replace FROM with:”一行下方以“#”开头的FROM命令,将模型描述文件中以“FROM”开头的行后指向模型文件的路径改为基底模型的名称。例如,若您导出的模型描述文件头部结构为:
# Modelfile generated by "ollama show"
# To build a new Modelfile based on this, replace FROM with:
# FROM base-model:24b
FROM Path/To/BaseModel/File
那么您需要将其改为:
# Modelfile generated by "ollama show"
# To build a new Modelfile based on this, replace FROM with:
# FROM base-model:25b
FROM base-model:25b
接下来,您可以在文件尾部的“LICENSE”行前,添加以“PARAMETER”命令起始的行,以指定模型的默认选项。“PARAMETER”行的结构类似:
PARAMETER ParamName ParamValue
其中,ParamName为参数名称,ParamValue为参数的值。支持的参数包括:
seed <int> Random number seed
num_predict <int> Max number of tokens to predict
top_k <int> Pick from top k num of tokens
top_p <float> Pick token based on sum of probabilities
min_p <float> Pick token based on top token probability * min_p
num_ctx <int> Set the context size
temperature <float> Set creativity level
repeat_penalty <float> How strongly to penalize repetitions
repeat_last_n <int> Set how far back to look for repetitions
num_gpu <int> The number of layers to send to the GPU
stop <string> <string> ... Set the stop parameters
完成后,即可保存模型描述文件,并关闭文本编辑器。
从模型描述文件建立模型
使用ollama create命令,可以从模型描述文件建立新的模型:
ollama create NEW_MODEL_NAME -f Path/To/Modelfile
如果模型建立成功,您可以通过ollama list命令查看当前已注册的模型。
运行新的模型
准备就绪后,您可以使用ollama run运行新的模型副本:
ollama run NEW_MODEL_NAME
参考资料
https://www.llamafactory.cn/ollama-docs/modelfile.html
https://github.com/ollama/ollama/issues/8597#issuecomment-2614533288
https://github.com/ollama/ollama/issues/6950#issuecomment-2373663650