导航

Ollama 运行 GGUF 模型

Posted on 2024-03-10 10:02  蝈蝈俊  阅读(2277)  评论(0编辑  收藏  举报

Ollama 默认直接支持很多模型,只需要简单的使用 ollama run命令,示例如下:

ollama run gemma:2b

就可安装、启动、使用对应模型。

通过这样方式直接支持的模型我们可以通过https://ollama.com/library 找到。

https://huggingface.co/models上有数万的模型,Ollama 默认支持的不可能全部覆盖,那如何支持其它模型呢?

模型选择

这里我们选择个:无内容审核的大模型:CausalLM-14B(https://huggingface.co/TheBloke/CausalLM-14B-GGUF

它是在Qwen-14B基础上使用了 Qwen-14B 的部分权重,并且加入一些其他的中文数据集,最终炼制了一个无内容审核的大模型版本,经过量化后可以在本地运行,保证了用户的隐私。

考虑到本地机器的配置,我们选用7B的这个版本来演示:
https://huggingface.co/TheBloke/CausalLM-7B-GGUF

有关GGUF类型文件的说明,请看:GGUF类型模型文件

我们这里使用: causallm_7b.Q5_K_S.gguf 模型文件,作者对这个版本的评价是: large, low quality loss - recommended

直接下载这个文件到本地即可。

Ollama 加载GGUF模型文件

使用 Ollama 加载指定的模型文件运行也非常容易。

1、创建模型配置文件

创建一个包含以下内容的模型配置文件,比如: causallm7bq5.mf 这个文件名,文件内容如下:

FROM ./causallm_7b.Q5_K_S.gguf

这里的FROM参数用于指定需要加载的具体模型文件。

2、构建对应的Ollama模型

我们使用以下命令构建 Ollama 模型:

cd \github\ollama

ollama create c7b -f ./causallm7bq5.mf

其中 c7b 是我们准备在Ollama中使用该模型的别名。

这个命令的参数解释如下:

ollama create choose-a-model-name -f <location of the file e.g. ./Modelfile>

3、使用这个模型

现在我们就可以使用了,由于是无内容审核的模型,我们可以发挥自己的想象:

ollama run c7b "请写一个情色幽默笑话"

您得到的结果将与我得到的结果不同,因为这些模型是随机的,下面是我在其中一次尝试中得到的输出:

不同的尝试,会有不同的惊喜,
考虑到训练数据,使用不同的关键字Prompt效果会完全不一样。

模型配置常见的参数

我们先来看看已有模型的Modelfile文件,通过学习它们来了解模型配置。

查看默认模型的底层Modelfile

使用 ollama show 打印任何本地模型的 Modelfile ,如下所示:

ollama show --modelfile gemma:2b

这个命令输出结果:

# Modelfile generated by "ollama show"
# To build a new Modelfile based on this one, replace the FROM line with:
# FROM gemma:2b

FROM C:\Users\Administrator\.ollama\models\blobs\sha256-c1864a5eb19305c40519da12cc543519e48a0697ecd30e15d5ac228644957d12

TEMPLATE """<start_of_turn>user
{{ if .System }}{{ .System }} {{ end }}{{ .Prompt }}<end_of_turn>
<start_of_turn>model
{{ .Response }}<end_of_turn>
"""

PARAMETER repeat_penalty 1
PARAMETER stop "<start_of_turn>"
PARAMETER stop "<end_of_turn>"

Modelfile 指令介绍

上面的例子中,涉及到下面几个指令:

FROM (必需)

FROM 指令定义创建模型时要使用的基本模型。
这里可以使用绝对路径或相对路径的文件名,也可以指定模型名和TAG标签,下面几种都行:

FROM <model name>:<tag>
FROM llama2
FROM ./ollama-model.bin

TEMPLATE

TEMPLATE 要传递到模型的完整提示模板。它可以包括(可选)系统消息、用户消息和模型的响应。注意:语法可能特定于模型。模板使用 Go 模板语法。

详细的可以看 https://github.com/ollama/ollama/blob/main/docs/modelfile.md#template

PARAMETER

PARAMETER 指令定义了模型运行时可以设置的参数。

PARAMETER <parameter> <parametervalue>

上面示例中涉及的参数介绍:

  • stop 设置要使用的停止序列。当遇到此模式时,LLM 将停止生成文本并返回。可以通过在模型文件中指定多个单独的 stop 参数来设置多个停止模式。
  • repeat_penalty 设置惩罚重复的强度。较高的值(例如,1.5)将对重复进行更严厉的惩罚,而较低的值(例如,0.9)将更宽松。 (默认值:1.1)

更多的参数可以看: https://github.com/ollama/ollama/blob/main/docs/modelfile.md#valid-parameters-and-values

总结

通过简单的命令 ollama run,我们可以迅速安装、启动和使用各种支持的模型。对于Ollama不直接支持的模型,我们可以通过设置模型配置文件来加载。这展示了Ollama的强大之处,使我们能够方便地探索和利用各种模型,为各种应用场景找到最合适的解决方案。