ollama 使用技巧集锦

模型所在磁盘空间不足了怎么办?

Windows

Windows 下Ollama 默认使用系统盘(一般为C盘)来存放模型文件,

模型文件普遍又比较大,有没有办法移动别的盘?

先来看看帮助信息,

ollama.exe serve --help

返回

Start ollama

Usage:
  ollama serve [flags]

Aliases:
  serve, start

Flags:
  -h, --help   help for serve

Environment Variables:

    OLLAMA_HOST         The host:port to bind to (default "127.0.0.1:11434")
    OLLAMA_ORIGINS      A comma separated list of allowed origins.
    OLLAMA_MODELS       The path to the models directory (default is "~/.ollama/models")
    OLLAMA_KEEP_ALIVE   The duration that models stay loaded in memory (default is "5m")

从帮助文件可以看,我们通过设置环境变量(OLLAMA_MODELS)来指定模型目录,可以通过系统设置里来配置环境变量(系统变量或者用户变量)

设置环境变量

也可以通过命令行来配置

set OLLAMA_MODELS=d:\ollama

Linux 和mac下

默认地址是~/.ollama/models, 如果想移到别的目录,

同样是设置环境变量OLLAMA_MODELS

export OLLAMA_MODELS=/data/ollama

导出某个模型

这里以qwen:7b为例,先查看模型信息,

ollama show --modelfile qwen:7b

返回

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

FROM /Users/m2max/.ollama/models/blobs/sha256-87f26aae09c7f052de93ff98a2282f05822cc6de4af1a2a159c5bd1acbd10ec4
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>{{ end }}<|im_start|>user
{{ .Prompt }}<|im_end|>
<|im_start|>assistant
"""
PARAMETER stop "<|im_start|>"
PARAMETER stop "<|im_end|>"

从模型文件信息里得知 /Users/m2max/.ollama/models/blobs/sha256-46bb65206e0e2b00424f33985a5281bd21070617ebcfda9be86eb17e6e00f793 即为我们想要的qwen:7b (格式为gguf),导出代码为

cp /Users/m2max/.ollama/models/blobs/sha256-46bb65206e0e2b00424f33985a5281bd21070617ebcfda9be86eb17e6e00f793 qwen_7b.gguf

Windows下 运行

 ollama.exe show --modelfile qwen:7b

返回

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

FROM C:\Users\steven\.ollama\models\blobs\sha256-87f26aae09c7f052de93ff98a2282f05822cc6de4af1a2a159c5bd1acbd10ec4
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>{{ end }}<|im_start|>user
{{ .Prompt }}<|im_end|>
<|im_start|>assistant
"""
PARAMETER stop "<|im_start|>"
PARAMETER stop "\"<|im_end|>\""

导出代码为

copy C:\Users\steven\.ollama\models\blobs\sha256-87f26aae09c7f052de93ff98a2282f05822cc6de4af1a2a159c5bd1acbd10ec4 qwen_7b.gguf

如何导入模型

如何下载网上的某个模型

可以从hugggingface.co 或者镜像网站hf-mirror.com 下载所需gguf格式的大模型(不然得自己转) 假设我们要下载的是这两天大火的斯坦福的模型Octopus-v2, 搜Octopus-v2,找有GGUF标识的,

手动下载模型

比如我们选择个链接 brittlewis12/Octopus-v2-GGUF at main 下载octopus-v2.Q8_0.gguf

如何导入模型

需要准备Modelfile文件

From /path/to/qwen_7b.gguf

上面是最简单的办法 当然可以从上面模型信息生成完成版本的Modelfile

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

