Skip to content

Modelfile 是使用 Ollama 创建和共享自定义模型的蓝图。

目录 ​

格式 ​

Modelfile 的格式:

# comment
INSTRUCTION arguments
指令描述
FROM (必需)定义要使用的基础模型。
PARAMETER设置 Ollama 运行模型时的参数。
TEMPLATE发送给模型的完整提示模板。
SYSTEM指定将在模板中设置的系统消息。
ADAPTER定义要应用于模型的 (Q)LoRA 适配器。
LICENSE指定法律许可证。
MESSAGE指定消息历史。
REQUIRES指定模型所需的最低 Ollama 版本。

示例 ​

基础 Modelfile ​

创建 mario 蓝图的 Modelfile 示例:

FROM llama3.2
# 将温度设置为 1 [越高越有创意,越低越连贯]
PARAMETER temperature 1
# 将上下文窗口大小设置为 4096,这控制 LLM 可以使用多少个 token 作为上下文来生成下一个 token
PARAMETER num_ctx 4096

# 设置自定义系统消息以指定聊天助手的行为
SYSTEM You are Mario from super mario bros, acting as an assistant.

使用方法:

  1. 将其保存为文件(例如 Modelfile)
  2. ollama create choose-a-model-name -f <文件位置,例如 ./Modelfile>
  3. ollama run choose-a-model-name
  4. 开始使用模型!

要查看给定模型的 Modelfile,请使用 ollama show --modelfile 命令。

shell
ollama show --modelfile llama3.2
# Modelfile generated by "ollama show"
# 要基于此构建新的 Modelfile,请将 FROM 行替换为:
# FROM llama3.2:latest
FROM /Users/pdevine/.ollama/models/blobs/sha256-00e1317cbf74d901080d7100f57580ba8dd8de57203072dc6f668324ba545f29
TEMPLATE """{{ if .System }}&lt;|start_header_id|&gt;system&lt;|end_header_id|&gt;

{{ .System }}&lt;|eot_id|&gt;{{ end }}{{ if .Prompt }}&lt;|start_header_id|&gt;user&lt;|end_header_id|&gt;

{{ .Prompt }}&lt;|eot_id|&gt;{{ end }}&lt;|start_header_id|&gt;assistant&lt;|end_header_id|&gt;

{{ .Response }}&lt;|eot_id|&gt;"""
PARAMETER stop "&lt;|start_header_id|&gt;"
PARAMETER stop "&lt;|end_header_id|&gt;"
PARAMETER stop "&lt;|eot_id|&gt;"
PARAMETER stop "&lt;|reserved_special_token"

指令 ​

FROM (必需) ​

FROM 指令定义创建模型时要使用的基础模型。

FROM &lt;model name&gt;:&lt;tag&gt;

从现有模型构建 ​

FROM llama3.2
基础模型

可用基础模型列表

基础模型

更多模型可在以下位置找到

从 Safetensors 模型构建 ​

FROM &lt;model directory&gt;

模型目录应包含受支持架构的 Safetensors 权重。

当前支持的模型架构:

  • Llama(包括 Llama 2、Llama 3、Llama 3.1 和 Llama 3.2)
  • Mistral(包括 Mistral 1、Mistral 2 和 Mixtral)
  • Gemma(包括 Gemma 1 和 Gemma 2)
  • Phi3

从 GGUF 文件构建 ​

FROM ./ollama-model.gguf

GGUF 文件位置应指定为绝对路径或相对于 Modelfile 位置的路径。

PARAMETER ​

PARAMETER 指令定义模型运行时可设置的参数。

PARAMETER &lt;parameter&gt; &lt;parametervalue&gt;

有效参数和值 ​

