跳过至正文
Modelfile 是使用 Ollama 创建和共享自定义模型的蓝图。

目录

格式

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

示例

基础 Modelfile

一个创建 mario 蓝图的 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.
如何使用
  1. 将其另存为文件(例如 Modelfile
  2. ollama create 选择一个模型名称 -f <文件路径,例如 ./Modelfile>
  3. ollama run 选择一个模型名称
  4. 开始使用模型!
要查看给定模型的 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 权重。 当前支持的模型架构:
  • 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 <parameter> <parametervalue>

有效参数及取值

参数描述值类型使用示例
num_ctx设置用于生成下一个 token 的上下文窗口大小。(默认值: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.1)float (浮点数)repeat_penalty 1.1
temperature模型的温度。提高温度会使模型的回答更有创意。(默认值:0.8)float (浮点数)temperature 0.7
seed设置用于生成的随机数种子。将其设置为特定数字将使模型为相同的提示生成相同的文本。(默认值:0)int (整数)seed 42
stop设置要使用的停止序列。当遇到此模式时,大语言模型将停止生成文本并返回。通过在 Modelfile 中指定多个独立的 stop 参数,可以设置多个停止模式。stringstop “AI assistant:“
num_predict生成文本时要预测的最大 token 数。(默认值:-1,无限生成)int (整数)num_predict 42
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_ptop_p 的替代方案,旨在平衡质量和多样性。参数 p 代表 token 被考虑的最小概率,相对于最可能 token 的概率。例如,当 p=0.05 且最可能的 token 概率为 0.9 时,值小于 0.045 的 logits 将被过滤掉。(默认值:0.0)float (浮点数)min_p 0.05

TEMPLATE (模板)

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

模板变量

变量描述
{{ .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>"""

ADAPTER (适配器)

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

Safetensor 适配器

ADAPTER <path to safetensor adapter>
当前支持的 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 """
<license text>
"""

MESSAGE (消息)

MESSAGE 指令允许你指定模型在响应时使用的消息历史记录。多次使用 MESSAGE 命令来构建对话,从而引导模型以类似的方式回答。
MESSAGE <role> <message>

有效角色

角色描述
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 <version>
版本号应为有效的 Ollama 版本(例如 0.14.0)。

注意事项

  • Modelfile 不区分大小写。在示例中,使用大写指令是为了更容易地将其与参数区分开来。
  • 指令可以按任何顺序排列。在示例中,FROM 指令排在第一位是为了保持易读性。