如何在本地使用Ollama运行 Hugging Face 模型

你是否曾经在 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 的文件,内容如下:

bash 复制代码
FROM ./gemma-2-9b-it-Q6_K_L.gguf

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

步骤 3:在 Ollama 中创建模型

在同一个文件夹中运行:

lua 复制代码
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. 安装先决条件

bash 复制代码
uv pip install huggingface_hub   # 或者直接用 pip install

为你的操作系统安装 Ollama:

macOS下载链接

Linux

bash 复制代码
curl -fsSL https://ollama.com/install.sh | sh

WindowsOllamaSetup.exe

克隆仓库:

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

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

python 复制代码
# 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"
)

运行它:

bash 复制代码
python download.py
3. 转换为 GGUF
css 复制代码
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

python 复制代码
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,
)

别忘了:

js 复制代码
export HUGGING_FACE_HUB_TOKEN=<输入你的 hugging face token>
python upload.py

最后的话

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

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

相关推荐
Java_SuSheng2 分钟前
关于SQLite轻量数据库的研究
java·数据库·spring boot·sqlite·mybatis
程序员洲洲8 分钟前
3款顶流云电脑与传统电脑性能PK战:START云游戏/无影云/ToDesk云电脑谁更流畅?
ai·大模型·todesk·性能·云电脑·ollama
进来有惊喜18 分钟前
OpenCV 图像拼接
人工智能·opencv·计算机视觉
qq_4476630522 分钟前
Spring-注解编程
java·后端·spring
士兵木木25 分钟前
类头文件相互包含的问题
java·开发语言
Warren9826 分钟前
Springboot项目正常启动,访问资源却出现404错误如何解决?
java·spring boot·spring
烁34732 分钟前
每日一题(小白)暴力娱乐篇30
java·数据结构·算法·娱乐
Better Rose3 小时前
【2025年泰迪杯数据挖掘挑战赛】B题 完整论文 模型建立与求解
人工智能·数据挖掘
一一Null3 小时前
Android studio 动态布局
android·java·android studio
假女吖☌3 小时前
Maven 编译指定模版
java·开发语言·maven