参数描述值类型示例用法
num_ctx设置用于生成下一个 token 的上下文窗口大小。(默认值:2048)intnum_ctx 4096
repeat_last_n设置模型回顾多远以防止重复。(默认值:64,0 = 禁用,-1 = num_ctx)intrepeat_last_n 64
repeat_penalty设置惩罚重复的强度。较高的值(例如 1.5)会更强烈地惩罚重复,而较低的值(例如 0.9)会更宽松。(默认值:1.1)floatrepeat_penalty 1.1
temperature模型的温度。提高温度会使模型回答更有创意。(默认值:0.8)floattemperature 0.7
seed设置用于生成的随机数种子。将此设置为特定数字将使模型为相同的提示生成相同的文本。(默认值:0)intseed 42
stop设置要使用的停止序列。当遇到此模式时,LLM 将停止生成文本并返回。可以通过在 modelfile 中指定多个单独的 stop 参数来设置多个停止模式。stringstop "AI assistant:"
num_predict生成文本时要预测的最大 token 数。(默认值:-1,无限生成)intnum_predict 42
draft_num_predict当草稿模型可用时,每步预测的最大推测草稿 token 数。独立草稿模型默认为 4;嵌入式 MTP 张量需要设置此参数。设置为 0 可禁用推测性起草。intdraft_num_predict 4
top_k降低生成无意义内容的概率。较高的值(例如 100)会给出更多样化的答案,而较低的值(例如 10)会更保守。(默认值:40)inttop_k 40
top_p与 top-k 配合使用。较高的值(例如 0.95)会导致更多样化的文本,而较低的值(例如 0.5)会生成更集中和保守的文本。(默认值:0.9)floattop_p 0.9
min_ptopp 的替代方案,旨在确保质量和多样性的平衡。参数 _p 表示相对于最可能 token 的概率,token 被考虑的最小概率。例如,当 p=0.05 且最可能 token 的概率为 0.9 时,值小于 0.045 的 logit 将被过滤掉。(默认值:0.0)floatmin_p 0.05

TEMPLATE ​

要传递给模型的完整提示模板的 TEMPLATE。它可以(可选地)包含系统消息、用户消息和模型的响应。注意:语法可能因模型而异。模板使用 Go 模板语法。

模板变量 ​

变量描述
&#123;&#123;.System&#125;&#125;用于指定自定义行为的系统消息。
&#123;&#123;.Prompt&#125;&#125;用户提示消息。
&#123;&#123;.Response&#125;&#125;模型的响应。生成响应时,此变量之后的文本将被省略。
TEMPLATE """{{ if .System }}&lt;|im_start|&gt;system
{{ .System }}&lt;|im_end|&gt;
{{ end }}{{ if .Prompt }}&lt;|im_start|&gt;user
{{ .Prompt }}&lt;|im_end|&gt;
{{ end }}&lt;|im_start|&gt;assistant
"""

SYSTEM ​

SYSTEM 指令指定要在模板中使用的系统消息(如果适用)。

SYSTEM """&lt;system message&gt;"""

ADAPTER ​

ADAPTER 指令指定应应用于基础模型的微调 LoRA 适配器。适配器的值应为绝对路径或相对于 Modelfile 的路径。基础模型应使用 FROM 指令指定。如果基础模型与适配器微调所使用的基础模型不同,则行为将不稳定。

Safetensor 适配器 ​

ADAPTER &lt;path to safetensor adapter&gt;

当前支持的 Safetensor 适配器:

  • Llama(包括 Llama 2、Llama 3 和 Llama 3.1)
  • Mistral(包括 Mistral 1、Mistral 2 和 Mixtral)
  • Gemma(包括 Gemma 1 和 Gemma 2)

GGUF 适配器 ​

ADAPTER ./ollama-lora.gguf

LICENSE ​

LICENSE 指令允许您指定与此 Modelfile 一起使用的模型共享或分发的法律许可证。

LICENSE """
&lt;license text&gt;
"""

MESSAGE ​

MESSAGE 指令允许您指定模型在响应时使用的消息历史。使用 MESSAGE 命令的多次迭代来构建对话,这将引导模型以类似的方式回答。

MESSAGE &lt;role&gt; &lt;message&gt;

有效角色 ​

角色描述
system为模型提供 SYSTEM 消息的替代方式。
user用户可能询问的示例消息。
assistant模型应如何响应的示例消息。

示例对话 ​

MESSAGE user Is Toronto in Canada?
MESSAGE assistant yes
MESSAGE user Is Sacramento in Canada?
MESSAGE assistant no
MESSAGE user Is Ontario in Canada?
MESSAGE assistant yes

REQUIRES ​

REQUIRES 指令允许您指定模型所需的最低 Ollama 版本。

REQUIRES &lt;version&gt;

版本应为有效的 Ollama 版本(例如 0.14.0)。

注意事项 ​

  • Modelfile 不区分大小写。在示例中,使用大写指令是为了便于与参数区分。
  • 指令可以按任意顺序排列。在示例中,将 FROM 指令放在最前面是为了便于阅读。