Ollama 除了通过从支持模型列表中 pull 的下载模型方式,也支持手动导入GGUF模型。
关键是需要创建一个 Modelfile
文件,和将项目打包成docker image的过程有点类似。
Modelfile
内容的创建可以参考通过 ollama pull
命令拉取的模型对应的 Modelfile
,比如查看 llama3:70b
这个模型的 Modelfile
,执行以下命令:
ollama show --modelfile llama3:70b
执行完命令后显示的 Modelfile
内容:
# Modelfile generated by "ollama show"
# To build a new Modelfile based on this, replace FROM with:
# FROM llama3:70b
FROM /usr/share/ollama/.ollama/models/blobs/sha256-0bd51f8f0c975ce910ed067dcb962a9af05b77bafcdc595ef02178387f10e51d
TEMPLATE "{{ if .System }}<|start_header_id|>system<|end_header_id|>{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>{{ .Response }}<|eot_id|>"
PARAMETER num_keep 24
PARAMETER stop <|start_header_id|>
PARAMETER stop <|end_header_id|>
PARAMETER stop <|eot_id|>
创建一个Modelfile(最好用模型名称命名)的空文件
nano Modelfile
并在其中添加FROM指令,用于指定要导入的模型的本地文件路径(下面的例子用的是相对路径),其他内容可参考ollama library已有模型的modelfile。
FROM ./vicuna-33b.Q4_0.gguf
名为 test
的Modelfile中的内容如下
FROM ./test.gguf
TEMPLATE """<|user|>
{{ .Prompt }}<|end|>
<|assistant|>"""
后续通过以下命令创建并运行模型:
# 通过Ollama命令创建该模型
ollama create [模型名称] -f Modelfile
# 运行模型
ollama run [模型名称]
# 拉取后的LLM所在位置
/usr/share/ollama/.ollama/models
详情可参考:modelfile创建官方文档