Ollama 导入自定义模型

2026-10-29 18:46 更新

官方模型库覆盖不到的场景有三个:自己微调的权重、公司内部训练的模型、以及从 Hugging Face 下下来的非 Ollama 格式模型。这三种都能用 ollama create 导入成本地模型,之后就能像 llama3.2 一样直接用 ollama run 调用。

版本基线 v0.40.12,官方 docs.ollama.com/import。

一、先分清两条导入路径

导入方式由权重格式决定,不是由你从哪下载决定:

权重格式 导入方式 Ollama 是否自动量化
Safetensors FROM 指向目录 是
GGUF(单文件) FROM 指向文件 否,需提前量化
GGUF(分片) FROM 用通配符匹配全部分片 否

这个差别很关键:Safetensors 走的是 Ollama 自己的转换流程,会顺带做量化;GGUF 已经是量化后的成品,Ollama 只负责打包成模型,不会再动权重。

二、导入 Safetensors 模型

Safetensors 是 Hugging Face 上的主流格式。假设你已经把权重下载到 /path/to/safetensors/directory,里面是 config.json、model.safetensors(或多分片)等文件。

第一步,在同一目录下创建 Modelfile:

FROM /path/to/safetensors/directory

如果 Modelfile 就和权重放在一起,可以直接写相对路径,省掉长串绝对地址:

FROM .

第二步,在 Modelfile 所在目录执行创建命令:

ollama create my-model

第三步,验证:

ollama run my-model

my-model 是你自己起的名字,只要不和已有模型重名就行。

三、导入 GGUF 模型

GGUF 是 llama.cpp 生态的格式,社区里绝大多数量化模型都是这个格式。Ollama 在导入时不会量化 GGUF,所以如果你手上是 fp16 原始权重,得先用 llama.cpp 的 llama-quantize 工具转成 Q4_K_M 之类的量化版本再导入。

单文件 GGUF

FROM /path/to/file.gguf

分片 GGUF

大于几 GB 的模型常被切成多个分片(model-00001-of-00004.gguf 这种)。保持原始分片文件名不变,用通配符一次性匹配:

FROM /path/to/model-*.gguf

不要手动重命名分片文件,Ollama 靠文件名识别分片顺序,改名会直接报错。

创建并测试

ollama create my-model
ollama run my-model

四、导入时顺便定制参数

Modelfile 不只能写 FROM,还可以带上系统提示词和推理参数,导入出来的就是一个「开箱即用」的定制模型:

FROM ./model-Q4_K_M.gguf

PARAMETER temperature 0.3
PARAMETER num_ctx 8192
PARAMETER stop "<|im_end|>"

SYSTEM """
你是一名严谨的中文技术文档翻译,只输出译文,不做解释。
"""

导入后这个模型的默认温度就是 0.3、默认上下文 8192,调用时不用每次重复传参。各参数的完整含义见 5.1 Ollama Modelfile 参考。

如果 Modelfile 没命名为默认的 Modelfile,用 -f 显式指定:

ollama create my-model -f ./MyModelfile

五、分享到 ollama.com

导入好的模型可以推到官方库,让别人 ollama run 你的用户名/模型名 直接使用。

准备账号与公钥

  1. 到 ollama.com/signup 注册。用户名会成为模型名的一部分(如 jmorganca/mymodel),注册时就想好。
  2. 打开 ollama.com/settings/keys,页面会告诉你本机公钥的位置。
  3. 点击 Add Ollama Public Key,把公钥内容粘贴进去。

公钥文件位置(id_ed25519.pub):

系统 路径
macOS ~/.ollama/id_ed25519.pub
Linux /usr/share/ollama/.ollama/id_ed25519.pub
Windows C:\Users\<用户名>\.ollama\id_ed25519.pub

也可以用 ollama signin 登录,App 端则在设置页登录。

命名必须带用户名

推送前模型名必须是 用户名/模型名 的形式。本地模型叫 mymodel 时,先用 ollama cp 复制一份改名:

ollama cp mymodel myuser/mymodel
ollama push myuser/mymodel

推送成功后,其他人这样用:

ollama run myuser/mymodel

六、常见卡点

现象 原因 处理
ollama create 报找不到权重 FROM 路径写错,或 Safetensors 目录里缺 config.json 检查路径;确认目录是完整的 HF 权重目录
导入的 GGUF 效果明显变差 本来就是低比特量化版(Q2/Q3),不是导入损坏 换 Q4_K_M 及以上版本重新导入
分片模型报错 分片文件名被改过 恢复原始 model-0000x-of-0000y.gguf 命名
ollama push 提示未授权 公钥没添加到账号,或模型名没带用户名 补公钥;先 ollama cp 改名
显存不够 模型太大,或 num_ctx 设太高 调小 num_ctx,换更小量化

导入完成后,模型和其他模型一样受 keep_alive、上下文长度等机制约束,想了解这些通用行为见 6.1 Ollama 上下文长度。

动手试

拿一个现成的小 GGUF 走完整流程,十分钟就能把导入链路跑通:

## ① 准备 Modelfile
cat > Modelfile <<'EOF'
FROM ./qwen2.5-0.5b-instruct-q4_k_m.gguf
PARAMETER temperature 0.7
EOF

## ② 导入
ollama create qwen-test

## ③ 确认已入列表
ollama list

## ④ 试跑
ollama run qwen-test "用一句话解释什么是量化"

能正常出结果,就说明你的导入环境没问题,可以接着导自己的模型了。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号