在本地部署大语言模型时,Ollama 凭借简洁的交互体验成为热门选择,但它主要支持 GGUF 格式模型;而 Hugging Face 平台的模型多为 PyTorch(.safetensors/.bin)格式,需经过格式转换才能适配 Ollama。
本文将详细拆解从 Hugging Face 模型获取、格式转换到 Ollama 加载运行的全流程。
在开始转换前,需确保环境和文件齐全,避免后续操作卡顿。
ollama -v 验证是否正常)。llama-cpp-win64.zip;若显卡支持 CUDA,可选带 cuda 后缀的版本)。

从 Hugging Face 下载目标模型(以常见的 .safetensors 格式为例),确保文件夹(如 D:\DongPo)包含以下核心文件:
model-00001-of-00004.safetensors、model.safetensors.index.json;tokenizer.json、tokenizer_config.json;config.json(部分模型含 generation_config.json)。注意:若模型文件夹含 Git 合并冲突标记(如
<<<<<<< HEAD)的文件(如README.md、model_card.yaml),需先删除冲突标记,否则后续转换会触发 YAML 解析错误。
GGUF 是 Ollama 支持的主流格式,转换过程依赖 llama.cpp 的脚本,需严格按步骤执行。
将下载的 llama-cpp解压到简单路径(如 D:\llama),确保文件夹内有转换脚本(如 convert_hf_to_gguf.py)和量化工具(quantize.exe`);

打开命令提示符(CMD),进入文件夹里
转换脚本需依赖 torch、transformers 等库,在命令提示符中执行安装命令(联网状态下):
pip install torch transformers sentencepiece mistral-common
若提示 “ModuleNotFoundError: No module named 'mistral_common'”,
补充执行 pip install mistral-common -i https://pypi.tuna.tsinghua.edu.cn/simple(国内源加速)。
在 llama.cpp 目录下,执行转换命令,将 Hugging Face 模型,这里我以https://huggingface.co/QingYuYunTu/DongPo1.5这个模型为例,是基于Qwen3-8B微调的苏东坡角色扮演大模型,我们下载好模型文件存放在(`D:\DongPo1.5`),现在将其转为 GGUF 格式,输出到模型文件夹(如 D:\DongPo1.5\model.gguf):
python convert_hf_to_gguf.py D:\DongPo1.5 --outfile D:\DongPo1.5\model.gguf
blk.35.ffn_gate.weight, torch.bfloat16 --> F16),耐心等待完成(耗时取决于模型大小,如 7B 模型约 5-10 分钟)。
若电脑配置一般(如 8GB 内存),建议对 GGUF 模型进行量化(降低精度,平衡性能与体积),常用 q4_0 格式(兼顾精度和速度): 进入前面下载好的llama-cpp-win64.zip,(不是源码llama cpp)`解压后在目录下执行量化命令:
llama-quantize.exe D:\DongPo1.5\model.gguf D:\DongPo1.5\model-q4_0.gguf q4_0
model-q4_0.gguf(如 7B 模型量化后体积从 13GB 降至 4GB 左右),后续优先使用量化模型加载。转换出 GGUF 模型后,需通过 Modelfile 配置 Ollama 加载规则,确保交互格式匹配。
在模型文件夹(D:\DongPo1.5)中创建或修改 Modelfile(用记事本打开),核心配置如下:
# 指向量化后的 GGUF 模型(未量化则写 FROM model.gguf)
FROM model-q4_0.gguf
# 定义对话模板(适配模型交互格式,避免输出错乱)
TEMPLATE """{{ if .System }}System: {{ .System }}<|im_end|>
{{ end }}{{ range .Messages }}{{ if eq .Role "user" }}Human: {{ .Content }}<|im_end|>
Assistant:{{ else if eq .Role "assistant" }}{{ .Content }}<|im_end|>
{{ end }}{{ end }}"""
# 设置停止符(与模板中的 <|im_end|> 对应,避免模型无意义输出)
PARAMETER stop "<|im_end|>"
# 配置上下文长度(根据模型支持的最大长度设置,如 4096、8192)
PARAMETER num_ctx 4096
Human:/Assistant:/<|im_end|> 需与模型训练时的格式一致,若模型原格式为 User:/Bot:,需对应修改。在命令提示符中进入模型文件夹(D:\DongPo),执行 ollama create 命令构建模型(dongpo 为自定义模型名,可修改):
cd D:\DongPo1.5
ollama create DongPo1.5 -f Modelfile

执行以下命令启动模型交互:
ollama run dongpo1.5
或者直接客户端

直接对话,我们可以看到返回了结果。

llama-cpp-win64.zip,解压到简单路径(如 D:\llama),确保 convert_hf_to_gguf.py 和 quantize.exe 在目录内。<<<<<<< HEAD)的文件。解决方案:找到含冲突标记的文件(如 README.md),删除冲突内容,保留正常键值对(如 language: zh)。Modelfile 模板与模型格式不匹配。解决方案:核对模型原训练格式(参考 Hugging Face 模型页面的 “Usage” 部分),修改模板中的角色名(如 Human: 改为 User:)和停止符。Ollama 确实支持直接加载主流架构的 .safetensors 模型(如 Qwen、Llama、Mistral 等),无需复杂转换,对新手极为友好 —— 只需通过 Modelfile 写一句 FROM . 就能快速构建模型,这是最便捷的 “开箱即用” 方案。
但我们仍需掌握 “llama.cpp 转 GGUF + 量化” 的复杂流程,核心原因在于 两种方式适配不同场景需求:
llama.cpp 转为 GGUF 格式,才能被 Ollama 识别加载;
.safetensors 模型时,体积通常较大(如 8B 模型约 16GB),低配置电脑(8GB 内存)运行易卡顿;而通过 llama.cpp 量化为 q4_0 等格式后,体积可压缩至原大小的 1/3~1/2(8B 模型降至 5GB 左右),同时兼顾运行速度,更适合本地轻量化部署;
llama.cpp 转换时可自定义权重精度(如 F16/F32)、量化等级(q2_k~q8_0),还能手动调整分词器规则,相比 Ollama 直接加载的 “默认配置”,更适合对模型性能、精度有特定要求的场景。简言之:若你用的是 Ollama 官方支持的主流模型(如本次的 Qwen 微调模型),优先选 “直接加载”;若遇到小众模型、低配置设备,或需精细优化性能,“llama.cpp 转 GGUF + 量化” 仍是不可替代的方案。两种方式各有价值,根据实际需求选择即可,前期的尝试也为后续应对复杂场景打下了基础。