跳到主要内容

Ollama 模型文件

注意: Modelfile 语法仍在开发中

模型文件是使用 Ollama 创建和分享模型的蓝图。

目录

格式

Modelfile 的格式:

注释

指令 参数

指令说明
FROM(必需)定义要使用的基础模型
PARAMETER设置 Ollama 运行模型时的参数
TEMPLATE发送给模型的完整提示模板
SYSTEM指定在模板中设置的系统消息
ADAPTER定义要应用到模型的(Q)LoRA 适配器
LICENSE指定法律许可证
MESSAGE指定消息历史记录

示例

基础 Modelfile

创建一个马里奥蓝图的 Modelfile 示例:

FROM llama3.2
# 设置温度为 1 [数值越高越有创意,数值越低越连贯]
PARAMETER temperature 1
# 设置上下文窗口大小为 4096,这控制了 LLM 可以用作上下文来生成下一个令牌的数量
PARAMETER num_ctx 4096

# 设置自定义系统消息来指定聊天助手的行为
SYSTEM 你是来自超级马里奥兄弟的马里奥,充当助手的角色。

使用方法:

  1. 将其保存为文件(例如 Modelfile
  2. ollama create 选择一个模型名称 -f <文件位置,例如 ./Modelfile>
  3. ollama run 选择一个模型名称
  4. 开始使用模型!

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

ollama show --modelfile llama3.2

输出:

# 由 "ollama show" 生成的 Modelfile
# 要基于此 Modelfile 构建新的 Modelfile,请将 FROM 行替换为:
# 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 <模型名称>:<标签>

基于现有模型构建

FROM llama3.2
可用基础模型列表:
https://github.com/ollama/ollama#model-library
更多模型可在以下地址找到:
https://ollama.com/library

基于 Safetensors 模型构建

FROM <模型目录> 模型目录应包含支持架构的 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 <参数> <参数值>

有效参数和值

参数说明值类型使用示例
num_ctx设置用于生成下一个令牌的上下文窗口大小。(默认: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 将停止生成文本并返回。可以通过在模型文件中指定多个单独的 stop 参数来设置多个停止模式。stringstop "AI assistant:"
num_predict生成文本时预测的最大令牌数。(默认:-1,无限生成)intnum_predict 42
top_k减少生成无意义内容的概率。较高的值(例如 100)将给出更多样化的答案,而较低的值(例如 10)将更保守。(默认:40)inttop_k 40
top_p与 top-k 一起工作。较高的值(例如 0.95)将产生更多样化的文本,而较低的值(例如 0.5)将生成更专注和保守的文本。(默认:0.9)floattop_p 0.9
min_ptop_p 的替代方案,旨在确保质量和多样性的平衡。参数 p 表示令牌被考虑的最小概率,相对于最可能令牌的概率。例如,当 p=0.05 且最可能令牌的概率为 0.9 时,值小于 0.045 的 logits 将被过滤掉。(默认:0.0)floatmin_p 0.05

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 指令指定在模板中使用的系统消息(如果适用)。

SYSTEM """<系统消息>"""

ADAPTER

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

Safetensor 适配器

ADAPTER <safetensor 适配器路径> 当前支持的 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 """ <许可证文本> """

MESSAGE

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

MESSAGE <角色> <消息>

有效角色

角色说明
system为模型提供 SYSTEM 消息的替代方式。
user用户可能提出的问题的示例消息。
assistant模型应该如何响应的示例消息。

对话示例

MESSAGE user 多伦多在加拿大吗? MESSAGE assistant 是的 MESSAGE user 萨克拉门托在加拿大吗? MESSAGE assistant 不是 MESSAGE user 安大略在加拿大吗? MESSAGE assistant 是的

注意事项

  • Modelfile 不区分大小写。在示例中,使用大写指令是为了更容易将其与参数区分开来。
  • 指令可以按任何顺序排列。在示例中,FROM 指令首先出现是为了保持易读性。
优云智算