如何在本地使用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

• Windows :OllamaSetup.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

你也可以使用:

  • f16 或 f32 获得最佳质量
  • q4_0 、q6_K_L 或 q8_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 构建一个网页界面。

相关推荐
tellmewhoisi几秒前
机器学习:集成学习4(XGBoost前置知识泰勒展开式1)
人工智能·机器学习·集成学习
An独行者几秒前
融合生长阶段信息的深度学习:冬小麦叶片氮含量无人机高光谱估算新方法
人工智能·深度学习·无人机
gnsnswa1 分钟前
回归岗位价值:CAIE 认证适合人群与能力定位
人工智能·网络协议·职场和发展·产品经理·创业创新·信息与通信·ai写作
ZaferLiu2 分钟前
我给自家 RAG 装了一道 Jev 闸门:从设计到上线的完整实录
人工智能
深入云栈2 分钟前
Netty 4.2.x 源码深度解析 (十四):KQueue 传输 —— macOS 高性能 IO 的 Netty 实现
java·后端
柒和远方3 分钟前
DocResearch 项目面试:把每个模块讲明白,而不是背术语
python·llm·agent
爱签AI电子合同4 分钟前
电子合同大批量怎么测?并发与批量处理维度专项测评
服务器·数据库·人工智能·企业微信·电子签名
信誓旦旦的程序猿5 分钟前
【Python 量化取数指南 #13】Python 把行情落库:sqlite 一键存,回测随用随取
java·python·股票数据api·股票数据·股票数据api接口·股票api数据接口·股票量化数据api
johnsong6 分钟前
当AI Agent遇见治理革命
人工智能
AI酒旅实战开发6 分钟前
拆解一个AI旅游Agent的完整技术栈:从前端对话到MCP到支付
人工智能·旅游