1. Ollama 导入模型

为什么要导入模型? 当然是 Ollama 官方模型仓库找不到需要的模型. 导入到 Ollama 模型可以被 Ollama 和其他模型一样进行统一话的运行和管理; Ollama 支持 三种方式导入模型:

本文要介绍的第三种, 即导入一个 GGUF 架构的模型.

虽然 Ollama 支持导入 Safetensors 架构的模型但是有限制, 目前仅支持基于以下架构的模型:

  • Llama (including Llama 2, Llama 3, Llama 3.1, and Llama 3.2);
  • Mistral (including Mistral 1, Mistral 2, and Mixtral);
  • Gemma (including Gemma 1 and Gemma 2); and
  • Phi3

Warning

尽管 Ollama 也建议可以利用 Llama.cpp 的 convert_hf_to_gguf.py 将 Safetensors 架构的模型转化为 GGUF 架构然后进行导入, 但是convert_hf_to_gguf.py本身也有限制并不是所有 huggingface 的 Safetensors 模型都可以转换.

2. 导入模型

2.1 下载模型

下载模型常用的模型仓库是 HuggingFace, 假设需要需要导入的模型是: nomic-embed-text-v1.5.f32.gguf, 这个模型是做文本的 embedding.

1
curl -L -O https://huggingface.co/nomic-ai/nomic-embed-text-v1.5-GGUF/resolve/main/nomic-embed-text-v1.5.f32.gguf

2.3 创建模型文件

进入上一步下载的模型目录, 创建一个符合 Ollama 规则的模型文件(Modelfile)

1
FROM ./nomic-embed-text-v1.5.f32.gguf

Note

Ollama 模型文件支持更多的指令, 详情可以参考: Ollama Model File

2.4 导入

执行 Ollama 创建命令导入模型:

1
2
3
4
5
6
7
8
9
10
11
➜  nomic-embed-text-v1.5-GGUF ollama create nomic-embed-text-v1.5
gathering model components
copying file sha256:ed3a84b570c5513bfd6bfe0ed4cdc8d5a5de5c6b5029fbbc2822d59fc893c1f8 100%
parsing GGUF
using existing layer sha256:ed3a84b570c5513bfd6bfe0ed4cdc8d5a5de5c6b5029fbbc2822d59fc893c1f8
writing manifest
success

➜ nomic-embed-text-v1.5-GGUF ollama list
NAME ID SIZE MODIFIED
nomic-embed-text-v1.5:latest dcc702a536e7 547 MB 22 seconds ago

2.5 测试验证

1
2
3
4
5
6
➜  curl http://localhost:11434/api/embeddings -d '{
"model": "nomic-embed-text",
"prompt": "The sky is blue because of Rayleigh scattering"
}'

{"embedding":[0.5889000296592712,0.40076082944869995,-3.3031301498413086,-0.5259976387023926,0.7489880323410034,1.5186257362365723......

3. 总结

:warning: AI 生成

通过本文,我们详细介绍了如何在 Ollama 中导入 GGUF 架构的模型,并通过实际操作展示了从下载模型到导入及验证的完整流程。Ollama 的灵活性使得我们能够轻松扩展其模型库,当官方仓库中找不到所需模型时,我们可以通过导入其他架构的模型来满足需求。

在实际应用中,推荐大家优先从 HuggingFaceModelScope 等平台寻找需要的模型,这两大平台提供了丰富的开源模型资源。如果你对 Ollama 的模型导入和使用 vit 有更多的问题,欢迎随时交流与探讨!

希望这篇博客能帮助你更好地了解 Ollama 的模型导入功能,同时也为你的 AI 应用开辟更多可能性!感谢你的阅读!