FROM /path/to/qwen_7b.gguf
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>{{ end }}<|im_start|>user
{{ .Prompt }}<|im_end|>
<|im_start|>assistant
"""
PARAMETER stop "<|im_start|>"
PARAMETER stop "\"<|im_end|>\""

记得替换你的模型的完整路径 另外不同模型的template 和 stop parameter不同,这个不知道就不写,或者网上搜索 然后执行

ollama create qwen:7b -f Modelfile

导入自己下载的模型

导入模型的时候,确保硬盘可用空间在模型大小的2倍以上,

transferring model data 复制一个完整的模型creating model layer  生成一个新的模型文件,和原来模型大小一样, 结束后会删除掉?生成一个很小的layer文件

第三方应用如何访问ollama

ollama提供了OpenAI的兼容API 这里以沉浸式翻译为例 需要设置环境变量 OLLAMA_ORIGINS 接受的设置为

'*' 或者包括 http://,https://,chrome-extension://,safari-extension://,moz-extension://,ms-browser-extension://

使用*, 意味着任何应用都可以访问ollama,如果你没有特别的要求,可以考虑用它。

OLLAMA_ORIGINS=*

沉浸式翻译配置ollama API

试试,我用的qwen:14b,效果还可以吧?

翻译效果

15 个赞

这些名字后面的K_MK_S都是啥意思?

感谢教程,自己也能尝试了

感谢教程

感谢教程,可以用ollama没有的模型了,之前一直以为不能搞

感谢教程

K_S, K_M, K_L 分别表示上下文短、中和长

特意网上搜了下,放这里供参考
带有 ‘q3’、‘q4’、‘q5’ 和 ‘q6’ 的版本表示不同的量化水平,这影响了性能和计算效率之间的平衡。

量化版本 (q3, q4, q5, q6):

  • 表示量化水平,平衡性能和效率。
  • 示例:7b-instruct-q3_K_S7b-instruct-q4_K_M 等。

上下文长度变化 (K_S, K_M, K_L):

  • ‘K’ 指的是上下文长度。
  • ‘S’、‘M’ 和 ‘L’ 分别代表小、中和大尺寸。

推荐选择:

  • q4_K_M 通常是性能和计算效率之间一个很好的平衡,适合大多数应用场景。当然,为了获得最佳结果,你应该选择 q6

来自 Mistral 7B: Best Open Source LLM So Far

CSDN找到一份更细的,但似乎略有出入

查看 TheBloke/Llama-2–13B-chat-GGML 存储库中的文件,我们可以看到 14 种不同的 GGML 模型,对应于不同类型的量化。它们遵循特定的命名约定:“q”+ 用于存储权重的位数(精度)+ 特定变体。以下是所有可能的量化方法及其相应用例的列表,基于 TheBloke 制作的模型卡中的描述,针对llama2模型架构:

  • q2_k:将 Q4_K 用于 attention.vw 和 feed_forward.w2 张量,Q2_K用于其他张量。
  • q3_k_l:将 Q5_K 用于 attention.wv、attention.wo 和 feed_forward.w2 张量,否则Q3_K
  • q3_k_m:将 Q4_K 用于 attention.wv、attention.wo 和 feed_forward.w2 张量,否则Q3_K
  • q3_k_s:将Q3_K用于所有张量
  • q4_0:原始量化方法,4 位。
  • q4_1:精度高于q4_0但不如q5_0。但是,与 q5 模型相比,推理速度更快。
  • q4_k_m:将 Q6_K 用于一半的 attention.wv 和 feed_forward.w2 张量,否则Q4_K
  • q4_k_s:将Q4_K用于所有张量
  • q5_0: 原始量化方法,5位。精度更高,资源使用率更高,推理速度更慢。
  • q5_1:精度高于q5_0但不如q6_k。但是,与 q6 模型相比,推理速度更快。
  • q5_k_m:将 Q6_K 用于一半的 attention.wv 和 feed_forward.w2 张量,否则Q5_K
  • q5_k_s:将Q5_K用于所有张量
  • q6_k:将Q8_K用于所有张量
  • q8_0:与浮点数16几乎无法区分。资源使用率高,速度慢。不建议大多数用户使用。

根据经验,我建议使用 Q5_K_M,因为它保留了模型的大部分性能。或者,如果要节省一些内存,可以使用 Q4_K_M。一般来说,K_M版本比K_S版本更好。我不推荐 Q2 或 Q3 版本,因为它们会大大降低模型性能。

来自 GGML 或GGUF的14种不同量化模式说明-CSDN博客

2 个赞

多谢分享。

1 个赞

量化方式, KM 比较好

KM是啥,kimi吗

感谢大佬

指出一些坑:

如果你在linux 按照 Manual install方式安装,也就是运行过
sudo useradd -r -s /bin/false -m -d /usr/share/ollama ollama
再采用ollama serve方式启动,ollama模型会存在两个不同的目录,会有两个ollama,启动时会冲突。因为Sudo useradd 是一个用户组,而ollama serve默认当前用户组。所以运行了Sudo useradd之后得采用 Sudo systemctl start ollama方式启动。

One liner方式 curl -fsSL https://ollama.com/install.sh | sh 加ollama serve方式启动,会不会出现这个,不了解。

Window方式不了解。可以参考楼主的。

Linux下安装可以参考这个,坑都填了:

很友好。

根据我前面找到的资料K_M应该表示中等长度上下文的意思

我这里没有提啥Linux下如何安装

这个安装没有必要管理员权限

大佬有没有oracle存储过程转posgresql存储过程的模型推荐?

没有做过研究

指出下我当时装的时候碰到的坑。当时我是ollama小白不知道ollama serve啥意思。不过ollama确实还行,比gpt4all和LM studio好多了,这两个我是没装成。

1 个赞

我mac下体验了下GPT4ALL就放弃了

LM Studio 需要特殊手段来下载模型,或者手动安装模型, 具体可以参考另外一篇文章了

https://mp.weixin.qq.com/s?__biz=MzU1NTg2ODQ5Nw==&mid=2247489357&idx=1&sn=1ee778df794ae236f1b87910ee80e9e6&chksm=fbcc9f73ccbb166511a6f156c799d8d697b58e7946ecaeee892b1564b7b37573bf560eb45d15&token=2012613442&lang=zh_CN#rd

多谢。LM Studio我之前手动导模型也试了,报42号错误,需要Ubuntu 22.04及以上

多谢,太有用啦 :crazy_face: