你是否曾经在 Hugging Face 上发现了一个超棒的模型,然后幻想着能在自己的笔记本电脑上离线运行它,还能通过一个清爽的 API 让你的应用轻松访问?

别担心,你不是一个人!我们很多人都曾在 Hugging Face 上发现过令人惊叹的模型,结果发现它们并不能直接与 Ollama 配合使用。Ollama 可是一个在本地快速简单地运行 LLM 的绝佳工具。

但好消息是:

只需要几个简单的步骤,你就能把几乎任何 Hugging Face 模型转换成 Ollama 能理解的格式 —— GGUF,然后像专业人士一样在本地运行它。

让我们来详细分解这个过程。
在这里插入图片描述

为什么要使用 Ollama?

Ollama 让本地模型服务变得轻而易举:

  • 简单的命令行界面:一个命令就能搞定。
  • 内置 REST API:轻松集成到应用中。
  • 快速模型切换:得益于其基于 GGUF 的模型交换机制。
  • 离线支持:无需依赖云基础设施。

你只需要一个 Hugging Face 模型和一点点设置就能开始。

工作流程概述

以下是我们要做的步骤:

1. 找到或创建一个 GGUF 版本的 Hugging Face 模型

2. 编写一个 Modelfile 来定义 Ollama 如何加载它

3. 在 Ollama 中创建模型

4. 在本地运行并与之交互

5. (可选)如果没有现成的 GGUF 版本,自己转换一个

6. (可选)将你的 GGUF 模型上传回 Hugging Face

步骤 1:找到模型的 GGUF 版本

许多热门模型已经有了 GGUF 版本。只需在 Hugging Face 上搜索你的模型,寻找带有 .gguf 标签的变体。

例如,对于 Gemma 2 9B IT 模型,我们可以下载:

gemma-2-9b-it-Q6_K_L.gguf
小贴士

量化程度越高(如 Q4)= 文件越小,性能越差

量化程度越低(如 Q6_K_L)= 输出质量越好,文件越大

步骤 2:编写 Modelfile

这就像是模型的 Dockerfile。

在你的目录中创建一个名为 Modelfile 的文件,内容如下:

FROM ./gemma-2-9b-it-Q6_K_L.gguf

这告诉 Ollama 使用哪个 GGUF 文件。

步骤 3:在 Ollama 中创建模型

在同一个文件夹中运行:

ollama create gemma-2-9b-it -f Modelfile
步骤 4:检查模型是否存在

列出所有可用模型:

ollama list

你应该能在列表中看到你的新模型。

步骤 5:运行模型

现在,开始与你的本地模型对话:

ollama run gemma-2-9b-it

你可以直接与它交互,或者使用 Ollama 的 REST API 进行编程访问。

如果没有 GGUF 版本怎么办?

别担心 —— 你可以自己转换

以下是具体步骤:

步骤 6:将 Hugging Face 模型转换为 GGUF

按照这个教程(原作者是 samos123):

1. 安装先决条件

uv pip install huggingface_hub   # 或者直接用 pip install

为你的操作系统安装 Ollama:

macOS下载链接

Linux

curl -fsSL https://ollama.com/install.sh | sh

WindowsOllamaSetup.exe

克隆仓库:

git clone https://github.com/ggerganov/llama.cpp.git
uv pip install -r llama.cpp/requirements.txt
2. 下载 Hugging Face 模型

创建一个简单的下载脚本:

# download.py
from huggingface_hub import snapshot_download

model_id = "google/gemma-2-9b-it"
snapshot_download(
    repo_id=model_id,
    local_dir="gemma-2-9b-it",
    local_dir_use_symlinks=False,
    revision="main"
)

运行它:

python download.py
3. 转换为 GGUF
python llama.cpp/convert.py gemma-2-9b-it \
  --outfile gemma-2-9b-it.gguf \
  --outtype q6_K_L

你也可以使用:

  • f16f32 获得最佳质量
  • q4_0q6_K_Lq8_0 获得更小的模型(不同的量化模式,见上文)
(可选)上传到 Hugging Face

如果你想分享它,使用这个脚本:

nano upload.py

from huggingface_hub import HfApi

api = HfApi()

model_id = "your-username/your-model-name"

api.create_repo(model_id, exist_ok=True, repo_type="model")
api.upload_file(
    path_or_fileobj="gemma-2-9b-it.gguf",
    path_in_repo="gemma-2-9b-it.gguf",
    repo_id=model_id,
)

别忘了:

export HUGGING_FACE_HUB_TOKEN=<输入你的 hugging face token>
python upload.py

最后的话

有了 Ollama 和 GGUF 格式,你再也不用依赖昂贵的云 API 来尝试强大的 LLM 了。无论你是想实验、构建应用还是测试模型 —— 这个设置都能让你完全掌控,离线且私密。

如果你有兴趣,可以尝试同时运行多个模型,在它们之间自动切换,或者使用 Streamlit 或 FastAPI 构建一个网页界面。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