Skip to content

Ollama 模型文件

注意:Modelfile 语法正在开发中。

模型文件是与 Ollama 创建和共享模型的蓝图。

格式

Modelfile 的格式为:

modelfile
# comment
INSTRUCTION arguments
指令描述
[FROM](#from- 必填) (必填)定义要使用的基模型。
[PARAMETER](#parameter)设置 Ollama 运行模型的参数。
[TEMPLATE](#template)要发送给模型的完整提示模板。
[SYSTEM](#system)指定将在模板中设置的系统消息。
[ADAPTER](#adapter)定义要应用于模型的 (Q)LoRA 适配器。
[LICENSE](#license)指定法律许可。
[MESSAGE](#message)指定消息历史。

例子

基本的 模型文件

创建 Modelfile 示例:

modelfile
FROM llama3
# 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.

使用这个:

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

更多示例可以在 示例目录 中找到。

要查看特定模型的模版文件,请使用命令 ollama show --modelfile

bash
> ollama show --modelfile llama3
# Modelfile generated by "ollama show"
# To build a new Modelfile based on this one, replace the FROM line with:
# FROM llama3: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 指令定义了创建模型时要使用的基础模型。

modelfile
FROM <model name>:<tag>

从 llama3 构建

modelfile
FROM llama3

可用的基础模型列表:https://github.com/ollama/ollama#model-library

bin 文件构建

modelfile
FROM ./ollama-model.bin

这个二进制文件的位置应指定为绝对路径或相对于 Modelfile 位置的相对路径。

PARAMETER

PARAMETER 指令定义了一个可以在运行模型时设置的参数。

modelfile
PARAMETER <parameter> <parametervalue>

有效的参数和值

参数描述类型示例用法
mirostat启用 Mirostat 采样以控制困惑度。默认:0(禁用),1(Mirostat),2(Mirostat 2.0)整数mirostat 0
mirostat_eta影响算法对生成文本反馈的响应速度。较低的学习率会导致调整较慢,而较高的学习率会使算法更灵敏。默认:0.1)浮点数mirostat_eta 0.1
mirostat_tau控制输出的连贯性和多样性之间的平衡。较小的值将产生更聚焦和连贯的文本。默认:5.0)浮点数mirostat_tau 5.0
num_ctx设置用于生成下一个令牌的上下文窗口大小。默认:2048)整数num_ctx 4096
repeat_last_n设置模型需要回溯多远以防止重复。默认:64(禁用),-1(num_ctx)整数repeat_last_n 64
repeat_penalty设置对重复的惩罚程度。较高的值(例如,1.5)将更强烈地惩罚重复,而较低的值(例如,0.9)则较为宽容。默认:1.1)浮点数repeat_penalty 1.1
temperature模型的温度。增加温度会使模型的回答更具创意。默认:0.8)浮点数temperature 0.7
seed设置用于生成的随机数种子。将此设置为特定数字将使模型对相同的提示生成相同的文本。默认:0)整数seed 42
stop设置停止序列。当遇到该模式时,LLM 将停止生成文本并返回。通过在模 odelfile 中指定多个独立的 stop 参数,可以设置多个停止模式。字符串stop "AI assistant:"
tfs_z尾部自由采样用于减少输出中不太可能的令牌的影响。较高的值(例如,2.0)将更多地降低影响,而值为 1.0 时禁用此设置。默认:1)浮点数tfs_z 1
num_predict生成文本时的最大预测令牌数。默认:128(无限生成),-1(填充上下文)整数num_predict 42
top_k减少生成胡言乱语的可能性。较高的值(例如,100)将给出更多样化的答案,而较低的值(例如,10)则较为保守。默认:40)整数top_ k 40
top_p与 top-k 一起使用。较高的值(例如,0.95)将导致更多样化的文本,而较低的值(例如,0.5)将生成更聚焦和保守的文本。默认:0.9)浮点数top_ p 0.9

TEMPLATE

模板"TEMPLATE" 是传递给模型的完整提示模板。它可能(可选)包含系统消息、用户的消息和模型的响应。注意:语法可能是模型特定的。模板使用 Go 的 模板语法

模板变量

变量描述
\{\{ .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 指令指定了如果适用的话,将在模板中使用的系统消息。

modelfile
SYSTEM """<system message>"""

ADAPTER

ADAPTER 指令是一个可选指令,用于指定应用于基础模型的任何 LoRA 适配器。此指令的值应为绝对路径或相对于 Modelfile 的相对路径,并且文件必须采用 GGML 文件格式。如果未针对基础模型调整适配器,则行为将未定义。

modelfile
ADAPTER ./ollama-lora.bin

许可证(LICENSE)

LICENSE 指令允许您指定此 Modelfile 中使用的模型的法律许可协议,以供共享或分发。

modelfile
LICENSE """
<license text>
"""

MESSAGE

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

modelfile
MESSAGE <role> <message>

有效的角色

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

示例对话

modelfile
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

注释

  • ** 模型文件名不区分大小写 **。在示例中,使用大写字母指令以方便将其与参数区分开来。
  • 指令可以按任何顺序编写。在示例中,FROM 指令首先进行,以便于阅读。

热爱生活,热爱 Ollama