使用llama.cpp转换safetensors格式的模型为gguf格式

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

image.png


第二步:执行模型格式转换

接下来,我们将使用 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 的文件,标志着格式转换的成功完成。

image.png


第三步:创建 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|>"

这段配置代码不仅定义了模型的加载路径,还通过精巧的模板设计实现了用户与助手角色之间的自然对话切换,同时设置了多个停用词以优化生成效果。

image.png


第四步:导入模型至 ollama

完成上述准备工作后,我们可以使用 ollama create 命令将模型正式导入到 ollama 中。在这里,我们为模型赋予了一个自定义名称 my_DeepSeek-R1-Distill-Qwen-7B,以便于后续调用。

ollama create my_DeepSeek-R1-Distill-Qwen-7B -f Modelfile

image.png

执行完成后,运行以下命令查看模型是否成功导入:

ollama list

如果一切顺利,您将在列表中看到刚刚创建的模型名称。

image.png


第五步:运行模型

最后,启动模型并体验其强大的推理能力。只需运行以下命令即可:

ollama run my_DeepSeek-R1-Distill-Qwen-7B:latest

此刻,模型已整装待发,随时准备响应您的提问或协助完成复杂的任务。

image.png


注意:llama.cpp可能只支持纯文本模型的转换。我尝试转换deepseek-vl2-tiny模型时报错。

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值