如何在本地使用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 构建一个网页界面。

相关推荐
薛定猫AI21 小时前
【深度解析】Claude Auto Dream:从“短期对话”到“项目级心智模型”的记忆系统升级
人工智能·chatgpt
启山智软21 小时前
【智能商城系统技术架构优势】
java·spring·开源·商城开发
迷藏49421 小时前
# 发散创新:基于Solidity的NFT智能合约设计与部署实战在区块链技术飞速发展
java·区块链·智能合约
大数据AI人工智能培训专家培训讲师叶梓21 小时前
AI开始改写自己的进化规则:Meta超智能体研究解析
人工智能·大模型·agi·智能体·人工智能讲师·大模型讲师
Mr.Cheng.21 小时前
Knowledge Neurons in Pretrained Transformers
人工智能
tq108621 小时前
从对象互操作性角度分析 `from` 与 `to` 方法的选择
java
Ai财富密码21 小时前
AI生成大屏可视化:数据智能驱动下的高维洞察与决策中枢
开发语言·人工智能·python·sdd
高洁0121 小时前
基于知识图谱的故障推理方法与算法
人工智能·机器学习·数据挖掘·transformer·知识图谱
薛定猫AI21 小时前
【一键配置】优雅使用Claude Code:从安装到上手的完整教程
人工智能·arcgis·编辑器·vim
叫我菜菜就好21 小时前
【AI Agent】什么是AI Agent?如何做一个自己的智能体
人工智能