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.使用这个:
- 将其保存为文件(例如“Modelfile”)
ollama create choose-a-model-name -f < 文件的位置,例如 ./Modelfile>- ollama run 选择模型名称
- 开始使用模型!
更多示例可以在 示例目录 中找到。
要查看特定模型的模版文件,请使用命令 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指令首先进行,以便于阅读。
