Ollama如何运行魔塔社区下载的大模型
在魔塔社区或huggingface下载的模型通常以 safetensors
格式存储,而这种格式无法直接被 ollama
使用。因此,我们可以通过 llama.cpp
工具链将模型转换为兼容的 gguf
格式,从而实现无缝集成。
第一步:获取并配置 llama.cpp
首先,我们需要从 GitHub 仓库克隆 llama.cpp
工具链。这一工具链以其高效的性能和对多种模型格式的支持而闻名,是完成格式转换的理想选择。
git clone https://github.com/ggerganov/llama.cpp.git
进入项目目录后,安装所需的 Python 库依赖项,确保环境配置无误:
cd llama.cpp
pip install -r requirements.txt
第二步:执行模型格式转换
接下来,我们将使用 convert_hf_to_gguf.py
脚本,将原始的 safetensors
模型文件转换为 gguf
格式。此过程不仅需要指定输入路径,还需明确输出路径及目标格式类型(例如 f16
)。
假设模型文件存储于 E:\deepseek\DeepSeek-R1-Distill-Qwen-7B
目录下,运行以下命令:
python convert_hf_to_gguf.py "E:\deepseek\DeepSeek-R1-Distill-Qwen-7B" \
--outfile "E:\deepseek\DeepSeek-R1-Distill-Qwen-7B\DeepSeek-R1-Distill-Qwen-7B.gguf" \
--outtype f16
经过片刻等待,脚本将生成一个名为 DeepSeek-R1-Distill-Qwen-7B.gguf
的文件,标志着格式转换的成功完成。
第三步:创建 Modelfile 文件
为了使 ollama
能够正确加载新转换的模型,我们需要为其编写一个 Modelfile
配置文件。该文件定义了模型的基本路径、对话模板以及停用词等关键参数。
在 E:\deepseek\DeepSeek-R1-Distill-Qwen-7B\
目录下创建 Modelfile
文件,并写入以下内容:
FROM "E:\deepseek\DeepSeek-R1-Distill-Qwen-7B\DeepSeek-R1-Distill-Qwen-7B.gguf"
TEMPLATE """
{{- if .System }}{{ .System }}{{ end }}
{{- range $i, $_ := .Messages }}
{{- $last := eq (len (slice $.Messages $i)) 1}}
{{- if eq .Role "user" }}<|User|>{{ .Content }}
{{- else if eq .Role "assistant" }}<|Assistant|>{{ .Content }}{{- if not $last }}<|end▁of▁sentence|>{{- end }}
{{- end }}
{{- if and $last (ne .Role "assistant") }}<|Assistant|>{{- end }}
{{- end }}
"""
PARAMETER stop "<|begin▁of▁sentence|>"
PARAMETER stop "<|end▁of▁sentence|>"
PARAMETER stop "<|User|>"
PARAMETER stop "<|Assistant|>"
这段配置代码不仅定义了模型的加载路径,还通过精巧的模板设计实现了用户与助手角色之间的自然对话切换,同时设置了多个停用词以优化生成效果。
第四步:导入模型至 ollama
完成上述准备工作后,我们可以使用 ollama create
命令将模型正式导入到 ollama
中。在这里,我们为模型赋予了一个自定义名称 my_DeepSeek-R1-Distill-Qwen-7B
,以便于后续调用。
ollama create my_DeepSeek-R1-Distill-Qwen-7B -f Modelfile
执行完成后,运行以下命令查看模型是否成功导入:
ollama list
如果一切顺利,您将在列表中看到刚刚创建的模型名称。
第五步:运行模型
最后,启动模型并体验其强大的推理能力。只需运行以下命令即可:
ollama run my_DeepSeek-R1-Distill-Qwen-7B:latest
此刻,模型已整装待发,随时准备响应您的提问或协助完成复杂的任务。
注意:llama.cpp可能只支持纯文本模型的转换。我尝试转换deepseek-vl2-tiny模型时报错。