目录

Ollama 模型自定义与微调实战指南:从 GGUF 导入到 LoRA 调优

Ollama 的轻量化部署能力让很多人开始探索如何接入自己的定制模型。这篇文章是我在实战中整理的完整流程,包括自定义模型导入、角色提示调校、LoRA 精调量化优化等。如果你也想用 Ollama 做个 Mario、Siri、天线宝宝模型,或者训练自己的客服机器人,那就别错过了。

Ollama 支持直接从 GGUF 格式模型导入,我们可以通过一个 Modelfile 自定义模型配置:

# 创建 Modelfile
FROM ./your-model.gguf

然后运行以下命令创建模型:

ollama create your-model-name -f Modelfile
ollama run your-model-name

这个过程其实很简单,唯一要注意的是路径别写错,.gguf 模型要和 Modelfile 在同一目录,或者使用绝对路径。

如果你还没下载好模型文件,可以参考这篇 ollamaollama-start,教你怎么获取开源模型。


我们可以通过修改 Modelfile 来定制系统级提示(system prompt),比如让 LLaMA2 扮演“超级马里奥”:

FROM llama2
PARAMETER temperature 1
SYSTEM "你是超级马里奥,用角色身份回答问题"

然后一样:

ollama create mario -f Modelfile
ollama run mario

这个方法特别适合做角色扮演 Bot,或者统一语气风格的客服模型。和微调比起来,门槛低很多,但效果在一些场景也够用了。


如果你对提示调教不过瘾,想“改模型脑回路”,那 LoRA 微调是目前成本最低的方案。

  • NVIDIA RTX 3090 / 4090,建议显存 24GB+
  • Python 环境,安装依赖:
pip install torch transformers peft
curl -fsSL https://ollama.com/install.sh | sh

确保 CUDA 可用,否则后面全白搭。


  1. 克隆仓库并安装:
git clone https://github.com/hiyouga/LLaMA-Factory.git
pip install -e .[metrics]
  1. 数据格式如下(JSONL 格式):
[
  {
    "instruction": "问题文本",
    "input": "补充信息",
    "output": "期望答案"
  }
]

并注册到 dataset_info.json 中:

"your_dataset": {"file_name": "data.json"}
  1. 启动微调(命令行方式):
python src/train_bash.py --model_name_or_path llama3-8b --dataset your_dataset --lora_rank 8
  1. 或者用 WebUI 方式:
python src/webui.py

界面上点点点就能启动训练,适合不熟命令行的同学。


原始 70B 模型需要 350GB 显存?搞笑呢!咱们直接上 4-bit 量化版本:

./quantize your-model.f32.gguf your-model.q4.gguf Q4_K

这个 .gguf 就能直接接入 Ollama。

补充:想了解如何把微调后的模型接入推理,也可以看看这篇 text-generation-webui部署最新教程


Windows 上 Ollama 默认把所有模型塞进 C:\Users\xxx\.ollama,会把系统盘吃爆。

建议新建环境变量:

OLLAMA_MODELS=D:\ollama-models

再重启终端即可。


如果你打算通过编程调用 Ollama,本人实测推荐如下参数:

{
  "temperature": 0.3,
  "max_tokens": 200,
  "top_p": 0.9
}

对于精确任务(总结、代码生成)非常友好,避免胡言乱语。


问题建议解决方案
显存不足使用 4-bit 量化,或 --load_in_4bit 参数
微调无效增加 LoRA 秩(r),调高学习率
模型不识别检查 Modelfile 格式,确认模型路径无误
AMD 显卡手动编译 llama.cpp 并启用 ROCm 支持
  • 快速定制:使用 Modelfile + system prompt,门槛低
  • 中级玩家:LoRA + LLaMA-Factory,效果好但要 GPU
  • 部署建议:量化 + API 封装,效率高可生产

相关内容