Modelfile 是使用 Ollama 创建和共享自定义模型的蓝图。
目录
- 格式
- 示例
- 指令
- FROM (必需)
- 基于现有模型构建
- 基于 Safetensors 模型构建
- 基于 GGUF 模型构建
- PARAMETER
- 有效参数和值
- TEMPLATE
- 模板变量
- SYSTEM
- LICENSE
- MESSAGE
- CAPABILITY
- FROM (必需)
- 注意事项
格式
Modelfile 的格式:
# comment INSTRUCTION arguments
| 指令 | 描述 |
|---|---|
FROM (必需) | 定义要使用的基础模型。 |
PARAMETER | 设置 Ollama 运行模型时的参数。 |
TEMPLATE | 发送给模型的完整提示模板。 |
SYSTEM | 指定将在模板中设置的系统消息。 |
LICENSE | 指定法律许可证。 |
MESSAGE | 指定消息历史记录。 |
REQUIRES | 指定模型所需的最低 Ollama 版本。 |
CAPABILITY | 声明额外的模型功能。 |
示例
基本 Modelfile
创建一个马里奥蓝图的 Modelfile 示例:
FROM llama3.2 # sets the temperature to 1 [higher is more creative, lower is more coherent] PARAMETER temperature 1 # sets the context window size to 4096, this controls how many tokens the LLM can use as context to generate the next token PARAMETER num_ctx 4096 # sets a custom system message to specify the behavior of the chat assistant SYSTEM You are Mario from super mario bros, acting as an assistant.
使用方法如下:
- 将其保存为文件(例如
Modelfile) ollama create choose-a-model-name -f <location of the file e.g. ./Modelfile>ollama run choose-a-model-name- 开始使用该模型!
要查看给定模型的 Modelfile,请使用 ollama show --modelfile 命令。
ollama show --modelfile llama3.2
# Modelfile generated by "ollama show"
# To build a new Modelfile based on this one, replace the FROM line with:
# FROM llama3.2:latest
FROM /Users/pdevine/.ollama/models/blobs/sha256-00e1317cbf74d901080d7100f57580ba8dd8de57203072dc6f668324ba545f29
TEMPLATE """{{ if .System }}<|start_header_id|>system<|end_header_id|>
{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>
{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>
{{ .Response }}<|eot_id|>"""
PARAMETER stop "<|start_header_id|>"
PARAMETER stop "<|end_header_id|>"
PARAMETER stop "<|eot_id|>"
PARAMETER stop "<|reserved_special_token"
指令
FROM (必需)
FROM 指令定义了创建模型时要使用的基础模型。
FROM <model name>:<tag>
基于现有模型构建
FROM llama3.2
模型库
浏览可用模型
基于 Safetensors 模型构建
FROM <model directory>
模型目录应包含受支持架构的 Safetensors 权重。
基于 GGUF 模型构建
FROM ./ollama-model.gguf
GGUF 文件位置应指定为绝对路径或相对于 Modelfile 的位置。
对于分片 GGUF 模型,请保留原始分片文件名并使用匹配每个分片的通配符。也可以使用单独的 FROM 指令列出分片。
FROM ./model-*.gguf
PARAMETER
PARAMETER 指令定义了运行模型时可以设置的参数。
PARAMETER <parameter> <parametervalue>
有效参数和值
| 参数 | 描述 | 值类型 | 示例用法 |
|---|---|---|---|
| num_ctx | 设置用于生成下一个令牌的上下文窗口大小。(默认值:2048) | int | num_ctx 4096 |
| repeat_last_n | 设置模型回看以防止重复的距离。(默认值:64,0 = 禁用,-1 = num_ctx) | int | repeat_last_n 64 |
| repeat_penalty | 设置对重复行为的惩罚强度。较高的值(例如 1.5)会更强烈地惩罚重复,而较低的值(例如 0.9)则更宽松。(默认值:1.0,禁用) | float | repeat_penalty 1.1 |
| temperature | 模型的 temperature。增加 temperature 会使模型的回答更具创造性。(默认值:0.8) | float | temperature 0.7 |
| seed | 设置用于生成的随机数种子。将其设置为特定数字会使模型针对相同的提示生成相同的文本。(默认值:0) | int | seed 42 |
| stop | 设置要使用的停止序列。当遇到此模式时,LLM 将停止生成文本并返回。可以通过在 modelfile 中指定多个单独的 stop 参数来设置多个停止模式。 | string | stop “AI assistant:“ |
| num_predict | 生成文本时要预测的最大令牌数。(默认值:-1,无限生成) | int | num_predict 42 |
| draft_num_predict | 当有草稿模型可用时,每步要预测的最大投机草稿令牌数。分离的草稿模型默认为 4;嵌入的 MTP 张量需要设置此参数。设置为 0 以禁用投机起草。 | int | draft_num_predict 4 |
| top_k | 降低生成无意义内容的概率。较高的值(例如 100)会给出更多样化的答案,而较低的值(例如 10)则更为保守。(默认值:40) | int | top_k 40 |
| top_p | 与 top-k 配合使用。较高的值(例如 0.95)会导致更多样化的文本,而较低的值(例如 0.5)会生成更聚焦且保守的文本。(默认值:0.9) | float | top_p 0.9 |
| min_p | topp 的替代方案,旨在确保质量和多样性的平衡。参数 _p 表示令牌被考虑的最小概率,相对于最可能令牌的概率。例如,如果 p=0.05 且最可能的令牌概率为 0.9,则值小于 0.045 的 logits 将被过滤掉。(默认值:0.0) | float | min_p 0.05 |
TEMPLATE
传递给模型的完整提示词模板的 TEMPLATE。它可能包含(可选)系统消息、用户消息以及模型的响应。注意:语法可能与特定模型相关。模板使用 Go template syntax。
模板变量
| 变量 | 描述 |
|---|---|
{{ .System }} | 用于指定自定义行为的系统消息。 |
{{ .Prompt }} | 用户提示词消息。 |
{{ .Response }} | 模型的响应。在生成响应时,此变量之后的文本将被省略。 |
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
"""
SYSTEM
SYSTEM 指令指定在模板中使用的系统消息(如果适用)。
SYSTEM """<system message>"""
LICENSE
LICENSE 指令允许您指定与此 Modelfile 一起使用的模型所共享或分发的法律许可证。
LICENSE """ <license text> """
MESSAGE
MESSAGE 指令允许您为模型指定响应时使用的消息历史记录。多次迭代使用 MESSAGE 命令以构建对话,从而引导模型以类似的方式回答。
MESSAGE <role> <message>
有效角色
| Role | Description |
|---|---|
| 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
CAPABILITY
向 GGUF 或 MLX 模型添加功能,而不移除继承或推断的功能。重复该指令以添加多个功能。仅对针对 System One 决策提示词训练的权重声明 decision:
CAPABILITY decision
REQUIRES
REQUIRES 指令允许您指定模型所需的最低 Ollama 版本。
REQUIRES <version>
版本应为有效的 Ollama 版本(例如 0.14.0)。
注意事项
Modelfile不区分大小写。在示例中,使用大写指令是为了使其更容易与参数区分开来。- 指令的顺序可以是任意的。在示例中,
FROM指令放在最前面以保持易读性。