你是否曾经在 Hugging Face 上发现了一个超棒的模型,然后幻想着能在自己的笔记本电脑上离线运行它,还能通过一个清爽的 API 让你的应用轻松访问?
别担心,你不是一个人!我们很多人都曾在 Hugging Face 上发现过令人惊叹的模型,结果发现它们并不能直接与 Ollama 配合使用。Ollama 可是一个在本地快速简单地运行 LLM 的绝佳工具。
但好消息是:
只需要几个简单的步骤,你就能把几乎任何 Hugging Face 模型转换成 Ollama 能理解的格式 ------ GGUF,然后像专业人士一样在本地运行它。
让我们来详细分解这个过程。
为什么要使用 Ollama?
Ollama 让本地模型服务变得轻而易举:
- 简单的命令行界面:一个命令就能搞定。
- 内置 REST API:轻松集成到应用中。
- 快速模型切换:得益于其基于 GGUF 的模型交换机制。
- 离线支持:无需依赖云基础设施。
你只需要一个 Hugging Face 模型和一点点设置就能开始。
工作流程概述
以下是我们要做的步骤:
-
找到或创建一个 GGUF 版本的 Hugging Face 模型
-
编写一个 Modelfile 来定义 Ollama 如何加载它
-
在 Ollama 中创建模型
-
在本地运行并与之交互
-
(可选)如果没有现成的 GGUF 版本,自己转换一个
-
(可选)将你的 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 构建一个网页界面。